← Back to team overview

clearcorp team mailing list archive

[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','&lt;&gt;','code'),('amount_select','&lt;&gt;','fix')]}"/>
+                    </field>
+                </data>
+            </field>
+        </record>
+        <!-- End Salary Rules -->
+
+    </data>
+</openerp>


Follow ups