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.

119 lines
4.5 KiB

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2015-2016 Odoo S.A.
  3. # Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
  4. # Copyright 2017-2018 Rémy Taymans <remytaymans@gmail.com>
  5. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  6. from openerp import fields, models, http
  7. from openerp.http import request
  8. from openerp import tools
  9. from openerp.tools.translate import _
  10. from openerp.addons.website_portal_v10.controllers.main import WebsiteAccount
  11. class CooperatorWebsiteAccount(WebsiteAccount):
  12. def _prepare_portal_layout_values(self):
  13. values = super(CooperatorWebsiteAccount,
  14. self)._prepare_portal_layout_values()
  15. # We assume that commercial_partner_id always point to the
  16. # partner itself or to the linked partner. So there is no
  17. # need to check if the partner is a "contact" or not.
  18. coop = request.env.user.partner_id.commercial_partner_id
  19. coop_bank = request.env['res.partner.bank'].sudo().search(
  20. [('partner_id', 'in', [coop.id])],
  21. limit=1
  22. )
  23. values.update({
  24. 'coop': coop,
  25. 'coop_bank': coop_bank,
  26. })
  27. return values
  28. @http.route()
  29. def account(self):
  30. """ Add Release Capital Request to main account page """
  31. response = super(CooperatorWebsiteAccount, self).account()
  32. partner = request.env.user.partner_id
  33. invoice_mgr = request.env['account.invoice']
  34. capital_request_count = invoice_mgr.search_count([
  35. ('message_partner_ids', 'in',
  36. [partner.commercial_partner_id.id]),
  37. ('state', 'in', ['open', 'paid', 'cancelled']),
  38. # Get only the release capital request
  39. ('release_capital_request', '=', True),
  40. ])
  41. response.qcontext.update({
  42. 'capital_request_count': capital_request_count,
  43. })
  44. return response
  45. @http.route(
  46. ['/my/release_capital_request',
  47. '/my/release_capital_request/page/<int:page>'],
  48. type='http', auth="user", website=True)
  49. def portal_my_release_capital_request(self, page=1, date_begin=None,
  50. date_end=None, **kw):
  51. """Render a page with the list of release capital request.
  52. A release capital request is an invoice with a flag that tell
  53. if it's a capital request or not.
  54. """
  55. values = self._prepare_portal_layout_values()
  56. partner = request.env.user.partner_id
  57. invoice_mgr = request.env['account.invoice']
  58. domain = [
  59. ('message_partner_ids', 'in',
  60. [partner.commercial_partner_id.id]),
  61. ('state', 'in', ['open', 'paid', 'cancelled']),
  62. # Get only the release capital request
  63. ('release_capital_request', '=', True),
  64. ]
  65. archive_groups = self._get_archive_groups('account.invoice', domain)
  66. if date_begin and date_end:
  67. domain += [('create_date', '>=', date_begin),
  68. ('create_date', '<', date_end)]
  69. # count for pager
  70. capital_request_count = invoice_mgr.search_count(domain)
  71. # pager
  72. pager = request.website.pager(
  73. url="/my/release_capital_request",
  74. url_args={'date_begin': date_begin, 'date_end': date_end},
  75. total=capital_request_count,
  76. page=page,
  77. step=self._items_per_page
  78. )
  79. # content according to pager and archive selected
  80. invoices = invoice_mgr.search(
  81. domain, limit=self._items_per_page, offset=pager['offset'])
  82. values.update({
  83. 'date': date_begin,
  84. 'capital_requests': invoices,
  85. 'page_name': 'invoice',
  86. 'pager': pager,
  87. 'archive_groups': archive_groups,
  88. 'default_url': '/my/release_capital_request',
  89. })
  90. return request.website.render(
  91. "easy_my_coop_website_portal.portal_my_capital_releases",
  92. values
  93. )
  94. @http.route(['/my/cooperator_certificat/send'],
  95. type='http', auth="user", website=True)
  96. def send_cooperator_certificat(self, **kw):
  97. partner = request.env.user.partner_id
  98. certificat_email_template = request.env.ref(
  99. 'easy_my_coop.email_template_certificat_increase', False
  100. ).sudo()
  101. if certificat_email_template:
  102. certificat_email_template.send_mail(
  103. partner.commercial_partner_id.id
  104. )
  105. return request.redirect(kw['nexturl'])