'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('Cheque Numbers', size=256),
- 'neft': fields.boolean('NEFT Transaction', help="Check NEFT For Online Transfer"),
++ 'neft': fields.boolean('NEFT Transaction', help="Check this box if your company use online transfer for salary"),
'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'bank_id':fields.many2one('res.bank', 'Bank', readonly=True, states={'draft': [('readonly', False)]}, help="Select the Bank from which the salary is going to be paid"),
}
res.update({'bank': company.partner_id.bank_ids[0].bank.name})
return {
'value':res
- }
-
+ }
payroll_advice()
+class hr_payslip_run(osv.osv):
+
+ _inherit = 'hr.payslip.run'
+ _description = 'Payslip Batches'
+
+ def create_advice(self, cr, uid, ids, context=None):
+ wf_service = netsvc.LocalService("workflow")
+ payslip_pool = self.pool.get('hr.payslip')
+ payslip_line_pool = self.pool.get('hr.payslip.line')
+ advice_pool = self.pool.get('hr.payroll.advice')
+ advice_line_pool = self.pool.get('hr.payroll.advice.line')
+ users = self.pool.get('res.users').browse(cr, uid, [uid], context=context)
+ for run in self.browse(cr, uid, ids, context=context):
+ advice_data = {
+ 'company_id': users[0].company_id.id,
+ 'name': run.name,
+ 'date': run.date_end,
+ 'bank_id': users[0].company_id.bank_ids and users[0].company_id.bank_ids[0].id or False
+ }
+ advice_id = advice_pool.create(cr, uid, advice_data, context=context)
+ slip_ids = []
+ for slip_id in run.slip_ids:
+ wf_service.trg_validate(uid, 'hr.payslip', slip_id.id, 'hr_verify_sheet', cr)
+ wf_service.trg_validate(uid, 'hr.payslip', slip_id.id, 'process_sheet', cr)
+ slip_ids.append(slip_id.id)
+ for slip in payslip_pool.browse(cr, uid, slip_ids, context=context):
+ if not slip.employee_id.bank_account_id and not slip.employee_id.bank_account_id.acc_number:
+ 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)
+ return True
+
+hr_payslip_run()
+
class payroll_advice_line(osv.osv):
'''
Bank Advice Lines
- '''
+ '''
+ def onchange_employee_id(self, cr, uid, ids, employee_id=False, context=None):
+ res = {}
++ hr_obj = self.pool.get('hr.employee')
+ if not employee_id:
- res ['value'] = {}
- hr_obj = self.pool.get('hr.employee').browse(cr, uid, [employee_id], context=context)[0]
- acc_number = hr_obj.bank_account_id.acc_number
- ifsc_code_number = hr_obj.bank_account_id.bank_bic
- res.update({'name': acc_number ,'ifsc_code': ifsc_code_number})
++ return {'value': res}
++ employee = hr_obj.browse(cr, uid, [employee_id], context=context)[0]
++ res.update({'name': employee.bank_account_id.acc_number ,'ifsc_code': employee.bank_account_id.bank_bic})
+ return {'value': res}
+
_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),
- 'ifsc_code': fields.char('IFSC Code', size=16),
++ 'ifsc_code': fields.char('IFSC Code', size=32),
'employee_id': fields.many2one('hr.employee', 'Employee', required=True),
'bysal': fields.float('By Salary', digits_compute=dp.get_precision('Payroll')),
+ 'debit_credit': fields.char('C/D', size=8, required=False),
'company_id': fields.related('advice_id', 'company_id', type='many2one', required=False, relation='res.company', string='Company', store=True),
}
+ _defaults = {
+ 'debit_credit': 'C',
+ }
+
payroll_advice_line()
</tr>
</blockTable>
</section>
- <blockTable colWidths="62.0,189.0,165.0,124.0" style="Table6">
+ <blockTable colWidths="40.0,123.0,107.0,107.0,81.0,81.0" style="Table4">[[ o.neft != True and removeParentNode('blockTable') ]]
+ <tr>
+ <td>
+ <para style="P1">SI. No.</para>
+ </td>
+ <td>
+ <para style="P1">Name of the Employe</para>
+ </td>
+ <td>
+ <para style="P3">Bank Account No.</para>
+ </td>
+ <td>
- <para style="P3">IFSC Code </para>
++ <para style="P3">IFSC Code</para>
+ </td>
+ <td>
+ <para style="P3">By Salary</para>
+ </td>
+ <td>
+ <para style="P3">C/D</para>
+ </td>
+ </tr>
+ </blockTable>
+ <section>
+ <para style="terp_default_8">[[ repeatIn(get_detail(o.line_ids),'line') ]]</para>
+ <blockTable colWidths="40.0,123.0,107.0,107.0,81.0,81.0" style="Table5">[[ o.neft !=True and removeParentNode('blockTable') ]]
+ <tr>
+ <td>
+ <para style="P11" leftIndent="15" bulletIndent="0">
+ <bullet><seq id="L1"/>.</bullet>
+ <font color="white"> </font>
+ </para>
+ </td>
+ <td>
+ <para style="P8">[[ line['name'] ]]</para>
+ </td>
+ <td>
+ <para style="P5">[[ line['acc_no'] ]]</para>
+ </td>
+ <td>
+ <para style="P5">[[ line['ifsc_code'] ]]</para>
+ </td>
+ <td>
+ <para style="P8">[[formatLang(line['bysal'])]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]</para>
+ </td>
+ <td>
+ <para style="P5">[[ line['debit_credit'] ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ </section>
+ <blockTable colWidths="58.0,251.0,67.0,94.0,70.0" style="Table6">
<tr>
<td>
<para style="terp_tblheader_Details">