Skip to content
Extraits de code Groupes Projets
Valider b608f609 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[update] wizard update bordereau payment mode

parent f37f4f93
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# Copyright 2021 Le Filament
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
from odoo import _, fields, models
from odoo.exceptions import UserError
class ScopBordereauChangePaymentMode(models.TransientModel):
......@@ -35,35 +36,49 @@ class ScopBordereauChangePaymentMode(models.TransientModel):
# ------------------------------------------------------
def action_change_payment_mode(self):
bordereau_id = self.bordereau_id
# Link new liasse fiscale to bordereau
if self.change_type == "all":
# Affecte le mode de paiement par défaut au contact
bordereau_id.partner_id.update(
{
"customer_payment_mode_id": self.payment_mode_id.id,
}
)
bordereau_id.update(
{
"payment_mode_id": self.payment_mode_id.id,
}
)
bordereau_id.invoice_ids.update(
{
"payment_mode_id": self.payment_mode_id.id,
}
)
bordereau_id.invoice_ids.set_mandate()
# Recherche les bordereaux non payés
bordereau_ids = self.env["scop.bordereau"].search([
("partner_id", "=", bordereau_id.partner_id.id),
("state", "not in", ["paid", "cancel"]),
])
# Recherche les factures liées aux bordereaux non payées
invoice_ids = bordereau_ids.mapped("invoice_ids").filtered(
lambda i: i.payment_state not in ["paid", "reversed"])
else:
bordereau_ids = bordereau_id
invoice_ids = bordereau_id.invoice_ids.filtered(
lambda i: i.payment_state not in ["paid", "reversed"])
if not invoice_ids:
raise UserError(_(
"Tous les appels liés à ce bordereau sont payés, il n'est pas possible "
"de modifier le mode de paiement"
))
# Met à jour le mode de paiement sur les bordereaux
bordereau_ids.update({"payment_mode_id": self.payment_mode_id.id})
# Met à jour le mode de paiement sur les factures et attribue le mandat
invoice_ids.update({"payment_mode_id": self.payment_mode_id.id})
invoice_ids.set_mandate()
journal_ids = [
self.env.user.company_id.contribution_journal_id.id,
self.env.user.company_id.journal_fede_com_id.id,
self.env.user.company_id.journal_fede_cae_id.id,
self.env.user.company_id.journal_fede_indus_id.id,
self.env.user.company_id.journal_ur_hdf_id.id,
self.env.user.company_id.journal_ur_med_id.id,
]
# Met à jour le mode de paiement sur les écritures comptables
move_line_ids = self.env["account.move.line"].search(
[
("partner_id", "=", self.bordereau_id.partner_id.id),
("move_id", "in", invoice_ids.ids),
("journal_id", "in", journal_ids),
("full_reconcile_id", "=", False),
("balance", "!=", 0),
......@@ -71,7 +86,6 @@ class ScopBordereauChangePaymentMode(models.TransientModel):
("account_id.internal_type", "=", "receivable"),
]
)
move_line_ids.update(
{
"payment_mode_id": self.payment_mode_id.id,
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter