Переглянути джерело

[ADD] Hora extra en las nominas

adrielso 6 роки тому
батько
коміт
20d0d05a4c

+ 24 - 0
model/payslip_faults.py

@@ -42,10 +42,13 @@ class HrPayslip(models.Model):
         payslip_advancement = self.env['hr.payslip.input'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'ADL')])
         ''' Comision '''
         payslip_commission = self.env['hr.payslip.input'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'CMS')])
+        ''' HORA_EXTRA '''
+        payslip_horaExtra = self.env['hr.payslip.input'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'HORA_EXTRA')])
 
         line_worked = None
         line_advancent = None
         line_commission = None
+        lineHoraExtra = None
 
         if payslip_worked:
             days = 0
@@ -96,6 +99,25 @@ class HrPayslip(models.Model):
 
             line_commission = self.env['hr.payslip.input'].create(commission_line)
 
+        ''' Hora EXtra '''
+
+        if payslip_horaExtra:
+            amount = 0
+            for horaExtra in payslip_horaExtra:
+                amount = amount + horaExtra.amount
+
+            horaExtra_line = {
+                'name': "Total Hora Extras",
+                'code': 'HORA_EXTRA',
+                'amount': amount,
+                'payslip_id': payslip.id,
+                'contract_id': payslip.contract_id.id,
+                'sequence': 15
+            }
+
+            lineHoraExtra = self.env['hr.payslip.input'].create(horaExtra_line)
+
+        ''' Reclaculate '''
         payslip.cancel_sheet()
         payslip.hr_verify_sheet()
         payslip.process_sheet()
@@ -106,6 +128,8 @@ class HrPayslip(models.Model):
             line_advancent.unlink()
         if line_commission:
             line_commission.unlink()
+        if lineHoraExtra:
+            lineHoraExtra.unlink()
 
         return True if payslip else False
 

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

@@ -35,6 +35,7 @@
             var refreshAdvancement = this.$el.find('.refresh-advancement');
             var printAdvancement = this.$el.find('.print-advancement');
             var printCommission = this.$el.find('.print-commission');
+            var printHoraExtras = this.$el.find('.print-hora-extras');
             var exportCash = this.$el.find('.export-cash');
 
             // create
@@ -57,6 +58,10 @@
             printCommission.click(function() {
                 self.fetchPrintAdvancement('CMS', 'Comisión');
             });
+            // Hora Extras
+            printHoraExtras.click(function() {
+                self.fetchPrintAdvancement('HORA_EXTRA', 'Hora Extras');
+            });
             exportCash.click(function() {
                 self.fetchExportCash();
             });
@@ -214,7 +219,7 @@
         /* Description: Consulta Reglas Salarial (ADL CMS)*/
         fetchSalaryRule: function() {
             var salaryRule = new openerp.web.Model('hr.salary.rule');
-            return salaryRule.query(['name','code']).filter([['code','in',['ADL','CMS']]]).all();
+            return salaryRule.query(['name','code']).filter([['code','in',['ADL','CMS', 'HORA_EXTRA']]]).all();
         },
         /* Consultar método de pagos */
         fetchJournal: function() {
@@ -464,13 +469,22 @@
             var hrPayslipInput = new openerp.web.Model('hr.payslip.input');
             return hrPayslipInput.query(fields).filter(domain).all();
          },
+         getpayslipInputUpdate: function(codes) {
+            var self = this;
+            return _.filter(self.payslipInput, function(item) {
+                return _.contains(codes, item.code)
+             //     return item.code === code;
+            });
+         },
         /* Description: Unir payslip_input con salary_rule*/
         joinInputSalari: function() {
             var self = this;
             var defer = $.Deferred();
             var inputSalari = [];
             var rule;
-            var payslipInput = self.getpayslipInput('CMS');
+            // var payslipInput = self.getpayslipInput('CMS');
+            // var types = ['CMS','HORA_EXTRA']
+            var payslipInput = self.getpayslipInputUpdate(['CMS','HORA_EXTRA']);
 
             _.each(payslipInput, function(item) {
                 rule = self.getSalaryRule(item.code).shift();
@@ -725,7 +739,6 @@
                 self.salaryRule = salaryRule;
                 return self.showPrintAdvancement(type, title);
             });
-                //
         },
         /* Consultar Usuario (res.User) */
         fetchResUser: function() {

+ 4 - 0
static/src/xml/payslip_add_advancement.xml

@@ -26,6 +26,10 @@
                 <div class="stat_button_icon fa fa-print"></div>
                 <div>Comisión</div>
             </button>
+            <button class="oe_stat_button btn btn-default oe_inline print-hora-extras" title="Imprimir comisión del funcionario">
+                <div class="stat_button_icon fa fa-print"></div>
+                <div>Horas Extras</div>
+            </button>
         </div>
   </t>
 </templates>