diff --git a/__init__.py b/__init__.py index 48e1758c82ff2acfdf8618bcbf8c4c296a4ed7f9..08831fcf07b8aa9f0a7b2c857e04996a2bc24138 100644 --- a/__init__.py +++ b/__init__.py @@ -2,4 +2,4 @@ # © 2020 Confédération Générale des Scop (<https://www.les-scop.coop>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import models +from . import models, report diff --git a/__manifest__.py b/__manifest__.py index 6d85925db5db09de860cb12edba02dcb06cee103..e5dd73d422763606367cc74b2ae53c129ca2b1c5 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -8,6 +8,7 @@ "license": "AGPL-3", "depends": [ "cgscop_partner", + "cgscop_cotisation", ], "data": [ # security diff --git a/report/__init__.py b/report/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e6800d8ad16f18ee0a3bbe0d8b256a9dd17964b9 --- /dev/null +++ b/report/__init__.py @@ -0,0 +1 @@ +from . import scop_contribution_report diff --git a/report/scop_contribution_report.py b/report/scop_contribution_report.py new file mode 100644 index 0000000000000000000000000000000000000000..5b5c2c6cd0a56b68479d80ab44d2421e87009cc1 --- /dev/null +++ b/report/scop_contribution_report.py @@ -0,0 +1,88 @@ +# © 2022 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging + +from psycopg2.extensions import AsIs + +from odoo import api, fields, models, tools + +_logger = logging.getLogger(__name__) + + +class ScopContributionReport(models.Model): + _inherit = "scop.contribution.report" + + # ------------------------------------------------------ + # Sub Query PACA + # ------------------------------------------------------ + def _select_paca(self): + + type_coti_ur = self.env.ref("cgscop_partner.riga_14399").id + + select_str = """ + SELECT + 'odoo' as source, + CAST(i.year AS VARCHAR), + %d AS type_contribution_id, + i.partner_id, + SUM(i.amount_contribution) AS amount_called, + SUM(i.amount_paid) AS amount_paid, + SUM(i.amount_contribution - i.amount_paid) AS amount_due + """ % ( + type_coti_ur, + ) + return select_str + + def _from_paca(self): + from_str = """ + FROM + scop_cotisation_paca i + """ + return from_str + + def _where_paca(self): + where_str = """ + WHERE + i.partner_id IS NOT NULL + """ + return where_str + + def _groupby_paca(self): + groupby_str = """ + GROUP BY + i.year, + i.partner_id + """ + return groupby_str + + def _query_paca(self): + query = "(%s %s %s %s)" % ( + self._select_paca(), + self._from_paca(), + self._where_paca(), + self._groupby_paca(), + ) + return query + + def _subquerypaca(self): + return self._query_paca() + + # ------------------------------------------------------ + # Sub Query + # ------------------------------------------------------ + def _subquery(self): + sub_query = super(ScopContributionReport, self)._subquery() + return f"{sub_query} UNION ALL {self._subquerypaca()}" + + # ------------------------------------------------------ + # Main Query + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Computed fields + # ------------------------------------------------------ + + # ------------------------------------------------------ + # Business functions + # ------------------------------------------------------