Sélectionner une révision Git
scop_period_wizard.py
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_partner
Le projet source a une visibilité limitée.
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)