Files
Odoo-18.0-20251222/account_invoice_date_due/models/account_move.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

48 lines
1.8 KiB
Python

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from odoo.exceptions import UserError
class AccountMove(models.Model):
_inherit = "account.move"
# Show invoice date due even when payment term is defined
invoice_date_due_payment_term = fields.Date(
related="invoice_date_due", string="Due Date Payment Term"
)
invoice_date_due = fields.Date(
string="Due Date",
compute="_compute_invoice_date_due",
inverse="_inverse_invoice_date_due",
)
def _inverse_invoice_date_due(self):
for invoice in self:
if invoice.state == "posted":
if not self.env.user.has_group(
"account_invoice_date_due.allow_to_change_due_date"
):
raise UserError(
self.env._("You are not allowed to change the due date.")
)
@api.onchange("invoice_date_due_payment_term")
def _onchange_invoice_date_due_payment_term(self):
"""Propagate from Payment term due date to original field"""
if self.invoice_date_due_payment_term:
self.invoice_date_due = self.invoice_date_due_payment_term
def write(self, vals):
res = super().write(vals)
# Propagate due date to move lines
# that correspond to the receivable/payable account
posted_moves = self.filtered(lambda x: x.state == "posted")
if "invoice_date_due" in vals and posted_moves:
payment_term_lines = posted_moves.line_ids.filtered(
lambda line: line.account_id.account_type
in ("asset_receivable", "liability_payable")
)
payment_term_lines.write({"date_maturity": vals["invoice_date_due"]})
return res