openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #06590
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/60592
*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/60592
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-05-10 14:27:23 +0000
+++ hr_payroll/hr_payroll.py 2011-05-11 08:48:40 +0000
@@ -609,6 +609,24 @@
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 not employee:
+ return 0.0
+ if to_date is None:
+ to_date = datetime.now().strftime('%Y-%m-%d')
+ sum = 0.0
+ cr.execute("SELECT pl.total, hp.credit_note\
+ 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))
+ for r in cr.dictfetchall():
+ if r['credit_note'] == False:
+ sum += r['total']
+ else:
+ sum -= r['total']
+ return sum
+
hr_payslip()
class hr_payslip_input(osv.osv):
@@ -631,6 +649,24 @@
_defaults = {
'sequence': 10,
}
+
+ def sum(self, cr, uid, code, field, from_date, to_date=None, employee=False, context=None):
+ if not employee:
+ return 0.0
+ if to_date is None:
+ to_date = datetime.now().strftime('%Y-%m-%d')
+ 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))
+ input_ids = [r[0] for r in cr.fetchall()]
+ input_data = self.read(cr, uid, input_ids, [field], context=context)
+ for input in input_data:
+ result += input.get(field)
+ return result
+
hr_payslip_input()
class hr_salary_rule(osv.osv):
Follow ups