You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.6 KiB

  1. # -*- coding: utf-8 -*-
  2. # © 2016 Eficent Business and IT Consulting Services S.L.
  3. # © 2016 Serpent Consulting Services Pvt. Ltd.
  4. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  5. import time
  6. from openerp import api, models
  7. class SummaryReport(models.AbstractModel):
  8. _name = 'report.bank_statement_reconciliation_summary.summary_report'
  9. @api.model
  10. def _plus_outstanding_payments(self, journal_record):
  11. account_id = journal_record.default_credit_account_id and\
  12. journal_record.default_credit_account_id.clearing_account_id and\
  13. journal_record.default_credit_account_id.clearing_account_id.id
  14. account_move_line_records = self.env['account.move.line'].search([
  15. ('account_id', '=', account_id),
  16. ('reconcile_id', '=', False),
  17. ('account_id.reconcile', '=', True),
  18. ('credit', '>', 0.00)
  19. ], order='date')
  20. return account_move_line_records
  21. @api.model
  22. def _less_outstanding_receipts(self, journal_record):
  23. account_id = journal_record.default_credit_account_id and\
  24. journal_record.default_credit_account_id.clearing_account_id and\
  25. journal_record.default_credit_account_id.clearing_account_id.id
  26. account_move_line_records = self.env['account.move.line'].search([
  27. ('account_id', '=', account_id),
  28. ('reconcile_id', '=', False),
  29. ('account_id.reconcile', '=', True),
  30. ('debit', '>', 0.00)
  31. ], order='date')
  32. return account_move_line_records
  33. @api.model
  34. def _plus_unreconciled_statement_lines(self, statement):
  35. statement_lines = self.env['account.bank.statement.line'].browse()
  36. for line in statement.line_ids:
  37. if not line.journal_entry_id:
  38. statement_lines += line
  39. return statement_lines or False
  40. @api.multi
  41. def render_html(self, data=None):
  42. Report = self.env['report']
  43. report_name = 'bank_statement_reconciliation_summary.summary_report'
  44. report = Report._get_report_from_name(report_name)
  45. records = self.env['account.bank.statement'].browse(self.ids)
  46. docargs = {
  47. 'doc_ids': self.ids,
  48. 'doc_model': report.model,
  49. 'data': data,
  50. 'docs': records,
  51. 'time': time,
  52. 'plus_outstanding_payments': self._plus_outstanding_payments,
  53. 'less_outstanding_receipts': self._less_outstanding_receipts,
  54. 'plus_unreconciled_statement_lines':
  55. self._plus_unreconciled_statement_lines
  56. }
  57. return self.env['report'].render(report_name, docargs)