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.

80 lines
2.6 KiB

  1. # Copyright 2018 Forest and Biomass Romania
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo import api, fields, models
  4. from odoo.tools.safe_eval import safe_eval
  5. from odoo.tools import pycompat
  6. class VATReportWizard(models.TransientModel):
  7. _name = "vat.report.wizard"
  8. company_id = fields.Many2one(
  9. comodel_name='res.company',
  10. default=lambda self: self.env.user.company_id,
  11. string='Company'
  12. )
  13. date_range_id = fields.Many2one(
  14. comodel_name='date.range',
  15. string='Date range'
  16. )
  17. date_from = fields.Date('Start Date', required=True)
  18. date_to = fields.Date('End Date', required=True)
  19. based_on = fields.Selection([('taxtags', 'Tax Tags'),
  20. ('taxgroups', 'Tax Groups')],
  21. string='Based On',
  22. required=True,
  23. default='taxtags')
  24. tax_detail = fields.Boolean('Detail Taxes')
  25. @api.onchange('date_range_id')
  26. def onchange_date_range_id(self):
  27. """Handle date range change."""
  28. self.date_from = self.date_range_id.date_start
  29. self.date_to = self.date_range_id.date_end
  30. @api.multi
  31. def button_export_html(self):
  32. self.ensure_one()
  33. action = self.env.ref(
  34. 'account_financial_report.action_report_vat_report')
  35. vals = action.read()[0]
  36. context1 = vals.get('context', {})
  37. if isinstance(context1, pycompat.string_types):
  38. context1 = safe_eval(context1)
  39. model = self.env['report_vat_report']
  40. report = model.create(self._prepare_vat_report())
  41. report.compute_data_for_report()
  42. context1['active_id'] = report.id
  43. context1['active_ids'] = report.ids
  44. vals['context'] = context1
  45. return vals
  46. @api.multi
  47. def button_export_pdf(self):
  48. self.ensure_one()
  49. report_type = 'qweb-pdf'
  50. return self._export(report_type)
  51. @api.multi
  52. def button_export_xlsx(self):
  53. self.ensure_one()
  54. report_type = 'xlsx'
  55. return self._export(report_type)
  56. def _prepare_vat_report(self):
  57. self.ensure_one()
  58. return {
  59. 'company_id': self.company_id.id,
  60. 'date_from': self.date_from,
  61. 'date_to': self.date_to,
  62. 'based_on': self.based_on,
  63. 'tax_detail': self.tax_detail,
  64. }
  65. def _export(self, report_type):
  66. """Default export is PDF."""
  67. model = self.env['report_vat_report']
  68. report = model.create(self._prepare_vat_report())
  69. report.compute_data_for_report()
  70. return report.print_report(report_type)