Pārlūkot izejas kodu

ADD impresion factura saldo y pagado

Sebas 7 gadi atpakaļ
vecāks
revīzija
d66c0e1f80
3 mainītis faili ar 66 papildinājumiem un 39 dzēšanām
  1. BIN
      __init__.pyc
  2. 0 2
      __openerp__.py
  3. 66 37
      static/src/js/invoice.js

BIN
__init__.pyc


+ 0 - 2
__openerp__.py

@@ -9,8 +9,6 @@ Este modulo Permite realizar impresión de factura comun.
     'category' : 'account',
     'depends' : ['base','account'],
     'data' : [
-        'views/template.xml',
-        'views/invoice_voucher_print.xml'
     ],
     'qweb' : ['static/src/xml/*.xml',],
     'installable' : True,

+ 66 - 37
static/src/js/invoice.js

@@ -12,25 +12,20 @@ openerp.invoice_print_nota = function (instance, local) {
         jsonDoc:[],
         // Init
 
-        init:function(parent){
+        init:function(parent,modelo,ids){
             this._super(parent);
-        },
-
-        updateId : function(id){
-            var self = this;
-            self.id=id;
+            this.modelo = modelo;
+            this.ids = ids;
         },
 
         start: function () {
-            var self = this;
-            this.$el.click(function () {
-                self.fecthInitial();
-            });
+         this.fecthInitial();
         },
 
         fecthInitial: function(){
-            var id= openerp.webclient._current_state.id;
+            // var id= openerp.webclient._current_state.id;
             var self = this;
+            var id = this.ids[0];
             self.fecthInvoice(id).then(function(invoice){
                 return invoice;
             }).then(function(invoice){
@@ -47,12 +42,12 @@ openerp.invoice_print_nota = function (instance, local) {
                 return self.drawPDF();
             });
             return false;
-        },
+         },
 
         // Consultar Pagos
         fecthInvoice: function(id){
             var defer = $.Deferred();
-            var fields =['id', 'partner_id', 'type', 'number', 'origin', 'state', 'reference', 'currency_id', 'invoice_line', 'supplier_invoice_number','date_invoice','amount_total','user_id','company_id','amount_untaxed','amount_tax'];
+            var fields =['id', 'partner_id', 'type', 'number', 'origin', 'state', 'reference', 'currency_id', 'invoice_line', 'supplier_invoice_number','date_invoice','amount_total','user_id','company_id','amount_untaxed','amount_tax','residual'];
             var domain=[['id', '=', id]];
             var Invoice = new instance.web.Model('account.invoice');
             Invoice.query(fields).filter(domain).order_by('id').all().then(function(results){
@@ -158,6 +153,8 @@ openerp.invoice_print_nota = function (instance, local) {
                     company_id : resInvoice[k].company_id[1],
                     customer_address : partner.state_id[1]+", "+partner.country_id[1],
                     company_address : company.state_id[1]+", "+company.country_id[1],
+                    total_pagado : accounting.formatNumber(resInvoice[k].amount_total-resInvoice[k].residual,0,".",","),
+                    residual : accounting.formatNumber(resInvoice[k].residual,0,".",","),
                     amount_untaxed : accounting.formatNumber(resInvoice[k].amount_untaxed,2,".",","),
                     amount_tax : accounting.formatNumber(resInvoice[k].amount_tax,2,".",","),
                     amount_total : accounting.formatNumber(resInvoice[k].amount_total,2,".",",")
@@ -211,10 +208,10 @@ openerp.invoice_print_nota = function (instance, local) {
                     theme: 'plain',
                     styles: { overflow: 'linebreak', fontSize: 8, columnWidth: 'wrap'},
                     columnStyles: {
-                        line_quantity : {halign:'right',columnWidth: '4px'},
-                        line_name : {columnWidth: '10px'},
-                        line_price_unit : {columnWidth: '4px'},
-                        line_price_subtotal : {columnWidth: '4px'},
+                        line_quantity : {halign:'left',columnWidth: '4px'},
+                        line_name : {columnWidth: '12px'},
+                        line_price_unit : {halign:'right',columnWidth: '4px'},
+                        line_price_subtotal : {halign:'right',columnWidth: '4px'},
                     },
                     margin: { top: 45, horizontal: 7},
 
@@ -283,12 +280,32 @@ openerp.invoice_print_nota = function (instance, local) {
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('bold');
                         pdfDoc.setTextColor(40);
-                        pdfDoc.text(135,120,'Sub Total: ');
+                        pdfDoc.text(15,120,'Total a Pagar: ');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('normal');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(doc[0].amount_total,60,120,'right');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('bold');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(135,120,'Total a Pagar: ');
 
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('normal');
                         pdfDoc.setTextColor(40);
-                        pdfDoc.text(doc[0].amount_untaxed,180,120,'right');
+                        pdfDoc.text(doc[0].amount_untaxed,185,120,'right');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('bold');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(15,124,'Total Pagado: ');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('normal');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(doc[0].total_pagado,60,124,'right');
 
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('bold');
@@ -298,7 +315,17 @@ openerp.invoice_print_nota = function (instance, local) {
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('normal');
                         pdfDoc.setTextColor(40);
-                        pdfDoc.text(doc[0].amount_tax,180,124,'right');
+                        pdfDoc.text(doc[0].amount_tax,185,124,'right');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('bold');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(15,128,'Saldo: ');
+
+                        pdfDoc.setFontSize(10);
+                        pdfDoc.setFontStyle('normal');
+                        pdfDoc.setTextColor(40);
+                        pdfDoc.text(doc[0].residual,60,128,'right');
 
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('bold');
@@ -308,7 +335,7 @@ openerp.invoice_print_nota = function (instance, local) {
                         pdfDoc.setFontSize(10);
                         pdfDoc.setFontStyle('normal');
                         pdfDoc.setTextColor(40);
-                        pdfDoc.text(doc[0].amount_total,180,128,'right');
+                        pdfDoc.text(doc[0].amount_total,185,128,'right');
                     }
                 });
 
@@ -317,26 +344,28 @@ openerp.invoice_print_nota = function (instance, local) {
         },
     });
 
-    if(instance.web && instance.web.FormView){
+    if(instance.web && instance.web.ListView && instance.web.FormView){
         instance.web.FormView.include({
-            load_form: function (record) {
+            do_show: function() {
                 this._super.apply(this, arguments);
-                if (this.model !== 'account.invoice') return
-                local.parentInstance = this;
-                if (local.widgetInstance) {
-                    local.widgetInstance.updateId(record.id);
-                }
-                local.parentInstance = this;
-                if (local.widgetInstance) {
-                    local.widgetInstance.updateId(record.id);
-                }
-                local.widgetInstance = new local.PrintNotaWidget(this);
-                var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
-                elemento =  elemento.find('.oe_right.oe_button_box.invoice_button_box');
-                local.widgetInstance.appendTo(elemento);
-                local.widgetInstance.updateId(record.id);
+                if (this.model != 'account.invoice' || this.dataset.context.default_type !== 'out_invoice') return
+
+                var self = this;
+
+                this.sidebar.add_items('print', [
+                    {
+                        label: 'Imprimir Factura',
+                        classname: 'oe_sidebar_print',
+                        callback: function () {
+                            var widget = new local.PrintNotaWidget(self, self.model, self.get_selected_ids());
+                            widget.start()
+                        }
+                    }
+                ])
             }
         })
 
     }
+
+
 }