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

[ADD] payment balance date field

parent 08eb0a38
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -7,6 +7,9 @@ from odoo import api, fields, models
class AccountMove(models.Model):
_inherit = "account.move"
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
purchasing_centre_id = fields.Many2one(
comodel_name="res.partner",
string="Centrale d'achat",
......@@ -18,10 +21,11 @@ class AccountMove(models.Model):
compute="_compute_membership_number",
store=True,
)
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
payment_balance_date = fields.Date(
string="Date de solde de paiement",
compute="_compute_payment_balance_date",
store=True,
)
# ------------------------------------------------------
# SQL Constraints
......@@ -70,6 +74,29 @@ class AccountMove(models.Model):
else:
move.membership_number = False
@api.depends("payment_state")
def _compute_payment_balance_date(self):
"""
Calcule la dernière date de paiement pour les factures et avoirs clients à l'état
"payé" afin de conserver la date de solde de la facture.
"""
for invoice in self:
invoice.payment_balance_date = False
if (
invoice.move_type in ["out_invoice", "out_refund"]
and invoice.payment_state == "paid"
):
payment_dates = invoice._get_reconciled_payments().mapped("date")
statement_dates = invoice._get_reconciled_statement_lines().mapped(
"date"
)
reversed_dates = invoice._get_reconciled_invoices().mapped(
"invoice_date"
)
all_dates = payment_dates + statement_dates + reversed_dates
if all_dates:
invoice.payment_balance_date = max(all_dates)
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
......
......@@ -18,6 +18,9 @@
attrs="{'invisible': [('move_type', 'not in', ('out_invoice', 'out_refund'))]}"
/>
</xpath>
<xpath expr="//field[@name='to_check']" position="after">
<field name="payment_balance_date" />
</xpath>
</field>
</record>
......@@ -31,6 +34,9 @@
<field name="purchasing_centre_id" optional="hide" />
<field name="membership_number" optional="hide" />
</xpath>
<xpath expr="//field[@name='payment_state']" position="after">
<field name="payment_balance_date" optional="hide" />
</xpath>
</field>
</record>
......@@ -52,6 +58,8 @@
name="customer_purchasing_centre"
domain="[('purchasing_centre_id', '!=', False)]"
/>
<separator />
<filter name="payment_balance_date" date="payment_balance_date" />
</xpath>
<xpath expr="//filter[@name='status']" position="after">
......
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