From 5232ffc9d74e1fe2fe82e6c6d4461744b892673a Mon Sep 17 00:00:00 2001 From: Pani-k-folk Date: Fri, 23 Jan 2026 13:47:39 +0700 Subject: [PATCH] [IMP] budget_control_request_document_expense: uncommit RQ before submit EX --- .../models/__init__.py | 1 + .../models/budget_period.py | 24 +++++++++++++++++++ .../models/request_document.py | 1 + 3 files changed, 26 insertions(+) create mode 100644 budget_control_request_document_expense/models/budget_period.py diff --git a/budget_control_request_document_expense/models/__init__.py b/budget_control_request_document_expense/models/__init__.py index 4370572b..a305f9e9 100644 --- a/budget_control_request_document_expense/models/__init__.py +++ b/budget_control_request_document_expense/models/__init__.py @@ -4,3 +4,4 @@ from . import request_document from . import request_order from . import hr_expense +from . import budget_period diff --git a/budget_control_request_document_expense/models/budget_period.py b/budget_control_request_document_expense/models/budget_period.py new file mode 100644 index 00000000..67894064 --- /dev/null +++ b/budget_control_request_document_expense/models/budget_period.py @@ -0,0 +1,24 @@ +# Copyright 2026 Ecosoft Co., Ltd. (http://ecosoft.co.th) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class BudgetPeriod(models.Model): + _inherit = "budget.period" + + @api.model + def check_budget_precommit(self, doclines, doc_type="account"): + budget_moves = False + if doclines._name == "hr.expense": + request_documents = doclines.mapped("sheet_id.request_document_id") + if request_documents: + budget_moves = request_documents.budget_move_ids + request_documents.with_context( + force_commit=True, check_budget_precommit=True + ).uncommit_request_budget(doclines) + budget_moves = request_documents.budget_move_ids - budget_moves + res = super().check_budget_precommit(doclines, doc_type=doc_type) + if budget_moves: + budget_moves.unlink() + return res diff --git a/budget_control_request_document_expense/models/request_document.py b/budget_control_request_document_expense/models/request_document.py index b10167e1..9c36d394 100644 --- a/budget_control_request_document_expense/models/request_document.py +++ b/budget_control_request_document_expense/models/request_document.py @@ -20,6 +20,7 @@ def uncommit_request_budget(self, request_line): request_line._name == "hr.expense" and budget_move and request_line[request_line._doc_rel].state in ["approve", "post", "done"] + or self.env.context("check_budget_precommit", False) ): self.close_budget_move() return res