[IMP][ADD] hr_payroll_account: added differents account fields in all hr payroll objects including demo with some improvement.

bzr revid: vra@tinyerp.com-20101014120638-1gsqtz0lm2mf3xe7
This commit is contained in:
vra 2010-10-14 17:36:38 +05:30
parent 67d5a0c3a8
commit fd50df3934
4 changed files with 481 additions and 46 deletions

View File

@ -33,6 +33,7 @@
'depends': [
'hr_payroll',
'account',
'hr_expense'
],
'init_xml': [
],
@ -40,6 +41,7 @@
"hr_payroll_account_view.xml",
],
'demo_xml': [
'hr_payroll_demo.xml'
],
'installable': True,
'active': False,

View File

@ -42,6 +42,172 @@ def prev_bounds(cdate=False):
prev_end = next_month - timedelta(days=1)
return this_first, prev_end
class hr_payroll_structure(osv.osv):
_inherit = 'hr.payroll.structure'
_description = 'Salary Structure'
_columns = {
'account_id':fields.many2one('account.analytic.account', 'Analytic Account'),
}
hr_payroll_structure()
class hr_employee(osv.osv):
'''
Employee
'''
_inherit = 'hr.employee'
_description = 'Employee'
_columns = {
'property_bank_account': fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Bank Account",
method=True,
domain="[('type', '=', 'liquidity')]",
view_load=True,
help="Select Bank Account from where Salary Expanse will be Paid"),
'salary_account':fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Salary Account",
method=True,
domain="[('type', '=', 'other')]",
view_load=True,
help="Expanse account when Salary Expanse will be recorded"),
'employee_account':fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Employee Account",
method=True,
domain="[('type', '=', 'other')]",
view_load=True,
help="Employee Payable Account"),
'analytic_account':fields.property(
'account.analytic.account',
type='many2one',
relation='account.analytic.account',
string="Analytic Account",
method=True,
view_load=True,
help="Analytic Account for Salary Analysis"),
}
hr_employee()
class payroll_register(osv.osv):
_inherit = 'hr.payroll.register'
_description = 'Payroll Register'
_columns = {
'journal_id': fields.many2one('account.journal', 'Expanse Journal'),
'bank_journal_id': fields.many2one('account.journal', 'Bank Journal'),
'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], help="Keep empty to use the period of the validation(Payslip) date."),
}
def compute_sheet(self, cr, uid, ids, context={}):
emp_pool = self.pool.get('hr.employee')
slip_pool = self.pool.get('hr.payslip')
func_pool = self.pool.get('hr.payroll.structure')
slip_line_pool = self.pool.get('hr.payslip.line')
wf_service = netsvc.LocalService("workflow")
vals = self.browse(cr, uid, ids)[0]
emp_ids = emp_pool.search(cr, uid, [])
for emp in emp_pool.browse(cr, uid, emp_ids):
old_slips = slip_pool.search(cr, uid, [('employee_id','=', emp.id), ('date','=',vals.date)])
if old_slips:
slip_pool.write(cr, uid, old_slips, {'register_id':ids[0]})
for sid in old_slips:
wf_service.trg_validate(uid, 'hr.payslip', sid, 'compute_sheet', cr)
else:
res = {
'employee_id':emp.id,
'basic':0.0,
'register_id':ids[0],
'name':vals.name,
'date':vals.date,
'journal_id':vals.journal_id.id,
'bank_journal_id':vals.bank_journal_id.id
}
slip_id = slip_pool.create(cr, uid, res)
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})
return True
payroll_register()
class payroll_advice(osv.osv):
_inherit = 'hr.payroll.advice'
_description = 'Bank Advice Note'
_columns = {
'account_id': fields.many2one('account.account', 'Account'),
}
payroll_advice()
class contrib_register(osv.osv):
_inherit = 'hr.contibution.register'
_description = 'Contribution Register'
def _total_contrib(self, cr, uid, ids, field_names, arg, context={}):
line_pool = self.pool.get('hr.contibution.register.line')
period_id = self.pool.get('account.period').search(cr,uid,[('date_start','<=',time.strftime('%Y-%m-%d')),('date_stop','>=',time.strftime('%Y-%m-%d'))])[0]
fiscalyear_id = self.pool.get('account.period').browse(cr, uid, period_id).fiscalyear_id
res = {}
for cur in self.browse(cr, uid, ids):
current = line_pool.search(cr, uid, [('period_id','=',period_id),('register_id','=',cur.id)])
years = line_pool.search(cr, uid, [('period_id.fiscalyear_id','=',fiscalyear_id.id), ('register_id','=',cur.id)])
e_month = 0.0
c_month = 0.0
for i in line_pool.browse(cr, uid, current):
e_month += i.emp_deduction
c_month += i.comp_deduction
e_year = 0.0
c_year = 0.0
for j in line_pool.browse(cr, uid, years):
e_year += i.emp_deduction
c_year += i.comp_deduction
res[cur.id]={
'monthly_total_by_emp':e_month,
'monthly_total_by_comp':c_month,
'yearly_total_by_emp':e_year,
'yearly_total_by_comp':c_year
}
return res
_columns = {
'account_id': fields.many2one('account.account', 'Account'),
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'),
'yearly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, 4)),
'yearly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, 4)),
}
contrib_register()
class contrib_register_line(osv.osv):
_inherit = 'hr.contibution.register.line'
_description = 'Contribution Register Line'
_columns = {
'period_id': fields.many2one('account.period', 'Period'),
}
contrib_register_line()
class hr_holidays_status(osv.osv):
_inherit = 'hr.holidays.status'
_columns = {
'account_id': fields.many2one('account.account', 'Account'),
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'),
}
hr_holidays_status()
class hr_payslip(osv.osv):
'''
Pay Slip
@ -50,7 +216,9 @@ class hr_payslip(osv.osv):
_description = 'Pay Slip'
_columns = {
'move_ids':fields.one2many('hr.payslip.account.move', 'slip_id', 'Accounting vouchers', required=False),
'journal_id': fields.many2one('account.journal', 'Expanse Journal'),
'bank_journal_id': fields.many2one('account.journal', 'Bank Journal'),
'move_ids':fields.one2many('hr.payslip.account.move', 'slip_id', 'Accounting vouchers'),
'move_line_ids':fields.many2many('account.move.line', 'payslip_lines_rel', 'slip_id', 'line_id', 'Accounting Lines', readonly=True),
'move_payment_ids':fields.many2many('account.move.line', 'payslip_payment_rel', 'slip_id', 'payment_id', 'Payment Lines', readonly=True),
'period_id': fields.many2one('account.period', 'Force Period', domain=[('state','<>','done')], help="Keep empty to use the period of the validation(Payslip) date."),
@ -479,6 +647,14 @@ class hr_payslip(osv.osv):
hr_payslip()
class hr_payslip_line(osv.osv):
_inherit = 'hr.payslip.line'
_columns = {
'account_id': fields.many2one('account.account', 'General Account'),
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'),
}
hr_payslip_line()
class account_move_link_slip(osv.osv):
'''
Account Move Link to Pay Slip

View File

@ -1,61 +1,258 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="view_hr_payslip_form_inherit" model="ir.ui.view">
<field name="name">hr.payslip.form</field>
<record id="hr_hr_employee_view_form2_inherit_2" model="ir.ui.view">
<field name="name">hr.hr.employee.view.form2.inherit_1</field>
<field name="model">hr.employee</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_contract.hr_hr_employee_view_form2"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Salary Structure']" position="after">
<page string="Accounting">
<field name="property_bank_account" required="1"/>
<field name="salary_account" required="1"/>
<field name="employee_account" required="1"/>
<field name="analytic_account"/>
<field name="slip_ids" colspan="4" nolabel="1"/>
</page>
</xpath>
</field>
</record>
<record id="hr_hr_employee_view_form2_inherit_1" model="ir.ui.view">
<field name="name">hr.hr.employee.view.form2.inherit</field>
<field name="model">hr.employee</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_contract.hr_hr_employee_view_form2"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Salary Structure']/field[@name='line_ids']/tree/field[@name='amount']" position="after">
<field name="account_id"/>
<field name="analytic_account_id"/>
</xpath>
<xpath expr="/form/notebook/page[@string='Salary Structure']/field[@name='line_ids']/form/group/field[@name='code']" position="after">
<field name="account_id"/>
<field name="analytic_account_id"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_holiday_status_inherit_form1">
<field name="name">hr.holidays.status.inherit1</field>
<field name="model">hr.holidays.status</field>
<field name="inherit_id" ref="hr_payroll.view_holiday_status_form1"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="code" position="after">
<field name="analytic_account_id"/>
<field name="account_id"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_hr_payslip_line_inherit_tree">
<field name="name">hr.payslip.line.inherit.tree</field>
<field name="model">hr.payslip.line</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_line_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="amount" position="after">
<field name="analytic_account_id"/>
<field name="account_id" required="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_hr_payslip_line_inherit_form">
<field name="name">hr.payslip.line.inherit.form</field>
<field name="model">hr.payslip.line</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_line_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="company_contrib" position="before">
<field name="analytic_account_id"/>
<field name="account_id" required="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_hr_payslip_inherit_form">
<field name="name">hr.payslip.inherit.form</field>
<field name="model">hr.payslip</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="journal_id" required="1"/>
<field name="bank_journal_id" domain="[('type','=','cash')]" required="1"/>
</field>
</field>
</record>
<record id="view_hr_payslip_form_inherit_1" model="ir.ui.view">
<field name="name">hr.payslip.form.inherit1</field>
<field name="model">hr.payslip</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_form"/>
<field name="arch" type="xml">
<page string="Accounting Details" position="replace">
<page string="Accounting Details">
<group col="4" colspan="3">
<separator colspan="4" string="Accounting Informations"/>
<field name="move_ids" colspan="4" nolabel="1" readonly="1">
<tree string="Accounting Vouchers">
<field name="sequence"/>
<field name="name"/>
<field name="move_id"/>
</tree>
<form string="Accounting Vouchers">
<field name="sequence"/>
<field name="name"/>
<field name="move_id"/>
</form>
</field>
</group>
<group col="2" colspan="1">
<separator colspan="2" string="Other Informations"/>
<field name="paid" readonly="1"/>
<field name="company_id"/>
<field name="register_id"/>
<field name="deg_id"/>
<field name="contract_id" domain="[('employee_id','=',employee_id)]"/>
</group>
<separator colspan="4" string="Description"/>
<field name="note" colspan="4" nolabel="1"/>
</page>
</page>
<xpath expr="/form/notebook/page[@string='Salary Computation']/field[@name='line_ids']/tree/field[@name='total']" position="after">
<field name="account_id" required="1"/>
<field name="analytic_account_id"/>
</xpath>
<xpath expr="/form/notebook/page[@string='Salary Computation']/field[@name='line_ids']/form/group/field[@name='company_contrib']" position="before">
<field name="account_id" required="1"/>
<field name="analytic_account_id"/>
</xpath>
</field>
</record>
<record id="view_hr_payslip_form_inherit1" model="ir.ui.view">
<field name="name">hr.payslip.form</field>
<field name="model">hr.payslip</field>
<record model="ir.ui.view" id="view_hr_bank_advice_inherit_form">
<field name="name">hr.payroll.advice.inherit.form</field>
<field name="model">hr.payroll.advice</field>
<field name="inherit_id" ref="hr_payroll.view_hr_bank_advice_form"/>
<field name="type">form</field>
<field name="inherit_id" ref="view_hr_payslip_form_inherit"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Account Lines">
<field name="move_line_ids" colspan="4" nolabel="1"/>
</page>
<page string="Payment Lines">
<field name="move_payment_ids" colspan="4" nolabel="1"/>
</page>
</notebook>
<field name="name" position="after">
<field name="account_id" required="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_hr_payroll_register_inherit_tree">
<field name="name">hr.payroll.register.inherit.tree</field>
<field name="model">hr.payroll.register</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payroll_register_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="state" position="before">
<field name="journal_id" required="1"/>
<field name="bank_journal_id" required="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_hr_payroll_register_inherit_form">
<field name="name">hr.payroll.register.inherit.form</field>
<field name="model">hr.payroll.register</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payroll_register_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="number" position="after">
<field name="journal_id" required="1"/>
<field name="bank_journal_id" required="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="hr_contibution_register_inherit_tree">
<field name="name">hr.contibution.register.inherit.tree</field>
<field name="model">hr.contibution.register</field>
<field name="inherit_id" ref="hr_payroll.hr_contibution_register_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="monthly_total_by_comp" position="after">
<field name="yearly_total_by_emp"/>
<field name="yearly_total_by_comp"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="hr_contibution_register_inherit_form">
<field name="name">hr.contibution.register.inherit.form</field>
<field name="model">hr.contibution.register</field>
<field name="inherit_id" ref="hr_payroll.hr_contibution_register_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="account_id" required="1"/>
<field name="analytic_account_id"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="hr_contibution_register_inherit1_form">
<field name="name">hr.contibution.register.inherit1.form</field>
<field name="model">hr.contibution.register</field>
<field name="inherit_id" ref="hr_payroll.hr_contibution_register_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="monthly_total_by_emp" position="before">
<group col="2" colspan="2">
<separator colspan="4" string="Year"/>
<field name="yearly_total_by_emp"/>
<field name="yearly_total_by_comp"/>
</group>
</field>
</field>
</record>
<record model="ir.ui.view" id="hr_contibution_register_line_inherit_form">
<field name="name">hr.contibution.register.line.form.inherit</field>
<field name="model">hr.contibution.register.line</field>
<field name="inherit_id" ref="hr_payroll.hr_contibution_register_line_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="employee_id" position="after">
<field name="period_id"/>
</field>
</field>
</record>
<record id="view_hr_payslip_form_inherit" model="ir.ui.view">
<field name="name">hr.payslip.form</field>
<field name="model">hr.payslip</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_form"/>
<field name="arch" type="xml">
<page string="Other Informations" position="replace">
<page string="Accounting Details">
<group col="4" colspan="3">
<separator colspan="4" string="Accounting Informations"/>
<field name="move_ids" colspan="4" nolabel="1" readonly="1">
<tree string="Accounting Vouchers">
<field name="sequence"/>
<field name="name"/>
<field name="move_id"/>
</tree>
<form string="Accounting Vouchers">
<field name="sequence"/>
<field name="name"/>
<field name="move_id"/>
</form>
</field>
</group>
<group col="2" colspan="1">
<separator colspan="2" string="Other Informations"/>
<field name="paid" readonly="1"/>
<field name="company_id"/>
<field name="register_id"/>
<field name="deg_id"/>
<field name="contract_id" domain="[('employee_id','=',employee_id)]"/>
</group>
<separator colspan="4" string="Description"/>
<field name="note" colspan="4" nolabel="1"/>
</page>
</page>
</field>
</record>
<record id="view_hr_payslip_form_inherit1" model="ir.ui.view">
<field name="name">hr.payslip.form</field>
<field name="model">hr.payslip</field>
<field name="type">form</field>
<field name="inherit_id" ref="view_hr_payslip_form_inherit"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Account Lines">
<field name="move_line_ids" colspan="4" nolabel="1"/>
</page>
<page string="Payment Lines">
<field name="move_payment_ids" colspan="4" nolabel="1"/>
</page>
</notebook>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="hr_payroll.hr_payslip_line_houserantallowance1" model="hr.payslip.line">
<field name="account_id" ref="account.a_expense"/>
</record>
<record id="hr_payroll.hr_payslip_line_convanceallowance1" model="hr.payslip.line">
<field name="account_id" ref="account.a_expense"/>
</record>
<record id="hr_payroll.hr_payslip_line_professionaltax1" model="hr.payslip.line">
<field name="account_id" ref="account.a_pay"/>
</record>
<record id="hr_payroll.hr_payslip_line_providentfund1" model="hr.payslip.line">
<field name="account_id" ref="account.a_pay"/>
</record>
<!-- Payslip -->
<record id="hr_payroll.hr_payslip_salaryslipofbonamyforjune0" model="hr.payslip">
<field name="journal_id" ref="account.expenses_journal"/>
<field name="bank_journal_id" ref="account.bank_journal"/>
</record>
<!-- Assigned Default Account in Different Demo Employees -->
<record id="hr.employee" model="hr.employee">
<field name="property_bank_account" ref="account.bnk"/>
<field name="salary_account" ref="account.a_salary_expense"/>
<field name="employee_account" ref="account.a_expense"/>
</record>
<record id="hr.employee1" model="hr.employee">
<field name="property_bank_account" ref="account.bnk"/>
<field name="salary_account" ref="account.a_salary_expense"/>
<field name="employee_account" ref="account.a_expense"/>
</record>
<record id="hr.employee2" model="hr.employee">
<field name="property_bank_account" ref="account.bnk"/>
<field name="salary_account" ref="account.a_salary_expense"/>
<field name="employee_account" ref="account.a_expense"/>
</record>
<record id="hr.employee3" model="hr.employee">
<field name="property_bank_account" ref="account.bnk"/>
<field name="salary_account" ref="account.a_salary_expense"/>
<field name="employee_account" ref="account.a_expense"/>
</record>
<record id="hr_payroll.hr_employee_bonamy0" model="hr.employee">
<field name="property_bank_account" ref="account.bnk"/>
<field name="salary_account" ref="account.a_salary_expense"/>
<field name="employee_account" ref="account.a_expense"/>
</record>
</data>
</openerp>