diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 732d0c4a644eb444d6b4385643ff32fab19fab52..4acca684ec8c5cda7b3ecd21b9e568ab03d57e8c 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 6e50fabfcf77e842255a579106b67bf1ec9b2e97..8ad09204d761288e705181fe8fe2744c82aae89d 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 4efcbb05fa82e3fb5f608280d900d041807779c1..142dfd2c1be2f9c77b3bcfb01e57f335be67c3f5 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 be8aca20509107da65cda482702d016cdcdd8732..11087a5b27de2f025b1c918aa862771c6f23f808 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>