Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • a316de6a25c9ee1a5dd69b9add3b26a0cddc3172
  • 14.0 par défaut
  • 13.0
  • 12.0 protégée
4 résultats

calendar.py

Blame
  • scop_contribution_report.py 3,51 Kio
    # © 2022 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    from odoo import _, fields, models
    from odoo.exceptions import UserError
    
    
    class ScopContributionReport(models.Model):
        _inherit = "scop.contribution.report"
    
        has_bordereau = fields.Boolean("Bordereau lié", compute="_compute_has_bordereau")
    
        # ------------------------------------------------------
        # Compute
        # ------------------------------------------------------
        def _compute_has_bordereau(self):
            contrib_cg = self.env.ref("cgscop_partner.riga_14397")
            for contribution in self:
                # exclude contribution before 2021 from RIGA
                if contribution.year > "2020":
                    if contribution.type_contribution_id == contrib_cg:
                        bordereau = (
                            self.env["scop.bordereau"]
                            .sudo()
                            .search(
                                [
                                    ("partner_id", "=", self.partner_id.id),
                                    ("year", "=", self.year),
                                ]
                            )
                        )
                        if len(bordereau) == 1:
                            contribution.has_bordereau = True
                        else:
                            contribution.has_bordereau = False
                    else:
                        contribution.has_bordereau = False
                else:
                    contribution.has_bordereau = False
    
        # ------------------------------------------------------
        # Button
        # ------------------------------------------------------
        def print_report_with_payment(self):
            bordereau = (
                self.env["scop.bordereau"]
                .sudo()
                .search(
                    [
                        ("partner_id", "=", self.partner_id.id),
                        ("year", "=", self.year),
                    ]
                )
            )
            if len(bordereau) == 1:
                return (
                    self.env.ref(
                        "cgscop_cotisation_cg.cgscop_bordereau_report_with_payments"
                    )
                    .sudo()
                    .report_action(bordereau.sudo())
                )
            else:
                raise UserError(_("Pas de bordereau rattaché à cette cotisation."))
    
        # ------------------------------------------------------
        # Business method
        # ------------------------------------------------------
        def get_invoice_contribution(self):
            """
            If cotiz is type CG, then we filtered on not canceled bordereaux
            """
            self.ensure_one()
            invoice_ids = super(ScopContributionReport, self).get_invoice_contribution()
            contribution_cg = self.env.ref("cgscop_partner.riga_14397")
            if self.type_contribution_id == contribution_cg:
                invoice_ids = invoice_ids.filtered(
                    lambda i: i.bordereau_id.state not in ("cancel",)
                )
            return invoice_ids
    
        # ------------------------------------------------------
        # Inherit parent
        # ------------------------------------------------------
        def _get_contribution_domain(self):
            """
            Hérite la fonction parente pour ajouter la notion de bordereau
            dans la vue pour les cotisations CG
            """ ""
            domain = super()._get_contribution_domain()
            domain.append(
                "|",
                ("bordereau_id.state", "not in", ("cancel", "new")),
                ("bordereau_id", "=", False),
            )
            print(domain)
            return domain