1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- coding: utf-8 -*-
- from openerp import api, fields, models
- from openerp.exceptions import except_orm
- class HrPayslip(models.Model):
- _inherit = 'hr.payslip'
- @api.model
- def create_from_prayslip(self, values):
- ### period Actual
- period = self.env['account.period'].search([('date_start', '<=', fields.Date.context_today(self) ),('date_stop', '>=', fields.Date.context_today(self))])
- ### Diario & Moneda
- journal = self.env['account.journal'].browse(int(values['journal_id']))
- ### payslip
- payslip = self.env['hr.payslip'].browse([(values['id'])])
- ### payslip line
- payslip_line = self.env['hr.payslip.line'].search([('slip_id', '=', payslip.id), ('code','=', 'NET')])
- # Move lines
- moveline = self.env['account.move.line'].search([('move_id', 'in', [payslip.move_id.id]),('partner_id', 'in', [payslip.employee_id.address_home_id.id]), ('account_id', '=', 75)])
- line_move = []
- for line in moveline:
- line_move.append({
- 'name': ":/ "+str(line.name),
- 'debit': line.credit if line.credit > 0 else 0.0 ,
- 'credit': line.debit if line.debit > 0 else 0.0 ,
- 'counterpart_move_line_id': line.id,
- })
- ### Consultar Caja Abierta, Método de Pagos, Fecha de Hoy
- bank_statement = self.env['account.bank.statement'].search([('journal_id', '=', [journal.id]), ('date', '=', fields.Date.context_today(self))])
- ### account.bank.statement.line
- statement_line = self.env['account.bank.statement.line'].search([('ref', 'in', [payslip.number])])
- if statement_line:
- return statement_line.statement_id.name
- ### Estructur statement
- bank = {
- 'journal_id': journal.id,
- 'period_id': period.id,
- 'date': fields.Date.context_today(self),
- 'user_id': self.env.user.id,
- 'state': 'open' if journal.type == 'cash' else 'draft',
- }
- if bank_statement:
- if len(bank_statement) == 1:
- bank_statement.write(bank)
- else:
- bank_statement[len(bank_statement) -1].write(bank)
- else:
- bank_statement = bank_statement.create(bank)
- bank_statement_line = {
- 'statement_id': bank_statement.id,
- 'name': payslip.name,
- 'partner_id': payslip.employee_id.address_home_id.id,
- 'amount': (-1* payslip_line.amount) ,
- 'ref': payslip.number,
- 'note': values['journal_ref']
- }
- line_statement = self.env['account.bank.statement.line'].create(bank_statement_line)
- reconciled = line_statement.process_reconciliation(line_move)
- if reconciled:
- payslip.write({'state': 'paid'})
- else :
- payslip.write({'state': 'done'})
- return True if (reconciled) else False
|