Explorar o código

[ADD] Impresión de adelanto / comisión

adrielso %!s(int64=7) %!d(string=hai) anos
pai
achega
b3ab10a2ef

+ 12 - 0
static/src/css/style.css

@@ -149,3 +149,15 @@
     width: 160px;
     text-align: center;
 }
+.print-advancement-button {
+    padding-right: 30px;
+}
+.print-advancement-selected{
+    width: 120px;
+    height: 35px;
+    float: right;
+    font-size: 12pt !important;
+}
+.print-advancement-icon{
+    float: left;
+}

+ 114 - 16
static/src/js/payslip_advancement.js

@@ -30,6 +30,7 @@
             var editAdvancement = this.$el.find('.edit-advancement');
             var refreshAdvancement = this.$el.find('.refresh-advancement');
             var printAdvancement = this.$el.find('.print-advancement');
+            var printCommission = this.$el.find('.print-commission');
             var exportCash = this.$el.find('.export-cash');
 
             // create
@@ -44,9 +45,13 @@
             refreshAdvancement.click(function() {
                 self.fetchRecomputeSheet();
             });
-            // Imprimir Adelanto y comision
+            // Imprimir Adelanto
             printAdvancement.click(function() {
-                self.fetchPrintAdvancement();
+                self.fetchPrintAdvancement('ADL', 'Adelanto');
+            });
+            // Imprimir Comision
+            printCommission.click(function() {
+                self.fetchPrintAdvancement('CMS', 'Comisión');
             });
             exportCash.click(function() {
                 self.fetchExportCash();
@@ -565,7 +570,7 @@
          * Description : Imprimir adelanto y comisión de funcionario
          * -------------------------------------------------------------------*/
         /* Description : Metodo Inicial de imprecion */
-        fetchPrintAdvancement: function() {
+        fetchPrintAdvancement: function(type, title) {
             var self = this;
             self.fetchPayslip().then(function(hrPayslip) {
                 return hrPayslip;
@@ -586,7 +591,7 @@
                 return self.fetchSalaryRule();
             }).then(function(salaryRule) {
                 self.salaryRule = salaryRule;
-                return self.jsPdfPrintAdvancement();
+                return self.showPrintAdvancement(type, title);
             });
                 //
         },
@@ -604,15 +609,96 @@
             });
 
         },
+        /* Modal Selected print advancement */
+        showPrintAdvancement: function(type, title) {
+            var self = this;
+            var defer = $.Deferred();
+            var payslipInput = self.getpayslipInput(type);
+
+            if (payslipInput.length === 0){
+                openerp.web.notification.do_warn("Atención","El funcionario no cuenta con "+title+" registrado");
+                return;
+            }
+            var inputBody = [];
+            var inputSelect = [];
+            var salaryRule;
+            var company = self.resCompany[0];
+            var currency = self.getCurrencyCompany(company.currency_id[0]).shift();
+
+            _.each(payslipInput, function(input) {
+                salaryRule = self.getSalaryRule(input.code).shift();
+                if (!salaryRule){
+                    salaryRule ={};
+                    salaryRule.name="N/A";
+                }
+                var ammount = input.amount;
+                if (ammount < 0)
+                    ammount = -1* ammount;
+
+                inputBody.push({
+                    id: input.id,
+                    code_name :  salaryRule.name,
+                    code: input.code,
+                    input_name: input.name,
+                    amount_input: accounting.formatNumber((ammount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
+                    amount: (ammount),
+                    date: moment(input.create_date).format('DD/MM/YYYY')
+                });
+            });
+
+            var titleData = [
+                {
+                    title: "Impresión de "+title
+                }
+            ];
+            var modalModifyAdvancement = QWeb.render('EiruPayslipPrintAdvancement', {
+                advancementList: inputBody,
+                modalTitle: titleData
+            });
+            $('.openerp_webclient_container').after(modalModifyAdvancement);
+            $('.expired-account-modal').modal();
+
+            var tableRow = $('.expired-account-modal').find('.table-tbody').find('tr');
+            var printAdvancement = $('.expired-account-modal').find('.print-advancement-selected')
+            /* Salir*/
+            $('.expired-account-modal').on('hidden.bs.modal', function (e) {
+                defer.resolve('salir');
+                self.removeModal(e);
+            });
+
+            printAdvancement.click(function(e){
+                self.jsPdfPrintAdvancement(inputSelect, type, title)
+            })
+
+            tableRow.click(function(e){
+                if ($(e.target).index() !== 0)
+                        return;
+
+                idRow = parseInt(($(e.target).closest('tr').children()[0].textContent).trim());
+                if (e.target.checked === true){
+                    inputSelect.push(idRow)
+                } else {
+                    var indexRow = undefined;
+                    _.each(inputSelect, function(input, index){
+                        if (input === idRow) {
+                            indexRow = index;
+                        }
+                    });
+                    inputSelect.splice(indexRow,1);
+                }
+            });
+            return defer;
+        },
         /* Generar la impresion de Adelanto */
-        jsPdfPrintAdvancement: function() {
+        jsPdfPrintAdvancement: function(inputSelect, type, titlePDF) {
             var self = this;
-            var payslipInput = self.getpayslipInput('ADL');
+            var payslipInput = self.getpayslipInput(type);
 
             if (payslipInput.length === 0){
-                openerp.web.notification.do_warn("Atención","El funcionario no cuenta con adelantos registrado");
+                openerp.web.notification.do_warn("Atención","El funcionario no cuenta con "+titlePDF+" registrado");
                 return;
             }
+
             var inputBody = [];
             var inputHead = [
                 {
@@ -633,20 +719,30 @@
                 },
             ];
             var salaryRule;
-            var company = self.resCompany.shift();
+            var company = self.resCompany[0];
             var currency = self.getCurrencyCompany(company.currency_id[0]).shift();
 
+            if (!!inputSelect.length){
+                payslipInput =  _.filter(payslipInput, function(input){
+                    return _.contains(inputSelect, input.id);
+                });
+            }
+
             _.each(payslipInput, function(input) {
                 salaryRule = self.getSalaryRule(input.code).shift();
                 if (!salaryRule){
                     salaryRule ={};
                     salaryRule.name="N/A";
                 }
+                var ammount = input.amount
+                if (ammount < 0)
+                    ammount = -1* ammount;
+
                 inputBody.push({
                     code_name :  salaryRule.name,
                     input_name: input.name,
-                    amount_input: accounting.formatNumber((-1 * input.amount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
-                    amount: (-1 * input.amount),
+                    amount_input: accounting.formatNumber((ammount), currency.decimal_places, currency.thousands_separator, currency.decimal_separator),
+                    amount: (ammount),
                     date: moment(input.create_date).format('DD/MM/YYYY')
                 });
             });
@@ -664,18 +760,19 @@
                 amount: total,
                 date: ""
             });
-            self.drawPDF(inputHead, inputBody, total, currency);
+            self.drawPDF(inputHead, inputBody, total, currency, titlePDF);
         },
         /* Generar el pdf*/
-        drawPDF: function(inputHead, inputBody, total, currency) {
+        drawPDF: function(inputHead, inputBody, total, currency, titlePDF) {
             var self = this;
-            var hrPayslip = self.hrPayslip.shift();
-            var resUser = self.resUser.shift();
+            var hrPayslip = self.hrPayslip[0];
+            var resUser = self.resUser[0];
             var pdfDoc = new jsPDF();
+            var title =titlePDF.toUpperCase();
             /* titulo */
             pdfDoc.setFontType('bold');
             pdfDoc.setFontSize(18);
-            pdfDoc.text(105, 20, "RECIBO DE ADELANTO", null, null, 'center');
+            pdfDoc.text(105, 20, "RECIBO DE "+title, null, null, 'center');
             /* Subtitulos*/
             pdfDoc.setFontType('bold');
             pdfDoc.setFontSize(12);
@@ -726,7 +823,8 @@
             pdfDoc.text(10, fila,resUser.name);
             pdfDoc.text(150, fila, hrPayslip.employee_id[1] );
             /* Guardar */
-            pdfDoc.save('RECIBO DE ADELANTO de'+hrPayslip.employee_id[1]+'.pdf');
+            var pdfTitle ='RECIBO DE '+title+' de'+hrPayslip.employee_id[1]+'.pdf';
+            pdfDoc.save(pdfTitle.toUpperCase());
 
         },
         /* Obtener el nombre de la moneda */

+ 1 - 1
static/src/xml/modal/modal_payslip_modify_advancement.xml

@@ -8,7 +8,7 @@
                     <div class="modal-header">
                         <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>
                         <h3 class="modal-title">
-                            Commission
+                            Comisión
                         </h3>
                     </div>
                     <!-- Body -->

+ 67 - 0
static/src/xml/modal/modal_payslip_print_advancement.xml

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template xml:space="preserve">
+    <t t-name="EiruPayslipPrintAdvancement">
+        <div class="modal in expired-account-modal" tabindex="-1" role="dialog">
+            <div class="modal-dialog modal-lg" role="document">
+                <div class="modal-content openerp">
+                    <!-- title  -->
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>
+                        <h3 class="modal-title" t-foreach="modalTitle" t-as="title">
+                            <t t-esc="title_value.title"/>
+                        </h3>
+                    </div>
+                    <!-- Body -->
+                    <div class="modal-body">
+                        <div>
+                            <div class="row">
+                                <div class="print-advancement-button">
+                                    <button type="button" class="oe_button oe_form_button oe_highlight print-advancement-selected">
+                                        <div class="stat_button_icon fa fa-print print-advancement-icon"></div>
+                                        <div>Imprimir</div>
+                                    </button>
+                                </div>
+                            </div>
+                        </div>
+                        <hr class="detallis-employee-separator"/>
+                        <!-- Table -->
+                        <div class=" oe_view_manager_body payslip-table-advancement">
+                            <div class="modal-head-wrapper-payslip">
+                                <table class="oe_list_content">
+                                    <thead >
+                                        <tr class="oe_list_header_columns"  >
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                            <th class="oe_list_header_char oe_sortable">Tipo de Operación</th>
+                                            <th class="oe_list_header_char oe_sortable">Descripción</th>
+                                            <th class="oe_list_header_char oe_sortable">Importe</th>
+                                            <th class="oe_list_header_char oe_sortable"></th>
+                                        </tr>
+                                    </thead>
+                                </table>
+                            </div>
+                            <div class="modal-item-payslip">
+                                <table class="oe_list_content">
+                                    <tbody class="table-tbody">
+                                        <tr t-foreach="advancementList" t-as="input">
+                                            <td><t t-esc="input_value.id"/></td>
+                                            <td><t t-esc="input_value.code"/></td>
+                                            <td><t t-esc="input_value.code_name"/></td>
+                                            <td><t t-esc="input_value.input_name"/></td>
+                                            <td><t t-esc="input_value.amount_input"/></td>
+                                            <td><input type="checkbox" class="select-advancement"></input></td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- Pie de Pagina -->
+                    <div class="modal-footer payslip-footer">
+                        <button type="button" class="oe_button oe_form_button oe_link dismmis-modal" data-dismiss="modal">Salir</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </t>
+</template>

+ 6 - 2
static/src/xml/payslip_add_advancement.xml

@@ -18,9 +18,13 @@
                 <div class="stat_button_icon fa fa-exchange"></div>
                 <div>Exportar a Caja</div>
             </button>
-            <button class="oe_stat_button btn btn-default oe_inline print-advancement" title="Imprimir adelanto u comisión de funcionario">
+            <button class="oe_stat_button btn btn-default oe_inline print-advancement" title="Imprimir adelanto del funcionario">
                 <div class="stat_button_icon fa fa-print"></div>
-                <div>Imprimir</div>
+                <div>Adelanto</div>
+            </button>
+            <button class="oe_stat_button btn btn-default oe_inline print-commission" title="Imprimir comisión del funcionario">
+                <div class="stat_button_icon fa fa-print"></div>
+                <div>Comisión</div>
             </button>
         </div>
   </t>