Khushboo Bhatt(openerp) has proposed merging
lp:~openerp-dev/openerp-india/payroll-india-trunk-payment-advice-kbh into
lp:~openerp-dev/openerp-india/payroll-india-trunk.
Requested reviews:
Mustufa Rangwala (Open ERP) (mra-tinyerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-trunk-payment-advice-kbh/+merge/108909
Hello,
===l10n_in_hr_payroll===
Added objects and view of payment advice and advice lines.
Thank you,
KBH.
--
https://code.launchpad.net/~openerp-dev/openerp-india/payroll-india-trunk-payment-advice-kbh/+merge/108909
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-india/payroll-india-trunk.
=== modified file 'l10n_in_hr_payroll/__openerp__.py'
--- l10n_in_hr_payroll/__openerp__.py 2012-05-24 11:24:12 +0000
+++ l10n_in_hr_payroll/__openerp__.py 2012-06-06 10:15:31 +0000
@@ -46,6 +46,7 @@
'update_xml': [
'l10n_in_hr_payroll_view.xml',
'l10n_in_hr_payroll_data.xml',
+ 'l10n_in_hr_payroll_sequence.xml',
'data/hr.salary.rule.csv',
'l10n_in_hr_payroll_report.xml',
],
=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll.py'
--- l10n_in_hr_payroll/l10n_in_hr_payroll.py 2012-05-24 11:24:12 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll.py 2012-06-06 10:15:31 +0000
@@ -20,9 +20,13 @@
##############################################################################
import time
+from datetime import date
from datetime import datetime
+from datetime import timedelta
+from dateutil.relativedelta import relativedelta
+
+from tools.translate import _
from calendar import isleap
-from dateutil.relativedelta import relativedelta
from osv import fields, osv
import decimal_precision as dp
@@ -90,4 +94,106 @@
}
hr_employee()
+class payroll_advice(osv.osv):
+ '''
+ Bank Advice Note
+ '''
+
+ _name = 'hr.payroll.advice'
+ _description = 'Bank Advice Note'
+ _columns = {
+ 'name':fields.char('Name', size=2048, required=True, readonly=False),
+ 'note': fields.text('Description'),
+ 'date': fields.date('Date'),
+ 'state':fields.selection([
+ ('draft','Draft Sheet'),
+ ('confirm','Confirm Sheet'),
+ ('cancel','Reject'),
+ ],'State', select=True, readonly=True),
+ 'number':fields.char('Number', size=64, required=False, readonly=True),
+ 'line_ids':fields.one2many('hr.payroll.advice.line', 'advice_id', 'Employee Salary', required=False),
+ 'chaque_nos':fields.char('Chaque Nos', size=256, required=False, readonly=False),
+ 'company_id':fields.many2one('res.company', 'Company', required=False),
+ 'bank_id':fields.many2one('res.bank', 'Bank', required=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,
+ }
+
+ 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')
+ sequence_pool = self.pool.get('ir.sequence')
+ payslip_line_pool = self.pool.get('hr.payslip.line')
+
+ DATETIME_FORMAT = "%Y-%m-%d"
+
+ 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 %s') % (a_date))
+ for slip in payslip_pool.browse(cr, uid, slip_ids, context=context):
+ line_ids = payslip_line_pool.search(cr, uid, [ ('slip_id','in',slip_ids),('code','=',"NET")], context=context)
+ for line in slip.line_ids:
+ 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))
+ advice_line= {
+ 'advice_id':advice.id,
+ 'name':slip.employee_id.bank_account_id.acc_number,
+ 'employee_id':slip.employee_id.id,
+ 'bysal':line.total
+ }
+ id = 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):
+ self.write(cr, uid, ids, {'state':'confirm'}, context=context)
+ return True
+
+ def set_to_draft(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state':'draft'}, context=context)
+ return True
+
+ def cancel_sheet(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state':'cancel'}, context=context)
+ return True
+
+ 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)
+ 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', required=False),
+ 'name':fields.char('Bank Account No.', size=64, required=True, readonly=False),
+ 'employee_id':fields.many2one('hr.employee', 'Employee', required=True),
+ 'bysal': fields.float('By Salary', digits_compute=dp.get_precision('Payroll')),
+ }
+
+payroll_advice_line()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll_data.xml'
--- l10n_in_hr_payroll/l10n_in_hr_payroll_data.xml 2012-05-28 08:54:08 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll_data.xml 2012-06-06 10:15:31 +0000
@@ -134,7 +134,7 @@
<field name="condition_select">none</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result = (contract.wage + DA) * 15 * employee.number_of_year / worked_days.WORK100.number_of_days</field>
- <field name="sequence" eval="500"/>
+ <field name="sequence" eval="57"/>
<field name="note">Covered under the Payment of Gratuity Act, 1971:
(Last drawn monthly basic salary + dearness allowance)/26 x 15 days x
number of years of service (date of joining – date of retirement/leaving job)</field>
=== modified file 'l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml'
--- l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml 2012-05-15 08:41:29 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll_demo.xml 2012-06-06 10:15:31 +0000
@@ -7,7 +7,7 @@
<record id="hr_payroll_salary_structure_emp_ind" model="hr.payroll.structure">
<field name="code">IND</field>
<field name="name">Indian Employee</field>
- <field eval="[(6, 0, [ref('hr_salary_rule_medical'),ref('hr_salary_rule_lta'),ref('hr_salary_rule_telephone'), ref('hr_salary_rule_internet'),ref('hr_payroll_rule_child_edu'),ref('hr_salary_rule_gratuity')])]" name="rule_ids"/>
+ <field eval="[(6, 0, [ref('hr_salary_rule_medical'),ref('hr_salary_rule_lta'),ref('hr_salary_rule_telephone'), ref('hr_salary_rule_internet'),ref('hr_payroll_rule_child1'),ref('hr_salary_rule_gratuity')])]" name="rule_ids"/>
<field name="company_id" ref="base.main_company"/>
<field name="parent_id" ref="hr_payroll.structure_base"/>
</record>
=== 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-06 10:15:31 +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/</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-05-24 11:24:12 +0000
+++ l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml 2012-06-06 10:15:31 +0000
@@ -48,5 +48,77 @@
</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="number" select="1"/>
+ <field name="name" select="1"/>
+ <field name="date" select="1"/>
+ <field name="company_id" groups="base.group_multi_company" widget="selection"/>
+ </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" layout="manual">
+ <div class="oe_form_topbar">
+ <button name="compute_advice" string="Compute Advice" states="draft" type="object"/>
+ <button name="cancel_sheet" string="Cancel Sheet" states="draft" icon="gtk-cancel" type="object"/>
+ <button name="confirm_sheet" icon="gtk-apply" string="Confirm Sheet" states="draft" type="object"/>
+ <button name="set_to_draft" string="Set to Draft" icon="gtk-convert" states="cancel,confirm" type="object"/>
+ <div class="oe_right">
+ <field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft"/>
+ </div>
+ <div class="oe_clear"/>
+ </div>
+ <group col="6" colspan="4">
+ <field name="name" colspan="4" select="1"/>
+ <field name="number" select="1"/>
+ <field name="bank_id"/>
+ <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="Letter Content">
+ <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="Letter Details"/>
+ <field name="note" colspan="4" nolabel="1"/>
+ </page>
+ </notebook>
+ </form>
+ </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"/>
+ </record>
+ <menuitem
+ action="action_view_hr_bank_advice_tree"
+ id="hr_menu_payment_advice"
+ parent="hr_payroll.menu_hr_root_payroll"
+ />
+
</data>
</openerp>
_______________________________________________
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