[MERGE] l10n_in_hr_payroll: Add field on payment advice alled neft if it tick then...
authorMustufa Rangwala (OpenERP) <mra@tinyerp.com>
Mon, 16 Jul 2012 13:04:32 +0000 (18:34 +0530)
committerMustufa Rangwala (OpenERP) <mra@tinyerp.com>
Mon, 16 Jul 2012 13:04:32 +0000 (18:34 +0530)
bzr revid: mra@tinyerp.com-20120716130432-nhuf13z3prdmwt76

1  2 
addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
addons/l10n_in_hr_payroll/l10n_in_hr_payroll_view.xml
addons/l10n_in_hr_payroll/report/report_payroll_advice.rml

@@@ -120,6 -111,7 +119,7 @@@ class payroll_advice(osv.osv)
          '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()
  
                                  <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"/>
++                                <newline/>
+                                 <field name="neft"/>
                                  </group>
                                  <separator colspan="4" string="Letter Details"/>
                                  <field name="note" colspan="4" nolabel="1"/>
          </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">