clearcorp team mailing list archive
-
clearcorp team
-
Mailing list archive
-
Message #00145
[Merge] lp:~rr.clearcorp/openerp-costa-rica/6.1 into lp:openerp-costa-rica/6.1
Ronald Rubi has proposed merging lp:~rr.clearcorp/openerp-costa-rica/6.1 into lp:openerp-costa-rica/6.1.
Requested reviews:
CLEARCORP drivers (clearcorp-drivers)
For more details, see:
https://code.launchpad.net/~rr.clearcorp/openerp-costa-rica/6.1/+merge/106056
Add period rule in amount_select column of salary rule.
--
https://code.launchpad.net/~rr.clearcorp/openerp-costa-rica/6.1/+merge/106056
Your team CLEARCORP development team is subscribed to branch lp:openerp-costa-rica/6.1.
=== modified file 'l10n_cr_hr_payroll/l10n_cr_hr_payroll.py'
--- l10n_cr_hr_payroll/l10n_cr_hr_payroll.py 2012-05-15 22:01:47 +0000
+++ l10n_cr_hr_payroll/l10n_cr_hr_payroll.py 2012-05-16 21:22:18 +0000
@@ -60,4 +60,50 @@
hr_job()
+class hr_salary_rule(osv.osv):
+
+ _name = 'hr.salary.rule'
+ _inherit = 'hr.salary.rule'
+ _columns = {
+ 'amount_select':fields.selection([
+ ('percentage','Percentage (%)'),
+ ('fix','Fixed Amount'),
+ ('period_rule','Period Rule'),
+ ('code','Python Code'),
+ ],'Amount Type', select=True, required=True, help="The computation method for the rule amount."),
+ }
+
+ #TODO should add some checks on the type of result (should be float)
+ def compute_rule(self, cr, uid, rule_id, localdict, context=None):
+ """
+ :param rule_id: id of rule to compute
+ :param localdict: dictionary containing the environement in which to compute the rule
+ :return: returns a tuple build as the base/amount computed, the quantity and the rate
+ :rtype: (float, float, float)
+ """
+ rule = self.browse(cr, uid, rule_id, context=context)
+ if rule.amount_select == 'fix':
+ try:
+ return rule.amount_fix, eval(rule.quantity, localdict), 100.0
+ except:
+ raise osv.except_osv(_('Error'), _('Wrong quantity defined for salary rule %s (%s)')% (rule.name, rule.code))
+ elif rule.amount_select == 'percentage':
+ try:
+ return eval(rule.amount_percentage_base, localdict), eval(rule.quantity, localdict), rule.amount_percentage
+ except:
+ raise osv.except_osv(_('Error'), _('Wrong percentage base or quantity defined for salary rule %s (%s)')% (rule.name, rule.code))
+ elif rule.amount_select == 'period_rule':
+ try:
+ return eval(rule.amount_percentage_base, localdict), eval(rule.quantity, localdict)
+ except:
+ raise osv.except_osv(_('Error'), _('Wrong percentage base or quantity defined for salary rule %s (%s)')% (rule.name, rule.code))
+ else:
+ try:
+ eval(rule.amount_python_compute, localdict, mode='exec', nocopy=True)
+ return localdict['result'], 'result_qty' in localdict and localdict['result_qty'] or 1.0, 'result_rate' in localdict and localdict['result_rate'] or 100.0
+ except:
+ raise osv.except_osv(_('Error'), _('Wrong python code defined for salary rule %s (%s) ')% (rule.name, rule.code))
+
+hr_salary_rule()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added file 'l10n_cr_hr_payroll/l10n_cr_hr_payroll.xml'
--- l10n_cr_hr_payroll/l10n_cr_hr_payroll.xml 1970-01-01 00:00:00 +0000
+++ l10n_cr_hr_payroll/l10n_cr_hr_payroll.xml 2012-05-16 21:22:18 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <!-- Jobs -->
+ <record id="l10n_cr_hr_job_form" model="ir.ui.view">
+ <field name="name">l10n.cr.hr.job.form</field>
+ <field name="model">hr.job</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="hr.view_hr_job_form"/>
+ <field name="arch" type="xml">
+ <data>
+ <field name = "name" position = "after">
+ <field name="code" />
+ </field>
+ </data>
+ </field>
+ </record>
+ <!-- End Jobs -->
+
+ <!-- Salary Rules -->
+ <record id="hr_salary_period_rule_form" model="ir.ui.view">
+ <field name="name">hr.salary.period.rule.form</field>
+ <field name="model">hr.salary.rule</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="hr_payroll.hr_salary_rule_form"/>
+ <field name="arch" type="xml">
+ <data>
+ <field name="amount_percentage_base" position="replace" >
+ <field name="amount_percentage_base" attrs="{'invisible':['|',('amount_select','=','code'),('amount_select','=','fix')], 'required': ['|',('amount_select','<>','code'),('amount_select','<>','fix')]}"/>
+ </field>
+ </data>
+ </field>
+ </record>
+ <!-- End Salary Rules -->
+
+ </data>
+</openerp>
Follow ups