Quellcode durchsuchen

FIX ADD Agregado reports de facturas rectificativas de clientes y proveedores

Sebas vor 6 Jahren
Ursprung
Commit
04d3a7039a

+ 10 - 0
static/src/js/configuration_reporting.js

@@ -48,6 +48,11 @@ function configuration_reporting (instance, widget) {
                 description: 'Permite realizar un analisis de las facturas de venta.',
                 action: 'ReportSaleInvoiceAnalysis'
             },
+            {
+                title: 'Análisis de Devoluciones de Cliente',
+                description: 'Permite visualizar un listado de devoluciones de clientes.',
+                action: 'ReportRefundInvoiceCustomer'
+            },
             {
                 title: 'Análisis de Contratos del Cliente',
                 description: 'Permite visualizar un listado de contratos de clientes.',
@@ -103,6 +108,11 @@ function configuration_reporting (instance, widget) {
                 description: 'Permite realizar un analisis de las facturas de compra y de gastos',
                 action: 'ReportPurchaseInvoiceAnalysis'
             },
+            {
+                title: 'Análisis de Devoluciones de Proveedores',
+                description: 'Permite visualizar un listado de devoluciones de proveedores.',
+                action: 'ReportRefundInvoiceSupplier'
+            },
             {
                 title: 'Análisis de Contratos de Proveedores',
                 description: 'Permite visualizar un listado de contratos de proveedores.',

+ 10 - 1
static/src/js/main.js

@@ -28,11 +28,13 @@ openerp.eiru_reporting = function (instance) {
         report_project(reporting);
         reporting_accountpending_pagar(reporting);
         reporting_accountpending(reporting);
+        report_refund_invoice_customer(reporting);
+        report_refund_invoice_supplier(reporting);
         report_works(reporting);
         report_pos(reporting);
         report_rrhh(reporting);
         report_mrp(reporting);
-	report_ranking_pos_orders_customer(reporting);
+	    report_ranking_pos_orders_customer(reporting);
         report_ranking_sales_orders_customer(reporting);
         report_ranking_purchases_orders_supplier(reporting);
         ranking_pos_orders_product_cy(reporting);
@@ -86,6 +88,9 @@ openerp.eiru_reporting = function (instance) {
     // Analisis de ventas
     instance.web.client_actions.add('eiru_reporting.sale_action_report', 'instance.eiru_reporting.ReportSaleInvoiceAnalysisWidget');
 
+    // Devolucion Cliente
+    instance.web.client_actions.add('eiru_reporting.devolucioncliente_action_report', 'instance.eiru_reporting.ReportRefundInvoiceCustomerWidget');
+
     // Contrato Cliente
     instance.web.client_actions.add('eiru_reporting.contratocliente_action_report', 'instance.eiru_reporting.ReportContratoClienteWidget');
 
@@ -120,6 +125,10 @@ openerp.eiru_reporting = function (instance) {
     // ******************************************* Compras *************************************************************************
     // Analisis de compras
     instance.web.client_actions.add('eiru_reporting.purchase_detail_action_report', 'instance.eiru_reporting.ReportPurchaseInvoiceAnalysisWidget');
+
+    // Devolucion Proveedor
+    instance.web.client_actions.add('eiru_reporting.devolucionproveedor_action_report', 'instance.eiru_reporting.ReportRefundInvoiceSupplierWidget');
+
     // Contrato Cliente
     instance.web.client_actions.add('eiru_reporting.contratoproveedor_action_report', 'instance.eiru_reporting.ReportContratoProveedorWidget');
 

+ 51 - 85
static/src/js/reports/report_refund_invoice_customer.js

@@ -9,6 +9,7 @@ function report_refund_invoice_customer (reporting){
         invoiceLines: [],
         productProduct:[],
         Currency:[],
+        content :[],
         rowsData :[],
         rowOrigin:[],
         accountJournal:[],
@@ -31,8 +32,9 @@ function report_refund_invoice_customer (reporting){
           this._super(parent);
         },
         start: function () {
+            var self = this;
             var table = this.$el.find('#table');
-            table.bootstrapTable({data : self.rowOrigin});
+            table.bootstrapTable({data : self.rowsData});
             this.fecthFecha();
             this.submitForm();
         },
@@ -133,6 +135,7 @@ function report_refund_invoice_customer (reporting){
             });
             return defer;
         },
+
         // Fecha
         fecthFecha: function() {
             var to;
@@ -278,7 +281,9 @@ function report_refund_invoice_customer (reporting){
         },
 
         fectUtility: function(){
+            var self = this;
             var data=[];
+            var AccountInvoiceLine = self.invoiceLines;
             var item;
             var invoice;
             var producto;
@@ -293,8 +298,8 @@ function report_refund_invoice_customer (reporting){
                 }
                 data.push({
                         id : invoice.id,
-                        number : (invoice.number),
-                        reference : (invoice.reference),
+                        number : self.valorNull(invoice.number),
+                        reference : self.valorNull(invoice.reference),
                         id_product : producto.id,
                         name : (item.name),
                         quantity : accounting.formatNumber((item.quantity),0, ".", ","),
@@ -306,78 +311,58 @@ function report_refund_invoice_customer (reporting){
                         date_invoice : (invoice.date_invoice),
                         price_tot_tot : (item.quantity * item.price_unit),
                         partner_id : invoice.partner_id[0],
-                        partner_name : invoice.partner_id[1]
+                        partner_name : invoice.partner_id[1],
                 });
           }
-          this.rowsData=data;
-          this.rowOrigin=data;
-          this.loadTable(data)
+          self.content=data;
+          this.loadTable(data);
         },
 
 
         fectSearch: function(){
             var self = this;
-            var hoy = moment().format('YYYY-MM-DD');
+            var today = moment().format('YYYY-MM-DD');
+            var yesterday = moment().add(-1, 'days').format('YYYY-MM-DD');
+            var month = moment().format('YYYY-MM');
+            var last_month = moment().add(-1, 'months').format('YYYY-MM');
             var partner = this.$el.find('#partner').val().split('-');
             var product = this.$el.find('#product').val().split('-');
             var desde =this.$el.find('#from').val();
             var hasta =this.$el.find('#to').val();
-            self.rowsData=self.rowOrigin;
+            var content = self.content;
 
             if ($('#A').is(":checked")){
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    return inv.date_invoice == hoy;
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM-DD') == today;
                 });
             }
             if ($('#B').is(":checked")){
-                var date = hoy.split('-');
-                var ayer = date[2] - 1;
-                date.splice(2,0);
-                date[2] = '0'+ayer;
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    return inv.date_invoice == date[0]+'-'+date[1]+'-'+date[2];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM-DD') == yesterday;
                 });
             }
             if ($('#C').is(":checked")){
-                var date = hoy.split('-');
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    var mes = inv.date_invoice.split('-');
-                    return mes[0]+'-'+mes[1] == date[0]+'-'+date[1];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM') == month;
                 });
             }
             if ($('#D').is(":checked")){
-                var date = hoy.split('-');
-                var mes = date[1] - 1;
-                var year;
-                date.splice(1,0);
-                if(date[1] == 1){
-                    date[1] = '12';
-                    year = date[0] - 1;
-                    date[0] = year;
-                }else{
-
-                    if(date[1] < 10){
-                        date[1] = '0'+mes;
-                    }else{
-                        date[1] = mes;
-                    }
-                }
-                self.rowsData = _.filter(content, function (inv){
-                    var mes = inv.date.split('-');
-                    return mes[0]+'-'+mes[1] == date[0]+'-'+date[1];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM') == last_month;
                 });
             }
+
             if ($('#Z').is(":checked")){
                 $('#datepicker').css('display','block');
                 if (desde.length > 0){
                     var date= desde.split('/');
-                    self.rowsData = _.filter(self.rowsData, function (inv){
+                    content = _.filter(content, function (inv){
                         return inv.date_invoice >= (date[2]+"-"+date[1]+"-"+date[0]);
                     });
                 }
                 if (hasta.length > 0){
                     var date= hasta.split('/');
-                    self.rowsData = _.filter(self.rowsData, function (inv){
+                    content = _.filter(content, function (inv){
                         return inv.date_invoice <= (date[2]+"-"+date[1]+"-"+date[0]);
                     });
                 }
@@ -385,28 +370,28 @@ function report_refund_invoice_customer (reporting){
                 $('#datepicker').css('display','none');
             }
             if (partner != ""){
-                self.rowsData = _.filter(self.rowsData, function(inv){
+                content = _.filter(content, function(inv){
                     return inv.partner_id == partner[0];
                 });
             }
             if (product != ""){
-                self.rowsData = _.filter(self.rowsData, function(inv){
+                content = _.filter(content, function(inv){
                     return inv.id_product == product[0];
                 });
             }
 
-            var amount_total_total = _.reduce(_.map(self.rowsData,function(map){
+            var amount_total_total = _.reduce(_.map(content,function(map){
                 return(map.price_tot_tot);
             }),function(memo, num){
                 return memo + num;
             },0);
 
-            self.rowsData.push({
+            content.push({
                 number: "Total",
                 price_tot: accounting.formatNumber((amount_total_total),0,".",","),
             });
 
-            self.loadTable(self.rowsData);
+            self.loadTable(content)
         },
         valorNull:function(dato){
             var valor ="";
@@ -466,19 +451,31 @@ function report_refund_invoice_customer (reporting){
             });
         },
         loadTable:function(rowsTable){
+            var self = this;
+            self.rowsData = rowsTable;
             var table = this.$el.find('#table');
             table.bootstrapTable('load', rowsTable);
         },
+
+        getObjetPdf: function(rowsTable){
+            var self = this;
+            var rows=self.rowsData;
+
+            return rows;
+        },
+
         clickOnAction: function (e) {
-            var action = this.$el.find(e.target).val();
             var self = this;
+            var action = this.$el.find(e.target).val();
+            var rowsNew;
             var getColumns=[];
             var rows=[];
+            rowsNew = self.getObjetPdf();
             var table = this.$el.find("#table");
             var data2 = table.bootstrapTable('getVisibleColumns');
             if (action === 'pdf') {
                 var dataNEW = _.map(data2, function (val){ return val.field});
-                _.each(this.rowsData,function (item){
+                _.each(rowsNew,function (item){
                     rows.push(_.pick(item, dataNEW));
                 });
                 // Obtener los nombre de la Cabezera
@@ -531,48 +528,17 @@ function report_refund_invoice_customer (reporting){
             var totalPagesExp = "{total_pages_count_string}";
             var pdfDoc = new jsPDF();
 
-            // rows=this.rowsData;
-            var quantity=_.reduce(_.map(rows,function(item){
-                var valor=0;
-                if (item.quantity){valor = parseFloat(((item.quantity.replace(".","")).replace(",",".")))}return valor}), function(memo, num){ return memo + num; },0);
-            var precio_unit=_.reduce(_.map(rows,function(item){
-                var valor =0;
-                if (item.price_unity){valor=parseFloat(((item.price_unity.replace(".","")).replace(",",".")))} return valor}), function(memo, num){ return memo + num; },0);
-
-            var tot_unit=_.reduce(_.map(rows,function(item){
-                var valor=0;
-                if (item.price_tot){valor=parseFloat(((item.price_tot.replace(".","")).replace(",",".")))}return valor}), function(memo, num){ return memo + num; },0);
-
-            rowsPdf=rows;
-
             var company = _.map(self.resCompany, function (map) {
                 return map.currency_id[1];
             });
-            rowsPdf.push({
-                        number : "TOTAL "+company,
-                        date_create : " ",
-                        reference: " ",
-                        name : " ",
-                        quantity: accounting.formatNumber(quantity,0, ".", ","),
-                        price_unity : accounting.formatNumber(precio_unit,2, ".", ","),
-                        price_tot : accounting.formatNumber(tot_unit,2, ".", ",")
-                    });
 
-            // rowsPdf.unshift({
-            //             number : "TOTAL "+company,
-            //             date_create : " ",
-            //             name : " ",
-            //             quantity: accounting.formatNumber(quantity,0, ".", ","),
-            //             price_unity : accounting.formatNumber(precio_unit,2, ".", ","),
-            //             price_tot : accounting.formatNumber(tot_unit,2, ".", ",")
-            //         });
 
-            pdfDoc.autoTable(getColumns, rowsPdf, {
-                styles: { overflow: 'linebreak', fontSize: 8, columnWidth: 'wrap'},
+            pdfDoc.autoTable(getColumns, rows, {
+                styles: { overflow: 'linebreak', fontSize: 7.5, columnWidth: 'wrap'},
                 columnStyles: {
-                              number: {fontStyle: 'bold'},
-                              date_create :{columnWidth: '12px'},
-                              reference :{columnWidth: '8px'},
+                              number: {columnWidth: 23},
+                              date_create :{columnWidth: 18},
+                              reference :{columnWidth: 20},
                               name :{columnWidth: '10px'},
                               quantity :{halign:'right' },
                               price_unity : {halign:'right' },

+ 58 - 77
static/src/js/reports/report_refund_invoice_supplier.js

@@ -10,6 +10,7 @@ function report_refund_invoice_supplier (reporting){
         productProduct:[],
         Currency:[],
         rowsData :[],
+        content :[],
         rowOrigin:[],
         accountJournal:[],
         resCompany:[],
@@ -37,8 +38,9 @@ function report_refund_invoice_supplier (reporting){
           this._super(parent);
         },
         start: function () {
+            var self = this;
             var table = this.$el.find('#table');
-            table.bootstrapTable({data : self.rowOrigin});
+            table.bootstrapTable({data : self.rowsData});
             this.fecthFecha();
             this.submitForm();
         },
@@ -165,12 +167,12 @@ function report_refund_invoice_supplier (reporting){
               return defer;
         },
         fetchAccountInvoice: function () {
+            var defer = $.Deferred();
             var filter = [['state', 'in',['open','paid']],['type', '=', 'in_refund']];
             var journal_ids = _.flatten(_.map(this.AccountJournal, function (item) {
                 return item.id;
             }));
             var field =['id', 'type', 'number', 'origin', 'state', 'journal_id', 'currency_id', 'invoice_line','date_invoice','partner_id'];
-            var defer = $.Deferred();
             var AccountInvoice = new model.web.Model('account.invoice');
             AccountInvoice.query(field).filter(filter).all().then(function (results) {
                 defer.resolve(results);
@@ -258,7 +260,7 @@ function report_refund_invoice_supplier (reporting){
         BuildTable: function(){
             var self = this;
             var data=[];
-            var AccountInvoiceLine = self.AccountInvoiceLine
+            var AccountInvoiceLine = self.AccountInvoiceLine;
             var invoice;
             var producto;
             var invoice_type;
@@ -276,7 +278,7 @@ function report_refund_invoice_supplier (reporting){
                 }
                 data.push({
                     id : invoice.id,
-                    number : (invoice.number),
+                    number : self.valorNull(invoice.number),
                     id_product : producto.id,
                     name : (item.name),
                     quantity : accounting.formatNumber((item.quantity),0, ".", ","),
@@ -289,77 +291,57 @@ function report_refund_invoice_supplier (reporting){
                     date_create :moment(invoice.date_invoice).format("DD/MM/YYYY"),
                     amount : (item.quantity * item.price_unit),
                     partner_name : invoice.partner_id[1],
-                    invoice_type : invoice_type
+                    invoice_type : invoice_type,
                 });
             });
 
-            self.rowsData=data;
-            self.rowOrigin=data;
-            self.loadTable(data)
+            self.content=data;
+            self.loadTable(data);
         },
         factSearch: function(){
             var self = this;
-            var hoy = moment().format('YYYY-MM-DD');
+            var today = moment().format('YYYY-MM-DD');
+            var yesterday = moment().add(-1, 'days').format('YYYY-MM-DD');
+            var month = moment().format('YYYY-MM');
+            var last_month = moment().add(-1, 'months').format('YYYY-MM');
             var partner = this.$el.find('#partner').val().split('-');
             var product = this.$el.find('#product').val().split('-');
             var desde =this.$el.find('#from').val();
             var hasta =this.$el.find('#to').val();
-            self.rowsData=self.rowOrigin;
+            var content = self.content;
 
             if ($('#A').is(":checked")){
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    return inv.date_invoice == hoy;
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM-DD') == today;
                 });
             }
             if ($('#B').is(":checked")){
-                var date = hoy.split('-');
-                var ayer = date[2] - 1;
-                date.splice(2,0);
-                date[2] = '0'+ayer;
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    return inv.date_invoice == date[0]+'-'+date[1]+'-'+date[2];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM-DD') == yesterday;
                 });
             }
             if ($('#C').is(":checked")){
-                var date = hoy.split('-');
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    var mes = inv.date_invoice.split('-');
-                    return mes[0]+'-'+mes[1] == date[0]+'-'+date[1];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM') == month;
                 });
             }
             if ($('#D').is(":checked")){
-                var date = hoy.split('-');
-                var mes = date[1] - 1;
-                var year;
-                date.splice(1,0);
-                if(date[1] == 1){
-                    date[1] = '12';
-                    year = date[0] - 1;
-                    date[0] = year;
-                }else{
-
-                    if(date[1] < 10){
-                        date[1] = '0'+mes;
-                    }else{
-                        date[1] = mes;
-                    }
-                }
-                self.rowsData = _.filter(self.rowsData, function (inv){
-                    var mes = inv.date.split('-');
-                    return mes[0]+'-'+mes[1] == date[0]+'-'+date[1];
+                content = _.filter(content, function (inv){
+                    return moment(inv.date_invoice).format('YYYY-MM') == last_month;
                 });
             }
+
             if ($('#Z').is(":checked")){
                 $('#datepicker').css('display','block');
                 if (desde.length > 0){
                     var date= desde.split('/');
-                    self.rowsData = _.filter(self.rowsData, function (inv){
+                    content = _.filter(content, function (inv){
                         return inv.date_invoice >= (date[2]+"-"+date[1]+"-"+date[0]);
                     });
                 }
                 if (hasta.length > 0){
                     var date= hasta.split('/');
-                    self.rowsData = _.filter(self.rowsData, function (inv){
+                    content = _.filter(content, function (inv){
                         return inv.date_invoice <= (date[2]+"-"+date[1]+"-"+date[0]);
                     });
                 }
@@ -368,40 +350,46 @@ function report_refund_invoice_supplier (reporting){
             }
 
             if ($('#purchase').is(":checked")){
-                self.rowsData = _.filter(self.rowsData, function (inv){
+                content = _.filter(content, function (inv){
                     return inv.invoice_type == 'purchase';
                 });
             }
             if ($('#expense').is(":checked")){
-                self.rowsData = _.filter(self.rowsData, function (inv){
+                content = _.filter(content, function (inv){
                     return inv.invoice_type == 'expense';
                 });
             }
 
             if (partner != ""){
-                self.rowsData = _.filter(self.rowsData, function(inv){
+                content = _.filter(content, function(inv){
                     return inv.partner_id == partner[0];
                 });
             }
             if (product != ""){
-                self.rowsData = _.filter(self.rowsData, function(inv){
-
+                content = _.filter(content, function(inv){
                     return inv.id_product == product[0];
                 });
             }
 
-            var amount_total_total = _.reduce(_.map(self.rowsData,function(map){
+            var amount_total_total = _.reduce(_.map(content,function(map){
                 return(map.amount);
             }),function(memo, num){
                 return memo + num;
             },0);
 
-            self.rowsData.push({
+            content.push({
                 number: "Total",
                 standar_tot: accounting.formatNumber((amount_total_total),2,".",","),
             });
 
-            self.loadTable(self.rowsData);
+            self.loadTable(content);
+        },
+        valorNull:function(dato){
+            var valor ="";
+            if (dato){
+                valor=dato;
+            }
+            return valor;
         },
         search: function () {
             var self = this;
@@ -454,19 +442,31 @@ function report_refund_invoice_supplier (reporting){
             });
         },
         loadTable:function(rowsTable){
+            var self = this;
+            self.rowsData = rowsTable;
             var table = this.$el.find('#table');
             table.bootstrapTable('load', rowsTable);
         },
+
+        getObjetPdf: function(rowsTable){
+            var self = this;
+            var rows=self.rowsData;
+
+            return rows;
+        },
+
         clickOnAction: function (e) {
-            var action = this.$el.find(e.target).val();
             var self = this;
+            var action = this.$el.find(e.target).val();
             var getColumns=[];
+            var rowsNew;
             var rows=[];
+            rowsNew = self.getObjetPdf();
             var table = this.$el.find("#table");
             var data2 = table.bootstrapTable('getVisibleColumns');
             if (action === 'pdf') {
                 var dataNEW = _.map(data2, function (val){ return val.field});
-                _.each(this.rowsData,function (item){
+                _.each(rowsNew,function (item){
                     rows.push(_.pick(item, dataNEW));
                 });
                 _.each(_.map(data2,function(val){
@@ -486,35 +486,16 @@ function report_refund_invoice_supplier (reporting){
             var desde =(this.$el.find('#from').val());
             var hasta =(this.$el.find('#to').val());
             var totalPagesExp = "{total_pages_count_string}";
+            var pdfDoc = new jsPDF();
             var company = _.map(self.ResCompany, function (map) {
                 return map.currency_id[1];
             });
 
-            var pdfDoc = new jsPDF();
-
-            var quantity=_.reduce(_.map(rows,function(item){
-                var valor=0;
-                if (item.quantity){valor = parseFloat(((item.quantity.replace(".","")).replace(",",".")))}return valor}), function(memo, num){ return memo + num; },0);
-            var price_unity=_.reduce(_.map(rows,function(item){
-                var valor =0;
-                if (item.price_unity){valor=parseFloat(((item.price_unity.replace(".","")).replace(",",".")))} return valor}), function(memo, num){ return memo + num; },0);
-            var standar_tot=_.reduce(_.map(rows,function(item){
-                var valor=0;
-                if (item.standar_tot){valor=parseFloat(((item.standar_tot.replace(".","")).replace(",",".")))} return valor }), function(memo, num){ return memo + num; },0);
-
-            rowsPdf=rows;
-
-            rowsPdf.push({
-                number : "TOTAL "+ company,
-                quantity: accounting.formatNumber(quantity,0, ".", ","),
-                standar_tot : accounting.formatNumber(standar_tot,2, ".", ","),
-            });
-
-            pdfDoc.autoTable(getColumns, rowsPdf, {
-                styles: { overflow: 'linebreak', fontSize: 8, columnWidth: 'wrap'},
+            pdfDoc.autoTable(getColumns, rows, {
+                styles: { overflow: 'linebreak', fontSize: 7.5, columnWidth: 'wrap'},
                 columnStyles: {
-                    number: {fontStyle: 'bold'},
-                    date_create :{columnWidth: '12px'},
+                    number: {columnWidth: 23},
+                    date_create :{columnWidth: 18},
                     partner_name :{columnWidth: '10px'},
                     name :{columnWidth: '10px'},
                     quantity :{halign:'right' },

+ 1 - 1
static/src/reports/report_refund_invoice_customer.xml

@@ -3,7 +3,7 @@
       <t t-name="ReportRefundInvoiceCustomer">
         <div class="report_view">
           <div class="reporting_page_header">
-            <h1>Análisis de facturas de rectificativas de ventas</h1>
+            <h1>Análisis de facturas rectificativas de ventas</h1>
             <div id="volver"></div>
           </div>
           <button type="button" class="oe_button oe_form_button oe_highlight" aria-label="Left Align" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">FILTRAR

+ 6 - 0
templates.xml

@@ -36,6 +36,9 @@
                 <!-- Análisis de contrato -->
                 <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_contratocliente.js"/>
 
+                <!-- Análisis de devolucion cliente -->
+                <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_refund_invoice_customer.js"/>
+
                 <!-- Ranking ventas -->
                 <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/ranking_sales_orders_product_cy.js"/>
                 <!-- <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_refund_invoice_customer.js"/> -->
@@ -43,6 +46,9 @@
                 <!-- Analisis de compras -->
                 <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_purchases_invoice_analysis.js" />
 
+                <!-- Análisis de devolucion proveedor -->
+                <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_refund_invoice_supplier.js"/>
+
                 <!-- Análisis de contrato -->
                 <script type="text/javascript" src="/eiru_reporting/static/src/js/reports/report_contratoproveedor.js"/>
 

+ 12 - 0
views/actions.xml

@@ -77,6 +77,12 @@
             <field name="tag">eiru_reporting.sale_action_report</field>
         </record>
 
+		<!-- Analisis de Devolucion de Clientes -->
+		<record id="devolucioncliente_report_action" model="ir.actions.client">
+			<field name="name">Analisis de Devolucion de Clientes</field>
+			<field name="tag">eiru_reporting.devolucioncliente_action_report</field>
+		</record>
+
 		<!-- Analisis de Contratos de Clientes -->
 		<record id="contratocliente_report_action" model="ir.actions.client">
 			<field name="name">Analisis de Contratos de Clientes</field>
@@ -148,6 +154,12 @@
             <field name="tag">eiru_reporting.purchase_detail_action_report</field>
         </record>
 
+		<!-- Analisis de Devolucion de Proveedores-->
+		<record id="devolucionproveedor_report_action" model="ir.actions.client">
+			<field name="name">Analisis de Devolucion de Proveedores</field>
+			<field name="tag">eiru_reporting.devolucionproveedor_action_report</field>
+		</record>
+
 		<!-- Analisis de Contratos de Proveedor -->
 		<record id="contratoproveedor_report_action" model="ir.actions.client">
 			<field name="name">Analisis de Contratos de Proveedores</field>

+ 10 - 4
views/menus.xml

@@ -18,8 +18,11 @@
             <!-- Analisis de compras -->
             <menuitem id="purchase_detail_report_menu_submenu" parent="purchase_report_parent_menu" name="Analisis de compras" action="purchase_detail_report_action" sequence="2"/>
 
+            <!-- Analisis de devolucion de proveedores -->
+            <menuitem id="devolucionproveedor_report_menu_submenu" parent="purchase_report_parent_menu" name="Analisis de facturas rectificativas de Proveedores" action="devolucionproveedor_report_action" sequence="3"/>
+
             <!-- Analisis de contratos de proveedores -->
-            <menuitem id="contratoproveedor_report_menu_submenu" parent="purchase_report_parent_menu" name="Analisis Contratos de Proveedores" action="contratoproveedor_report_action" sequence="3"/>
+            <menuitem id="contratoproveedor_report_menu_submenu" parent="purchase_report_parent_menu" name="Analisis Contratos de Proveedores" action="contratoproveedor_report_action" sequence="4"/>
 
             <!-- Ranking de productos -->
             <menuitem id="product_ranking_report_menu_submenu" parent="purchase_report_parent_menu" name="Ranking de productos" action="product_ranking_report_action" />
@@ -39,14 +42,17 @@
             <!-- Historico de utilidad sobre precio de venta -->
             <menuitem id="difventa_report_menu_submenu" parent="sale_report_parent_menu" name="Historico de porcentaje utilidad de precio" action="difventa_report_action" sequence="2"/>
 
+            <!-- Analisis de devolucion de proveedores -->
+            <menuitem id="devolucioncliente_report_menu_submenu" parent="sale_report_parent_menu" name="Analisis de facturas rectificativas de ventas" action="devolucioncliente_report_action" sequence="3"/>
+
             <!-- Analisis de contratos de clientes -->
-            <menuitem id="contratocliente_report_menu_submenu" parent="sale_report_parent_menu" name="Analisis contratos de clientes" action="contratocliente_report_action" sequence="3"/>
+            <menuitem id="contratocliente_report_menu_submenu" parent="sale_report_parent_menu" name="Analisis contratos de clientes" action="contratocliente_report_action" sequence="4"/>
 
             <!-- Ranking de clientes con mas compras -->
-            <menuitem id="saleranking_report_menu_submenu" parent="sale_report_parent_menu" name="Ranking de clientes con mas compras" action="sale_customer_ranking_report_action" sequence="4"/>
+            <menuitem id="saleranking_report_menu_submenu" parent="sale_report_parent_menu" name="Ranking de clientes con mas compras" action="sale_customer_ranking_report_action" sequence="5"/>
 
             <!-- Ranking de productos mas vendidos -->
-            <menuitem id="productranking_report_menu_submenu" parent="sale_report_parent_menu" name="Ranking de productos mas vendidos" action="productranking_report_action" sequence="5"/>
+            <menuitem id="productranking_report_menu_submenu" parent="sale_report_parent_menu" name="Ranking de productos mas vendidos" action="productranking_report_action" sequence="6"/>
 
 	    <!-- POS Submenu -->
         <menuitem id="point_of_sale_report_parent_menu" name="TPV" parent="eiru_report_main_menu" sequence="3"/>