eiru_payslip_payments.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # -*- coding: utf-8 -*-
  2. from openerp import api, fields, models
  3. from openerp.exceptions import except_orm
  4. class HrPayslip(models.Model):
  5. _inherit = 'hr.payslip'
  6. @api.model
  7. def create_from_prayslip(self, values):
  8. ### period Actual
  9. period = self.env['account.period'].search([('date_start', '<=', fields.Date.context_today(self) ),('date_stop', '>=', fields.Date.context_today(self))])
  10. ### Diario & Moneda
  11. journal = self.env['account.journal'].browse(int(values['journal_id']))
  12. ### payslip
  13. payslip = self.env['hr.payslip'].browse([(values['id'])])
  14. ### payslip line
  15. payslip_line = self.env['hr.payslip.line'].search([('slip_id', '=', payslip.id), ('code','=', 'NET')])
  16. # Move lines
  17. 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)])
  18. line_move = []
  19. for line in moveline:
  20. line_move.append({
  21. 'name': ":/ "+str(line.name),
  22. 'debit': line.credit if line.credit > 0 else 0.0 ,
  23. 'credit': line.debit if line.debit > 0 else 0.0 ,
  24. 'counterpart_move_line_id': line.id,
  25. })
  26. ### Consultar Caja Abierta, Método de Pagos, Fecha de Hoy
  27. bank_statement = self.env['account.bank.statement'].search([('journal_id', '=', [journal.id]), ('date', '=', fields.Date.context_today(self))])
  28. ### Estructur statement
  29. bank = {
  30. 'journal_id': journal.id,
  31. 'period_id': period.id,
  32. 'date': fields.Date.context_today(self),
  33. 'user_id': self.env.user.id,
  34. 'state': 'open' if journal.type == 'cash' else 'draft',
  35. }
  36. if bank_statement:
  37. if len(bank_statement) == 1:
  38. bank_statement.write(bank)
  39. else:
  40. bank_statement[len(bank_statement) -1].write(bank)
  41. else:
  42. bank_statement = bank_statement.create(bank)
  43. bank_statement_line = {
  44. 'statement_id': bank_statement.id,
  45. 'name': payslip.name,
  46. 'partner_id': payslip.employee_id.address_home_id.id,
  47. 'amount': (-1* payslip_line.amount) ,
  48. 'ref': payslip.number,
  49. 'note': values['journal_ref']
  50. }
  51. line_statement = self.env['account.bank.statement.line'].create(bank_statement_line)
  52. reconciled = line_statement.process_reconciliation(line_move)
  53. if reconciled:
  54. payslip.write({'state': 'paid'})
  55. return True if (reconciled) else False