# -*- 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))]) ### 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'}) return True if (reconciled) else False