← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/trunk-payroll-payslip-on-payslip-mtr into lp:~openerp-dev/openobject-addons/trunk-payroll

 

Meera Trambadia (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-payroll-payslip-on-payslip-mtr into lp:~openerp-dev/openobject-addons/trunk-payroll.

Requested reviews:
  Mustufa Rangwala (Open ERP) (mra-tinyerp)
  qdp (OpenERP) (qdp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-payroll-payslip-on-payslip-mtr/+merge/60055

*Added following methods to compute 'payslip' on 'other payslip'(based on some criteria) through a rule.
- payslip_sum()
- worked_days_sum()

-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-payroll-payslip-on-payslip-mtr/+merge/60055
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-payroll.
=== modified file 'hr_payroll/hr_payroll.py'
--- hr_payroll/hr_payroll.py	2011-04-28 13:08:48 +0000
+++ hr_payroll/hr_payroll.py	2011-05-05 12:37:33 +0000
@@ -612,6 +612,21 @@
             res['value'].update({'struct_id': False})
         return self.onchange_employee_id(cr, uid, ids, date_from=date_from, date_to=date_to, employee_id=employee_id, contract_id=contract_id, context=context)
 
+    def sum(self, cr, uid, code, from_date, to_date=None, employee=False, context=None):
+        if context is None:
+            context = {}
+        if to_date is None:
+            to_date = datetime.now().strftime('%Y-%m-%d')
+        if not employee:
+            return 0.0
+        cr.execute("SELECT sum(pl.total) \
+                    FROM hr_payslip as hp, hr_payslip_line as pl \
+                    WHERE hp.employee_id = %s AND hp.state in ('confirm','done') \
+                    AND hp.date_from >= %s AND hp.date_to <= %s AND hp.id = pl.slip_id AND pl.code = %s",
+                   (employee, from_date, to_date, code ))
+        res = cr.fetchone()
+        return res and res[0] or 0.0
+    
 hr_payslip()
 
 class hr_payslip_input(osv.osv):
@@ -634,6 +649,27 @@
     _defaults = {
         'sequence': 10,
     }
+    
+    def sum(self, cr, uid, code, field, from_date, to_date=None, employee=False, context=None):
+        if context is None:
+            context = {}
+        if to_date is None:
+            to_date = datetime.now().strftime('%Y-%m-%d')
+        if not employee:
+            return 0.0
+        result = 0.0
+        cr.execute("SELECT pi.id \
+                    FROM hr_payslip as hp, hr_payslip_input as pi \
+                    WHERE hp.employee_id = %s AND hp.state in ('confirm','done') \
+                    AND hp.date_from >= %s AND hp.date_to <= %s AND hp.id = pi.payslip_id AND pi.code = %s",
+                   (employee, from_date, to_date, code))
+        res = cr.fetchall()
+        input_ids = [r[0] for r in res]
+        input_lines = self.read(cr, uid, input_ids, [field], context=context)
+        for dict in input_lines:
+           result += dict.get(field)
+        return result
+    
 hr_payslip_input()
 
 class hr_salary_rule(osv.osv):


Follow ups