+ [[ e1[0] in ["Basic","Gross"] and e1[0] ]]
+ [[ e1[0] not in ["Basic","Gross"] and e1[0] ]]
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[1]!='' and formatLang(e1[1])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[1]!='' and formatLang(e1[1])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[2]!='' and formatLang(e1[2])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[2]!='' and formatLang(e1[2])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[3]!='' and formatLang(e1[3])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[3]!='' and formatLang(e1[3])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[4]!='' and formatLang(e1[4])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[4]!='' and formatLang(e1[4])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[5]!='' and formatLang(e1[5])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[5]!='' and formatLang(e1[5])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[6]!='' and formatLang(e1[6])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[6]!='' and formatLang(e1[6])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[7]!='' and formatLang(e1[7])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[7]!='' and formatLang(e1[7])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[8]!='' and formatLang(e1[8])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[8]!='' and formatLang(e1[8])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[9]!='' and formatLang(e1[9])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[9]!='' and formatLang(e1[9])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[10]!='' and formatLang(e1[10])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[10]!='' and formatLang(e1[10])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[11]!='' and formatLang(e1[11])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[11]!='' and formatLang(e1[11])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e1[0] in ["Basic","Gross"] and e1[12]!='' and formatLang(e1[12])) or removeParentNode('font') ]]
+ [[ (e1[0] not in ["Basic","Gross"] and e1[12]!='' and formatLang(e1[12])) or removeParentNode('font') ]]
+
+
+ [[ e2[0] in ["Net"] and e2[0] ]]
+ [[ e2[0] not in ["Net"] and e2[0] ]]
+
+
+
+ [[ (e2[0] in ["Net"] and e2[1]!='' and formatLang(e2[1])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[1]!='' and formatLang(e2[1])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[2]!='' and formatLang(e2[2])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[2]!='' and formatLang(e2[2])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[3]!='' and formatLang(e2[3])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[3]!='' and formatLang(e2[3])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[4]!='' and formatLang(e2[4])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[4]!='' and formatLang(e2[4])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[5]!='' and formatLang(e2[5])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[5]!='' and formatLang(e2[5])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[6]!='' and formatLang(e2[6])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[6]!='' and formatLang(e2[6])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[7]!='' and formatLang(e2[7])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[7]!='' and formatLang(e2[7])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[8]!='' and formatLang(e2[8])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[8]!='' and formatLang(e2[8])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[9]!='' and formatLang(e2[9])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[9]!='' and formatLang(e2[9])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[10]!='' and formatLang(e2[10])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[10]!='' and formatLang(e2[10])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[11]!='' and formatLang(e2[11])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[11]!='' and formatLang(e2[11])) or removeParentNode('font') ]]
+
+
+
+
+ [[ (e2[0] in ["Net"] and e2[12]!='' and formatLang(e2[12])) or removeParentNode('font') ]]
+ [[ (e2[0] not in ["Net"] and e2[12]!='' and formatLang(e2[12])) or removeParentNode('font') ]]
+
+
+ Payment Advice from [[ o.name ]] A/C no. [[ o.company_id.bank_ids and o.company_id.bank_ids[0].acc_number ]] form period [[ get_month(o.date)['from_name'] ]] to [[ get_month(o.date)['to_name'] ]]
+
+ Total : [[ o.line_ids==[] and removeParentNode('para') ]]
+
+
+
+ [[ o.line_ids==[] and removeParentNode('para') ]][[ formatLang(get_bysal_total()) ]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]
+
+
+
+
+
+
+
+
+ [[ o.neft !=True and removeParentNode('blockTable') ]]
+
+
+
+
+
+
+
+
+
+
+
+
+ Total : [[ o.line_ids==[] and removeParentNode('para') ]]
+
+
+
+ [[ o.line_ids==[] and removeParentNode('para') ]][[ formatLang(get_bysal_total()) ]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Yours Sincerely
+
+
+
+
+
+
+
+
+
+ For [[ company.name ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Authorized Signature
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_in_hr_payroll/report/report_payslip_details.py b/addons/l10n_in_hr_payroll/report/report_payslip_details.py
new file mode 100644
index 00000000000..2732d5d09ae
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/report/report_payslip_details.py
@@ -0,0 +1,35 @@
+#-*- coding:utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2011 OpenERP SA (). 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 .
+#
+##############################################################################
+
+from report import report_sxw
+from hr_payroll import report
+
+class payslip_details_report_in(report.report_payslip_details.payslip_details_report):
+
+ def __init__(self, cr, uid, name, context):
+ super(payslip_details_report_in, self).__init__(cr, uid, name, context)
+ self.localcontext.update({
+ 'get_details_by_rule_category': self.get_details_by_rule_category,
+ })
+
+report_sxw.report_sxw('report.paylip.details.in', 'hr.payslip', 'l10n_in_hr_payroll/report/report_payslip_details.rml', parser=payslip_details_report_in)
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/l10n_in_hr_payroll/report/report_payslip_details.rml b/addons/l10n_in_hr_payroll/report/report_payslip_details.rml
new file mode 100644
index 00000000000..a7ab3db3185
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/report/report_payslip_details.rml
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[repeatIn(objects,'o')]]
+
+
+
+ Pay Slip Details
+
+
+
+
+ [[o.credit_note==False and removeParentNode('para')]]
+ Credit
+
+ Note
+
+ ([[o.name or removeParentNode('para')]])
+
+
+
+ Name
+
+
+ [[o.employee_id.name]]
+
+
+ Designation
+
+
+ [[ o.employee_id.job_id.name or '' ]]
+
+
+
+
+
+
+
+ Address
+
+
+
+ [[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]]
+
+
+ [[ h['code'] ]]
+ [[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font')]]
+
+
+
+ [[ '..'*h['level'] ]][[ h['rule_category'] ]][[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]]
+
+
+ [[ formatLang(h['total']) ]] [[o.company_id and o.company_id.currency_id.symbol or '']] [[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Authorized Signature
+
+
+
+
+
+
+
+
+
diff --git a/addons/l10n_in_hr_payroll/security/ir.model.access.csv b/addons/l10n_in_hr_payroll/security/ir.model.access.csv
new file mode 100644
index 00000000000..7ca0834449b
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/security/ir.model.access.csv
@@ -0,0 +1,5 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_hr_payroll_advice_user","hr.payroll.advice","model_hr_payroll_advice","base.group_hr_user",1,1,1,1
+"access_hr_payroll_advice_line_user","hr.payroll.advice.line","model_hr_payroll_advice_line","base.group_hr_user",1,1,1,1
+"access_hr_payroll_advice_report_user","payment.advice.report","model_payment_advice_report","base.group_hr_manager",1,1,1,1
+"access_hr_payroll_payslip_report_user","payslip.report","model_payslip_report","base.group_hr_manager",1,1,1,1
diff --git a/addons/l10n_in_hr_payroll/static/src/img/icon.png b/addons/l10n_in_hr_payroll/static/src/img/icon.png
new file mode 100644
index 00000000000..ddaf38f8b6d
Binary files /dev/null and b/addons/l10n_in_hr_payroll/static/src/img/icon.png differ
diff --git a/addons/l10n_in_hr_payroll/test/payment_advice.yml b/addons/l10n_in_hr_payroll/test/payment_advice.yml
new file mode 100644
index 00000000000..20b45830c5e
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/test/payment_advice.yml
@@ -0,0 +1,41 @@
+-
+ In order to test Payment Advice I create a new Payment Advice
+-
+ I create a new Payment Advice with NEFT Transaction Enable
+-
+ !record {model: hr.payroll.advice, id: payment_advice_1}:
+ name: 'NEFT Advice'
+ bank_id: base.res_bank_1
+ line_ids:
+ - employee_id: hr.employee_fp
+ name: '90125452552'
+ ifsc_code: 'abn45215145'
+ bysal: 25000.00
+ - employee_id: hr.employee_al
+ name: '00014521111232'
+ ifsc_code: 'sbi45452145'
+ bysal: 20000.00
+-
+ I check that the Payment Advice is in "Draft"
+-
+ !assert {model: hr.payroll.advice, id: payment_advice_1}:
+ - state == 'draft'
+-
+ Now I confirm Payment Advice
+-
+ !python {model: hr.payroll.advice}: |
+ self.confirm_sheet(cr, uid, [ref('payment_advice_1')])
+-
+ I check that the Payment Advice state is "Confirmed"
+-
+ !python {model: hr.payroll.advice}: |
+ advice = self.browse(cr, uid, ref("payment_advice_1"))
+ assert (advice.state == 'confirm')
+-
+ In order to test the PDF report defined on a Payment Advice, we will print a Print Advice Report when NEFT is checked
+-
+ !python {model: hr.payroll.advice}: |
+ import netsvc, tools, os
+ (data, format) = netsvc.LocalService('report.payroll.advice').create(cr, uid, [ref('l10n_in_hr_payroll.payment_advice_1')], {})
+ if tools.config['test_report_directory']:
+ file(os.path.join(tools.config['test_report_directory'], 'l10n_in_hr_payroll_summary report'+format), 'wb+').write(data)
\ No newline at end of file
diff --git a/addons/l10n_in_hr_payroll/test/payment_advice_batch.yml b/addons/l10n_in_hr_payroll/test/payment_advice_batch.yml
new file mode 100644
index 00000000000..d1a1436b50b
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/test/payment_advice_batch.yml
@@ -0,0 +1,61 @@
+-
+ In order to test Payment Advice Creation from Payslip Bacth I create New Payslip Batch
+-
+ I Create a bank record
+-
+ !record {model: res.partner.bank, id: res_partner_bank_0}:
+ acc_number: '3025632343043'
+ partner_id: base.res_partner_21
+ state: bank
+ bank: base.res_bank_1
+-
+ I create a new employee “Rahul”
+-
+ !record {model: hr.employee, id: hr_employee_rahul0}:
+ country_id: base.in
+ department_id: hr.dep_rd
+ name: Rahul
+ bank_account_id: res_partner_bank_0
+-
+ I want to generate a payslip from Payslip Batch.
+-
+ !record {model: hr.payslip.run, id: hr_payslip_run_forAdvice}:
+ name: Payslip Batch
+-
+ I create record for generating the Payslip for Payslip Batch.
+-
+ !record {model: hr.payslip.employees, id: hr_payslip_employees}:
+ employee_ids:
+ - hr_employee_rahul0
+-
+ I generate the payslip by clicking on Generate button wizard.
+-
+ !python {model: hr.payslip.employees}: |
+ self.compute_sheet(cr, uid, [ref('hr_payslip_employees')], context={'active_id': ref('hr_payslip_run_forAdvice')})
+-
+ I check that the Payslip Batch is in "Draft"
+-
+ !assert {model: hr.payslip.run, id: hr_payslip_run_forAdvice}:
+ - state == 'draft'
+-
+ Now I close Payslip Batch
+-
+ !python {model: hr.payslip.run}: |
+ self.close_payslip_run(cr, uid, [ref('hr_payslip_run_forAdvice')])
+-
+ I check that the Payslip Batch is "Close"
+-
+ !python {model: hr.payslip.run}: |
+ batch = self.browse(cr, uid, ref("hr_payslip_run_forAdvice"))
+ assert (batch.state == 'close')
+-
+ I create Advice from Payslip Batch using Create Advice button
+-
+ !python {model: hr.payslip.run}: |
+ self.create_advice(cr, uid, [ref('hr_payslip_run_forAdvice')])
+-
+ I check for Advice is created from Payslip Batch
+-
+ !python {model: hr.payroll.advice}: |
+ advice_ids = self.search(cr, uid, [('batch_id','=',ref('hr_payslip_run_forAdvice'))])
+ assert advice_ids,"Advice is not created from Payslip Batch."
\ No newline at end of file
diff --git a/addons/l10n_in_hr_payroll/wizard/__init__.py b/addons/l10n_in_hr_payroll/wizard/__init__.py
new file mode 100644
index 00000000000..36635aec3c2
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/wizard/__init__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+import hr_salary_employee_bymonth
+import hr_yearly_salary_detail
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth.py b/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth.py
new file mode 100644
index 00000000000..25cc615a1df
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth.py
@@ -0,0 +1,71 @@
+#-*- coding:utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2011 OpenERP SA (). 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 .
+#
+##############################################################################
+
+import time
+
+from osv import osv, fields
+
+class hr_salary_employee_bymonth(osv.osv_memory):
+
+ _name = 'hr.salary.employee.month'
+ _description = 'Hr Salary Employee By Month Report'
+ _columns = {
+ 'start_date': fields.date('Start Date', required=True),
+ 'end_date': fields.date('End Date', required=True),
+ 'employee_ids': fields.many2many('hr.employee', 'payroll_year_rel', 'payroll_year_id', 'employee_id', 'Employees', required=True),
+ 'category_id': fields.many2one('hr.salary.rule.category', 'Category', required=True),
+ }
+
+ def _get_default_category(self, cr, uid, context=None):
+ category_ids = self.pool.get('hr.salary.rule.category').search(cr, uid, [('code', '=', 'NET')], context=context)
+ return category_ids and category_ids[0] or False
+
+ _defaults = {
+ 'start_date': lambda *a: time.strftime('%Y-01-01'),
+ 'end_date': lambda *a: time.strftime('%Y-%m-%d'),
+ 'category_id': _get_default_category
+ }
+
+ def print_report(self, cr, uid, ids, context=None):
+ """
+ To get the date and print the report
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return: return report
+ """
+ if context is None:
+ context = {}
+ datas = {'ids': context.get('active_ids', [])}
+
+ res = self.read(cr, uid, ids, context=context)
+ res = res and res[0] or {}
+ datas.update({'form': res})
+ return {
+ 'type': 'ir.actions.report.xml',
+ 'report_name': 'salary.employee.bymonth',
+ 'datas': datas,
+ }
+
+hr_salary_employee_bymonth()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth_view.xml b/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth_view.xml
new file mode 100644
index 00000000000..e05519b08db
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/wizard/hr_salary_employee_bymonth_view.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ Hr monthly Employee Salary
+ hr.salary.employee.month
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Yearly Salary by Head
+ ir.actions.act_window
+ hr.salary.employee.month
+ form
+ form
+ new
+
+
+
+
+
+
diff --git a/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail.py b/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail.py
new file mode 100644
index 00000000000..16bfd63bdc9
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail.py
@@ -0,0 +1,66 @@
+#-*- coding:utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2011 OpenERP SA (). 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 .
+#
+##############################################################################
+
+import time
+
+from osv import fields, osv
+
+class yearly_salary_detail(osv.osv_memory):
+
+ _name ='yearly.salary.detail'
+ _description = 'Hr Salary Employee By Category Report'
+ _columns = {
+ 'employee_ids': fields.many2many('hr.employee', 'payroll_emp_rel', 'payroll_id', 'employee_id', 'Employees', required=True),
+ 'date_from': fields.date('Start Date', required=True),
+ 'date_to': fields.date('End Date', required=True),
+ }
+
+ _defaults = {
+ 'date_from': lambda *a: time.strftime('%Y-01-01'),
+ 'date_to': lambda *a: time.strftime('%Y-%m-%d'),
+
+ }
+
+ def print_report(self, cr, uid, ids, context=None):
+ """
+ To get the date and print the report
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return: return report
+ """
+ if context is None:
+ context = {}
+ datas = {'ids': context.get('active_ids', [])}
+
+ res = self.read(cr, uid, ids, context=context)
+ res = res and res[0] or {}
+ datas.update({'form': res})
+ return {
+ 'type': 'ir.actions.report.xml',
+ 'report_name': 'salary.detail.byyear',
+ 'datas': datas,
+ }
+
+yearly_salary_detail()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail_view.xml b/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail_view.xml
new file mode 100644
index 00000000000..ec70e8b41e0
--- /dev/null
+++ b/addons/l10n_in_hr_payroll/wizard/hr_yearly_salary_detail_view.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ Employee Yearly Salary
+ yearly.salary.detail
+ form
+
+