[IMP/FIX] hr_payroll: Improvement and cleaning
bzr revid: mra@mra-laptop-20110308063637-zfv8hawzqkdvsk8d
This commit is contained in:
@@ -226,28 +226,6 @@ class hr_department(osv.osv):
|
||||
'member_ids': fields.one2many('hr.employee', 'department_id', 'Members', readonly=True),
|
||||
}
|
||||
|
||||
class hr_passport(osv.osv):
|
||||
"""
|
||||
Employee Passport
|
||||
Passport based Contracts for Employees
|
||||
"""
|
||||
|
||||
_name = 'hr.passport'
|
||||
_description = 'Passport Detail'
|
||||
_columns = {
|
||||
'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
|
||||
'name': fields.char('Passport No', size=64, required=True, readonly=False),
|
||||
'country_id': fields.many2one('res.country', 'Country of Issue', required=True),
|
||||
'address_id': fields.many2one('res.partner.address', 'Address', required=False),
|
||||
'date_issue': fields.date('Passport Issue Date', required=True),
|
||||
'date_expire': fields.date('Passport Expire Date', required=True),
|
||||
'note': fields.text('Description'),
|
||||
}
|
||||
_sql_constraints = [
|
||||
('passport_no_uniq', 'unique (employee_id, name)', 'The Passport No must be unique !'),
|
||||
]
|
||||
hr_passport()
|
||||
|
||||
hr_department()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -409,82 +409,5 @@
|
||||
<menuitem name="Recruitment" id="base.menu_crm_case_job_req_main" parent="menu_hr_root" groups="base.group_hr_user"/>
|
||||
<menuitem parent="base.menu_crm_case_job_req_main" id="menu_hr_job" action="action_hr_job" sequence="2"/>
|
||||
|
||||
<!-- Passport Views -->
|
||||
<record id="hr_passport_form" model="ir.ui.view">
|
||||
<field name="name">hr.passport.form</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Passport">
|
||||
<group col="6" colspan="4">
|
||||
<field name="name" select="1" colspan="4"/>
|
||||
<field name="employee_id" />
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Country & Address" colspan="4"/>
|
||||
<field name="country_id" select="1"/>
|
||||
<field name="address_id" select="1"/>
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Valid From" colspan="2"/>
|
||||
<field name="date_issue" select="1"/>
|
||||
<field name="date_expire" select="1"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Description">
|
||||
<separator string="Description" colspan="2"/>
|
||||
<field name="note" colspan="4" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="hr_passport_tree" model="ir.ui.view">
|
||||
<field name="name">hr.passport.tree</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Passport">
|
||||
<field name="name" />
|
||||
<field name="employee_id" />
|
||||
<field name="address_id"/>
|
||||
<field name="country_id" />
|
||||
<field name="date_expire"/>
|
||||
<field name="date_issue" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_hr_passport_filter" model="ir.ui.view">
|
||||
<field name="name">hr.passport.select</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Passport">
|
||||
<group col="8" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="country_id"/>
|
||||
<field name="address_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group col="8" colspan="4" expand="0" string="Group By...">
|
||||
<filter string="Employees" icon="terp-partner" name="employee_id" context="{'group_by':'employee_id'}"/>
|
||||
<filter string="Country" name="country_id" icon="terp-go-home" context="{'group_by':'country_id'}"/>
|
||||
<filter string="Expire" name="date_expire" icon="terp-go-month" context="{'group_by':'date_expire'}"/>
|
||||
<filter string="Issue" name="date_issue" icon="terp-go-month" context="{'group_by':'date_issue'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_hr_passport_tree" model="ir.actions.act_window">
|
||||
<field name="name">All Passports</field>
|
||||
<field name="res_model">hr.passport</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="hr_passport_tree"/>
|
||||
<field name="search_view_id" ref="view_hr_passport_filter"/>
|
||||
</record>
|
||||
<!-- End Passport Views -->
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -57,12 +57,21 @@ class hr_passport(osv.osv):
|
||||
Passport based Contracts for Employees
|
||||
"""
|
||||
|
||||
_inherit = 'hr.passport'
|
||||
_name = 'hr.passport'
|
||||
_description = 'Passport Detail'
|
||||
_columns = {
|
||||
'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
|
||||
'name': fields.char('Passport No', size=64, required=True, readonly=False),
|
||||
'country_id': fields.many2one('res.country', 'Country of Issue', required=True),
|
||||
'address_id': fields.many2one('res.partner.address', 'Address', required=False),
|
||||
'date_issue': fields.date('Passport Issue Date', required=True),
|
||||
'date_expire': fields.date('Passport Expire Date', required=True),
|
||||
'note': fields.text('Description'),
|
||||
'contracts_ids': fields.one2many('hr.contract', 'passport_id', 'Contracts', required=False, readonly=True),
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
('passport_no_uniq', 'unique (employee_id, name)', 'The Passport No must be unique !'),
|
||||
]
|
||||
hr_passport()
|
||||
|
||||
#Contract wage type period name
|
||||
@@ -119,7 +128,7 @@ class hr_contract(osv.osv):
|
||||
'advantages': fields.text('Advantages'),
|
||||
'notes': fields.text('Notes'),
|
||||
'permit_no': fields.char('Work Permit No', size=256, required=False, readonly=False),
|
||||
'passport_id': fields.many2one('hr.passport', 'Passport No', required=False),
|
||||
'passport_id': fields.many2one('hr.passport', 'Passport', required=False),
|
||||
'visa_no': fields.char('Visa No', size=64, required=False, readonly=False),
|
||||
'visa_expire': fields.date('Visa Expire Date'),
|
||||
}
|
||||
|
||||
@@ -2,6 +2,83 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Passport Views -->
|
||||
<record id="hr_passport_form" model="ir.ui.view">
|
||||
<field name="name">hr.passport.form</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Passport">
|
||||
<group col="6" colspan="4">
|
||||
<field name="name" select="1" colspan="4"/>
|
||||
<field name="employee_id" />
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Country & Address" colspan="4"/>
|
||||
<field name="country_id" select="1"/>
|
||||
<field name="address_id" select="1"/>
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator string="Valid From" colspan="2"/>
|
||||
<field name="date_issue" select="1"/>
|
||||
<field name="date_expire" select="1"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Description">
|
||||
<separator string="Description" colspan="2"/>
|
||||
<field name="note" colspan="4" nolabel="1"/>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="hr_passport_tree" model="ir.ui.view">
|
||||
<field name="name">hr.passport.tree</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Passport">
|
||||
<field name="name" />
|
||||
<field name="employee_id" />
|
||||
<field name="address_id"/>
|
||||
<field name="country_id" />
|
||||
<field name="date_expire"/>
|
||||
<field name="date_issue" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_hr_passport_filter" model="ir.ui.view">
|
||||
<field name="name">hr.passport.select</field>
|
||||
<field name="model">hr.passport</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Passport">
|
||||
<group col="8" colspan="4">
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="country_id"/>
|
||||
<field name="address_id"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group col="8" colspan="4" expand="0" string="Group By...">
|
||||
<filter string="Employees" icon="terp-partner" name="employee_id" context="{'group_by':'employee_id'}"/>
|
||||
<filter string="Country" name="country_id" icon="terp-go-home" context="{'group_by':'country_id'}"/>
|
||||
<filter string="Expire" name="date_expire" icon="terp-go-month" context="{'group_by':'date_expire'}"/>
|
||||
<filter string="Issue" name="date_issue" icon="terp-go-month" context="{'group_by':'date_issue'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_hr_passport_tree" model="ir.actions.act_window">
|
||||
<field name="name">All Passports</field>
|
||||
<field name="res_model">hr.passport</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="hr_passport_tree"/>
|
||||
<field name="search_view_id" ref="view_hr_passport_filter"/>
|
||||
</record>
|
||||
<!-- End Passport Views -->
|
||||
|
||||
<!-- <record id="hr_contract_wage_type_view_form" model="ir.ui.view">
|
||||
<field name="name">hr.contract.wage.type.view.form</field>
|
||||
<field name="model">hr.contract.wage.type</field>
|
||||
|
||||
@@ -43,7 +43,6 @@ def prev_bounds(cdate=False):
|
||||
prev_end = next_month - timedelta(days=1)
|
||||
return this_first, prev_end
|
||||
|
||||
|
||||
class hr_payroll_structure(osv.osv):
|
||||
"""
|
||||
Salary structure used to defined
|
||||
@@ -55,9 +54,8 @@ class hr_payroll_structure(osv.osv):
|
||||
_name = 'hr.payroll.structure'
|
||||
_description = 'Salary Structure'
|
||||
_columns = {
|
||||
'name':fields.char('Name', size=256, required=True, readonly=False),
|
||||
'code':fields.char('Code', size=64, required=True, readonly=False),
|
||||
# 'line_ids':fields.one2many('hr.payslip.line', 'function_id', 'Salary Structure', required=False),
|
||||
'name':fields.char('Name', size=256, required=True),
|
||||
'code':fields.char('Code', size=64, required=True),
|
||||
'company_id':fields.many2one('res.company', 'Company', required=True),
|
||||
'note': fields.text('Description'),
|
||||
'parent_id':fields.many2one('hr.payroll.structure', 'Parent'),
|
||||
@@ -80,7 +78,7 @@ class hr_payroll_structure(osv.osv):
|
||||
@return: returns a id of newly created record
|
||||
"""
|
||||
default = {
|
||||
'code': self.browse(cr, uid, id, context=context).code+"(copy)",
|
||||
'code': self.browse(cr, uid, id, context=context).code + "(copy)",
|
||||
'company_id': self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
|
||||
}
|
||||
return super(hr_payroll_structure, self).copy(cr, uid, id, default, context=context)
|
||||
@@ -97,7 +95,8 @@ class hr_contract(osv.osv):
|
||||
_description = 'Employee Contract'
|
||||
_columns = {
|
||||
'struct_id': fields.many2one('hr.payroll.structure', 'Salary Structure'),
|
||||
'basic': fields.float('Basic Salary', digits_compute=dp.get_precision('Account')),
|
||||
'basic': fields.float('Basic Salary', digits_compute=dp.get_precision('Account')), # i think we can remove this because we have wage field on contract ?
|
||||
#FIXME not needed as we have the resource.calendar? 'working_days_per_week': fields.integer('Working Days', help="No of Working days / week for an employee"),
|
||||
}
|
||||
|
||||
hr_contract()
|
||||
@@ -168,9 +167,9 @@ class payroll_register(osv.osv):
|
||||
emp_pool = self.pool.get('hr.employee')
|
||||
slip_pool = self.pool.get('hr.payslip')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
vals = self.browse(cr, uid, ids[0], context=context)
|
||||
emp_ids = emp_pool.search(cr, uid, [], context=context)
|
||||
|
||||
@@ -192,33 +191,26 @@ class payroll_register(osv.osv):
|
||||
# wf_service.trg_validate(uid, 'hr.payslip', slip_id, 'compute_sheet', cr)
|
||||
|
||||
number = self.pool.get('ir.sequence').get(cr, uid, 'salary.register')
|
||||
self.write(cr, uid, ids, {'state': 'draft', 'number': number}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state': 'draft', 'number': number}, context=context)
|
||||
|
||||
def set_to_draft(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'state':'draft'}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state':'draft'}, context=context)
|
||||
|
||||
def cancel_sheet(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'state':'cancel'}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state':'cancel'}, context=context)
|
||||
|
||||
def verify_sheet(self, cr, uid, ids, context=None):
|
||||
slip_pool = self.pool.get('hr.payslip')
|
||||
|
||||
for id in ids:
|
||||
sids = slip_pool.search(cr, uid, [('register_id','=',id)], context=context)
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for sid in sids:
|
||||
wf_service.trg_validate(uid, 'hr.payslip', sid, 'verify_sheet', cr)
|
||||
|
||||
self.write(cr, uid, ids, {'state':'hr_check'}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state':'hr_check'}, context=context)
|
||||
|
||||
def final_verify_sheet(self, cr, uid, ids, context=None):
|
||||
slip_pool = self.pool.get('hr.payslip')
|
||||
# advice_pool = self.pool.get('hr.payroll.advice')
|
||||
# advice_line_pool = self.pool.get('hr.payroll.advice.line')
|
||||
sequence_pool = self.pool.get('ir.sequence')
|
||||
users_pool = self.pool.get('res.users')
|
||||
|
||||
@@ -229,8 +221,7 @@ class payroll_register(osv.osv):
|
||||
wf_service.trg_validate(uid, 'hr.payslip', sid, 'final_verify_sheet', cr)
|
||||
|
||||
company_name = users_pool.browse(cr, uid, uid, context=context).company_id.name
|
||||
self.write(cr, uid, ids, {'state':'confirm'}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state':'confirm'}, context=context)
|
||||
|
||||
def process_sheet(self, cr, uid, ids, context=None):
|
||||
slip_pool = self.pool.get('hr.payslip')
|
||||
@@ -239,9 +230,7 @@ class payroll_register(osv.osv):
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for sid in sids:
|
||||
wf_service.trg_validate(uid, 'hr.payslip', sid, 'process_sheet', cr)
|
||||
|
||||
self.write(cr, uid, ids, {'state':'done'}, context=context)
|
||||
return True
|
||||
return self.write(cr, uid, ids, {'state':'done'}, context=context)
|
||||
|
||||
payroll_register()
|
||||
|
||||
@@ -283,6 +272,7 @@ class contrib_register(osv.osv):
|
||||
self.pool.get('res.users').browse(cr, uid, uid,
|
||||
context=context).company_id.id,
|
||||
}
|
||||
|
||||
contrib_register()
|
||||
|
||||
class contrib_register_line(osv.osv):
|
||||
@@ -322,15 +312,15 @@ class hr_salary_head_type(osv.osv):
|
||||
_name = 'hr.salary.head.type'
|
||||
_description = 'Salary Head Type'
|
||||
_columns = {
|
||||
'name':fields.char('Type Name', size=64, required=True, readonly=False),
|
||||
'code':fields.char('Type Code', size=64, required=True, readonly=False),
|
||||
'name':fields.char('Type Name', size=64, required=True),
|
||||
'code':fields.char('Type Code', size=16, required=True),
|
||||
}
|
||||
|
||||
hr_salary_head_type()
|
||||
|
||||
class hr_salary_head(osv.osv):
|
||||
"""
|
||||
Salary Head
|
||||
HR Salary Head
|
||||
"""
|
||||
|
||||
_name = 'hr.salary.head'
|
||||
@@ -343,26 +333,30 @@ class hr_salary_head(osv.osv):
|
||||
'user_id':fields.char('User', size=64, required=False, readonly=False),
|
||||
'state':fields.char('Label', size=64, required=False, readonly=False),
|
||||
'company_id':fields.many2one('res.company', 'Company', required=False),
|
||||
'dispaly_payslip_report': fields.boolean('Display on Payslip Report', help="Used for the display of head on Payslip Report."),
|
||||
'dispaly_payslip_report': fields.boolean('Display on payslip report', help="Used for the display of head on Payslip Report"),
|
||||
# 'computation_based':fields.selection([
|
||||
# ('rules','List of Rules'),
|
||||
# ('exp','Expression'),
|
||||
# ],'Computation Based On', select=True, required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'company_id': lambda self, cr, uid, context: \
|
||||
self.pool.get('res.users').browse(cr, uid, uid,
|
||||
context=context).company_id.id,
|
||||
'dispaly_payslip_report': 1,
|
||||
}
|
||||
|
||||
hr_salary_head()
|
||||
|
||||
class hr_holidays_status(osv.osv):
|
||||
|
||||
_inherit = "hr.holidays.status"
|
||||
_columns = {
|
||||
'code':fields.char('Code', size=64, required=False, readonly=False, help="It is used to define the code for Leave Type which will then be used in Salary Rules."),
|
||||
# improve help
|
||||
'code':fields.char('Code', size=16, readonly=False, help="It is used to define the code for Leave Type which will then be used in Salary Rules."),
|
||||
}
|
||||
|
||||
hr_holidays_status()
|
||||
|
||||
class hr_payslip(osv.osv):
|
||||
@@ -439,14 +433,14 @@ class hr_payslip(osv.osv):
|
||||
('done','Paid Salary'),
|
||||
('cancel','Reject'),
|
||||
],'State', select=True, readonly=True),
|
||||
'basic_before_leaves': fields.float('Basic Salary', readonly=True, digits_compute=dp.get_precision('Account')),
|
||||
# 'basic_before_leaves': fields.float('Basic Salary', readonly=True, digits_compute=dp.get_precision('Account')),
|
||||
'leaves': fields.float('Leave Deductions', readonly=True, digits_compute=dp.get_precision('Account')),
|
||||
'basic': fields.float('Net Basic', readonly=True, digits_compute=dp.get_precision('Account')),
|
||||
# 'grows': fields.function(_calculate, method=True, store=True, multi='dc', string='Gross Salary', digits_compute=dp.get_precision('Account')),
|
||||
# 'net': fields.function(_calculate, method=True, store=True, multi='dc', string='Net Salary', digits_compute=dp.get_precision('Account')),
|
||||
'allounce': fields.function(_calculate, method=True, store=True, multi='dc', string='Allowance', digits_compute=dp.get_precision('Account')),
|
||||
'deduction': fields.function(_calculate, method=True, store=True, multi='dc', string='Deduction', digits_compute=dp.get_precision('Account')),
|
||||
'other_pay': fields.function(_calculate, method=True, store=True, multi='dc', string='Others', digits_compute=dp.get_precision('Account')),
|
||||
# 'allounce': fields.function(_calculate, method=True, store=True, multi='dc', string='Allowance', digits_compute=dp.get_precision('Account')),
|
||||
# 'deduction': fields.function(_calculate, method=True, store=True, multi='dc', string='Deduction', digits_compute=dp.get_precision('Account')),
|
||||
# 'other_pay': fields.function(_calculate, method=True, store=True, multi='dc', string='Others', digits_compute=dp.get_precision('Account')),
|
||||
'total_pay': fields.function(_calculate, method=True, store=True, multi='dc', string='Total Payment', digits_compute=dp.get_precision('Account')),
|
||||
# 'total_pay': fields.float('Total Payment', readonly=True, digits_compute=dp.get_precision('Account')),
|
||||
'line_ids':fields.one2many('hr.payslip.line', 'slip_id', 'Payslip Line', required=False, readonly=True, states={'new': [('readonly', False)], 'draft': [('readonly', False)]}),
|
||||
@@ -457,8 +451,8 @@ class hr_payslip(osv.osv):
|
||||
'paid':fields.boolean('Paid ? ', required=False, readonly=True, states={'new': [('readonly', False)], 'draft': [('readonly', False)]}),
|
||||
'note':fields.text('Description'),
|
||||
'contract_id':fields.many2one('hr.contract', 'Contract', required=False, readonly=True, states={'new': [('readonly', False)],'draft': [('readonly', False)]}),
|
||||
# 'igross': fields.float('Calculaton Field', readonly=True, digits=(16, 2), help="Calculation field used for internal calculation, do not place this on form"),
|
||||
# 'inet': fields.float('Calculaton Field', readonly=True, digits=(16, 2), help="Calculation field used for internal calculation, do not place this on form"),
|
||||
'igross': fields.float('Calculaton Field', readonly=True, digits=(16, 2), help="Calculation field used for internal calculation, do not place this on form"),
|
||||
'inet': fields.float('Calculaton Field', readonly=True, digits=(16, 2), help="Calculation field used for internal calculation, do not place this on form"),
|
||||
'holiday_ids':fields.one2many('hr.holidays', 'payslip_id', 'Payslip', required=False),
|
||||
}
|
||||
_defaults = {
|
||||
@@ -984,11 +978,7 @@ class hr_payslip(osv.osv):
|
||||
'base': line.computational_expression
|
||||
}
|
||||
if line.appears_on_payslip:
|
||||
if line.condition_range_min or line.condition_range_max:
|
||||
if not((line.amount < line.condition_range_min) or (line.amount > line.condition_range_max)):
|
||||
update['value']['line_ids'].append(vals)
|
||||
else:
|
||||
update['value']['line_ids'].append(vals)
|
||||
update['value']['line_ids'].append(vals)
|
||||
basic = contract.wage
|
||||
number = sequence_obj.get(cr, uid, 'salary.slip')
|
||||
update['value'].update({
|
||||
@@ -1150,7 +1140,7 @@ class hr_payslip_line(osv.osv):
|
||||
return {'value':{'amount':amt}}
|
||||
|
||||
_columns = {
|
||||
'slip_id':fields.many2one('hr.payslip', 'Pay Slip', required=False),
|
||||
'slip_id':fields.many2one('hr.payslip', 'Pay Slip', required=True),
|
||||
# 'function_id':fields.many2one('hr.payroll.structure', 'Function', required=False),
|
||||
'employee_id':fields.many2one('hr.employee', 'Employee', required=False),
|
||||
'name':fields.char('Name', size=256, required=True, readonly=False),
|
||||
@@ -1216,6 +1206,33 @@ class hr_salary_rule(osv.osv):
|
||||
context=context).company_id.id,
|
||||
}
|
||||
|
||||
# def _execute_function(self, cr, uid, id, value, context=None):
|
||||
# """
|
||||
# self: pointer to self object
|
||||
# cr: cursor to database
|
||||
# uid: user id of current executer
|
||||
# """
|
||||
# line_pool = self.pool.get('company.contribution.line')
|
||||
# res = 0
|
||||
# ids = line_pool.search(cr, uid, [('category_id','=',id), ('to_val','>=',value),('from_val','<=',value)], context=context)
|
||||
# if not ids:
|
||||
# ids = line_pool.search(cr, uid, [('category_id','=',id), ('from','<=',value)], context=context)
|
||||
# if not ids:
|
||||
# res = 0
|
||||
# else:
|
||||
# res = line_pool.browse(cr, uid, ids, context=context)[0].value
|
||||
# return res
|
||||
#
|
||||
# def compute(self, cr, uid, id, value, context=None):
|
||||
# contrib = self.browse(cr, uid, id, context=context)
|
||||
# if contrib.amount_type == 'fix':
|
||||
# return contrib.contribute_per
|
||||
# elif contrib.amount_type == 'per':
|
||||
# return value * contrib.contribute_per
|
||||
# elif contrib.amount_type == 'func':
|
||||
# return self._execute_function(cr, uid, id, value, context)
|
||||
# return 0.0
|
||||
#
|
||||
hr_salary_rule()
|
||||
|
||||
class hr_payroll_structure(osv.osv):
|
||||
|
||||
Reference in New Issue
Block a user