Description: Install and run Odoo without demo data
Commit: social:f7961745  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: kmitl:c22c5d39  
Subject: [16.0][IMP] budget_appropriation_summary: add is_recurrent flag to appropriation lines (#533)
Author: Nonpawit Teerachetmongkol
Committer: GitHub
Commit: stock-logistics-warehouse:dee1162f  
Subject: Translated using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: product-attribute:198468b8  
Subject: Merge pull request #2205 from AmetrasIntelligence/16.0_fix_product_packaging_level_migration
Author: Pedro M. Baeza
Committer: GitHub
Commit: partner-contact:564cbc9c  
Subject: Translated using Weblate (Slovenian)
Author: Matjaz Mozetic
Committer: Weblate
Commit: account-analytic:12eec4eb  
Subject: Translated using Weblate (Slovenian)
Author: Matjaz Mozetic
Committer: Weblate
Commit: operating-unit:dd59492d  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: stock-logistics-request:78a27e65  
Subject: Translated using Weblate (Turkish)
Author: Betül Öğmen
Committer: Weblate
Commit: agreement:800e753c  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: server-backend:ccf60878  
Subject: Update requirements.txt
Author: Nopparut Saelim
Committer: GitHub
Commit: account-reconcile:c031db9d  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: mis-builder:82d39175  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: reporting-engine:4cafaadb  
Subject: Translated using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: odoo:6491e005  
Subject: [FIX] survey: avoid timer early submissions due to time difference
Author: João Alves
Committer: João Horta Alves
Commit: account-financial-reporting:948901d9  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: project:7a5c615c  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: server-tools:3abe25d7  
Subject: Translated using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: server-ux:23e96d19  
Subject: Translated using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: hr:3af635cb  
Subject: Translated using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: account-financial-tools:c3b3e7dd  
Subject: Added translation using Weblate (Italian)
Author: mymage
Committer: Weblate
Commit: web:fb9be06e  
Subject: Translated using Weblate (Portuguese (Brazil))
Author: Luis Felipe Miléo
Committer: Weblate
Commit: account-invoicing:7207e6e2  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: purchase-workflow:ecf70d6c  
Subject: Translated using Weblate (Turkish)
Author: Betül Öğmen
Committer: Weblate
Commit: server-brand:2bc45d77  
Subject: [UPD] addons table in README.md
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: l10n-thailand:0b7b078e  
Subject: [UPD] addons table in README.md
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: odoo-modules:76529673  
Subject: Merge branch '16.0' of github.com:Aginix/odoo-modules into 16.0
Author: Nonpawit Teerachetmongkol
Committer: Nonpawit Teerachetmongkol
Version: 16.0
Config: Without demo
Total time: 8m
Date Level Type Message
2026-02-20 14:41:05 INFO runbot Init build environment with config Without demo
2026-02-20 14:41:05 Starting step install_without_demo from config Without demo
2026-02-20 14:41:05 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2026-02-20 14:43:07 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-20 14:43:25 INFO server odoo.modules.loading:336 1 modules loaded in 10.85s, 7917 queries (+7917 extra)
2026-02-20 14:44:14 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (attachment_count, message_attachment_count) of sarabun.document() have the same label: Attachment Count. [Modules: agx_sarabun and mail]
2026-02-20 14:44:15 WARNING server odoo.addons.base.models.ir_ui_view:773
A button with icon attribute (fa-envelope-open) must have title in its tag, parents, descendants or have text
View error context:
{'file': '/data/build/kmitl/agx_sarabun/views/sarabun_document_views.xml',
 'line': 13,
 'name': 'sarabun.document.view.tree.incoming',
 'view': ir.ui.view(791,),
 'view.model': 'sarabun.document',
 'view.parent': ir.ui.view(),
 'xmlid': 'sarabun_document_view_tree_incoming'}
2026-02-20 14:44:15 WARNING server odoo.addons.base.models.ir_ui_view:773
A button with icon attribute (fa-envelope) must have title in its tag, parents, descendants or have text
View error context:
{'file': '/data/build/kmitl/agx_sarabun/views/sarabun_document_views.xml',
 'line': 14,
 'name': 'sarabun.document.view.tree.incoming',
 'view': ir.ui.view(791,),
 'view.model': 'sarabun.document',
 'view.parent': ir.ui.view(),
 'xmlid': 'sarabun_document_view_tree_incoming'}
2026-02-20 14:44:21 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (attachment_count, message_attachment_count) of sarabun.document() have the same label: Attachment Count. [Modules: agx_sarabun and mail]
2026-02-20 14:45:34 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.move.line() have the same label: รหัสงบประมาณ. [Modules: budget and budget]
This error is already known.
2026-02-20 14:46:51 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:46:52 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.move.line() have the same label: รหัสงบประมาณ. [Modules: budget and budget]
This error is already known.
2026-02-20 14:46:54 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (participant_ids, target_ids) of kmitl.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: kmitl_project and kmitl_project]
2026-02-20 14:46:54 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (organizer_ids, target_ids) of kmitl.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: kmitl_project and kmitl_project]
2026-02-20 14:46:58 WARNING server odoo.modules.loading:276
The models ['kmitl.project.exception.confirm'] have no access rules in module kmitl_project, consider adding some, like:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
kmitl_project.access_kmitl_project_exception_confirm,access_kmitl_project_exception_confirm,kmitl_project.model_kmitl_project_exception_confirm,base.group_user,1,0,0,0
2026-02-20 14:47:08 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:47:08 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line.make.purchase.order.item() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:47:10 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:47:15 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:47:16 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (create_uid, user_id) of budget.appropriation.compilation() have the same label: Created by. [Modules: budget_appropriation_summary and budget_appropriation_summary]
2026-02-20 14:47:16 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (create_uid, user_id) of budget.appropriation.master.summary() have the same label: Created by. [Modules: budget_appropriation_summary and budget_appropriation_summary]
2026-02-20 14:47:16 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:47:50 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:47:55 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (quantity_unsigned, quantity) of stock.valuation.layer() have the same label: Quantity. [Modules: stock_picking_kmitl and stock_account]
2026-02-20 14:47:59 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (create_uid, user_id) of budget.appropriation.compilation() have the same label: Created by. [Modules: budget_appropriation_summary and budget_appropriation_summary]
2026-02-20 14:47:59 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (create_uid, user_id) of budget.appropriation.master.summary() have the same label: Created by. [Modules: budget_appropriation_summary and budget_appropriation_summary]
2026-02-20 14:48:01 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.move.line() have the same label: รหัสงบประมาณ. [Modules: budget and budget]
This error is already known.
2026-02-20 14:48:01 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:48:08 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:48:08 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (create_uid, user_id) of budget.appropriation.compilation() have the same label: Created by. [Modules: budget_appropriation_summary and budget_appropriation_summary]
2026-02-20 14:48:10 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:48:11 WARNING server odoo.addons.base.models.ir_ui_view:412 Error-prone use of @class in view view.work.acceptance.form.tier_validation.custom (): use the hasclass(*classes) function to filter elements by their classes
2026-02-20 14:48:11 WARNING server odoo.addons.base.models.ir_ui_view:412 Error-prone use of @class in view view.work.acceptance.form.tier_validation.custom (): use the hasclass(*classes) function to filter elements by their classes
2026-02-20 14:48:12 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (account_id, code) of budget.appropriation.line() have the same label: รหัสงบประมาณ. [Modules: budget_appropriation and budget_appropriation]
2026-02-20 14:48:15 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:16 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:16 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:17 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:18 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:18 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:19 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line.make.purchase.order.item() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:48:21 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:50 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (department_id, requesting_department_id) of purchase.request.approval() have the same label: Department. [Modules: None and purchase_request_approval]
2026-02-20 14:48:50 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (work_end_display, work_end) of purchase.order() have the same label: Work End. [Modules: purchase_contract_kmitl and purchase_contract_kmitl]
2026-02-20 14:48:50 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (attachment_count, message_attachment_count) of sarabun.document() have the same label: Attachment Count. [Modules: agx_sarabun and mail]
2026-02-20 14:48:55 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (department_id, requesting_department_id) of purchase.request.approval() have the same label: Department. [Modules: None and purchase_request_approval]
2026-02-20 14:48:55 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (display_purchase_order, purchase_order_id) of purchase.request.approval() have the same label: Purchase Order. [Modules: purchase_request_approval_disbursement and purchase_request_approval_disbursement]
2026-02-20 14:48:55 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (department_id, requesting_department_id) of purchase.request.approval() have the same label: Department. [Modules: None and purchase_request_approval]
2026-02-20 14:48:55 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (tax_id, price_tax) of purchase.request.line() have the same label: Tax. [Modules: purchase_request_price_tax_included and purchase_request_price_tax_included]
2026-02-20 14:48:57 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (display_purchase_order, purchase_order_id) of purchase.request.approval() have the same label: Purchase Order. [Modules: purchase_request_approval_disbursement and purchase_request_approval_disbursement]
2026-02-20 14:48:57 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (department_id, requesting_department_id) of purchase.request.approval() have the same label: Department. [Modules: None and purchase_request_approval]
2026-02-20 14:48:57 INFO server odoo.modules.loading:336 308 modules loaded in 327.45s, 175441 queries (+175533 extra)
2026-02-20 14:49:06 Step install_without_demo finished in 8m
2026-02-20 14:49:06 Starting step run_without_demo from config Without demo
2026-02-20 14:49:06 INFO runbot Start running build 08421-16-0
2026-02-20 14:49:06 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2026-02-20 14:50:59 INFO server odoo.modules.loading:336 1 modules loaded in 0.02s, 0 queries (+0 extra)
2026-02-20 14:50:59 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-20 14:51:02 INFO server odoo.modules.loading:336 308 modules loaded in 2.70s, 0 queries (+0 extra)
2026-02-21 19:28:17 INFO runbot Kill build 08421-16-0
2026-02-23 02:40:20 INFO runbot Wake up initiated by Administrator
2026-02-23 02:40:22 Waking up build
2026-02-23 02:40:22 INFO runbot Start running build 08421-16-0
2026-02-23 02:40:22 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2026-02-23 02:43:10 INFO server odoo.modules.loading:336 1 modules loaded in 0.02s, 0 queries (+0 extra)
2026-02-23 02:43:11 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-23 02:43:14 INFO server odoo.modules.loading:336 308 modules loaded in 3.39s, 0 queries (+0 extra)
2026-02-23 03:05:46 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-23 03:30:37 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-23 11:12:58 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:02 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:07 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:14 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:30 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:32 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:39 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 11:13:42 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/models.py", line 5219, in ensure_one
    _id, = self._ids
    ^^^^
ValueError: not enough values to unpack (expected 1, got 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 43, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 321, in write
    self._log_budget_commitment_unlinked()
  File "/data/build/kmitl/agx_approval/models/approval_request.py", line 356, in _log_budget_commitment_unlinked
    self.budget_commitment_id.message_post(
  File "/data/build/odoo/addons/sms/models/mail_thread.py", line 53, in message_post
    return super().message_post(*args, body=body, message_type=message_type, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/rating/models/mail_thread.py", line 15, in message_post
    message = super(MailThread, self).message_post(**kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/mail/models/mail_thread.py", line 2048, in message_post
    self.ensure_one()  # should always be posted on a record, use message_notify if no record
    ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 5222, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: budget.commitment()
2026-02-23 13:02:05 INFO runbot Kill build 08421-16-0
2026-02-24 04:02:39 INFO runbot Wake up initiated by Administrator
2026-02-24 04:02:43 Waking up build
2026-02-24 04:02:43 INFO runbot Start running build 08421-16-0
2026-02-24 04:02:43 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2026-02-24 04:04:44 INFO server odoo.modules.loading:336 1 modules loaded in 0.02s, 0 queries (+0 extra)
2026-02-24 04:04:44 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-24 04:04:47 INFO server odoo.modules.loading:336 308 modules loaded in 2.78s, 0 queries (+0 extra)
2026-02-24 04:43:33 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-24 04:43:36 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-24 08:41:42 ERROR server odoo.addons.report_xlsx.controllers.main:99
Error while generating report account_asset_management.asset_report_xls
Traceback (most recent call last):
  File "/data/build/reporting-engine/report_xlsx/controllers/main.py", line 76, in report_download
    response = self.report_routes(
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx_helper/controllers/main.py", line 35, in report_routes
    xlsx = report.with_context(**context)._render_xlsx(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx_helper/models/ir_actions_report.py", line 18, in _render_xlsx
    return report_model.create_xlsx_report(docids, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx/report/report_abstract_xlsx.py", line 105, in create_xlsx_report
    self.generate_xlsx_report(workbook, data, objs)
  File "/data/build/reporting-engine/report_xlsx_helper/report/report_xlsx_abstract.py", line 21, in generate_xlsx_report
    for ws_params in self._get_ws_params(workbook, data, objects):
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/account-financial-tools/account_asset_management/report/account_asset_report_xls.py", line 27, in _get_ws_params
    s1 = self._get_acquisition_ws_params(wb, data, wiz)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/account-financial-tools/account_asset_management/report/account_asset_report_xls.py", line 300, in _get_acquisition_ws_params
    acquisition_template = self._get_asset_template()
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/report/account_asset_report_xls.py", line 13, in _get_asset_template
    res = super()._get_asset_template()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/report/account_asset_report_xls.py", line 15, in _get_asset_template
    "header": {"type": "string", "value": self._("Operating Unit")},
                                          ^^^^^^
AttributeError: 'report.account_asset_management.asset_report_xls' object has no attribute '_'
2026-02-24 08:41:53 ERROR server odoo.addons.report_xlsx.controllers.main:99
Error while generating report account_asset_management.asset_report_xls
Traceback (most recent call last):
  File "/data/build/reporting-engine/report_xlsx/controllers/main.py", line 76, in report_download
    response = self.report_routes(
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx_helper/controllers/main.py", line 35, in report_routes
    xlsx = report.with_context(**context)._render_xlsx(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx_helper/models/ir_actions_report.py", line 18, in _render_xlsx
    return report_model.create_xlsx_report(docids, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/reporting-engine/report_xlsx/report/report_abstract_xlsx.py", line 105, in create_xlsx_report
    self.generate_xlsx_report(workbook, data, objs)
  File "/data/build/reporting-engine/report_xlsx_helper/report/report_xlsx_abstract.py", line 21, in generate_xlsx_report
    for ws_params in self._get_ws_params(workbook, data, objects):
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/account-financial-tools/account_asset_management/report/account_asset_report_xls.py", line 27, in _get_ws_params
    s1 = self._get_acquisition_ws_params(wb, data, wiz)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/account-financial-tools/account_asset_management/report/account_asset_report_xls.py", line 300, in _get_acquisition_ws_params
    acquisition_template = self._get_asset_template()
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/report/account_asset_report_xls.py", line 13, in _get_asset_template
    res = super()._get_asset_template()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/report/account_asset_report_xls.py", line 15, in _get_asset_template
    "header": {"type": "string", "value": self._("Operating Unit")},
                                          ^^^^^^
AttributeError: 'report.account_asset_management.asset_report_xls' object has no attribute '_'
2026-02-24 08:58:17 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-24 08:58:27 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-24 15:44:16 INFO runbot Kill build 08421-16-0
2026-02-25 02:38:28 INFO runbot Wake up initiated by Administrator
2026-02-25 02:38:29 Waking up build
2026-02-25 02:38:29 INFO runbot Start running build 08421-16-0
2026-02-25 02:38:29 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2026-02-25 02:40:34 INFO server odoo.modules.loading:336 1 modules loaded in 0.02s, 0 queries (+0 extra)
2026-02-25 02:40:34 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-25 02:40:37 INFO server odoo.modules.loading:336 308 modules loaded in 2.82s, 0 queries (+0 extra)
2026-02-25 04:23:23 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-25 04:23:25 WARNING server odoo.modules.module:411 Missing `license` key in manifest for 'agx_approval', defaulting to LGPL-3
2026-02-25 10:23:53 WARNING server odoo.http:2257 You can't make an early removal if all the depreciation lines for previous periods are not posted.
2026-02-25 10:24:17 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-25 10:24:27 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-25 10:24:30 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-25 10:24:32 ERROR server odoo.http:2259
Exception during request handling.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/http.py", line 2237, in __call__
    response = request._serve_db()
               ^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1824, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/data/build/odoo/odoo/http.py", line 1852, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 2056, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/http.py", line 763, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 47, in call_button
    action = self._call_kw(model, method, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/addons/web/controllers/dataset.py", line 34, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 484, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/api.py", line 469, in _call_kw_multi
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/l10n-thailand/l10n_th_account_asset_management/models/account_asset_line.py", line 11, in create_move
    created_move_ids = super().create_move()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/kmitl/account_asset_operating_unit/models/account_asset_line.py", line 20, in create_move
    move._onchange_invoice_line_ids()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute '_onchange_invoice_line_ids'
2026-02-25 10:27:28 INFO runbot Kill build 08421-16-0