38 lines
1.5 KiB
Python
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()
|