浏览代码

partner_print_budget modificado

Sebas 7 年之前
父节点
当前提交
a144b035ac
共有 8 个文件被更改,包括 442 次插入28 次删除
  1. 1 0
      __init__.py
  2. 二进制
      __init__.pyc
  3. 2 1
      __openerp__.py
  4. 1 1
      service_siniestro_fields.py
  5. 二进制
      service_siniestro_fields.pyc
  6. 14 16
      service_siniestro_fields_view.xml
  7. 64 10
      static/src/js/budget.js
  8. 360 0
      static/src/js/notaconformidad.js

+ 1 - 0
__init__.py

@@ -1 +1,2 @@
 # -*- coding: utf-8 -*-
+import service_siniestro_fields

二进制
__init__.pyc


+ 2 - 1
__openerp__.py

@@ -10,7 +10,8 @@ Este modulo Permite realizar impresión de presupuesto en el modulo eiru_service
     'depends' : ['eiru_service','eiru_service_carworkshop'],
     'data' : [
         'views/template.xml',
-        'views/budget_print.xml'
+        'views/budget_print.xml',
+        'service_siniestro_fields_view.xml'
     ],
     'qweb' : ['static/src/xml/*.xml',],
     'installable' : True,

+ 1 - 1
service_siniestro_fields.py

@@ -27,5 +27,5 @@ class nro_siniestro(osv.osv):
     _description = 'Add siniestry number media to Project Service Task'
 
     _columns = {
-        'nro_siniestro':fields.char('N° de Siniestro', size=15),
+        'nro_siniestro':fields.char('Nro de Siniestro', size=15),
     }

二进制
service_siniestro_fields.pyc


+ 14 - 16
service_siniestro_fields_view.xml

@@ -1,23 +1,21 @@
 <?xml version="1.0"?>
 <openerp>
     <data>
-
         <record id="view_service_siniestro_form" model="ir.ui.view">
-            <field name="name">service_siniestro.inherit</field>
-            <field name="model">project.service.task</field>
-            <field name="inherit_id" ref="eiru_service.project_service_task_form"/>
-            <field name="arch" type="xml">
-            <xpath expr="//notebook" position="before">
-            <page string="Datos de Siniestro">
-                <group string="Siniestro">
-
-                        <field name="nro_siniestro"/>
-
-
-            </field>
-            </xpath>
+        <field name="name">project.service.inherit</field>
+        <field name="model">project.service.task</field>
+        <field name="inherit_id" ref="eiru_service.project_service_task_form"/>
+        <field name="arch" type="xml">
+         <notebook>
+            <page string="Datos de Siniestro" position="before">
+                    <group>
+                        <group name="siniestro_laboral" col="2" string="Datos de Siniestro">
+                            <field name="nro_siniestro"/>
+                        </group>
+                    </group>
+            </page>
+         </notebook>
+        </field>
         </record>
-
-
     </data>
 </openerp>

+ 64 - 10
static/src/js/budget.js

@@ -7,6 +7,7 @@ openerp.partner_print_budget = function (instance, local) {
         resProjectService:[],
         resProductService:[],
         resProjectServiceTask:[],
+        ResPartner:[],
         resCompany:[],
         resProjectServiceActivity:[],
         resProjectServiceMaterial:[],
@@ -44,6 +45,9 @@ openerp.partner_print_budget = function (instance, local) {
                 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;
@@ -57,7 +61,7 @@ openerp.partner_print_budget = function (instance, local) {
             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']).filter(domain).all().then(function (results) {
+            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;
@@ -118,6 +122,16 @@ openerp.partner_print_budget = function (instance, local) {
             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();
@@ -154,17 +168,18 @@ openerp.partner_print_budget = function (instance, local) {
             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;
-            console.log(self);
 
             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),
@@ -173,6 +188,11 @@ openerp.partner_print_budget = function (instance, local) {
                 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),
@@ -253,44 +273,78 @@ openerp.partner_print_budget = function (instance, local) {
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(15,65,'Cliente: '+ doc[0].customer);
+                    pdfDoc.text(15,65,'Empresa/Propietario: '+ doc[0].customer);
+
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(155,65,'Fecha: '+ doc[0].date);
+
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(15,70,'Dirección: '+ doc[0].street);
+
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(115,70,'Teléfono: '+ doc[0].phonepartner);
+
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(155,70,'RUC: '+ doc[0].rucpartner);
+
+                    pdfDoc.setFontSize(9);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(15,75,'Marca: '+ doc[0].brand);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(15,70,'Marca: '+ doc[0].brand);
+                    pdfDoc.text(65,75,'Modelo: '+ doc[0].model);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(15,75,'Modelo: '+ doc[0].model);
+                    pdfDoc.text(95,75,'Año: '+ doc[0].year);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(15,80,'Año: '+ doc[0].year);
+                    pdfDoc.text(155,75,'Chapa: '+ doc[0].number);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(15,85,'Color: '+ doc[0].color);
+                    pdfDoc.text(120,75,'Color: '+ doc[0].color);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(110,70,'Poliza: '+ doc[0].policy_number);
+                    pdfDoc.text(15,80,'Siniestro N°: '+ doc[0].nro_siniestro);
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(110,75,'Chapa: '+ doc[0].number);
+                    pdfDoc.text(100,80,'Orden de Reparación N°:');
 
                     pdfDoc.setFontSize(9);
                     pdfDoc.setFontStyle('normal');
                     pdfDoc.setTextColor(40);
-                    pdfDoc.text(110,80,'Fecha: '+ doc[0].date);
+                    pdfDoc.text(15,85,'Poliza: '+ doc[0].policy_number);
+
+                    doc.addPage();
 
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('bold');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(110,12,'SEBAS');
                 }
+
+
+
             });
             for (var i = 0; i < resMaterialUsed.length; i++) {
                 materialItem.push({

+ 360 - 0
static/src/js/notaconformidad.js

@@ -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);
+            }
+        });
+    }
+}