|
| 1 | +from odoo import http |
| 2 | +from odoo.http import request |
| 3 | + |
| 4 | +from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager |
| 5 | + |
| 6 | + |
| 7 | +class RestrictedPortalAccount(CustomerPortal): |
| 8 | + def _prepare_home_portal_values(self, counters): |
| 9 | + values = super()._prepare_home_portal_values(counters) |
| 10 | + if "commission_count" in counters: |
| 11 | + commission_count = ( |
| 12 | + request.env["account.invoice.line.agent"].search_count([]) |
| 13 | + if request.env["account.invoice.line.agent"].check_access_rights( |
| 14 | + "read", raise_exception=False |
| 15 | + ) |
| 16 | + else 0 |
| 17 | + ) |
| 18 | + values["commission_count"] = commission_count |
| 19 | + return values |
| 20 | + |
| 21 | + @http.route( |
| 22 | + ["/my/invoices", "/my/invoices/page/<int:page>"], |
| 23 | + type="http", |
| 24 | + auth="user", |
| 25 | + website=True, |
| 26 | + ) |
| 27 | + def portal_my_invoices( |
| 28 | + self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw |
| 29 | + ): |
| 30 | + values = self._prepare_my_invoices_values( |
| 31 | + page, date_begin, date_end, sortby, filterby |
| 32 | + ) |
| 33 | + |
| 34 | + # pager |
| 35 | + pager = portal_pager(**values["pager"]) |
| 36 | + |
| 37 | + # content according to pager and archive selected |
| 38 | + invoices = values["invoices"](pager["offset"]) |
| 39 | + request.session["my_invoices_history"] = invoices.ids[:100] |
| 40 | + |
| 41 | + values.update( |
| 42 | + { |
| 43 | + "invoices": invoices, |
| 44 | + "pager": pager, |
| 45 | + } |
| 46 | + ) |
| 47 | + |
| 48 | + return request.render( |
| 49 | + "account_portal_restriction.portal_my_invoices_restricted", values |
| 50 | + ) |
| 51 | + |
| 52 | + @http.route(["/my/commissions"], type="http", auth="user", website=True) |
| 53 | + def portal_my_commissions(self): |
| 54 | + settled_commission = request.env["account.invoice.line.agent"].search_read( |
| 55 | + [("settled", "=", True)], ["amount"] |
| 56 | + ) |
| 57 | + unsettled_commission = request.env["account.invoice.line.agent"].search_read( |
| 58 | + [("settled", "=", False)], ["amount"] |
| 59 | + ) |
| 60 | + settled_commission_ids = [x.get("id") for x in settled_commission] |
| 61 | + invoiced_settlement = request.env["commission.settlement.line"].search_read( |
| 62 | + [ |
| 63 | + ("settlement_id.state", "=", "invoiced"), |
| 64 | + ("invoice_agent_line_id", "in", settled_commission_ids), |
| 65 | + ], |
| 66 | + ["settled_amount"], |
| 67 | + ) |
| 68 | + paid_settlement = request.env["commission.settlement.line"].search_read( |
| 69 | + [ |
| 70 | + ("settlement_id.invoice_id.payment_state", "=", "paid"), |
| 71 | + ("invoice_agent_line_id", "in", settled_commission_ids), |
| 72 | + ], |
| 73 | + ["settled_amount"], |
| 74 | + ) |
| 75 | + |
| 76 | + values = { |
| 77 | + "settled_commissions": sum([x.get("amount") for x in settled_commission]), |
| 78 | + "unsettled_commissions": sum( |
| 79 | + [x.get("amount") for x in unsettled_commission] |
| 80 | + ), |
| 81 | + "invoiced_settlement": sum( |
| 82 | + [x.get("settled_amount") for x in invoiced_settlement] |
| 83 | + ), |
| 84 | + "paid_settlement": sum([x.get("settled_amount") for x in paid_settlement]), |
| 85 | + "currency_id": request.env.company.currency_id, |
| 86 | + } |
| 87 | + return request.render( |
| 88 | + "account_portal_restriction.portal_my_commissions", values |
| 89 | + ) |
0 commit comments