Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 81bfa8874bf9616063364e91579486fa92dd1d07
  • 14.0 par défaut
  • 12.0 protégée
  • 13.0
  • 12.0-lm-00 protégée
5 résultats

scop_period.py

Blame
  • account_payment_term.py 2,15 Kio
    # Copyright 2020 Le Filament
    # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
    
    from odoo import fields, models
    
    
    class AccountPaymentTerm(models.Model):
        _inherit = "account.payment.term"
    
        is_contribution = fields.Boolean("Conditions de paiement des cotisations")
    
        def compute(self, value, date_ref=False, currency=None):
            """
            Override la fonction compute du modèle account.payment.term
            La fonction initiale checke les conditions de paiement et crée
            les lignes de paiement associées
    
            L'héritage permet de créer un échéancier en fonction de celui
            défini sur la base de cotisations
            """
            self.ensure_one()
            ctx = self.env.context
            date_ref = date_ref or fields.Date.today()
            amount = 0
            result = []
            if not currency and self.env.context.get("currency_id"):
                currency = self.env["res.currency"].browse(self.env.context["currency_id"])
            elif not currency:
                currency = self.env.company.currency_id
    
            # si cotisation aura avec échéancier
            if (
                self.is_contribution
                and ctx.get("cotisation_aura_id", False)
                and ctx.get("nb_quarter_aura", False)
            ):
                cotisation_aura_id = ctx.get("cotisation_aura_id")
                nb_quarter_aura = int(ctx.get("nb_quarter_aura"))
                base_contrib = self.env["scop.cotisation.aura"].browse(cotisation_aura_id)
                trimesters = {
                    4: base_contrib.trimester_1,
                    3: base_contrib.trimester_2,
                    2: base_contrib.trimester_3,
                    1: base_contrib.trimester_4,
                }
                for i in range(nb_quarter_aura, 0, -1):
                    # Gestion de l'arrondi de la division
                    if i == 1:
                        amt = currency.round(value - amount)
                    else:
                        amt = currency.round(value / nb_quarter_aura)
                        amount += amt
                    result.append((fields.Date.to_string(trimesters.get(i)), amt))
                return result
            else:
                return super(AccountPaymentTerm, self).compute(value, date_ref)