Khushboo Bhatt(openerp) has proposed merging lp:~openerp-dev/openerp-india/payroll-india-trunk-payroll-advice-improvements-kbh into lp:~openerp-dev/openerp-india/payroll-india-trunk.
Requested reviews: OpenERP R&D Team (openerp-dev) For more details, see: https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-trunk-payroll-advice-improvements-kbh/+merge/110006 Hello, ====l10n_in_hr_payroll==== I Have done following changes. - sequence file added for payment advice. - access rights for payment advice. - added field tool-tip and read-only true fields. - default text on field. - removed buttons from tree view and string of states are changed. Thank you, KBH. -- https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-trunk-payroll-advice-improvements-kbh/+merge/110006 Your team OpenERP R&D Team is requested to review the proposed merge of lp:~openerp-dev/openerp-india/payroll-india-trunk-payroll-advice-improvements-kbh into lp:~openerp-dev/openerp-india/payroll-india-trunk.
=== modified file 'l10n_in_hr_payroll/__openerp__.py' --- l10n_in_hr_payroll/__openerp__.py 2012-06-12 05:57:10 +0000 +++ l10n_in_hr_payroll/__openerp__.py 2012-06-13 09:17:16 +0000 @@ -1,57 +1,116 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -############################################################################## -{ - 'name': 'India payroll', - 'category': 'Localization', - 'init_xml': [], - 'author': 'OpenERP SA', - 'website':'http://www.openerp.com', - 'depends': ['hr_payroll'], - 'version': '1.0', - 'description': """ -Indian Payroll Rules. -======================= - - -Configuration of hr_payroll for India localization - -All main contributions rules for India payslip. - * New payslip report - * Employee Contracts - * Allow to configure Basic / Grows / Net Salary - * Employee PaySlip - * Allowance / Deduction - * Monthly Payroll Register - * Integrated with Holiday Management - * Medical Allowance, Travel Allowance, Child Allowance, ... - - Payroll Advice and Report - """, - - 'active': False, - 'update_xml': [ - 'l10n_in_hr_payroll_view.xml', - 'l10n_in_hr_payroll_data.xml', - 'data/hr.salary.rule.csv', - 'l10n_in_hr_payroll_report.xml', - ], - 'demo_xml': ['l10n_in_hr_payroll_demo.xml'], - 'installable': True -} - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +<<<<<<< TREE +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## +{ + 'name': 'India payroll', + 'category': 'Localization', + 'init_xml': [], + 'author': 'OpenERP SA', + 'website':'http://www.openerp.com', + 'depends': ['hr_payroll'], + 'version': '1.0', + 'description': """ +Indian Payroll Rules. +======================= + + -Configuration of hr_payroll for India localization + -All main contributions rules for India payslip. + * New payslip report + * Employee Contracts + * Allow to configure Basic / Grows / Net Salary + * Employee PaySlip + * Allowance / Deduction + * Monthly Payroll Register + * Integrated with Holiday Management + * Medical Allowance, Travel Allowance, Child Allowance, ... + - Payroll Advice and Report + """, + + 'active': False, + 'update_xml': [ + 'l10n_in_hr_payroll_view.xml', + 'l10n_in_hr_payroll_data.xml', + 'data/hr.salary.rule.csv', + 'l10n_in_hr_payroll_report.xml', + ], + 'demo_xml': ['l10n_in_hr_payroll_demo.xml'], + 'installable': True +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:======= +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## +{ + 'name': 'India payroll', + 'category': 'Localization', + 'init_xml': [], + 'author': 'OpenERP SA', + 'website':'http://www.openerp.com', + 'depends': ['hr_payroll'], + 'version': '1.0', + 'description': """ +Indian Payroll Rules. +======================= + + -Configuration of hr_payroll for India localization + -All main contributions rules for India payslip. + * New payslip report + * Employee Contracts + * Allow to configure Basic / Grows / Net Salary + * Employee PaySlip + * Allowance / Deduction + * Monthly Payroll Register + * Integrated with Holiday Management + * Medical Allowance, Travel Allowance, Child Allowance, ... + - Payroll Advice and Report + """, + + 'active': False, + 'update_xml': [ + 'l10n_in_hr_payroll_view.xml', + 'l10n_in_hr_payroll_data.xml', + 'data/hr.salary.rule.csv', + 'l10n_in_hr_payroll_report.xml', + 'l10n_in_hr_payroll_sequence.xml' + ], + 'demo_xml': ['l10n_in_hr_payroll_demo.xml'], + 'installable': True +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:>>>>>>> MERGE-SOURCE === modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll.py' --- l10n_in_hr_payroll/l10n_in_hr_payroll.py 2012-06-12 05:57:10 +0000 +++ l10n_in_hr_payroll/l10n_in_hr_payroll.py 2012-06-13 09:17:16 +0000 @@ -1,3 +1,4 @@ +<<<<<<< TREE #-*- coding:utf-8 -*- ############################################################################## # @@ -191,4 +192,206 @@ payroll_advice_line() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:======= +#-*- coding:utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 OpenERP SA (<http://openerp.com>). All Rights Reserved +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +import time +from datetime import datetime +from dateutil.relativedelta import relativedelta +from calendar import isleap + +from tools.translate import _ +from osv import fields, osv +import decimal_precision as dp + +DATETIME_FORMAT = "%Y-%m-%d" + +class hr_contract_in(osv.osv): + _inherit = 'hr.contract' + _description = 'contract' + + _columns = { + 'tds': fields.float('TDS', digits_compute=dp.get_precision('Payroll')), + 'house_rent_income': fields.float('House Rent Income ', digits_compute=dp.get_precision('Payroll'), help="Income from house property."), + 'saving_bank_account': fields.float('Saving Bank Account Income ', digits_compute=dp.get_precision('Payroll'), help="Saving income for bank account."), + 'other_income': fields.float('Other Income ', digits_compute=dp.get_precision('Payroll'), help="Other income of employee."), + 'short_term_gain':fields.float('Short Term Gain from Share Trading/Equity MFs ', digits_compute=dp.get_precision('Payroll'), help="Stocks/equity mutual funds are sold before one year."), + 'long_term_gain':fields.float('Long Term Gain from Share Trading/Equity MFs', digits_compute=dp.get_precision('Payroll'), help="Stocks/equity mutual funds are kept for more than a year."), + 'food_coupon_amount': fields.float('Food Coupons ', digits_compute=dp.get_precision('Payroll'), help="Amount of food coupon per day."), + 'driver_salay': fields.boolean('Driver Salary', help=" Allowance for company provided driver."), + 'professional_tax': fields.float('Professional Tax ', digits_compute=dp.get_precision('Payroll'), help="Professional tax deducted from salary"), + 'leave_avail_dedution': fields.float('Leave Availed Deduction ', digits_compute=dp.get_precision('Payroll'), help="Deduction for emergency leave of employee."), + 'medical_insurance': fields.float('Medical Insurance', digits_compute=dp.get_precision('Payroll'), help="Deduction towards company provided medical insurance."), + 'voluntary_provident_fund': fields.float('Voluntary Provident Fund', digits_compute=dp.get_precision('Payroll'), help="VPF computed as percentage.(%)"), + 'company_transport': fields.float('Company Provided Transport', digits_compute=dp.get_precision('Payroll'), help="Deduction for company provided transport."), + } + +hr_contract_in() + + +class hr_employee(osv.osv): + + _inherit = 'hr.employee' + _description = 'Employee' + + def _compute_year(self, cr, uid, ids, fields, args, context=None): + """ + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of employee’s IDs + @return: No. of years of experience. + @param context: A standard dictionary for contextual values + """ + res = {} + c_date = time.strftime(DATETIME_FORMAT) + current_date = datetime.strptime(c_date,DATETIME_FORMAT) + for employee in self.browse(cr, uid, ids, context=context): + if employee.join_date: + date_start = datetime.strptime(employee.join_date, DATETIME_FORMAT) + diffyears = current_date.year - date_start.year + difference = current_date - date_start.replace(current_date.year) + days_in_year = isleap(current_date.year) and 366 or 365 + difference_in_years = diffyears + (difference.days + difference.seconds/86400.0)/days_in_year + total_years = relativedelta(current_date, date_start).years + total_months = relativedelta(current_date, date_start).months + if total_months < 10: + year_month= float(total_months)/10 + total_years + else: + year_month = float(total_months)/100 + total_years + res[employee.id] = year_month + else: + res[employee.id] = 0.0 + return res + + _columns = { + 'join_date': fields.date('Join Date', help="joining date of employee "), + 'number_of_year':fields.function(_compute_year, string='No. of Years of Service', type="float", store=True, help="Total years of work experience."), + } + +hr_employee() + +class payroll_advice(osv.osv): + ''' + Bank Advice Note + ''' + + _name = 'hr.payroll.advice' + _description = 'Bank Advice Note' + _columns = { + 'name':fields.char('Name', size=32, readonly=True, required=True, states={'draft': [('readonly', False)]},), + 'note': fields.text('Description'), + 'date': fields.date('Date', readonly=True, states={'draft': [('readonly', False)]}, help="Date is used to search Payslips."), + 'state':fields.selection([ + ('draft','Draft'), + ('confirm','Confirm'), + ('cancel','Cancelled'), + ],'State', select=True, readonly=True), + 'number':fields.char('Number', size=16, readonly=True), + 'line_ids':fields.one2many('hr.payroll.advice.line', 'advice_id', 'Employee Salary', states={'draft': [('readonly', False)]}, readonly=True), + 'chaque_nos':fields.char('Chaque Nos', size=256), + 'company_id':fields.many2one('res.company', 'Company',required=True, states={'draft': [('readonly', False)]}), + 'bank_id':fields.many2one('res.bank', 'Bank', readonly=True, states={'draft': [('readonly', False)]}, help="Select the Bank Address from whcih the salary is going to be paid"), + } + + _defaults = { + 'date': lambda *a: time.strftime('%Y-%m-%d'), + 'state': lambda *a: 'draft', + 'company_id': lambda self, cr, uid, context: \ + self.pool.get('res.users').browse(cr, uid, uid, + context=context).company_id.id, + 'note': "Bank Payment advice contain the payment amount, payment date, company name, bank and other information of the payment." + + } + + def compute_advice(self, cr, uid, ids, context=None): + payslip_pool = self.pool.get('hr.payslip') + advice_line_pool = self.pool.get('hr.payroll.advice.line') + payslip_line_pool = self.pool.get('hr.payslip.line') + sequence_pool = self.pool.get('ir.sequence') + + for advice in self.browse(cr, uid, ids, context=context): + old_line_ids = advice_line_pool.search(cr, uid, [('advice_id','=',advice.id)], context=context) + if old_line_ids: + advice_line_pool.unlink(cr, uid, old_line_ids, context=context) + slip_ids = payslip_pool.search(cr, uid, [('date_from','<=',advice.date), ('date_to','>=',advice.date)], context=context) + if not slip_ids: + advice_date = datetime.strptime(advice.date,DATETIME_FORMAT) + a_date = advice_date.strftime('%B')+'-'+advice_date.strftime('%Y') + raise osv.except_osv(_('Error !'), _('No Payslips for found for %s Month') % (a_date)) + for slip in payslip_pool.browse(cr, uid, slip_ids, context=context): + if not slip.employee_id.bank_account_id: + raise osv.except_osv(_('Error !'), _('Please define bank account for the %s employee') % (slip.employee_id.name)) + line_ids = payslip_line_pool.search(cr, uid, [ ('slip_id','=',slip.id), ('code', '=', 'NET')], context=context) + if line_ids: + line = payslip_line_pool.browse(cr, uid, line_ids, context=context)[0] + advice_line= { + 'advice_id': advice.id, + 'name': slip.employee_id.bank_account_id.acc_number, + 'employee_id': slip.employee_id.id, + 'bysal': line.total + } + advice_line_pool.create(cr, uid, advice_line, context=context) + number = self.pool.get('ir.sequence').get(cr, uid, 'payment.advice') + self.write(cr, uid, ids, {'number':number}, context=context) + + def confirm_sheet(self, cr, uid, ids, context=None): + for advice in self.browse(cr, uid, ids, context=context): + if not advice.line_ids: + raise osv.except_osv(_('No Payment Advice Lines !'), _('Please create some advice lines.')) + else: + return self.write(cr, uid, ids, {'state':'confirm'}, context=context) + + def set_to_draft(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'state':'draft'}, context=context) + + def cancel_sheet(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'state':'cancel'}, context=context) + + def onchange_company_id(self, cr, uid, ids, company_id=False, context=None): + res = {} + if company_id: + company = self.pool.get('res.company').browse(cr, uid, [company_id], context=context)[0] + if company.partner_id.bank_ids: + res.update({'bank': company.partner_id.bank_ids[0].bank.name}) + return { + 'value':res + } + +payroll_advice() + +class payroll_advice_line(osv.osv): + ''' + Bank Advice Lines + ''' + _name = 'hr.payroll.advice.line' + _description = 'Bank Advice Lines' + _columns = { + 'advice_id':fields.many2one('hr.payroll.advice', 'Bank Advice',), + 'name':fields.char('Bank Account No.', size=32, required=True), + 'employee_id':fields.many2one('hr.employee', 'Employee', required=True), + 'bysal': fields.float('By Salary', digits_compute=dp.get_precision('Payroll')), + 'company_id': fields.related('advice_id','company_id', type='many2one', required=True,relation='res.company', string='Company'), + } + +payroll_advice_line() + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:>>>>>>> MERGE-SOURCE === added file 'l10n_in_hr_payroll/l10n_in_hr_payroll_sequence.xml' --- l10n_in_hr_payroll/l10n_in_hr_payroll_sequence.xml 1970-01-01 00:00:00 +0000 +++ l10n_in_hr_payroll/l10n_in_hr_payroll_sequence.xml 2012-06-13 09:17:16 +0000 @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data noupdate="1"> + <record id="seq_type_payment_advice" model="ir.sequence.type"> + <field name="name">Payment Advice</field> + <field name="code">payment.advice</field> + </record> + <record id="seq_payment_advice" model="ir.sequence"> + <field name="name">Payment Advice</field> + <field name="code">payment.advice</field> + <field name="prefix">PAY/%(month)s/%(year)s/</field> + <field name="padding">3</field> + </record> + </data> +</openerp> \ No newline at end of file === modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml' --- l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml 2012-06-12 05:57:10 +0000 +++ l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml 2012-06-13 09:17:16 +0000 @@ -1,3 +1,4 @@ +<<<<<<< TREE <?xml version="1.0" encoding="utf-8"?> <openerp> <data> @@ -156,3 +157,159 @@ </data> </openerp> +======= +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + + <record id="hr_contract_form_in_inherit" model="ir.ui.view"> + <field name="name">hr.contract.form.in.inherit</field> + <field name="model">hr.contract</field> + <field name="type">form</field> + <field name="priority">20</field> + <field name="inherit_id" ref="hr_contract.hr_contract_view_form"/> + <field name="arch" type="xml"> + <data> + <xpath expr="//field[@name='struct_id']" position="after"> + <group col="2" colspan="2" name="right_column"> + <separator colspan="2" string="Allowance"/> + <field name="food_coupon_amount"/> + <field name="house_rent_income"/> + <field name="saving_bank_account"/> + <field name="other_income"/> + <field name="short_term_gain"/> + <field name="long_term_gain"/> + <field name="driver_salay"/> + </group> + <group col="2" colspan="2" name="left_column"> + <separator colspan="2" string="Deduction"/> + <field name="tds"/> + <field name="professional_tax"/> + <field name="voluntary_provident_fund"/> + <field name="company_transport"/> + <field name="leave_avail_dedution"/> + <field name="medical_insurance"/> + </group> + </xpath> + </data> + </field> + </record> + <record id="hr_employee_form_inherit" model="ir.ui.view"> + <field name="name">hr.employee.form.inherit</field> + <field name="model">hr.employee</field> + <field name="type">form</field> + <field name="inherit_id" ref="hr.view_employee_form"/> + <field name="arch" type="xml"> + <data> + <xpath expr="//field[@name='job_id']" position="after"> + <field name="join_date"/> + <field name="number_of_year"/> + </xpath> + </data> + </field> + </record> + + <record id="view_hr_bank_advice_tree" model="ir.ui.view"> + <field name="name">hr.payroll.advice.tree</field> + <field name="model">hr.payroll.advice</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Bank Advice"> + <field name="date" select="1"/> + <field name="number" select="1"/> + <field name="name" select="1"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <field name="bank_id" select="1"/> + <field name="state"/> + </tree> + </field> + </record> + <record id="view_hr_bank_advice_form" model="ir.ui.view"> + <field name="name">hr.payroll.advice.form</field> + <field name="model">hr.payroll.advice</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="Bank Advice" version="7.0"> + <header> + <button name="confirm_sheet" string="Confirm Sheet" states="draft" type="object"/> + <button name="compute_advice" string="Compute Advice" states="draft" type="object"/> + <button name="cancel_sheet" string="Cancel" states="draft" type="object"/> + <button name="set_to_draft" string="Set to Draft" states="cancel,confirm" type="object"/> + <div class="oe_right"> + <field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft"/> + </div> + <div class="oe_clear"/> + </header> + <group col="6" colspan="4"> + <field name="name" colspan="4" select="1"/> + <field name="number" select="1"/> + <field name="bank_id" select="1"/> + <field name="date" select="1"/> + </group> + <notebook colspan="4"> + <page string="Paymeny Lines"> + <field name="line_ids" colspan="4" nolabel="1"> + <tree string="Payment Lines" editable="bottom"> + <field name="employee_id" on_change="onchange_employee_id(parent.date, employee_id)"/> + <field name="name"/> + <field name="bysal"/> + </tree> + </field> + </page> + <page string="Other Information"> + <group colspan="4" col="6"> + <field name="company_id" on_change="onchange_company_id(company_id)" groups="base.group_multi_company" widget="selection"/> + <field name="chaque_nos"/> + </group> + <separator colspan="4" string="Information"/> + <field name="note" colspan="4" nolabel="1"/> + </page> + </notebook> + </form> + </field> + </record> + + <record id="view_hr_payroll_advice_filter" model="ir.ui.view"> + <field name="name">hr.payroll.advice.select</field> + <field name="model">hr.payroll.advice</field> + <field name="type">search</field> + <field name="arch" type="xml"> + <search string="Search Payment advice"> + <group> + <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Advice"/> + <filter icon="terp-camera_test" string="Done" domain="[('state','=','confirm')]" help="Done Advice"/> + <separator orientation="vertical"/> + <field name="date"/> + <field name="number"/> + <field name="name"/> + <field name="bank_id"/> + </group> + <newline/> + <group expand="0" string="Group By..."> + <filter string="Bank" name="bank_id" icon="terp-folder-orange" context="{'group_by':'bank_id'}"/> + <separator orientation="vertical" /> + <filter string="Companies" name="company_id" groups="base.group_multi_company" icon="terp-go-home" context="{'group_by':'company_id'}"/> + <separator orientation="vertical"/> + <filter string="States" name="state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> + </group> + </search> + </field> + </record> + + <record id="action_view_hr_bank_advice_tree" model="ir.actions.act_window"> + <field name="name">Payment Advice</field> + <field name="res_model">hr.payroll.advice</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="view_id" ref="view_hr_bank_advice_tree"/> + <field name="search_view_id" ref="view_hr_payroll_advice_filter"/> + </record> + <menuitem + action="action_view_hr_bank_advice_tree" + id="hr_menu_payment_advice" + parent="hr_payroll.menu_hr_root_payroll" + /> + + </data> +</openerp> +>>>>>>> MERGE-SOURCE === modified file 'l10n_in_hr_payroll/security/hr.salary.rule.csv' --- l10n_in_hr_payroll/security/hr.salary.rule.csv 2012-05-23 05:45:19 +0000 +++ l10n_in_hr_payroll/security/hr.salary.rule.csv 2012-06-13 09:17:16 +0000 @@ -1,2 +1,9 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_hr_salary_rule","hr.salary.rule","model_hr_salary_rule","base.group_hr_user",1,1,1,1 +<<<<<<< TREE +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_hr_salary_rule","hr.salary.rule","model_hr_salary_rule","base.group_hr_user",1,1,1,1 +======= +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_hr_salary_rule","hr.salary.rule","model_hr_salary_rule","base.group_hr_user",1,1,1,1 +"access_hr_payroll_advice","hr.payroll.advice","model_hr_payroll_advice","base.group_hr_manager",1,1,1,1 +"access_hr_payroll_advice_line","hr.payroll.advice.line","model_hr_payroll_advice_line","base.group_hr_manager",1,1,1,1 +>>>>>>> MERGE-SOURCE
_______________________________________________ Mailing list: https://launchpad.net/~openerp-dev-gtk Post to : [email protected] Unsubscribe : https://launchpad.net/~openerp-dev-gtk More help : https://help.launchpad.net/ListHelp

