Description: Install and run Odoo without demo data
Commit: kmitl:bf054992  
Subject: add : access_token
Author: Tanathip:)
Committer: Tanathip:)
Commit: product-attribute:0926d253  
Subject: Translated using Weblate (French)
Author: Laurent Bélorgey
Committer: Weblate
Commit: social:55cc6bfd  
Subject: [BOT] post-merge updates
Author: OCA-git-bot
Committer: OCA-git-bot
Commit: operating-unit:aef1570b  
Subject: Added translation using Weblate (German)
Author: Bastian Günther
Committer: Weblate
Commit: account-analytic:b8ffa0a0  
Subject: Translated using Weblate (German)
Author: Bastian Günther
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: 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: 3m
Date Level Type Message
2025-09-25 07:59:24 INFO runbot Init build environment with config Without demo
2025-09-25 07:59:24 Starting step install_without_demo from config Without demo
2025-09-25 07:59:24 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2025-09-25 08:00:49 INFO server odoo.modules.loading:336 1 modules loaded in 6.46s, 7917 queries (+7917 extra)
2025-09-25 08:01:47 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (participant_ids, target_ids) of project.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: project_kmitl and project_kmitl]
2025-09-25 08:01:47 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (organizer_ids, target_ids) of project.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: project_kmitl and project_kmitl]
2025-09-25 08:01:47 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (hierarchy_level, level) of project.strategic.plan() have the same label: ระดับแผน. [Modules: project_kmitl and project_kmitl]
2025-09-25 08:01:48 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (participant_ids, target_ids) of project.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: project_kmitl and project_kmitl]
2025-09-25 08:01:48 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (organizer_ids, target_ids) of project.project() have the same label: กลุ่มเป้าหมาย/ผู้ดำเนินโครงการ. [Modules: project_kmitl and project_kmitl]
2025-09-25 08:01:54 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.
2025-09-25 08:02:13 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]
2025-09-25 08:02:13 WARNING server odoo.modules.loading:276
The models ['budget.appropriation.f4.report'] have no access rules in module budget_appropriation, consider adding some, like:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
budget_appropriation.access_budget_appropriation_f4_report,access_budget_appropriation_f4_report,budget_appropriation.model_budget_appropriation_f4_report,base.group_user,1,0,0,0
2025-09-25 08:02:16 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.
2025-09-25 08:02:18 WARNING server odoo.addons.base.models.ir_ui_view:412 Error-prone use of @class in view view.purchase.request.form (): use the hasclass(*classes) function to filter elements by their classes
2025-09-25 08:02:22 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]
2025-09-25 08:02:22 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]
2025-09-25 08:02:23 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]
2025-09-25 08:02:27 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]
2025-09-25 08:02:27 WARNING server odoo.modules.loading:276
The models ['budget.appropriation.f4.report'] have no access rules in module budget_appropriation_offset, consider adding some, like:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
budget_appropriation_offset.access_budget_appropriation_f4_report,access_budget_appropriation_f4_report,budget_appropriation_offset.model_budget_appropriation_f4_report,base.group_user,1,0,0,0
2025-09-25 08:02:28 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.
2025-09-25 08:02:28 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]
2025-09-25 08:02:29 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]
2025-09-25 08:02:33 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]
2025-09-25 08:02:33 WARNING server odoo.addons.base.models.ir_ui_view:412 Error-prone use of @class in view view.purchase.request.form (): use the hasclass(*classes) function to filter elements by their classes
2025-09-25 08:02:33 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:33 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]
2025-09-25 08:02:33 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]
2025-09-25 08:02:34 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:34 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:35 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.
2025-09-25 08:02:35 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]
2025-09-25 08:02:39 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:40 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:40 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:40 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:41 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:41 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:42 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:42 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]
2025-09-25 08:02:42 WARNING server odoo.addons.base.models.ir_model:1077 Two fields (procurement_plan_ids, project_ids) of budget.appropriation() have the same label: รายการแผนจัดซื้อจัดจ้าง. [Modules: procurement_plan_budget and budget_project]
2025-09-25 08:02:42 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.
2025-09-25 08:02:42 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:43 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:43 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 08:02:43 WARNING server odoo.modules.loading:652 Transient module states were reset
2025-09-25 08:02:43 ERROR server odoo.modules.registry:92
Failed to load registry
Traceback (most recent call last):
  File "/data/build/odoo/odoo/tools/convert.py", line 706, in _tag_root
    f(rec)
  File "/data/build/odoo/odoo/tools/convert.py", line 607, in _tag_record
    record = model._load_records([data], self.mode == 'update')
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4452, in _load_records
    records = self._load_records_create([data['values'] for data in to_create])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4363, in _load_records_create
    return self.create(values)
           ^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-50>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 558, in create
    result = super(View, self.with_context(ir_ui_view_partial_validation=True)).create(vals_list)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-68>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_fields.py", line 670, in create
    recs = super().create(vals_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-15>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4019, in create
    records = self._create(data_list)
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4271, in _create
    records._validate_fields(name for data in data_list for name in data['stored'])
  File "/data/build/odoo/odoo/models.py", line 1373, in _validate_fields
    check(self)
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 437, in _check_xml
    combined_arch = view._get_combined_arch()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 1000, in _get_combined_arch
    arch = root.with_prefetch(tree_views._prefetch_ids)._combine(hierarchy)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 937, in _combine
    arch = etree.fromstring(view.arch)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "src/lxml/etree.pyx", line 3287, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1989, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1869, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1105, in lxml.etree._BaseParser._parseUnicodeDoc
  File "src/lxml/parser.pxi", line 633, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 743, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 672, in lxml.etree._raiseParseError
  File "<string>", line 1
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/modules/registry.py", line 87, in new
    odoo.modules.load_modules(registry, force_demo, status, update_module)
  File "/data/build/odoo/odoo/modules/loading.py", line 493, in load_modules
    processed_modules += load_marked_modules(cr, graph,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/modules/loading.py", line 374, in load_marked_modules
    loaded, processed = load_module_graph(
                        ^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/modules/loading.py", line 233, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/data/build/odoo/odoo/modules/loading.py", line 73, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/data/build/odoo/odoo/tools/convert.py", line 771, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/data/build/odoo/odoo/tools/convert.py", line 837, in convert_xml_import
    obj.parse(doc.getroot())
  File "/data/build/odoo/odoo/tools/convert.py", line 757, in parse
    self._tag_root(de)
  File "/data/build/odoo/odoo/tools/convert.py", line 719, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /data/build/kmitl/purchase_budget/views/purchase_order_views.xml:5, somewhere inside
<record id="view_purchase_order_form" model="ir.ui.view">
        <field name="name">view.purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <data><xpath expr="//notebook" position="inside">
                <page string="จองงบประมาณ">
                    <group attrs="{'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}">
                        <field name="analytic_distribution" widget="analytic_distribution" invisible="1"/>
                        <field name="analytic_distribution" widget="analytic_distribution" invisible="0" groups="base.group_erp_manager"/>
                        <field name="budget_account_id" domain="[('procurement_plan', '=', False)]"/>
                        <field name="activity_analytic_id"/>
                        <field name="department_analytic_id"/>
                        <field name="fund_analytic_id"/>
                        <field name="source_analytic_id"/>
                        <field name="procurement_plan_analytic_id" invisible="1"/>
                    </group>
                </page>
            </xpath>
            <xpath expr="//notebook" position="before">
                <group string="แผนจัดซื้อจัดจ้าง">
                    <field name="use_procurement_plan" attrs="{'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}"/>
                    <field name="procurement_plan_id" options="{'no_create_edit': True, 'no_open': True}" domain="[('state', '=', 'pending'), ('date_range_fy_id', '=', date_range_fy_id)]" attrs="{'invisible': [('use_procurement_plan', '=', False)], 'required': [('use_procurement_plan', '=', True)], 'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}"/>
                </group>
            </xpath>
            <xpath expr="//div[hasclass('oe_button_box')]" position="inside">
                <button name="action_open_budget_commitment" type="object" class="oe_stat_button" icon="fa-money" attrs="{'invisible':[('budget_commitment_id','=',False)]}">
                    <field name="budget_commitment_id" invisible="1"/>
                    <div class="o_stat_info">
                        <span>Budget Commitment</span>
                    </div>
                </button>
            </xpath>
            <xpath expr="//div[hasclass('oe_button_box')]" position="inside">
                <button name="action_view_procurement_plan" type="object" class="oe_stat_button" icon="fa-list-alt" attrs="{'invisible': [('procurement_plan_id', '=', False)]}">
                    <div class="o_field_widget o_stat_info">
                        <span class="o_stat_text">แผนจัดซื้อจัดจ้าง</span>
                    </div>
                </button>
            </xpath>
            <xpath expr="//field[@name='order_line']/tree/field[@name='analytic_distribution']" position="attributes">
                <attribute name="invisible">1</attribute>
            </xpath>
            <xpath expr="//field[@name='order_line']/tree/field[@name='analytic_distribution']" position="after">
                <field name="analytic_distribution" widget="analytic_distribution" invisible="0" optional="hide" groups="base.group_erp_manager"/>
            </xpath>
        </data></field>
    </record>
2025-09-25 08:02:43 CRITICAL server odoo.service.server:1364
Failed to initialize database `03970-16-0-without_demo`.
Traceback (most recent call last):
  File "/data/build/odoo/odoo/tools/convert.py", line 706, in _tag_root
    f(rec)
  File "/data/build/odoo/odoo/tools/convert.py", line 607, in _tag_record
    record = model._load_records([data], self.mode == 'update')
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4452, in _load_records
    records = self._load_records_create([data['values'] for data in to_create])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4363, in _load_records_create
    return self.create(values)
           ^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-50>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 558, in create
    result = super(View, self.with_context(ir_ui_view_partial_validation=True)).create(vals_list)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-68>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_fields.py", line 670, in create
    recs = super().create(vals_list)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-15>", line 2, in create
  File "/data/build/odoo/odoo/api.py", line 431, in _model_create_multi
    return create(self, arg)
           ^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4019, in create
    records = self._create(data_list)
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/models.py", line 4271, in _create
    records._validate_fields(name for data in data_list for name in data['stored'])
  File "/data/build/odoo/odoo/models.py", line 1373, in _validate_fields
    check(self)
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 437, in _check_xml
    combined_arch = view._get_combined_arch()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 1000, in _get_combined_arch
    arch = root.with_prefetch(tree_views._prefetch_ids)._combine(hierarchy)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/addons/base/models/ir_ui_view.py", line 937, in _combine
    arch = etree.fromstring(view.arch)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "src/lxml/etree.pyx", line 3287, in lxml.etree.fromstring
  File "src/lxml/parser.pxi", line 1989, in lxml.etree._parseMemoryDocument
  File "src/lxml/parser.pxi", line 1869, in lxml.etree._parseDoc
  File "src/lxml/parser.pxi", line 1105, in lxml.etree._BaseParser._parseUnicodeDoc
  File "src/lxml/parser.pxi", line 633, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 743, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 672, in lxml.etree._raiseParseError
  File "<string>", line 1
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/data/build/odoo/odoo/service/server.py", line 1327, in preload_registries
    registry = Registry.new(dbname, update_module=update_module)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<decorator-gen-16>", line 2, in new
  File "/data/build/odoo/odoo/tools/func.py", line 87, in locked
    return func(inst, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/modules/registry.py", line 87, in new
    odoo.modules.load_modules(registry, force_demo, status, update_module)
  File "/data/build/odoo/odoo/modules/loading.py", line 493, in load_modules
    processed_modules += load_marked_modules(cr, graph,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/modules/loading.py", line 374, in load_marked_modules
    loaded, processed = load_module_graph(
                        ^^^^^^^^^^^^^^^^^^
  File "/data/build/odoo/odoo/modules/loading.py", line 233, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/data/build/odoo/odoo/modules/loading.py", line 73, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/data/build/odoo/odoo/tools/convert.py", line 771, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/data/build/odoo/odoo/tools/convert.py", line 837, in convert_xml_import
    obj.parse(doc.getroot())
  File "/data/build/odoo/odoo/tools/convert.py", line 757, in parse
    self._tag_root(de)
  File "/data/build/odoo/odoo/tools/convert.py", line 719, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /data/build/kmitl/purchase_budget/views/purchase_order_views.xml:5, somewhere inside
<record id="view_purchase_order_form" model="ir.ui.view">
        <field name="name">view.purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <data><xpath expr="//notebook" position="inside">
                <page string="จองงบประมาณ">
                    <group attrs="{'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}">
                        <field name="analytic_distribution" widget="analytic_distribution" invisible="1"/>
                        <field name="analytic_distribution" widget="analytic_distribution" invisible="0" groups="base.group_erp_manager"/>
                        <field name="budget_account_id" domain="[('procurement_plan', '=', False)]"/>
                        <field name="activity_analytic_id"/>
                        <field name="department_analytic_id"/>
                        <field name="fund_analytic_id"/>
                        <field name="source_analytic_id"/>
                        <field name="procurement_plan_analytic_id" invisible="1"/>
                    </group>
                </page>
            </xpath>
            <xpath expr="//notebook" position="before">
                <group string="แผนจัดซื้อจัดจ้าง">
                    <field name="use_procurement_plan" attrs="{'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}"/>
                    <field name="procurement_plan_id" options="{'no_create_edit': True, 'no_open': True}" domain="[('state', '=', 'pending'), ('date_range_fy_id', '=', date_range_fy_id)]" attrs="{'invisible': [('use_procurement_plan', '=', False)], 'required': [('use_procurement_plan', '=', True)], 'readonly': [('state', 'in', ('purchase', 'done', 'cancel'))]}"/>
                </group>
            </xpath>
            <xpath expr="//div[hasclass('oe_button_box')]" position="inside">
                <button name="action_open_budget_commitment" type="object" class="oe_stat_button" icon="fa-money" attrs="{'invisible':[('budget_commitment_id','=',False)]}">
                    <field name="budget_commitment_id" invisible="1"/>
                    <div class="o_stat_info">
                        <span>Budget Commitment</span>
                    </div>
                </button>
            </xpath>
            <xpath expr="//div[hasclass('oe_button_box')]" position="inside">
                <button name="action_view_procurement_plan" type="object" class="oe_stat_button" icon="fa-list-alt" attrs="{'invisible': [('procurement_plan_id', '=', False)]}">
                    <div class="o_field_widget o_stat_info">
                        <span class="o_stat_text">แผนจัดซื้อจัดจ้าง</span>
                    </div>
                </button>
            </xpath>
            <xpath expr="//field[@name='order_line']/tree/field[@name='analytic_distribution']" position="attributes">
                <attribute name="invisible">1</attribute>
            </xpath>
            <xpath expr="//field[@name='order_line']/tree/field[@name='analytic_distribution']" position="after">
                <field name="analytic_distribution" widget="analytic_distribution" invisible="0" optional="hide" groups="base.group_erp_manager"/>
            </xpath>
        </data></field>
    </record>
2025-09-25 08:02:48 Step install_without_demo finished in 3m
2025-09-25 08:02:48 Starting step run_without_demo from config Without demo
2025-09-25 08:02:48 INFO runbot Start running build 03970-16-0
2025-09-25 08:02:48 INFO runbot Using Dockerfile Tag odoo:DockerDefaultAke
2025-09-25 08:04:03 INFO server odoo.modules.loading:336 1 modules loaded in 0.01s, 0 queries (+0 extra)
2025-09-25 08:04:06 INFO server odoo.modules.loading:336 196 modules loaded in 2.75s, 0 queries (+0 extra)
2025-09-25 08:04:06 WARNING server odoo.fields:626 Redundant default on purchase.request.department_id
2025-09-25 15:55:19 INFO runbot Kill build 03970-16-0