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.

81 lines
2.8 KiB

  1. # -*- coding: utf-8 -*-
  2. # Author: Andrea andrea4ever Gallina
  3. # Author: Francesco OpenCode Apruzzese
  4. # Author: Ciro CiroBoxHub Urselli
  5. # Copyright 2016 Camptocamp SA
  6. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  7. from openerp import models, fields, api
  8. from openerp.exceptions import Warning as UserError
  9. from datetime import datetime
  10. class OpenInvoiceWizard(models.TransientModel):
  11. _name = 'open.invoice.wizard'
  12. company_id = fields.Many2one(
  13. 'res.company', required=True,
  14. default=lambda s: s.env.user.company_id)
  15. at_date = fields.Date(
  16. required=True,
  17. default=fields.Date.to_string(datetime.today()))
  18. partner_ids = fields.Many2many(
  19. 'res.partner', string='Filter partners')
  20. result_selection = fields.Selection([
  21. ('customer', 'Receivable Accounts'),
  22. ('supplier', 'Payable Accounts'),
  23. ('customer_supplier', 'Receivable and Payable Accounts')],
  24. "Partner's", required=True, default='customer')
  25. target_move = fields.Selection([
  26. ('posted', 'All Posted Entries'),
  27. ('all', 'All Entries')], 'Target Moves',
  28. required=True, default='all')
  29. @api.onchange('at_date')
  30. def onchange_atdate(self):
  31. self.until_date = self.at_date
  32. @api.onchange('until_date')
  33. def onchange_untildate(self):
  34. # ---- until_date must be always >= of at_date
  35. if self.until_date:
  36. if self.until_date < self.at_date:
  37. raise UserError(
  38. 'Until Date must be equal or greater than At Date')
  39. def _build_contexts(self, data):
  40. result = {}
  41. return result
  42. def _build_header(self):
  43. return {
  44. 'company': self.company_id.name,
  45. 'fiscal_year': '',
  46. 'at_date': self.at_date,
  47. 'account_filters': dict(
  48. self._columns['result_selection'].selection)[
  49. self.result_selection],
  50. 'target_moves': dict(
  51. self._columns['target_move'].selection)[self.target_move],
  52. }
  53. def _get_form_fields(self):
  54. return self.read(['company_id', 'at_date', 'partner_ids',
  55. 'result_selection', 'target_move',
  56. 'until_date'])[0]
  57. @api.multi
  58. def print_report(self):
  59. self.ensure_one()
  60. data = {}
  61. data['ids'] = self.env.context.get('active_ids', [])
  62. data['model'] = self.env.context.get('active_model', 'ir.ui.menu')
  63. data['form'] = self._get_form_fields()
  64. used_context = self._build_contexts(data)
  65. data['form']['used_context'] = dict(
  66. used_context, lang=self.env.context.get('lang', 'en_US'))
  67. data['header'] = self._build_header()
  68. return self.env['report'].get_action(
  69. self, 'account_financial_report_qweb.open_invoice_report_qweb',
  70. data=data)