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.

47 lines
1.4 KiB

4 years ago
4 years ago
  1. # Copyright 2018 Rémy Taymans <remytaymans@gmail.com>
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
  3. from itertools import groupby
  4. from odoo.http import request
  5. from odoo.addons.portal.controllers.portal import CustomerPortal
  6. class PortalPosOrderAmount(CustomerPortal):
  7. def _prepare_portal_layout_values(self):
  8. values = super(
  9. PortalPosOrderAmount, self
  10. )._prepare_portal_layout_values()
  11. user = request.env.user
  12. owned_posorder = (
  13. request.env["pos.order"]
  14. .sudo()
  15. .search(
  16. [
  17. (
  18. "partner_id",
  19. "=",
  20. user.partner_id.commercial_partner_id.id,
  21. ),
  22. ("state", "!=", "cancel"),
  23. ]
  24. )
  25. )
  26. values["posorder_amount"] = sum(
  27. po.amount_total for po in owned_posorder
  28. )
  29. values["posorder_amount_by_year"] = [
  30. {
  31. "year": key,
  32. "amount": sum(element.amount_total for element in group),
  33. }
  34. for key, group in groupby(
  35. owned_posorder, key=lambda element: element.date_order.year
  36. )
  37. ]
  38. values["company_currency"] = (
  39. request.env["res.company"]._company_default_get().currency_id
  40. )
  41. return values