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.

108 lines
4.4 KiB

5 years ago
  1. # Copyright 2017-2018 Coop IT Easy SCRLfs <remy@gcoopiteasy.be>
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  3. from odoo import http
  4. from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager
  5. from odoo.exceptions import AccessError, MissingError
  6. from odoo.http import request
  7. from werkzeug.exceptions import Forbidden, NotFound
  8. class PortalTaxShelter(CustomerPortal):
  9. def _prepare_portal_layout_values(self):
  10. values = super()._prepare_portal_layout_values()
  11. partner = request.env.user.partner_id
  12. tax_shelter_count = request.env["tax.shelter.certificate"].sudo().search_count(
  13. [("partner_id", "in", [partner.commercial_partner_id.id])]
  14. )
  15. values['tax_shelter_count'] = tax_shelter_count
  16. return values
  17. def _taxshelter_certificate_get_page_view_values(self, taxshelter_certificate, access_token, **kwargs):
  18. values = {
  19. 'page_name': 'taxshelter',
  20. 'taxshelter': taxshelter_certificate,
  21. }
  22. return self._get_page_view_values(taxshelter_certificate, access_token, values, 'my_taxshelter_certificates_history', False, **kwargs)
  23. @http.route(
  24. [
  25. "/my/tax_shelter_certificates",
  26. "/my/tax_shelter_certificates/page/<int:page>",
  27. ],
  28. type="http",
  29. auth="user",
  30. website=True,
  31. )
  32. def portal_my_tax_shelter_certificates(
  33. self, page=1, date_begin=None, date_end=None, **kw
  34. ):
  35. """Render a page that lits the tax shelter report:
  36. * Tax Shelter Certificates
  37. * Shares Certifcates
  38. """
  39. values = self._prepare_portal_layout_values()
  40. TaxShelterCertificate = request.env["tax.shelter.certificate"]
  41. partner = request.env.user.partner_id
  42. domain = [("partner_id", "in", [partner.commercial_partner_id.id])]
  43. if date_begin and date_end:
  44. domain += [
  45. ("create_date", ">=", date_begin),
  46. ("create_date", "<", date_end),
  47. ]
  48. # count for pager
  49. tax_shelter_count = TaxShelterCertificate.sudo().search_count(domain)
  50. # pager
  51. pager = portal_pager(
  52. url="/my/tax_shelter_certificates",
  53. url_args={"date_begin": date_begin, "date_end": date_end},
  54. total=tax_shelter_count,
  55. page=page,
  56. step=self._items_per_page,
  57. )
  58. # content according to pager and archive selected
  59. tax_shelters = TaxShelterCertificate.sudo().search(
  60. domain, limit=self._items_per_page, offset=pager["offset"]
  61. )
  62. tax_shelters = tax_shelters.sorted(
  63. key=lambda r: r.declaration_id.fiscal_year, reverse=True
  64. )
  65. request.session['my_taxshelter_certificates_history'] = tax_shelters.ids[:100]
  66. values.update(
  67. {
  68. "date": date_begin,
  69. "tax_shelters": tax_shelters,
  70. "page_name": "taxshelter",
  71. "pager": pager,
  72. "default_url": "/my/tax_shelter_certificates",
  73. }
  74. )
  75. return request.render(
  76. "easy_my_coop_website_taxshelter.portal_my_tax_shelter", values
  77. )
  78. @http.route(['/my/tax_shelter_certificates/<int:certificate_id>'], type='http', auth="public", website=True)
  79. def portal_taxshelter_certificate(self, certificate_id, access_token=None, report_type=None, download=False, query_string=None, **kw):
  80. partner = request.env.user.partner_id
  81. try:
  82. taxshelter_certificate_sudo = self._document_check_access('tax.shelter.certificate', certificate_id, access_token)
  83. if taxshelter_certificate_sudo.partner_id != partner:
  84. raise Forbidden()
  85. except (AccessError, MissingError):
  86. return request.redirect('/my')
  87. if report_type in ('html', 'pdf', 'text') and query_string in ('subscription', 'shares'):
  88. report_ref = "easy_my_coop_taxshelter_report.action_tax_shelter_%s_report" % (query_string)
  89. return self._show_report(
  90. model=taxshelter_certificate_sudo,
  91. report_type=report_type,
  92. report_ref=report_ref,
  93. download=download)
  94. values = self._taxshelter_certificate_get_page_view_values(taxshelter_certificate_sudo, access_token, **kw)
  95. return request.render("easy_my_coop_website_taxshelter.portal_taxshelter_page", values)