Files
Odoo-18.0-20251222/account_move_cancel_confirm/model/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

38 lines
1.5 KiB
Python

# Copyright 2020 Ecosoft Co., Ltd. (http://ecosoft.co.th)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
from odoo.tools import config
class AccountMove(models.Model):
_name = "account.move"
_inherit = ["account.move", "base.cancel.confirm"]
_has_cancel_reason = "optional" # ["no", "optional", "required"]
def button_cancel(self):
test_condition = not config["test_enable"] or (
config["test_enable"]
and self.env.context.get("test_account_move_cancel_confirm")
)
if not test_condition:
return super().button_cancel()
cancel_res_model = self.env.context.get("cancel_res_model", False)
cancel_res_ids = self.env.context.get("cancel_res_ids", False)
cancel_method = self.env.context.get("cancel_method", False)
# cancel from payment
if cancel_res_model == "account.payment" and cancel_method == "action_cancel":
docs = self.env[cancel_res_model].browse(cancel_res_ids)
cancel_reason = ", ".join(
docs.filtered("cancel_reason").mapped("cancel_reason")
)
self.write({"cancel_confirm": True, "cancel_reason": cancel_reason})
if not self.filtered("cancel_confirm"):
return self.open_cancel_confirm_wizard()
return super().button_cancel()
def button_draft(self):
self.clear_cancel_confirm_data()
return super().button_draft()