From f609dacd1fac13b79e78b182f4ccfc077faf2c9f Mon Sep 17 00:00:00 2001
From: benjamin <benjamin@le-filament.com>
Date: Wed, 23 Aug 2023 17:32:15 +0200
Subject: [PATCH] [update] state report template and function

---
 .pre-commit-config.yaml                  | 35 +++++----
 models/scop_instance.py                  | 34 ++-------
 models/scop_instance_partner.py          |  4 +-
 report/report_scop_instance_adhesion.xml | 93 ++++++++++++++++++------
 4 files changed, 97 insertions(+), 69 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 732d0c4..4acca68 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -6,6 +6,8 @@ exclude: |
   ^setup/|/static/description/index\.html$|
   # We don't want to mess with tool-generated files
   .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|
+  # Maybe reactivate this when all README files include prettier ignore tags?
+  ^README\.md$|
   # Library files can have extraneous formatting (even minimized)
   /static/(src/)?lib/|
   # Repos using Sphinx to generate docs don't need prettying
@@ -25,8 +27,13 @@ repos:
         entry: found forbidden files; remove them
         language: fail
         files: "\\.rej$"
+      - id: en-po-files
+        name: en.po files cannot exist
+        entry: found a en.po file
+        language: fail
+        files: '[a-zA-Z0-9_]*/i18n/en\.po$'
   - repo: https://github.com/oca/maintainer-tools
-    rev: 7d8a9f9ad73db0976fb03cbee43d953bc29b89e9
+    rev: ab1d7f6
     hooks:
       # update the NOT INSTALLABLE ADDONS section above
       - id: oca-update-pre-commit-excluded-addons
@@ -48,7 +55,7 @@ repos:
     hooks:
       - id: black
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: v2.6.2
+    rev: v2.1.2
     hooks:
       - id: prettier
         name: prettier (with plugin-xml)
@@ -59,7 +66,7 @@ repos:
           - --plugin=@prettier/plugin-xml
         files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
   - repo: https://github.com/pre-commit/mirrors-eslint
-    rev: v8.15.0
+    rev: v7.8.1
     hooks:
       - id: eslint
         verbose: true
@@ -67,7 +74,7 @@ repos:
           - --color
           - --fix
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.2.0
+    rev: v3.2.0
     hooks:
       - id: trailing-whitespace
         # exclude autogenerated files
@@ -89,37 +96,33 @@ repos:
       - id: mixed-line-ending
         args: ["--fix=lf"]
   - repo: https://github.com/asottile/pyupgrade
-    rev: v2.32.1
+    rev: v2.7.2
     hooks:
       - id: pyupgrade
         args: ["--keep-percent-format"]
   - repo: https://github.com/PyCQA/isort
-    rev: 5.10.1
+    rev: 5.12.0
     hooks:
       - id: isort
         name: isort except __init__.py
         args:
           - --settings=.
         exclude: /__init__\.py$
-  - repo: https://gitlab.com/PyCQA/flake8
-    rev: 3.9.2
+  - repo: https://github.com/PyCQA/flake8
+    rev: 3.8.3
     hooks:
       - id: flake8
         name: flake8
         additional_dependencies: ["flake8-bugbear==20.1.4"]
-  - repo: https://github.com/PyCQA/pylint
-    rev: v2.11.1
+  - repo: https://github.com/OCA/pylint-odoo
+    rev: 7.0.2
     hooks:
-      - id: pylint
+      - id: pylint_odoo
         name: pylint with optional checks
         args:
           - --rcfile=.pylintrc
           - --exit-zero
         verbose: true
-        additional_dependencies: &pylint_deps
-          - pylint-odoo==5.0.5
-      - id: pylint
-        name: pylint with mandatory checks
+      - id: pylint_odoo
         args:
           - --rcfile=.pylintrc-mandatory
-        additional_dependencies: *pylint_deps
diff --git a/models/scop_instance.py b/models/scop_instance.py
index 6e50fab..8ad0920 100644
--- a/models/scop_instance.py
+++ b/models/scop_instance.py
@@ -76,30 +76,12 @@ class ScopInstance(models.Model):
         - datas_stats_ur : list of dict per ur
         - datas_stats_global : dict of stats
         """
-        partners = self._get_partners()
-
-        # We use LM instead of res_partner to get more info ...
-        # ... fields of res_partner are on LM (delegate = true)
-        lm_ids = list()
-        # TODO: remove LM
-        for partner in partners:
-            lm_partner = partner.get_lm_adhesion()
-            lm_ids.append(lm_partner.id)
-
-        partners_lm = self.env["scop.liste.ministere"].browse(lm_ids)
+        partner_ids = self._get_partners()
 
-        ur_global = partners_lm.read_group(
-            domain=[("id", "in", partners_lm.ids)],
-            fields=["ur_id"],
-            groupby=["ur_id", "eff_tt", "eff_sal_assoc"],
-            orderby="ur_id",
-            lazy=True,
-        )
-        datas_stats_global = {
-            "ur_global": ur_global,
-            "partners": partners_lm,
+        return {
+            "ur_ids": partner_ids.mapped("ur_id").sorted("id"),
+            "partner_ids": partner_ids,
         }
-        return datas_stats_global
 
     def _get_partners(self):
         """
@@ -279,9 +261,7 @@ class ScopInstance(models.Model):
                         ],
                     )
                     if membership_period:
-                        membership_period.update(
-                            {"start": r.statistic_membership_date}
-                        )
+                        membership_period.update({"start": r.statistic_membership_date})
                     # log success
                     validated_partners.append(partner.id)
                     r.is_success = True
@@ -348,6 +328,4 @@ class ScopInstance(models.Model):
             membership_period_ids = partner.partner_id.membership_period_ids.filtered(
                 lambda p: p.start == self.date.date() and not p.end
             )
-            membership_period_ids.update(
-                {"start": self.date_membership}
-            )
+            membership_period_ids.update({"start": self.date_membership})
diff --git a/models/scop_instance_partner.py b/models/scop_instance_partner.py
index 4efcbb0..142dfd2 100644
--- a/models/scop_instance_partner.py
+++ b/models/scop_instance_partner.py
@@ -89,7 +89,9 @@ class ScopInstancePartner(models.Model):
                     lambda s: s.type_entry == "membership"
                 ).sorted(key="effective_date", reverse=True)
                 staff_number = staff_line[0].staff_count if staff_line else 0
-                r.amount_adhesion = r.partner_id.get_theorical_amount_adhesion(staff_number)
+                r.amount_adhesion = r.partner_id.get_theorical_amount_adhesion(
+                    staff_number
+                )
             else:
                 r.amount_adhesion = 0
 
diff --git a/report/report_scop_instance_adhesion.xml b/report/report_scop_instance_adhesion.xml
index be8aca2..11087a5 100644
--- a/report/report_scop_instance_adhesion.xml
+++ b/report/report_scop_instance_adhesion.xml
@@ -8,8 +8,8 @@
             <t t-call="web.external_layout">
                 <t t-set="o" t-value="o.with_context(lang='fr')" />
                 <t t-set="datas" t-value="o.get_report_datas()" />
-                <t t-set="partners" t-value="datas.get('partners')" />
-                <t t-set="ur_ids" t-value="partners.mapped('ur_id').sorted('id')" />
+                <t t-set="partners" t-value="datas.get('partner_ids')" />
+                <t t-set="ur_ids" t-value="datas.get('ur_ids')" />
 
                 <div class="page">
                     <div class="instance-layout">
@@ -34,6 +34,9 @@
                                 <h3 class="mb32">
                                     Global par Union Régionale
                                 </h3>
+                                <t t-esc="datas" />
+                                <t t-esc="ur_ids" />
+                                <t t-esc="partners" />
                                 <div
                                     class="row"
                                     style="font-weight: 700; font-size: 16px;"
@@ -44,6 +47,8 @@
                                     <div class="col-2 text-center">Associés</div>
                                 </div>
                                 <hr />
+                                <t t-set="total_staff_count" t-value="0" />
+                                <t t-set="total_shareholder_count" t-value="0" />
                                 <t t-foreach="ur_ids" t-as="ur">
                                     <div style="page-break-inside: avoid;">
                                         <div
@@ -56,12 +61,30 @@
                                             <div class="col-3 text-center"><t
                                                     t-esc="len(partners.filtered(lambda p: p.ur_id.id == ur.id))"
                                                 /></div>
-                                                <div class="col-3 text-center"><t
-                                                    t-esc="sum(partners.filtered(lambda p: p.ur_id.id == ur.id).mapped('eff_tt'))"
-                                                /></div>
-                                                <div class="col-2 text-center"><t
-                                                    t-esc="sum(partners.filtered(lambda p: p.ur_id.id ==  ur.id).mapped('eff_sal_assoc'))"
-                                                /></div>
+                                                <div class="col-3 text-center">
+                                                    <t
+                                                    t-set="total_staff_ur"
+                                                    t-value="sum(partners.filtered(lambda p: p.ur_id.id == ur.id).mapped(lambda p: p.get_last_membership_staff().staff_count if p.get_last_membership_staff() else 0))"
+                                                />
+                                                    <t t-esc="total_staff_ur" />
+                                                    <t
+                                                    t-set="total_staff_count + total_staff_ur"
+                                                    t-value="total_staff_ur"
+                                                />
+                                                </div>
+                                                <div class="col-2 text-center">
+                                                    <t
+                                                    t-set="total_staff_shareholder_ur"
+                                                    t-value="sum(partners.filtered(lambda p: p.ur_id.id == ur.id).mapped(lambda p: p.get_last_membership_staff().staff_shareholder_count if p.get_last_membership_staff() else 0))"
+                                                />
+                                                    <t
+                                                    t-esc="total_staff_shareholder_ur"
+                                                />
+                                                    <t
+                                                    t-set="total_staff_shareholder_count + total_staff_ur"
+                                                    t-value="total_staff_ur"
+                                                />
+                                                </div>
                                         </div>
                                         <t
                                             t-set="type_coop"
@@ -76,10 +99,10 @@
                                                         t-esc="len(partners.filtered(lambda p: p.ur_id.id == ur.id and p.cooperative_form_id.id == type_id.id))"
                                                     /></div>
                                                 <div class="col-3 text-center"><t
-                                                        t-esc="sum(partners.filtered(lambda p: p.ur_id.id == ur.id and p.cooperative_form_id.id == type_id.id).mapped('eff_tt'))"
+                                                        t-esc="sum(partners.filtered(lambda p: p.ur_id.id == ur.id and p.cooperative_form_id.id == type_id.id).mapped(lambda p: p.get_last_membership_staff().staff_count if p.get_last_membership_staff() else 0))"
                                                     /></div>
                                                 <div class="col-2 text-center"><t
-                                                        t-esc="sum(partners.filtered(lambda p: p.ur_id.id == ur.id and p.cooperative_form_id.id == type_id.id).mapped('eff_sal_assoc'))"
+                                                        t-esc="sum(partners.filtered(lambda p: p.ur_id.id == ur.id and p.cooperative_form_id.id == type_id.id).mapped(lambda p: p.get_last_membership_staff().staff_shareholder_count if p.get_last_membership_staff() else 0))"
                                                     /></div>
                                             </div>
                                         </t>
@@ -95,10 +118,10 @@
                                             t-esc="len(partners)"
                                         /></div>
                                     <div class="col-3 text-center"><t
-                                            t-esc="sum(partners.mapped('eff_tt'))"
+                                            t-esc="total_staff_count"
                                         /></div>
                                     <div class="col-2 text-center"><t
-                                            t-esc="sum(partners.mapped('eff_sal_assoc'))"
+                                            t-esc="total_staff_shareholder_count"
                                         /></div>
                                 </div>
                             </div>
@@ -157,16 +180,28 @@
                                                     </tr>
                                                 </thead>
                                                 <tbody>
+                                                    <t
+                                                    t-set="staff_count"
+                                                    t-value="0"
+                                                />
+                                                    <t
+                                                    t-set="staff_shareholder_count"
+                                                    t-value="0"
+                                                />
                                                     <t
                                                     t-foreach="partner_ids"
                                                     t-as="partner"
                                                 >
+                                                        <t
+                                                        t-set="staff_id"
+                                                        t-value="partner.get_last_membership_staff()"
+                                                    />
                                                         <tr>
                                                             <td><t
                                                                 t-esc="partner.cooperative_form_id.name"
                                                             /></td>
                                                             <td><t
-                                                                t-esc="partner.partner_id.name"
+                                                                t-esc="partner.name"
                                                             /></td>
                                                             <td><t
                                                                 t-esc="partner.zip"
@@ -175,28 +210,38 @@
                                                                 t-esc="partner.city"
                                                             /></td>
                                                             <td><t
-                                                                t-esc="partner.eff_tt"
-                                                            /></td>
+                                                                t-esc="staff_id.staff_count if staff_id else 0"
+                                                            />
+                                                                <t
+                                                                t-set="staff_count"
+                                                                t-value="staff_shareholder_count + (staff_id.staff_count if staff_id else 0)"
+                                                            />
+                                                            </td>
                                                             <td><t
-                                                                t-esc="partner.eff_sal_assoc"
-                                                            /></td>
+                                                                t-esc="staff_id.staff_shareholder_count if staff_id else 0"
+                                                            />
+                                                                <t
+                                                                t-set="staff_shareholder_count"
+                                                                t-value="staff_shareholder_count + (staff_id.staff_shareholder_count if staff_id else 0)"
+                                                            />
+                                                            </td>
                                                             <td><t
-                                                                t-esc="partner.cap_tt"
+                                                                t-esc="partner.capital"
                                                                 t-options="{'widget': 'float', 'precision': 0}"
                                                             /> €</td>
                                                             <td><t
-                                                                t-esc="partner.scop_liasse_fiscale_id.revenue_cg"
+                                                                t-esc="partner.liasse_membership_id.revenue_cg"
                                                                 t-options="{'widget': 'float', 'precision': 0}"
                                                             /> €</td>
                                                             <td><t
-                                                                t-esc="partner.scop_liasse_fiscale_id.av_cg"
+                                                                t-esc="partner.liasse_membership_id.av_cg"
                                                                 t-options="{'widget': 'float', 'precision': 0}"
                                                             /> €</td>
                                                             <td><t
-                                                                t-esc="partner.creation_origin_id"
+                                                                t-esc="partner.creation_origin_id.name"
                                                             /></td>
                                                             <td><t
-                                                                t-esc="partner.code_naf"
+                                                                t-esc="partner.naf_id.name"
                                                             /></td>
                                                             <td><t
                                                                 t-esc="partner.social_object"
@@ -219,10 +264,10 @@
                                                             t-esc="len(partner_ids)"
                                                         /> coop(s)</td>
                                                         <td><t
-                                                            t-esc="sum(list(partner_ids.mapped('eff_tt')))"
+                                                            t-esc="staff_count"
                                                         /></td>
                                                         <td><t
-                                                            t-esc="sum(list(partner_ids.mapped('eff_sal_assoc')))"
+                                                            t-esc="staff_shareholder_count"
                                                         /></td>
                                                         <td colspan="8" />
                                                     </tr>
-- 
GitLab