From d2401de5efae38921edaeabb9ee69c24a477ba5a Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Fri, 21 Jan 2022 13:01:50 +0100
Subject: [PATCH] [add] report cotisation

---
 __init__.py                                   |  5 ++-
 __manifest__.py                               |  8 ++--
 models/scop_bordereau_cg_version.py           |  1 +
 report/__init__.py                            |  4 ++
 report/scop_contribution_report.py            | 44 +++++++++++++++++++
 .../report_scop_bordereau.xml                 |  0
 .../report_scop_bordereau_payments.xml        |  0
 .../report_scop_bordereau_refund.xml          |  0
 8 files changed, 57 insertions(+), 5 deletions(-)
 create mode 100755 report/__init__.py
 create mode 100644 report/scop_contribution_report.py
 rename {report => templates}/report_scop_bordereau.xml (100%)
 rename {report => templates}/report_scop_bordereau_payments.xml (100%)
 rename {report => templates}/report_scop_bordereau_refund.xml (100%)

diff --git a/__init__.py b/__init__.py
index 8871070..f88059b 100755
--- a/__init__.py
+++ b/__init__.py
@@ -1,6 +1,7 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
 from . import controllers
 from . import models
+from . import report
 from . import wizard
diff --git a/__manifest__.py b/__manifest__.py
index fb76d4a..54db846 100755
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -1,3 +1,5 @@
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 {
     "name": "CG SCOP - Cotisations CG",
     "summary": "CG SCOP - Cotisations CG Scop",
@@ -23,9 +25,9 @@
         "datas/queue_job_data.xml",
         "datas/ir_sequence_data.xml",
         # Reports
-        "report/report_scop_bordereau.xml",
-        "report/report_scop_bordereau_payments.xml",
-        "report/report_scop_bordereau_refund.xml",
+        "templates/report_scop_bordereau.xml",
+        "templates/report_scop_bordereau_payments.xml",
+        "templates/report_scop_bordereau_refund.xml",
         # Views
         "views/account_invoice.xml",
         "views/res_config_settings.xml",
diff --git a/models/scop_bordereau_cg_version.py b/models/scop_bordereau_cg_version.py
index 19b5372..ef5e321 100644
--- a/models/scop_bordereau_cg_version.py
+++ b/models/scop_bordereau_cg_version.py
@@ -1,5 +1,6 @@
 # © 2021 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
 from datetime import timedelta
 
 from odoo import fields, models, api
diff --git a/report/__init__.py b/report/__init__.py
new file mode 100755
index 0000000..7b5fa1c
--- /dev/null
+++ b/report/__init__.py
@@ -0,0 +1,4 @@
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from . import scop_contribution_report
diff --git a/report/scop_contribution_report.py b/report/scop_contribution_report.py
new file mode 100644
index 0000000..2fed4b4
--- /dev/null
+++ b/report/scop_contribution_report.py
@@ -0,0 +1,44 @@
+# © 2022 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import models
+
+
+class ScopContributionReport(models.Model):
+    _inherit = "scop.contribution.report"
+
+    def _select_invoice(self):
+        select_str = super(ScopContributionReport, self)._select_invoice()
+        select_str = """
+            SELECT
+                CAST(i.year AS VARCHAR),
+                i.type_contribution_id,
+                i.partner_id,
+                SUM(i.amount_total_signed) AS amount_called,
+                SUM(i.amount_total_signed - i.residual_company_signed) AS amount_paid,
+                SUM(i.residual_company_signed) AS amount_due,
+                (
+                    CASE WHEN max(refund.id) IS NOT NULL THEN true ELSE FALSE END OR
+                    CASE WHEN max(refund_b.id) IS NOT NULL THEN true ELSE FALSE END
+                ) AS is_loss
+        """
+        return select_str
+
+    def _from_invoice(self):
+        from_str = super(ScopContributionReport, self)._from_invoice()
+        from_str += """
+            LEFT JOIN
+                scop_bordereau b ON i.bordereau_id = b.id
+            LEFT JOIN
+                scop_bordereau refund_b ON b.id = refund_b.refund_id
+        """
+        return from_str
+
+    def _where_invoice(self):
+        where_str = super(ScopContributionReport, self)._where_invoice()
+        where_str += "AND (i.bordereau_id IS NULL OR b.is_regul = false OR b.is_regul IS NULL)"
+        return where_str
+
+    # ------------------------------------------------------
+    # Computed fields
+    # ------------------------------------------------------
diff --git a/report/report_scop_bordereau.xml b/templates/report_scop_bordereau.xml
similarity index 100%
rename from report/report_scop_bordereau.xml
rename to templates/report_scop_bordereau.xml
diff --git a/report/report_scop_bordereau_payments.xml b/templates/report_scop_bordereau_payments.xml
similarity index 100%
rename from report/report_scop_bordereau_payments.xml
rename to templates/report_scop_bordereau_payments.xml
diff --git a/report/report_scop_bordereau_refund.xml b/templates/report_scop_bordereau_refund.xml
similarity index 100%
rename from report/report_scop_bordereau_refund.xml
rename to templates/report_scop_bordereau_refund.xml
-- 
GitLab