[MERGE] merged the dev branch of payroll with clean code as work basis
bzr revid: qdp-launchpad@openerp.com-20110406151429-z3sgsbe9mugb58qt
This commit is contained in:
@@ -139,6 +139,7 @@ class hr_employee(osv.osv):
|
||||
'ssnid': fields.char('SSN No', size=32, help='Social Security Number'),
|
||||
'sinid': fields.char('SIN No', size=32, help="Social Insurance Number"),
|
||||
'identification_id': fields.char('Identification No', size=32),
|
||||
'otherid': fields.char('Other Id', size=64),
|
||||
'gender': fields.selection([('male', 'Male'),('female', 'Female')], 'Gender'),
|
||||
'marital': fields.many2one('hr.employee.marital.status', 'Marital Status'),
|
||||
'department_id':fields.many2one('hr.department', 'Department'),
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
<field name="sinid" groups="base.group_extended"/>
|
||||
<field name="identification_id" groups="base.group_extended"/>
|
||||
<field name="passport_id"/>
|
||||
<field name="otherid"/>
|
||||
</group>
|
||||
<group col="2" colspan="2" groups="base.group_hr_user">
|
||||
<separator string="Status" colspan="2"/>
|
||||
|
||||
@@ -44,7 +44,9 @@ You can assign several contracts per employee.
|
||||
'hr_contract_view.xml'
|
||||
],
|
||||
'demo_xml': [],
|
||||
'test': ['test/test_hr_contract.yml'],
|
||||
'test': [
|
||||
'test/test_hr_contract.yml'
|
||||
],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '0046298028637',
|
||||
|
||||
@@ -51,35 +51,28 @@ class hr_employee(osv.osv):
|
||||
|
||||
hr_employee()
|
||||
|
||||
#Contract wage type period name
|
||||
class hr_contract_wage_type_period(osv.osv):
|
||||
_name='hr.contract.wage.type.period'
|
||||
_description='Wage Period'
|
||||
_columns = {
|
||||
'name': fields.char('Period Name', size=50, required=True, select=True),
|
||||
'factor_days': fields.float('Hours in the period', digits=(12,4), required=True, help='This field is used by the timesheet system to compute the price of an hour of work wased on the contract of the employee')
|
||||
}
|
||||
_defaults = {
|
||||
'factor_days': 168.0
|
||||
}
|
||||
hr_contract_wage_type_period()
|
||||
class hr_passport(osv.osv):
|
||||
"""
|
||||
Employee Passport
|
||||
Passport based Contracts for Employees
|
||||
"""
|
||||
|
||||
#Contract wage type (hourly, daily, monthly, ...)
|
||||
class hr_contract_wage_type(osv.osv):
|
||||
_name = 'hr.contract.wage.type'
|
||||
_description = 'Wage Type'
|
||||
_name = 'hr.passport'
|
||||
_description = 'Passport Detail'
|
||||
_columns = {
|
||||
'name': fields.char('Wage Type Name', size=50, required=True, select=True),
|
||||
'period_id': fields.many2one('hr.contract.wage.type.period', 'Wage Period', required=True),
|
||||
'type': fields.selection([('gross','Gross'), ('net','Net')], 'Type', required=True),
|
||||
'factor_type': fields.float('Factor for hour cost', digits=(12,4), required=True, help='This field is used by the timesheet system to compute the price of an hour of work wased on the contract of the employee')
|
||||
'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),
|
||||
}
|
||||
_defaults = {
|
||||
'type': 'gross',
|
||||
'factor_type': 1.8
|
||||
}
|
||||
hr_contract_wage_type()
|
||||
|
||||
_sql_constraints = [
|
||||
('passport_no_uniq', 'unique (employee_id, name)', 'The Passport No must be unique !'),
|
||||
]
|
||||
hr_passport()
|
||||
|
||||
class hr_contract_type(osv.osv):
|
||||
_name = 'hr.contract.type'
|
||||
@@ -103,15 +96,22 @@ class hr_contract(osv.osv):
|
||||
'trial_date_start': fields.date('Trial Start Date'),
|
||||
'trial_date_end': fields.date('Trial End Date'),
|
||||
'working_hours': fields.many2one('resource.calendar','Working Schedule'),
|
||||
'wage_type_id': fields.many2one('hr.contract.wage.type', 'Wage Type', required=True),
|
||||
'wage': fields.float('Wage', digits=(16,2), required=True),
|
||||
'wage': fields.float('Wage', digits=(16,2), required=True, help="Basic Salary of the employee"),
|
||||
'advantages': fields.text('Advantages'),
|
||||
'advantages_net': fields.float('Net Advantages Value', digits=(16,2)),
|
||||
'advantages_gross': fields.float('Gross Advantages Value', digits=(16,2)),
|
||||
'notes': fields.text('Notes'),
|
||||
'permit_no': fields.char('Work Permit No', size=256, required=False, readonly=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'),
|
||||
}
|
||||
|
||||
def _get_type(self, cr, uid, context=None):
|
||||
type_ids = self.pool.get('hr.contract.type').search(cr, uid, [('name', '=', 'Employee')])
|
||||
return type_ids and type_ids[0] or False
|
||||
|
||||
_defaults = {
|
||||
'date_start': lambda *a: time.strftime("%Y-%m-%d"),
|
||||
'type_id': _get_type
|
||||
}
|
||||
|
||||
def _check_dates(self, cr, uid, ids, context=None):
|
||||
@@ -123,9 +123,6 @@ class hr_contract(osv.osv):
|
||||
_constraints = [
|
||||
(_check_dates, 'Error! contract start-date must be lower then contract end-date.', ['date_start', 'date_end'])
|
||||
]
|
||||
|
||||
|
||||
|
||||
hr_contract()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -1,43 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Contract Period Names -->
|
||||
<record id="hr_contract_wage_type_period_daily" model="hr.contract.wage.type.period">
|
||||
<field name="name">daily</field>
|
||||
</record>
|
||||
<record id="hr_contract_wage_type_period_weekly" model="hr.contract.wage.type.period">
|
||||
<field name="name">weekly</field>
|
||||
</record>
|
||||
<record id="hr_contract_wage_type_period_monthly" model="hr.contract.wage.type.period">
|
||||
<field name="name">monthly</field>
|
||||
</record>
|
||||
|
||||
<!-- Contract Wage Types -->
|
||||
<record id="hr_contract_monthly_gross" model="hr.contract.wage.type">
|
||||
<field name="name">Monthly Gross Wage</field>
|
||||
<field name="type">gross</field>
|
||||
<field name="period_id" ref="hr_contract_wage_type_period_monthly"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_contract_monthly_net" model="hr.contract.wage.type">
|
||||
<field name="name">Monthly Net Wage</field>
|
||||
<field name="type">net</field>
|
||||
<field name="period_id" ref="hr_contract_wage_type_period_monthly"/>
|
||||
</record>
|
||||
|
||||
<!-- Contract Types -->
|
||||
<!-- Contract Types -->
|
||||
<record id="hr_contract_type_emp" model="hr.contract.type">
|
||||
<field name="name">Employee</field>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
<record id="hr_contract_type_wrkr" model="hr.contract.type">
|
||||
<field name="name">Worker</field>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
<record id="hr_contract_type_sub" model="hr.contract.type">
|
||||
<field name="name">Subcontractor</field>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -2,99 +2,83 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<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>
|
||||
<!-- 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="Wage Type">
|
||||
<field colspan="4" name="name"/>
|
||||
<field name="period_id" widget="selection"/>
|
||||
<field name="type"/>
|
||||
<separator colspan="4" string="Hourly cost computation"/>
|
||||
<field name="factor_type"/>
|
||||
<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_contract_wage_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">hr.contract.wage.type.view.tree</field>
|
||||
<field name="model">hr.contract.wage.type</field>
|
||||
<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="Wage Types">
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="period_id" invisible="1"/>
|
||||
<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="hr_contract_wage_type_view_search" model="ir.ui.view">
|
||||
<field name="name">hr.contract.wage.type.view.search</field>
|
||||
<field name="model">hr.contract.wage.type</field>
|
||||
<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 Wage Type">
|
||||
<group col='15' colspan='4'>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20">
|
||||
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
<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_contract_wage_type" model="ir.actions.act_window">
|
||||
<field name="name">Wage Type</field>
|
||||
<field name="res_model">hr.contract.wage.type</field>
|
||||
<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_mode">tree,form</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="search_view_id" ref="hr_contract_wage_type_view_search"/>
|
||||
<field name="view_id" ref="hr_passport_tree"/>
|
||||
<field name="search_view_id" ref="view_hr_passport_filter"/>
|
||||
</record>
|
||||
|
||||
<!-- End Passport Views -->
|
||||
<menuitem id="next_id_56" name="Contract" parent="hr.menu_hr_management" sequence="5"/>
|
||||
<menuitem action="action_hr_contract_wage_type" id="hr_menu_contract_wage_type" parent="next_id_56" sequence="7"/>
|
||||
|
||||
<record id="hr_contract_wage_type_period_view_form" model="ir.ui.view">
|
||||
<field name="name">hr.contract.wage.type.period.view.form</field>
|
||||
<field name="model">hr.contract.wage.type.period</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Wage Period">
|
||||
<field colspan="4" name="name"/>
|
||||
<field name="factor_days"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_contract_wage_type_period_view_search" model="ir.ui.view">
|
||||
<field name="name">hr.contract.wage.type.period.view.search</field>
|
||||
<field name="model">hr.contract.wage.type.period</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Wage Period">
|
||||
<group col='15' colspan='4'>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hr_contract_wage_type_period" model="ir.actions.act_window">
|
||||
<field name="name">Wage period</field>
|
||||
<field name="res_model">hr.contract.wage.type.period</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="search_view_id" ref="hr_contract_wage_type_period_view_search"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_hr_contract_wage_type_period" id="hr_menu_contract_wage_type_period"
|
||||
parent="hr_contract.next_id_56"/>
|
||||
|
||||
<record id="hr_hr_employee_view_form2" model="ir.ui.view">
|
||||
<field name="name">hr.hr.employee.view.form2</field>
|
||||
@@ -132,9 +116,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Contract">
|
||||
<group col='15' colspan='4'>
|
||||
<filter string="Current" icon="terp-check" name="current" domain="['|',('date_end','>=', time.strftime('%%Y-%%m-%%d')),('date_end','=',False)]" help="Contracts in progress"/>
|
||||
<filter string="Overpassed" icon="terp-emblem-important" domain="[('date_end','<', time.strftime('%%Y-%%m-%%d'))]" help="Contracts whose end date already passed"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Current" icon="terp-check" name="current" domain="['|',('date_end','>=', time.strftime('%%Y-%%m-%%d')),('date_end','=',False)]" help="Contracts in progress"/>
|
||||
<filter string="Overpassed" icon="terp-emblem-important" domain="[('date_end','<', time.strftime('%%Y-%%m-%%d'))]" help="Contracts whose end date already passed"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="working_hours"/>
|
||||
@@ -143,11 +127,11 @@
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By..." colspan="4" col="20">
|
||||
<filter string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Working Schedule" icon="terp-go-week" domain="[]" context="{'group_by':'working_hours'}"/>
|
||||
<filter string="Job" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'job_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Contract Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
@@ -161,33 +145,42 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Contract">
|
||||
<group colspan="3" col="6">
|
||||
<field name="name" />
|
||||
<field name="employee_id" />
|
||||
<field name="job_id"/>
|
||||
<field name="wage"/>
|
||||
<field name="wage_type_id" widget="selection"/>
|
||||
<field name="type_id" widget="selection"/>
|
||||
<field name="name" />
|
||||
<field name="employee_id" />
|
||||
<field name="job_id"/>
|
||||
<field name="wage"/>
|
||||
<field name="type_id" widget="selection"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Information">
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Duration"/>
|
||||
<field name="date_start" />
|
||||
<field name="date_end" />
|
||||
<field name="working_hours"/>
|
||||
<separator colspan="2" string="Trial Period"/>
|
||||
<field name="trial_date_start" />
|
||||
<field name="trial_date_end" />
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Advantages"/>
|
||||
<field name="advantages_net"/>
|
||||
<field name="advantages_gross"/>
|
||||
<field name="advantages" nolabel="1" colspan="2"/>
|
||||
<separator colspan="2" string="Duration"/>
|
||||
<field name="date_start" />
|
||||
<field name="date_end" />
|
||||
<field name="working_hours"/>
|
||||
<separator colspan="2" string="Trial Period"/>
|
||||
<field name="trial_date_start" />
|
||||
<field name="trial_date_end" />
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Advantages"/>
|
||||
<field name="advantages" nolabel="1" colspan="2"/>
|
||||
</group>
|
||||
<separator colspan="4" string="Notes"/>
|
||||
<field colspan="4" name="notes" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Work Permit">
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Passport"/>
|
||||
<field name="passport_id" domain="[('employee_id','=',employee_id)]"/>
|
||||
</group>
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Valid for"/>
|
||||
<field name="visa_no"/>
|
||||
<field name="permit_no"/>
|
||||
<field name="visa_expire"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
@@ -203,11 +196,9 @@
|
||||
<field name="employee_id"/>
|
||||
<field name="type_id"/>
|
||||
<field name="job_id"/>
|
||||
<!--field name="department_id"/-->
|
||||
<field name="working_hours"/>
|
||||
<field name="working_hours"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
<field name="wage_type_id" invisible="1"/>
|
||||
<field name="wage" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -270,11 +261,12 @@
|
||||
<menuitem action="action_hr_contract" id="hr_menu_contract" parent="hr.menu_hr_main" name="Contracts" sequence="4" groups="base.group_hr_manager"/>
|
||||
|
||||
<!-- Contracts Button on Employee Form -->
|
||||
<act_window
|
||||
|
||||
<act_window
|
||||
context="{'search_default_employee_id': [active_id], 'default_employee_id': active_id}"
|
||||
id="act_hr_employee_2_hr_contract"
|
||||
name="Contracts"
|
||||
res_model="hr.contract"
|
||||
id="act_hr_employee_2_hr_contract"
|
||||
name="Contracts"
|
||||
res_model="hr.contract"
|
||||
src_model="hr.employee"
|
||||
groups="base.group_hr_manager"/>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_hr_contract_wage_type_period_user","hr.contract.wage.type.period.user","model_hr_contract_wage_type_period","base.group_hr_user",1,1,1,1
|
||||
"access_hr_contract_wage_type_user","hr.contract.wage.type.user","model_hr_contract_wage_type","base.group_hr_user",1,1,1,1
|
||||
"access_hr_resource_manager","hr.employee.resource.manager","resource.model_resource_resource","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_resource_calendar_user","hr.employee.resource.calendar.user","resource.model_resource_calendar","base.group_hr_user",1,1,1,1
|
||||
"access_hr_contract_type_manager","hr.contract.type.manager","model_hr_contract_type","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_contract_manager","hr.contract.manager","model_hr_contract","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_passport_manager","hr.passport.manager","model_hr_passport","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_passport","hr.passport","model_hr_passport","base.group_hr_user",1,1,1,1
|
||||
|
||||
|
@@ -52,16 +52,16 @@ Generic Payroll system.
|
||||
'hr_payroll_view.xml',
|
||||
'hr_payroll_workflow.xml',
|
||||
'hr_payroll_sequence.xml',
|
||||
'hr_paroll_report.xml',
|
||||
'hr_payroll_report.xml',
|
||||
'hr_payroll_data.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/hr_payroll_employees_detail.xml',
|
||||
'wizard/hr_payroll_year_salary.xml',
|
||||
],
|
||||
'test': [
|
||||
'test/payslip.yml',
|
||||
'test/payment_advice.yml',
|
||||
'test/payroll_register.yml',
|
||||
# 'test/payslip.yml',
|
||||
# 'test/payment_advice.yml',
|
||||
# 'test/payroll_register.yml',
|
||||
# 'test/hr_payroll_report.yml',
|
||||
],
|
||||
'demo_xml': [
|
||||
|
||||
+611
-1246
File diff suppressed because it is too large
Load Diff
@@ -1,137 +1,144 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<record id="HRA" model="hr.allounce.deduction.categoty">
|
||||
|
||||
<record id="AL" model="hr.salary.head">
|
||||
<field name="name">Allowance</field>
|
||||
<field name="code">ALW</field>
|
||||
</record>
|
||||
|
||||
<record id="DED" model="hr.salary.head">
|
||||
<field name="name">Deduction</field>
|
||||
<field name="code">DED</field>
|
||||
</record>
|
||||
|
||||
<record id="HRA" model="hr.salary.head">
|
||||
<field name="code">HRA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">House Rent Allowance</field>
|
||||
<field name="sequence" eval="5"/>
|
||||
</record>
|
||||
|
||||
<record id="CA" model="hr.allounce.deduction.categoty">
|
||||
<record id="CA" model="hr.salary.head">
|
||||
<field name="code">CA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Conveyance Allowance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
|
||||
<record id="MA" model="hr.allounce.deduction.categoty">
|
||||
<record id="MA" model="hr.salary.head">
|
||||
<field name="code">MA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Medical Allowance</field>
|
||||
<field name="sequence" eval="15"/>
|
||||
</record>
|
||||
|
||||
<record id="TELA" model="hr.allounce.deduction.categoty">
|
||||
<record id="TELA" model="hr.salary.head">
|
||||
<field name="code">TELA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Telephone Allowance</field>
|
||||
<field name="sequence" eval="20"/>
|
||||
</record>
|
||||
|
||||
<record id="LTA" model="hr.allounce.deduction.categoty">
|
||||
<record id="LTA" model="hr.salary.head">
|
||||
<field name="code">LTA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Leave Travel Allowance</field>
|
||||
<field name="sequence" eval="25"/>
|
||||
</record>
|
||||
|
||||
<record id="NA" model="hr.allounce.deduction.categoty">
|
||||
<record id="NA" model="hr.salary.head">
|
||||
<field name="code">NA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Newspaper Allowance</field>
|
||||
<field name="sequence" eval="30"/>
|
||||
</record>
|
||||
|
||||
<record id="TA" model="hr.allounce.deduction.categoty">
|
||||
<record id="TA" model="hr.salary.head">
|
||||
<field name="code">TA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Traveling Allowance</field>
|
||||
<field name="sequence" eval="35"/>
|
||||
</record>
|
||||
|
||||
<record id="FA" model="hr.allounce.deduction.categoty">
|
||||
<record id="FA" model="hr.salary.head">
|
||||
<field name="code">FA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Food Allowance</field>
|
||||
<field name="sequence" eval="40"/>
|
||||
</record>
|
||||
|
||||
<record id="DA" model="hr.allounce.deduction.categoty">
|
||||
<record id="DA" model="hr.salary.head">
|
||||
<field name="code">DA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Dearness Allowance</field>
|
||||
<field name="sequence" eval="45"/>
|
||||
</record>
|
||||
|
||||
<record id="PF" model="hr.allounce.deduction.categoty">
|
||||
<record id="PF" model="hr.salary.head">
|
||||
<field name="code">PF</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Provident Fund</field>
|
||||
<field name="sequence" eval="50"/>
|
||||
</record>
|
||||
|
||||
<record id="PT" model="hr.allounce.deduction.categoty">
|
||||
<record id="PT" model="hr.salary.head">
|
||||
<field name="code">PT</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Professional Tax</field>
|
||||
<field name="sequence" eval="55"/>
|
||||
</record>
|
||||
|
||||
<record id="WF" model="hr.allounce.deduction.categoty">
|
||||
<record id="WF" model="hr.salary.head">
|
||||
<field name="code">WF</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Welfare</field>
|
||||
<field name="sequence" eval="60"/>
|
||||
</record>
|
||||
|
||||
<record id="TDS" model="hr.allounce.deduction.categoty">
|
||||
<record id="TDS" model="hr.salary.head">
|
||||
<field name="code">TDS</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Tax Deduct at Source</field>
|
||||
<field name="sequence" eval="65"/>
|
||||
</record>
|
||||
|
||||
<record id="LWP" model="hr.allounce.deduction.categoty">
|
||||
<record id="LWP" model="hr.salary.head">
|
||||
<field name="code">LWP</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Leave without pay</field>
|
||||
<field name="sequence" eval="70"/>
|
||||
</record>
|
||||
|
||||
<record id="FC" model="hr.allounce.deduction.categoty">
|
||||
<record id="FC" model="hr.salary.head">
|
||||
<field name="code">FC</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Food Coupons</field>
|
||||
<field name="sequence" eval="75"/>
|
||||
</record>
|
||||
|
||||
<record id="ESI" model="hr.allounce.deduction.categoty">
|
||||
<record id="ESI" model="hr.salary.head">
|
||||
<field name="code">ESI</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="parent_id" ref="DED"/>
|
||||
<field name="name">Employee's State Insurance</field>
|
||||
<field name="sequence" eval="80"/>
|
||||
</record>
|
||||
|
||||
<record id="OTHERD" model="hr.allounce.deduction.categoty">
|
||||
<field name="code">OTHERD</field>
|
||||
<field name="type">otherdeduct</field>
|
||||
<field name="name">Other Deduction</field>
|
||||
<record id="NET" model="hr.salary.head">
|
||||
<field name="code">TP</field>
|
||||
<field name="parent_id" ref="AL"/>
|
||||
<field name="name">Total Payment</field>
|
||||
<field name="sequence" eval="85"/>
|
||||
</record>
|
||||
|
||||
<record id="OTHERA" model="hr.allounce.deduction.categoty">
|
||||
<field name="code">OTHERA</field>
|
||||
<field name="type">otherpay</field>
|
||||
<field name="name">Other Taxable Allowance</field>
|
||||
<field name="sequence" eval="90"/>
|
||||
<record id="hr_salary_rule_net" model="hr.salary.rule">
|
||||
<field name="amount_type">code</field>
|
||||
<field name="code">NET</field>
|
||||
<field name="category_id" ref="NET"/>
|
||||
<field name="name">NET</field>
|
||||
<field name="sequence" eval="500"/>
|
||||
<field name="python_compute">total = basic+allowance+deduction</field>
|
||||
</record>
|
||||
|
||||
<!-- Contract Wage Types -->
|
||||
<record id="hr_contract_monthly_basic" model="hr.contract.wage.type">
|
||||
<field name="name">Monthly Basic Wage</field>
|
||||
<field name="type">basic</field>
|
||||
<field name="period_id" ref="hr_contract.hr_contract_wage_type_period_monthly"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -2,57 +2,59 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Payroll Structure -->
|
||||
<record id="structure_001" model="hr.payroll.structure">
|
||||
<field name="code">ME</field>
|
||||
<field name="name">Marketing Executive</field>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<!-- Salary Rules -->
|
||||
|
||||
<record id="hr_payslip_line_houserantallowance1" model="hr.payslip.line">
|
||||
<field name="amount_type">per</field>
|
||||
<field eval="5" name="sequence"/>
|
||||
<field eval="0.4" name="amount"/>
|
||||
<record id="hr_payslip_line_houserantallowance1" model="hr.salary.rule">
|
||||
<field name="amount_select">percentage</field>
|
||||
<field eval="40.0" name="amount_percentage"/>
|
||||
<field name="amount_percentage_base">contract.wage</field>
|
||||
<field name="code">HRA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="type" ref="AL"/>
|
||||
<field name="category_id" ref="hr_payroll.HRA"/>
|
||||
<field name="function_id" ref="hr_payroll.structure_001"/>
|
||||
<field name="name">House Rent Allowance</field>
|
||||
<field name="sequence" eval="5"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_payslip_line_convanceallowance1" model="hr.payslip.line">
|
||||
<field name="amount_type">fix</field>
|
||||
<field eval="10" name="sequence"/>
|
||||
<field eval="800.0" name="amount"/>
|
||||
<record id="hr_payslip_line_convanceallowance1" model="hr.salary.rule">
|
||||
<field name="amount_select">fix</field>
|
||||
<field eval="800.0" name="amount_fix"/>
|
||||
<field name="code">CA</field>
|
||||
<field name="type">allowance</field>
|
||||
<field name="type" ref="AL"/>
|
||||
<field name="category_id" ref="hr_payroll.CA"/>
|
||||
<field name="function_id" ref="hr_payroll.structure_001"/>
|
||||
<field name="name">Conveyance Allowance</field>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_payslip_line_professionaltax1" model="hr.payslip.line">
|
||||
<field name="amount_type">fix</field>
|
||||
<record id="hr_payslip_line_professionaltax1" model="hr.salary.rule">
|
||||
<field name="amount_select">fix</field>
|
||||
<field eval="15" name="sequence"/>
|
||||
<field eval="200.0" name="amount"/>
|
||||
<field eval="-200.0" name="amount_fix"/>
|
||||
<field name="code">PT</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="type" ref="DED"/>
|
||||
<field name="category_id" ref="hr_payroll.PT"/>
|
||||
<field name="function_id" ref="hr_payroll.structure_001"/>
|
||||
<field name="name">Professional Tax</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_payslip_line_providentfund1" model="hr.payslip.line">
|
||||
<field name="amount_type">per</field>
|
||||
<record id="hr_payslip_line_providentfund1" model="hr.salary.rule">
|
||||
<field name="amount_select">percentage</field>
|
||||
<field eval="20" name="sequence"/>
|
||||
<field eval="0.125" name="amount"/>
|
||||
<field eval="-12.5" name="amount_percentage"/>
|
||||
<field name="amount_percentage_base">contract.wage</field>
|
||||
<field name="code">PF</field>
|
||||
<field name="type">deduction</field>
|
||||
<field name="type" ref="DED"/>
|
||||
<field name="category_id" ref="hr_payroll.PF"/>
|
||||
<field name="function_id" ref="hr_payroll.structure_001"/>
|
||||
<field name="name">Provident Fund</field>
|
||||
</record>
|
||||
|
||||
<!-- Salary Structure -->
|
||||
|
||||
<record id="structure_001" model="hr.payroll.structure">
|
||||
<field name="code">ME</field>
|
||||
<field name="name">Marketing Executive</field>
|
||||
<field eval="[(6, 0, [ref('hr_payslip_line_houserantallowance1'), ref('hr_payslip_line_convanceallowance1'),ref('hr_payslip_line_professionaltax1'),ref('hr_payslip_line_providentfund1')])]" name="rule_ids"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
<!-- Employee -->
|
||||
<record id="hr_employee_bonamy0" model="hr.employee">
|
||||
<field eval="0" name="manager"/>
|
||||
@@ -65,7 +67,6 @@
|
||||
|
||||
<!-- Employee Contract -->
|
||||
<record id="hr_contract_firstcontract1" model="hr.contract">
|
||||
<field name="wage_type_id" ref="hr_contract.hr_contract_monthly_gross"/>
|
||||
<field name="name">First Contract</field>
|
||||
<field name="type_id" ref="hr_contract.hr_contract_type_emp"/>
|
||||
<field name="date_start" eval="time.strftime('%Y-%m')+'-1'"/>
|
||||
@@ -77,15 +78,5 @@
|
||||
<field eval="5" name="working_days_per_week"/>
|
||||
</record>
|
||||
|
||||
<!-- Payslip -->
|
||||
<record id="hr_payslip_salaryslipofbonamyforjune0" model="hr.payslip">
|
||||
<field name="number">SLIP/001</field>
|
||||
<field name="deg_id" ref="hr_payroll.structure_001"/>
|
||||
<field name="employee_id" ref="hr_employee_bonamy0"/>
|
||||
<field name="contract_id" ref="hr_contract_firstcontract1"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="date" eval="time.strftime('%Y-%m')+'-5'"/>
|
||||
<field name="name" eval="'Salary Slip of Bonamy for June-'+time.strftime('%Y')"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,42 +6,36 @@
|
||||
<field name="osv">hr.payslip</field>
|
||||
<field name="on_create">True</field>
|
||||
</record>
|
||||
|
||||
<record id="act_new" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="flow_start">True</field>
|
||||
<field name="name">new</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="act_draft" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">draft</field>
|
||||
<field name="action">compute_sheet()</field>
|
||||
<field name="flow_start">True</field>
|
||||
<field name="split_mode">OR</field>
|
||||
<field name="kind">function</field>
|
||||
<field name="kind">dummy</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="act_hr_check" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">hr_check</field>
|
||||
<field name="action">hr_check_sheet()</field>
|
||||
<field name="kind">function</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="act_confirm" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">confirm</field>
|
||||
<field name="action">verify_sheet()</field>
|
||||
<field name="kind">function</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="act_cancel" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">cancel</field>
|
||||
<field name="action">cancel_sheet()</field>
|
||||
<field name="kind">function</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="act_done" model="workflow.activity">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">done</field>
|
||||
@@ -49,55 +43,49 @@
|
||||
<field name="kind">function</field>
|
||||
<field name="flow_stop">True</field>
|
||||
</record>
|
||||
|
||||
<record id="t1" model="workflow.transition">
|
||||
<field name="act_from" ref="act_new"/>
|
||||
<field name="act_to" ref="act_draft"/>
|
||||
<field name="signal">compute_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t2" model="workflow.transition">
|
||||
<field name="act_from" ref="act_draft"/>
|
||||
<field name="act_to" ref="act_hr_check"/>
|
||||
<field name="signal">verify_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t3" model="workflow.transition">
|
||||
<field name="act_from" ref="act_hr_check"/>
|
||||
<field name="act_to" ref="act_confirm"/>
|
||||
<field name="signal">final_verify_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t4" model="workflow.transition">
|
||||
<field name="act_from" ref="act_confirm"/>
|
||||
<field name="act_to" ref="act_done"/>
|
||||
<field name="signal">process_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t7" model="workflow.transition">
|
||||
<field name="act_from" ref="act_draft"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t8" model="workflow.transition">
|
||||
<field name="act_from" ref="act_hr_check"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t9" model="workflow.transition">
|
||||
<field name="act_from" ref="act_confirm"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t11" model="workflow.transition">
|
||||
<field name="act_from" ref="act_done"/>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">cancel_sheet</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="t12" model="workflow.transition">
|
||||
<field name="act_from" ref="act_cancel"/>
|
||||
<field name="act_to" ref="act_draft"/>
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
<para style="terp_default_Bold_9">Basic Salary</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ formatLang(o.basic_before_leaves, dp='Account') ]] [[ o.company_id.currency_id.symbol ]] </para>
|
||||
<para style="terp_default_9">[[ formatLang(o.contract_id.wage, dp='Account') ]] [[ o.company_id.currency_id.symbol ]] </para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Leaved Deduction</para>
|
||||
@@ -521,35 +521,7 @@
|
||||
<para style="terp_default_space">
|
||||
<font color="white"> </font>
|
||||
</para>
|
||||
<blockTable colWidths="269.0,134.0,135.0" style="Table21">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details">Other Lines</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Payments - [[ get_month(o) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">Deduction -[[ get_month(o) ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<section>
|
||||
<para style="terp_default_9">[[repeatIn(get_others(o.line_ids),'ol') ]]</para>
|
||||
<blockTable colWidths="269.0,134.0,135.0" style="Table22">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ ol.code or '' ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ ol.type in ['advance','loan','otherpay'] and formatLang(ol.total, dp='Account') or '' ]] [[ ol.type in ['advance','loan','otherpay'] and o.company_id and o.company_id.currency_id.symbol or '' ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ ol.type in ['otherdeduct','installment'] and formatLang(ol.total, dp='Account') or '' ]] [[ ol.type in ['otherdeduct','installment'] and o.company_id and o.company_id.currency_id.symbol or '' ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</section>
|
||||
|
||||
<blockTable colWidths="269.0,177.0,93.0" style="Table5">
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
@@ -36,33 +36,21 @@ class payslip_report(report_sxw.rml_parse):
|
||||
'get_earnings': self.get_earnings,
|
||||
'get_deductions':self.get_deductions,
|
||||
'get_leave':self.get_leave,
|
||||
'get_others':self.get_others,
|
||||
})
|
||||
|
||||
def convert(self, amount, cur):
|
||||
amt_en = amount_to_text_en.amount_to_text(amount, 'en', cur)
|
||||
return amt_en
|
||||
|
||||
def get_others(self, obj):
|
||||
payslip_line = self.pool.get('hr.payslip.line')
|
||||
res = []
|
||||
ids = []
|
||||
for id in range(len(obj)):
|
||||
if obj[id].category_id.type in ('advance', 'loan', 'otherpay', 'otherdeduct', 'installment'):
|
||||
ids.append(obj[id].id)
|
||||
if ids:
|
||||
res = payslip_line.browse(self.cr, self.uid, ids)
|
||||
return res
|
||||
|
||||
def get_leave(self, obj):
|
||||
payslip_line = self.pool.get('hr.payslip.line')
|
||||
res = []
|
||||
ids = []
|
||||
for id in range(len(obj)):
|
||||
if obj[id].type == 'leaves':
|
||||
ids.append(obj[id].id)
|
||||
if ids:
|
||||
res = payslip_line.browse(self.cr, self.uid, ids)
|
||||
# ids = []
|
||||
# for id in range(len(obj)):
|
||||
# if obj[id].type == 'leaves':
|
||||
# ids.append(obj[id].id)
|
||||
# if ids:
|
||||
# res = payslip_line.browse(self.cr, self.uid, ids)
|
||||
return res
|
||||
|
||||
def get_earnings(self, obj):
|
||||
@@ -70,7 +58,7 @@ class payslip_report(report_sxw.rml_parse):
|
||||
res = []
|
||||
ids = []
|
||||
for id in range(len(obj)):
|
||||
if obj[id].category_id.type == 'allowance' and obj[id].type != 'leaves':
|
||||
if obj[id].category_id.parent_id.name == 'Allowance':
|
||||
ids.append(obj[id].id)
|
||||
if ids:
|
||||
res = payslip_line.browse(self.cr, self.uid, ids)
|
||||
@@ -81,7 +69,7 @@ class payslip_report(report_sxw.rml_parse):
|
||||
res = []
|
||||
ids = []
|
||||
for id in range(len(obj)):
|
||||
if obj[id].category_id.type == 'deduction' and obj[id].type != 'leaves':
|
||||
if obj[id].category_id.parent_id.name == 'Deduction':
|
||||
ids.append(obj[id].id)
|
||||
if ids:
|
||||
res = payslip_line.browse(self.cr, self.uid, ids)
|
||||
|
||||
@@ -1,20 +1,11 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_hr_passport","hr.passport","model_hr_passport","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payroll_structure","hr.payroll.structure","model_hr_payroll_structure","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payroll_register","hr.payroll.register","model_hr_payroll_register","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payroll_advice","hr.payroll.advice","model_hr_payroll_advice","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payroll_advice_line","hr.payroll.advice.line","model_hr_payroll_advice_line","base.group_hr_user",1,1,1,1
|
||||
"access_hr_contibution_register","hr.contibution.register","model_hr_contibution_register","base.group_hr_user",1,1,1,1
|
||||
"access_hr_contibution_register_line","hr.contibution.register.line","model_hr_contibution_register_line","base.group_hr_user",1,1,1,1
|
||||
"access_hr_allounce_deduction_category","hr.allounce.deduction.category","model_hr_allounce_deduction_categoty","base.group_hr_user",1,1,1,1
|
||||
"access_company_contribution","company.contribution","model_company_contribution","base.group_hr_user",1,1,1,1
|
||||
"access_company_contribution_line","company.contribution.line","model_company_contribution_line","base.group_hr_user",1,1,1,1
|
||||
"access_hr_salary_head","hr.salary.head","model_hr_salary_head","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payslip","hr.payslip","model_hr_payslip","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payslip_line","hr.payslip.line","model_hr_payslip_line","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payslip_line_line","hr.payslip.line.line","model_hr_payslip_line_line","base.group_hr_user",1,1,1,1
|
||||
"access_res_partner_payroll","res.partner.payroll","base.model_res_partner","base.group_hr_user",1,1,1,1
|
||||
"access_hr_payslip_manager","hr.payslip.manager","model_hr_payslip","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_payslip_line_manager","hr.payslip.line.manager","model_hr_payslip_line","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_payroll_structure_manager","hr.payroll.structure.manager","model_hr_payroll_structure","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_passport_manager","hr.passport.manager","model_hr_passport","base.group_hr_manager",1,1,1,1
|
||||
"access_hr_contract_wage_type","hr.contract.wage.type user","hr_contract.model_hr_contract_wage_type","base.group_hr_user",1,1,1,1
|
||||
|
||||
|
@@ -43,6 +43,18 @@ class resource_calendar(osv.osv):
|
||||
'company_id': lambda self, cr, uid, context: self.pool.get('res.company')._company_default_get(cr, uid, 'resource.calendar', context=context)
|
||||
}
|
||||
|
||||
def working_hours_on_day(self, cr, uid, resource_calendar_id, day, context=None):
|
||||
"""
|
||||
@param resource_calendar_id: resource.calendar browse record
|
||||
@param day: datetime object
|
||||
@return: returns the working hours (as float) men should work on the given day if is in the attendance_ids of the resource_calendar_id (i.e if that day is a working day), returns 0.0 otherwise
|
||||
"""
|
||||
res = 0.0
|
||||
for working_day in resource_calendar_id.attendance_ids:
|
||||
if (int(working_day.dayofweek) + 1) == day.isoweekday():
|
||||
res += working_day.hour_to - working_day.hour_from
|
||||
return res
|
||||
|
||||
def _get_leaves(self, cr, uid, id, resource):
|
||||
resource_cal_leaves = self.pool.get('resource.calendar.leaves')
|
||||
dt_leave = []
|
||||
|
||||
Reference in New Issue
Block a user