|
@@ -0,0 +1,360 @@
|
|
|
+openerp.partner_print_budget = function (instance, local) {
|
|
|
+ local.widgetInstance = null;
|
|
|
+ local.parentInstance = null;
|
|
|
+
|
|
|
+ local.PrintConformidadWidget = instance.Widget.extend({
|
|
|
+ template : "partner_print_budget.PrintConformidad",
|
|
|
+ resProjectService:[],
|
|
|
+ resProductService:[],
|
|
|
+ resProjectServiceTask:[],
|
|
|
+ ResPartner:[],
|
|
|
+ resCompany:[],
|
|
|
+ resProjectServiceActivity:[],
|
|
|
+ resProjectServiceMaterial:[],
|
|
|
+ jsonDoc:[],
|
|
|
+
|
|
|
+ init:function(parent){
|
|
|
+ this._super(parent);
|
|
|
+ },
|
|
|
+ updateId : function(id){
|
|
|
+ var self = this;
|
|
|
+ self.id=id;
|
|
|
+ },
|
|
|
+ start: function () {
|
|
|
+ var self = this;
|
|
|
+ this.$el.click(function (e) {
|
|
|
+ self.fecthInitial();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ fecthInitial: function(){
|
|
|
+ var id= openerp.webclient._current_state.id;
|
|
|
+ var self = this;
|
|
|
+ self.fetchProjectServiceTask(id).then(function(ProjectServiceTask){
|
|
|
+ return ProjectServiceTask;
|
|
|
+ }).then(function(ProjectServiceTask){
|
|
|
+ self.resProjectServiceTask = ProjectServiceTask;
|
|
|
+ return self.fetchProjectService();
|
|
|
+ }).then(function(ProjectService){
|
|
|
+ self.resProjectService = ProjectService;
|
|
|
+ return self.fetchProductService();
|
|
|
+ }).then(function(ProductService){
|
|
|
+ self.resProductService = ProductService;
|
|
|
+ return self.fetchProjectServiceActivity();
|
|
|
+ }).then(function(ProjectServiceActivity){
|
|
|
+ self.resProjectServiceActivity = ProjectServiceActivity;
|
|
|
+ return self.fetchProjectServiceMaterial();
|
|
|
+ }).then(function(ProjectServiceMaterial){
|
|
|
+ self.resProjectServiceMaterial = ProjectServiceMaterial;
|
|
|
+ return self.fetchResPartner();
|
|
|
+ }).then(function(ResPartner){
|
|
|
+ self.ResPartner=ResPartner;
|
|
|
+ return self.fetchCompany();
|
|
|
+ }).then(function(Company){
|
|
|
+ self.resCompany = Company;
|
|
|
+ return self.drawPDF();
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchProjectServiceTask: function (id) {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var domain=[['id','=', id]];
|
|
|
+ var ProjectServiceTask = new instance.web.Model('project.service.task');
|
|
|
+ ProjectServiceTask.query(['id','amount_total','description','name', 'date_assign','project_id','materials_used', 'nro_siniestro']).filter(domain).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchProjectService: function(){
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var project_id = _.flatten(_.map(self.resProjectServiceTask,function(map){
|
|
|
+ return map.project_id[0];
|
|
|
+ }));
|
|
|
+ var fields =['id', 'partner_id', 'name'];
|
|
|
+ var domain=[['id','=', project_id]];
|
|
|
+ var ProjectService = new instance.web.Model('project.service');
|
|
|
+ ProjectService.query(fields).filter(domain).order_by().all().then(function(results){
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchProductService: function () {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var project_id = _.flatten(_.map(self.resProjectService,function(map){
|
|
|
+ return map.id;
|
|
|
+ }));
|
|
|
+ var fields = ['id','product_service_brand_id', 'model', 'number', 'year','color','policy_number','policy','secure_id'];
|
|
|
+ var domain=[['id','=', project_id]];
|
|
|
+ var ProductService = new instance.web.Model('product.service');
|
|
|
+ ProductService.query(fields).filter(domain).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchProjectServiceActivity: function () {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var work_id = _.flatten(_.map(self.resProjectServiceTask,function(map){
|
|
|
+ return map.id;
|
|
|
+ }));
|
|
|
+ var domain=[['task_id','=', work_id]];
|
|
|
+ var ProjectServiceActivity = new instance.web.Model('project.service.activity');
|
|
|
+ ProjectServiceActivity.query(['id','product_id','task_id']).filter(domain).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchCompany: function () {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var domain=[['id','=', 1]];
|
|
|
+ var ResCompany = new instance.web.Model('res.company');
|
|
|
+ ResCompany.query(['name','phone','street','street2','city','fax', 'state_id', 'country_id','logo']).filter(domain).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchResPartner: function() {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var ResPartner = new instance.web.Model('res.partner');
|
|
|
+ ResPartner.query(['id', 'name','street', 'phone', 'mobile', 'ruc']).filter([['active', '=', true], ['customer', '=', true]]).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchProjectServiceMaterial: function () {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var material_id = _.flatten(_.map(self.resProjectServiceTask,function(map){
|
|
|
+ return map.id;
|
|
|
+ }));
|
|
|
+ var domain=[['task_id','=', material_id]];
|
|
|
+ var ProjectServiceMaterial = new instance.web.Model('project.service.material');
|
|
|
+ ProjectServiceMaterial.query(['id','product_id','task_id']).filter(domain).all().then(function (results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ valorNull:function(dato){
|
|
|
+ var valor ="";
|
|
|
+ if (dato){
|
|
|
+ if(dato == true && typeof dato == 'boolean'){
|
|
|
+ valor=" ";
|
|
|
+ }else{
|
|
|
+ valor=dato;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return valor;
|
|
|
+ },
|
|
|
+
|
|
|
+ drawPDF:function(){
|
|
|
+ var self = this;
|
|
|
+ var doc=[];
|
|
|
+ var docItem=[];
|
|
|
+ var materialItem=[];
|
|
|
+ var getColumns=[];
|
|
|
+ getColumnsMaterial=[];
|
|
|
+ var currency_name;
|
|
|
+ var pdfDoc = new jsPDF() ;
|
|
|
+ var company = self.resCompany;
|
|
|
+ var customer = self.ResPartner;
|
|
|
+ pdfDoc.addImage("data:image/png;base64,"+company[0].logo,'PNG',15,5,75,30);
|
|
|
+ var resProjectServiceTask = self.resProjectServiceTask;
|
|
|
+ var resCarService = self.resProductService;
|
|
|
+ var resCarWorkshop = self.resProjectServiceTask;
|
|
|
+ var resPlannedWork = self.resProjectServiceActivity;
|
|
|
+ var resMaterialUsed = self.resProjectServiceMaterial;
|
|
|
+
|
|
|
+ doc.push({
|
|
|
+ company : company[0].name,
|
|
|
+ customer : self.resProjectService[0].partner_id[1],
|
|
|
+ nro_siniestro : self.valorNull(resProjectServiceTask[0].nro_siniestro),
|
|
|
+ brand : self.valorNull(resCarService[0].product_service_brand_id[1]),
|
|
|
+ model : self.valorNull(resCarService[0].model),
|
|
|
+ number : self.valorNull(resCarService[0].number),
|
|
|
+ color : self.valorNull(resCarService[0].color),
|
|
|
+ date : moment(resCarWorkshop[0].date_assign).format("DD/MM/YYYY"),
|
|
|
+ policy_number : self.valorNull(resCarService[0].policy_number),
|
|
|
+ year : self.valorNull(resCarService[0].year),
|
|
|
+ amount_total : accounting.formatNumber(resCarWorkshop[0].amount_total,0,".",""),
|
|
|
+
|
|
|
+ phonepartner : self.valorNull(customer[0].mobile) + "-" + self.valorNull(customer[0].phone),
|
|
|
+ rucpartner : self.valorNull(customer[0].ruc),
|
|
|
+ streetpartner : self.valorNull(customer[0].street),
|
|
|
+
|
|
|
+ phone : self.valorNull(company[0].phone),
|
|
|
+ mobile : self.valorNull(company[0].fax),
|
|
|
+ street : self.valorNull(company[0].street),
|
|
|
+ street2 : self.valorNull(company[0].street2),
|
|
|
+ state : self.valorNull(company[0].city) + "-" + self.valorNull(company[0].state_id[1]) + " -" + self.valorNull(company[0].country_id[1]),
|
|
|
+ policy : self.valorNull(resCarService[0].policy),
|
|
|
+ secure : self.valorNull(resCarService[0].secure_id[1]),
|
|
|
+ letters : instance.web.num2word(resCarWorkshop[0].amount_total)
|
|
|
+ });
|
|
|
+ for (var i = 0; i < resPlannedWork.length; i++) {
|
|
|
+ docItem.push({
|
|
|
+ number : i + 1,
|
|
|
+ work: self.valorNull(resPlannedWork[i].product_id[1])
|
|
|
+ })
|
|
|
+ }
|
|
|
+ getColumns.push({
|
|
|
+ title : 'N°',
|
|
|
+ dataKey: 'number',
|
|
|
+ align: 'center',
|
|
|
+ });
|
|
|
+ getColumns.push({
|
|
|
+ title : 'Detalles',
|
|
|
+ dataKey: 'work',
|
|
|
+ align: 'left',
|
|
|
+ });
|
|
|
+ var rows = docItem;
|
|
|
+ pdfDoc.autoTable(getColumns, rows, {
|
|
|
+ styles: { overflow: 'linebreak', fontSize: 8, columnWidth: 'wrap'},
|
|
|
+ columnStyles: {
|
|
|
+ number : {columnWidth: '8px',halign:'right',fontStyle: 'bold'},
|
|
|
+ work : {columnWidth: '8px'},
|
|
|
+ },
|
|
|
+ margin: { top: 90, horizontal: 15},
|
|
|
+
|
|
|
+ addPageContent: function (data) {
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(110,22,'Fax: ' + doc[0].mobile);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,45,'CONFORMIDAD');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(100,50,doc[0].date);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(10);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,55,'Asegurado:'+ doc[0].customer);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(10);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,60,'Sr/es.: '+ doc[0].secure);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,65,'Dirección: '+ doc[0].street);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(12);
|
|
|
+ pdfDoc.setFontStyle('bold');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,90,'PRESENTE');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,100,'ME ES GRATO COMUNICARLES QUE EN LA FECHA RETIRADO DEL TALLER PARANA el vehiculo:');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,100,'Marca: '+ doc[0].brand);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(65,100,'Modelo: '+ doc[0].model);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(95,105,'Año: '+ doc[0].year);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,105,'Chapa: '+ doc[0].number);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(125,105,'Color: '+ doc[0].color);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,80,'Siniestro N°: '+ doc[0].nro_siniestro);
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(100,80,'Tipo de Pintura:');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,85,'Expresando mi entera conformidad con la reparación efectuadas satisfecho y liquidado.');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,90,'Con tal motivo, aprovecho la oportunidad para saludarles muy atentemente.');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,95,'Observacion:');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(15,100,'Retirado por el señor/a:');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(55,150,'Firma');
|
|
|
+
|
|
|
+ pdfDoc.setFontSize(9);
|
|
|
+ pdfDoc.setFontStyle('normal');
|
|
|
+ pdfDoc.setTextColor(40);
|
|
|
+ pdfDoc.text(105,150,'Aclaración de firma');
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ pdfDoc.save('Conformidad.pdf')
|
|
|
+ },
|
|
|
+ });
|
|
|
+ if (instance.web && instance.web.FormView) {
|
|
|
+ instance.web.FormView.include({
|
|
|
+ load_form: function (record) {
|
|
|
+ this._super.apply(this, arguments);
|
|
|
+ if (this.model !== 'project.service.task') return;
|
|
|
+ local.parentInstance = this;
|
|
|
+ if (local.widgetInstance) {
|
|
|
+ local.widgetInstance.updateId(record.id);
|
|
|
+ }
|
|
|
+ local.widgetInstance = new local.PrintBudgetWidget(this);
|
|
|
+ var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
|
|
|
+ elemento = elemento.find('.oe_right.oe_button_box.budget_button_box');
|
|
|
+ local.widgetInstance.appendTo(elemento);
|
|
|
+ local.widgetInstance.updateId(record.id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|