account_bank_statement.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api
  3. class AccountBankStatement(models.Model):
  4. _inherit = 'account.bank.statement'
  5. type_statement = fields.Selection([('normal', 'Normal'),('general', 'General')],'Tipo de Caja ', default="normal", help="Tipo de caja")
  6. @api.model
  7. def get_statement_point_of_sale(self, id):
  8. accountStatement = self._get_statement(id)
  9. decimal_precision = self.env['decimal.precision'].precision_get('Account')
  10. if (not accountStatement):
  11. return False;
  12. accountStatementLine = self._get_statement_line(accountStatement.id)
  13. statementPointOfSale = self._get_statement_point_of_sale(accountStatement)
  14. statementLine = []
  15. for line in statementPointOfSale:
  16. lineStatement = self.env['account.bank.statement.line'].search([('name', '=', line['name'])])
  17. if (not lineStatement):
  18. amount = line['amount']
  19. statementLine.append([0, False, {
  20. 'name': line['name'],
  21. 'ref' : 'Point of sale',
  22. 'amount': round(float(amount), decimal_precision),
  23. 'journal_id': accountStatement.journal_id.id,
  24. 'account_id': accountStatement.journal_id.internal_account_id.id,
  25. 'statement_id': accountStatement.id,
  26. 'date': line['date'],
  27. }])
  28. line = []
  29. if (statementLine):
  30. line = accountStatement.write({'line_ids': statementLine})
  31. return line
  32. '''
  33. Get Account Bank Statement
  34. '''
  35. def _get_statement(self, id):
  36. return self.env['account.bank.statement'].browse(id)
  37. '''
  38. Get Account Bank Statement Line
  39. '''
  40. def _get_statement_line(self, statementId):
  41. return self.env['account.bank.statement.line'].search([('statement_id', 'in', [statementId])])
  42. '''
  43. Get Account Bank Statement Point of Sale
  44. '''
  45. def _get_statement_point_of_sale(self, statement):
  46. statementPoint = self.env['account.bank.statement'].search([('date','=',statement.date),('journal_id.id', '=',statement.journal_id.id),('period_id.id', '=', statement.period_id.id), ('pos_session_id', '!=', False),('state', '=', 'confirm')], order='id')
  47. pointSatatement = []
  48. for statementP in statementPoint:
  49. amount = 0.0
  50. for line in statementP.line_ids:
  51. amount += line.amount
  52. pointSatatement.append({
  53. 'name': statementP.name,
  54. 'date': statementP.date,
  55. 'journalId': statementP.journal_id.id,
  56. 'periodId': statementP.period_id.id,
  57. 'userId': statementP.user_id.id,
  58. 'posSessionId': statementP.pos_session_id.id,
  59. 'posSessionName': statementP.pos_session_id.name,
  60. 'amount': amount
  61. })
  62. return pointSatatement