eiru_payslip_payments.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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', 'in', [journal.id]), ('date', '=', fields.Date.context_today(self))])
  28. ### account.bank.statement.line
  29. statement_line = self.env['account.bank.statement.line'].search([('ref', 'in', [payslip.number])])
  30. if statement_line:
  31. return statement_line.statement_id.name
  32. ### Estructur statement
  33. bank = {
  34. 'journal_id': journal.id,
  35. 'period_id': period.id,
  36. 'date': fields.Date.context_today(self),
  37. 'user_id': self.env.user.id,
  38. 'state': 'open' if journal.type == 'cash' else 'draft',
  39. }
  40. if bank_statement:
  41. if len(bank_statement) == 1:
  42. bank_statement.write(bank)
  43. else:
  44. bank_statement[len(bank_statement) -1].write(bank)
  45. else:
  46. bank_statement = bank_statement.create(bank)
  47. bank_statement_line = {
  48. 'statement_id': bank_statement.id,
  49. 'name': payslip.name,
  50. 'partner_id': payslip.employee_id.address_home_id.id,
  51. 'amount': (-1* payslip_line.amount) ,
  52. 'ref': payslip.number,
  53. 'note': values['journal_ref']
  54. }
  55. line_statement = self.env['account.bank.statement.line'].create(bank_statement_line)
  56. reconciled = line_statement.process_reconciliation(line_move)
  57. if reconciled:
  58. payslip.write({'state': 'paid'})
  59. else :
  60. payslip.write({'state': 'done'})
  61. return True if (reconciled) else False