Daily updates from Odoo
Wednesday, September 17, 2025
20 changes · saas-18.3
Resolved issues and error corrections
This fixes an issue where confirming a customer invoice could fail if the sales journal used European payment references with a sequence prefix containing symbols such as a dash. Businesses can now confirm these invoices reliably, while the system validates unsupported journal codes more safely.
Original PR description
Currently, an error occurs when confirming a customer invoice that uses a journal with an invalid configuration. **Steps to Reproduce:** 1) Install Accounting app.(with Demo) 2) Navigate to…
Currently, an error occurs when confirming a customer invoice that uses a journal with an invalid configuration. **Steps to Reproduce:** 1) Install Accounting app.(with Demo) 2) Navigate to Accounting>Configuration>Journals 3) Open existing 'Sales' journal and make following changes: - set Sequence Prefix: INV- - In the Advanced Settings Page, set 'Communication Standard' as 'European' and save the journal. 4) Create a Customer Invoice with this Sales Journal and click on `Confirm`. **Error :** `ValueError: invalid literal for int() with base 36: '-'` **Root Cause:** Since [this commit](https://github.com/odoo/odoo/pull/212169/commits/e4a09467a20f282d28baa09091c10a6aea6d0094#diff-cc13d9842e166c12738b659e0478ceb8b1b15734442c1e090252919e7efb6ed7), On following above steps, The value of 'number' received at [1] looks like 'INV-000003' due to which on further computation of this value at [1] causing an error. **Fix:** prevent crash by adding a additional check on methods `_get_invoice_reference_euro_invoice` and `_get_invoice_reference_euro_partner` to validate the journal's short code. [1]- https://github.com/odoo/odoo/blob/2646790e7e31b4c600e39f2d5c87f0744b1578b0/addons/account/tools/structured_reference.py#L20-L26 **sentry-6860586611** Forward-Port-Of: odoo/odoo#225987
This fix prevents an installation error when the withholding tax module is installed with Indian localization demo data. It ensures the setup only uses purchase taxes that include the needed tax details, making module installation more reliable.
Original PR description
Traceback when no `repartition_line_ids` found in tax data. Steps to reproduce:- - Install `l10n_in` module with demo data. - Install `l10n_account_withholding_tax` module. Error:- ``` File /data/build/odoo/addons/l10n_account_withholding_tax/__init__.py, line 27, in _make_demo_tax tax_repartition_lines = [line[2] for line in tax_data[purchase_taxes[0]]['repartition_line_ids'] if line[2]['repartition_type'] == 'tax'] KeyError: 'repartition_line_ids' ``` Root Cause: At [1], No `repartition_line_ids` found in `tax_data[purchase_taxes[0]]`. Solution: Select only purchase taxes having `repartition_line_ids`. [1]: https://github.com/odoo/odoo/blob/9805d09dff64de835de0c764da8c6e213d6b88aa/addons/l10n_account_withholding_tax/__init__.py#L27 Forward-Port-Of: odoo/odoo#227381
Purchase order lines no longer allow users to create new units of measure directly from the order screen. This prevents deleted or incomplete units from causing order confirmation failures, making purchasing workflows more reliable.
Original PR description
When users create a new UoM from order lines, and after deleting the newly created UoM, they try to confirm the order. Steps to reproduce: --- - Install `purchase_stock` module - Create a New PO - Add an order line -> Remove its `Unit` and create a New one - Delete newly created UoM from `Units & Packagings` - Now Confirm Order Traceback: --- - `ValueError: Expected singleton: uom.uom()` - `ZeroDivisionError: float division by zero` This error occurs because, after deleting the newly created UoM, the `product_uom_id` becomes empty, which leads to errors in multiple lines. Solution: --- We are restricting users from creating a UoM from purchase order lines, as already done in other modules (e.g., stock, account, …). sentry-6746792383, 6853969554 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225475
This fix prevents certain attachments that are used directly in business workflows, such as invoices and expense reports, from being moved to cloud storage. It helps ensure reports and records continue to access the attachment data they need reliably.
Original PR description
some models use attachments for data for business logics for example, ``account_move.message_main_attachment_id.datas`` ``hr_expense_sheet`` will use all bounded attachments to generate report This commit prevents uploading attachments to cloud storage for some models if they ``_inherit`` or ``_inherits`` model ``mail.thread.main.attachment`` This PR is also a supplement for https://github.com/odoo/odoo/pull/226094 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227165
This update fixes internal spreadsheet test tools so they can handle sorted data consistently. It helps Odoo's spreadsheet functionality be tested more accurately, reducing the risk of sorting-related issues reaching users.
Original PR description
Task: 4962837 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223561 Forward-Port-Of: odoo/odoo#223011
Users can now open the spreadsheet list settings even when a saved sort uses a field that no longer exists after an upgrade. This lets them remove the outdated sorting rule instead of being blocked by an error.
Original PR description
If a list is sorted on an invalid field and you try to open the list side panel, it crashes. It should open to allow the user to remove the sorting. A list with an invalid sorting field if the spreadsheet was created in a given version, then upgrades to a version where that field has been removed or renamed. Task: 4962837 Forward-Port-Of: odoo/enterprise#92749 Forward-Port-Of: odoo/enterprise#92393
Members can now use AI field buttons even when the prompt includes a Studio-created field. This removes an unnecessary access error and makes AI-assisted field completion behave consistently across standard and custom fields.
Original PR description
Description of the issue/feature this PR addresses: 'Member' users can use the AI field button when the prompt contains standard field references. When the prompt contains a Studio field reference,…
Description of the issue/feature this PR addresses: 'Member' users can use the AI field button when the prompt contains standard field references. When the prompt contains a Studio field reference, there is an error message stating 'email template editor' access is required. Current behavior before PR: -Create an internal 'Member' user -Add a 'user' group for the app you want to test on (bug spotted in Helpdesk). -Make a plain text Studio field -Make a text AI field where the prompt references the plain text Studio field you just created. -Make a text AI field where the prompt references a standard available field. -Log into the database as the 'Member' user -Push the 'AI' button on each of the two fields you created. -The one referencing the standard field should populate as normal; the one referencing the Studio field will trigger an error message asking for 'Email template editor access'. Desired behavior after PR is merged: Allowing AI fields unrestricted rendering to avoid the access error when the studio field is used in the prompt. Task-5016767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when website-related fields are configured from backend tools such as Studio. If no website price list is available in that context, Odoo now safely uses the company's currency instead, avoiding interruptions for users managing website settings.
Original PR description
Prior to this commit, the website currency was computed using the request pricelist. However, this logic assumed that the compute method could only be called from a frontend request.
However, via `web_studio`, a user can add fields linked to a website, which triggers the computation in a backend request, causing the following traceback:
```
Traceback (most recent call last):
...
File "/data/build/odoo/addons/website_sale/models/website.py", line 282, in _compute_currency_id
request and request.pricelist.currency_id or website.company_id.sudo().currency_id
^^^^^^^^^^^^^^^^^
AttributeError: 'Request' object has no attribute 'pricelist'
```
This commit fixes the issue by first ensuring that the pricelist exists and falling back to the company currency if it does not.
opw-5068581
Forward-Port-Of: odoo/odoo#227450This fixes an issue where dragging and dropping a Font Awesome icon in the HTML editor could trigger an error. Users can now move or place these icons without interruptions, improving content editing reliability.
Original PR description
**Current behavior before PR:** Dragging and dropping a `fa` icon leads to traceback. This issue happens because in onDrop method, value of `htmlTransferItem` contains only a ZWS wrapped in a `<span>`. This span gets removed in `prepareClipboardData`, alongwith ZWS resulting in an empty fragment being passed to the `insert` method. The insertion of an empty fragment lead to the traceback. **Desired behavior after PR is merged:** Now, `fa` icon can be dragged and dropped without a traceback. task-4882121 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215194
The website editor now hides the image quality slider for WebP images when the browser cannot apply WebP compression, such as Safari and iOS webviews. This prevents users from seeing a control that appears to change image quality or file size but has no effect, and keeps the option display consistent when switching image formats.
Original PR description
Scenario: - select a WebP image in the editor - change the quality with the slider Result: - the size and the image quality doesn't change Cause: Safari doesn't support HTMLCanvasElement.toDataURL() with WebP, so the image is exported in PNG instead which is lossless and doesn't support compression. Other issue: If we select in formats a WebP, then a PNG, we still see the quality option that are meant for the WebP, and inversely if we start with a PNG the quality option is hidden. Fix: Disable the quality for WebP images if this is not supported (in safari + iOS webview), and move the code to ImageTools._computeWidgetVisibility so it is updated when we change image type from/to WebP. opw-4979378 Forward-Port-Of: odoo/odoo#223707 Forward-Port-Of: odoo/odoo#223268
The automatic cleanup process now skips signed documents that are not allowed to be deleted. This prevents background errors while preserving the existing user-facing warning when someone tries to delete a protected signed document manually.
Original PR description
Currently an error occurs when auto vacuum tries to clear documents linked to `sign_document`. **Steps to replicate:** * Install `documents_sign` with demo data. * Go to documents > Move Employment…
Currently an error occurs when auto vacuum tries to clear documents linked to `sign_document`. **Steps to replicate:** * Install `documents_sign` with demo data. * Go to documents > Move Employment contracts to trash * Trash > Try to to delete employment contract you will see error in terminal. Similarly error will be produced by the Auto-Vacuum process when it attempts to delete it after the configured deletion delay. **Error:** `ForeignKeyViolation: update or delete on table 'ir_attachment' violates foreign key constraint 'sign_document_attachment_id_fkey' on table 'sign_document' DETAIL: Key (id)=(1164) is still referenced from table 'sign_document'.` **Root cause:** * At [1], the `sign.document` model was introduced, which prevents the deletion of sign documents. As a result, attempting to delete them due to [2] will cause an error. **Solution:** * Update the `_get_gc_clear_bin_domain` to ensure that the Auto-Vacuum process skips sign documents. * This will still throw an Validation and ForeignKey error as expected when the user tries to delete it from the GUI letting them know it cannot be deleted. [1]: https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b#diff-deebbcccf829fd1804d145c5c7140b482801644bd948639f77caa310b18b8120 [2]: https://github.com/odoo/enterprise/blob/828d47f9ad1d5e396b074c404287799574a6d692/sign/models/sign_document.py#L44 sentry-6842360375
Fixes an error that blocked users from logging timesheets on projects shared across companies when the same user had employees in multiple companies. The system now uses the active company when no project company is set, allowing valid timesheet entries to be saved.
Original PR description
steps to reproduce: ------------------- 1. Install Employees, Timesheets, Projects 2. Create 2 companies 3. On each company, create an employee for the same related user 4. Create a project without…
steps to reproduce: ------------------- 1. Install Employees, Timesheets, Projects 2. Create 2 companies 3. On each company, create an employee for the same related user 4. Create a project without setting a company (making it a global project). 5. Enable both companies in the systray 6. Try to log a timesheet on the global project. issue: ------ A ValidationError is raised: "Timesheets must be created with an active employee in the selected companies." cause: ------ During `vals_list` preparation, the `company_id` value is overwritten here: https://github.com/odoo/odoo/blob/605e47a85561614c17fe2e6f59618610f87c69bb/addons/hr_timesheet/models/hr_timesheet.py#L381 If the project has no company set, `company_id `becomes **False**. This condition fails if the user has two employees and no company set (or if it is missing): https://github.com/odoo/odoo/blob/d3c7e51e94d98da9086a3817b157c4e125c80790/addons/hr_timesheet/models/hr_timesheet.py#L211-L215 solution: --------- Use `self.env.company` if company_id is missing(or False) in the vals. opw-4892449 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227268 Forward-Port-Of: odoo/odoo#223846
Fixes an issue that could block invoice creation or automatic payment processing for subscriptions containing combo products. This helps ensure subscription billing completes reliably without manual intervention or system errors.
Original PR description
Currently, an error is produced while creating an invoice for a subscription order with combo products, and it can be triggered in two different ways. 1. Directly create an invoice. - Create and…
Currently, an error is produced while creating an invoice for a subscription order
with combo products, and it can be triggered in two different ways.
1. Directly create an invoice.
- Create and confirm a subscription with a combo product.
- Create an invoice for this subscription and try to confirm it.
- Validation error shown in display and error generated in log
2. When cron "Payment: Post-process transactions" trigger:
- Enable the Automatic Invoice option in the Subscription settings.
- Activate a demo payment provider (e.g. Demo: Payment Provider).
- Create and confirm a subscription that includes a combo product.
- Click on "Pay" to process the subscription payment.
- An error occurs when the above-mentioned cron is triggered, and it
tries to create an invoice for a subscription order.
Error: `new row for relation "account_move_line" violates check constraint
"account_move_line_check_accountable_....`
This issue arises during the creation of an account move line for deferred entries for
the 'Combo Product' column of the original invoice (subscription):
- At [1], `deferred_start_date` and `deferred_end_date` were added to all invoice line values within `_prepare_invoice_line` used to create the original invoice
- Then, at [2], during confirmation of the `original invoice`, the code attempts to generate `deferred entries` for for move where any move lines that has a `deferred_start_date`
- At code line [3], during the generation of deferred entries, an account move line is created without an associated `account_id`
- During `display_type` computation at [Code](https://github.com/odoo/odoo/blob/9ec4e0d3c5f1aaff0b36dc5def1e69b8285c3be1/addons/account/models/account_move_line.py#L480-L484), `line.move_id.is_invoice()` evaluates to `False`. As a result, the line is assigned a `display_type` as a 'product'.
- Since `display_type` is 'product' and `account_id` is missing, it violates the following check constraint at [Code](https://github.com/odoo/odoo/blob/9ec4e0d3c5f1aaff0b36dc5def1e69b8285c3be1/addons/account/models/account_move_line.py#L451): `CHECK(display_type IN ('line_section', 'line_note') OR account_id IS NOT NULL)`
This commit fixes the issue by preventing the addition of the `deferred_start_date` and `deferred_end_date` keys for invoice lines whose corresponding sale order lines have products of type 'combo' at [1].
[1]:- https://github.com/odoo/enterprise/blob/9642f7d8026149a6524e036c523b65ccbdf17258/sale_subscription/models/sale_order_line.py#L448-L449
[2]:- https://github.com/odoo/enterprise/blob/9642f7d8026149a6524e036c523b65ccbdf17258/account_accountant/models/account_move.py#L113-L114
[3]:- https://github.com/odoo/enterprise/blob/9642f7d8026149a6524e036c523b65ccbdf17258/account_accountant/models/account_move.py#L309
sentry-6763423503
Forward-Port-Of: odoo/enterprise#90989The Malaysian e-invoicing fields now show identity card numbers without hyphens, matching how they are typically entered in ERP systems. This avoids misleading users and helps ensure validation succeeds with the IAP server and MyInvois.
Original PR description
Hyphens are generally omitted in ERPs, and just shown on the Identity card. Putting hyphens in the placeholder is actually misleading for users, and prevents validation through the IAP server and MyInvois Ref: https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC) Task [link](https://www.odoo.com/odoo/project/967/tasks/5054821) task-5054821 Forward-Port-Of: odoo/odoo#225094
This fixes an accounting issue where taxes added during bank reconciliation could be counted twice in cash basis tax reporting. Businesses using cash basis taxes will now see more accurate tax report amounts when reconciling bank or cash journal entries.
Original PR description
**Steps to reproduce:** - Install Accounting - In Accounting settings, activate "Cash Basis" - Create/modify a tax with "Tax Exigibility" set to "Based on Payment" - Set an account as "Cash Basis…
**Steps to reproduce:**
- Install Accounting
- In Accounting settings, activate "Cash Basis"
- Create/modify a tax with "Tax Exigibility" set to "Based on Payment"
- Set an account as "Cash Basis Transition Account"
- Create an invoice:
* Customer: [any]
* Invoice Lines:
- [Price] 200.0
- [Taxes] The cash basis tax (e.g. 15%)
- Confirm the invoice
- Go to "Bank" journal
- Create a bank statement for a lower amount than the invoice (e.g. $200)
- Match the statement with the invoice from the "Match Existing Entries" tab
- Select the added line and click on "fully paid" link
=> A new line with the amount difference should be added
- On the new line, select an expense account and the cash basis tax
=> A new tax line should be added (e.g. $3.91)
- Validate
- Go to "Accounting / Reporting / Statement Reports / Tax Report"
**Issue:**
The amount of the Tax is equal to:
[Tax amount of the invoice] - 2 * [Tax amount of the difference line] = $30 - 2 * $3.91 = $22.18
which is not correct.
The tax amount of the difference line (coming from the bank reconciliation widget) is taken twice into account.
**Cause:**
A cash basis move is created for the tax line created in the bank reconciliation widget.
This move is using the same tax account as debit and credit account and is directly reversed using the same account.
No cash basis move should be created for that line because the tax line is added while reconciling a bank statement, which means the tax should have been received.
**Solution:**
Do not create a cash basis move for journal entries made in a bank or cash journal.
opw-4663059
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#227419
Forward-Port-Of: odoo/odoo#225151This fixes an issue where taxes added during bank reconciliation could be counted twice in cash basis tax reporting. Businesses using cash basis accounting will see more accurate tax report amounts after matching bank statements to invoices with payment differences.
Original PR description
**Steps to reproduce:** - Install Accounting - In Accounting settings, activate "Cash Basis" - Create/modify a tax with "Tax Exigibility" set to "Based on Payment" - Set an account as "Cash Basis…
**Steps to reproduce:**
- Install Accounting
- In Accounting settings, activate "Cash Basis"
- Create/modify a tax with "Tax Exigibility" set to "Based on Payment"
- Set an account as "Cash Basis Transition Account"
- Create an invoice:
* Customer: [any]
* Invoice Lines:
- [Price] 200.0
- [Taxes] The cash basis tax (e.g. 15%)
- Confirm the invoice
- Go to "Bank" journal
- Create a bank statement for a lower amount than the invoice (e.g. $200)
- Match the statement with the invoice from the "Match Existing Entries" tab
- Select the added line and click on "fully paid" link
=> A new line with the amount difference should be added
- On the new line, select an expense account and the cash basis tax
=> A new tax line should be added (e.g. $3.91)
- Validate
- Go to "Accounting / Reporting / Statement Reports / Tax Report"
**Issue:**
The amount of the Tax is equal to:
[Tax amount of the invoice] - 2 * [Tax amount of the difference line] = $30 - 2 * $3.91 = $22.18
which is not correct.
The tax amount of the difference line (coming from the bank reconciliation widget) is taken twice into account.
**Cause:**
A cash basis move is created for the tax line created in the bank reconciliation widget.
This move is using the same tax account as debit and credit account and is directly reversed using the same account.
No cash basis move should be created for that line because the tax line is added while reconciling a bank statement, which means the tax should have been received.
**Solution:**
Do not create a cash basis move for journal entries made in a bank journal.
opw-4663059
Forward-Port-Of: odoo/enterprise#94899
Forward-Port-Of: odoo/enterprise#93735This fixes an attendance issue where extra hours could be reset to zero after changing an employee's check-in or check-out time. Extra hours now remain accurate unless a user intentionally edits them, improving payroll and time tracking reliability.
Original PR description
**Steps to reproduce** - Automatically approved attendances. - Create an attendance and save it. - Note the "Extra hours" displayed. - From the form view, change the check in or check out and save…
**Steps to reproduce** - Automatically approved attendances. - Create an attendance and save it. - Note the "Extra hours" displayed. - From the form view, change the check in or check out and save it. - Issue: "Extra hours" are 0. Expected: they should be the same as "Worked extra hours", as the user has not manually modified the field. **Cause** Issue since cc81bb59f87540cf4dd8da65510417d8023ef65b The problem is that a 0 value for `overtime_hours` was computed for the `NewId` record used during edition in the interface. This meant `validated_overtime_hours` was also set to this value https://github.com/odoo/odoo/blob/cc81bb59f87540cf4dd8da65510417d8023ef65b/addons/hr_attendance/models/hr_attendance.py#L171 and sent on save, which meant the value was not further recomputed in `_update_overtime`. https://github.com/odoo/odoo/blob/cc81bb59f87540cf4dd8da65510417d8023ef65b/addons/hr_attendance/models/hr_attendance.py#L408 **Change** We avoid a recomputation of `validated_overtime_hours` in the interface (which wasn't useful anyway, it was set to 0) to avoid it being interpreted as a manual change by the user. opw-5003488 Forward-Port-Of: odoo/odoo#226393 Forward-Port-Of: odoo/odoo#222689
Animated text and elements in website footers now display as expected when the footer uses the "Slide Over" setting. This prevents footer content from staying hidden during scrolling, improving the visual experience for site visitors.
Original PR description
Before this commit, using animation on text within the footer elements would not work if the footer was set on "slide over". The formula used to compute when to start the animation was incorrect. This commit fixes the formula. Steps to reproduce: - Set the Footer slideout to "Slide Over" - Set the Animation of an element to "On Appearance" - Save (when scrolling down, the animated element stay hidden)
This fix changes how default supplier taxes are applied to large product databases, avoiding a memory error during accounting setup or migration. It helps companies with many products complete updates reliably without service disruption.
Original PR description
As I mentioned in the query below, multiple grouped product.template records with the same supplier_taxes_id are being modified with the default purchase tax (account_purchase_tax_id),which leads to…
As I mentioned in the query below, multiple grouped product.template records with the same supplier_taxes_id are being modified with the default purchase tax (account_purchase_tax_id),which leads to a memory error. To prevent this, I have used an INSERT query.
```sql
SELECT tax_id, COUNT(*) AS product_count
FROM product_supplier_taxes_rel
GROUP BY tax_id
ORDER BY product_count DESC;
tax_id | product_count
--------+---------------
15 | 1262126
156 | 343332
114 | 36363
47 | 10132
23 | 202
546 | 11
474 | 5
782 | 2
666 | 2
1188 | 2
1318 | 1
3 | 1
(12 rows)
```
- Traceback
```python
Traceback (most recent call last):
File "/home/odoo/src/odoo/17.0/odoo/service/server.py", line 1314, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-16>", line 2, in new
File "/home/odoo/src/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/17.0/odoo/modules/registry.py", line 110, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/17.0/odoo/modules/loading.py", line 515, in load_modules
migrations.migrate_module(package, 'end')
File "/home/odoo/src/odoo/17.0/odoo/modules/migration.py", line 240, in migrate_module
migrate(self.cr, installed_version)
File "/home/odoo/src/odoo/17.0/addons/l10n_ch/migrations/11.3/end-migrate.py", line 8, in migrate
env["account.chart.template"].try_loading("ch", company)
File "/home/odoo/src/odoo/17.0/addons/account/models/chart_template.py", line 155, in try_loading
return self._load(template_code, company, install_demo)
File "/home/odoo/src/odoo/17.0/addons/point_of_sale/models/chart_template.py", line 22, in _load
result = super()._load(template_code, company, install_demo)
File "/home/odoo/src/odoo/17.0/addons/account/models/chart_template.py", line 214, in _load
self._post_load_data(template_code, company, template_data)
File "/home/odoo/src/enterprise/17.0/account_reports/models/chart_template.py", line 10, in _post_load_data
super()._post_load_data(template_code, company, template_data)
File "/home/odoo/src/odoo/17.0/addons/stock_account/models/account_chart_template.py", line 12, in _post_load_data
super()._post_load_data(template_code, company, template_data)
File "/home/odoo/src/odoo/17.0/addons/account/models/chart_template.py", line 669, in _post_load_data
sudoed_products_purchase._force_default_purchase_tax(company)
File "/home/odoo/src/odoo/17.0/addons/account/models/product.py", line 130, in _force_default_purchase_tax
product_grouped_by_tax.supplier_taxes_id += default_supplier_taxes
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1322, in __set__
records.write({self.name: write_value})
File "/home/odoo/src/odoo/17.0/addons/website_sale/models/product_template.py", line 176, in write
return super().write(vals)
File "/home/odoo/src/odoo/17.0/addons/rating/models/rating_mixin.py", line 100, in write
result = super(RatingMixin, self).write(values)
File "/home/odoo/src/odoo/17.0/addons/stock_account/models/product.py", line 55, in write
res = super(ProductTemplate, self).write(vals)
File "/home/odoo/src/odoo/17.0/addons/mrp/models/product.py", line 74, in write
return super().write(values)
File "/home/odoo/src/odoo/17.0/addons/stock/models/product.py", line 921, in write
return super(ProductTemplate, self).write(vals)
File "/home/odoo/src/odoo/17.0/addons/product/models/product_template.py", line 502, in write
res = super(ProductTemplate, self).write(vals)
File "/home/odoo/src/odoo/17.0/addons/mail/models/mail_thread.py", line 311, in write
return super(MailThread, self).write(values)
File "/home/odoo/src/odoo/17.0/addons/mail/models/mail_activity_mixin.py", line 250, in write
return super(MailActivityMixin, self).write(vals)
File "/home/odoo/src/odoo/17.0/addons/website/models/mixins.py", line 218, in write
return super(WebsitePublishedMixin, self).write(values)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4444, in write
field.write(self, value)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 4337, in write
self.write_batch([(records, value)])
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 4358, in write_batch
self.write_real(records_commands_list, create)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 4957, in write_real
y_to_xs[y].add(x)
File "/home/odoo/src/odoo/17.0/odoo/tools/misc.py", line 1136, in add
self._map[elem] = None
MemoryError
```
opw - 4544050
upg - 2459515
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#227532
Forward-Port-Of: odoo/odoo#204931This fix adds the missing SZJ product code option required by Hungary's official NAV XML 3.0 invoicing documentation. It helps companies using Hungarian electronic invoicing classify products correctly and avoid compliance or reporting issues.
Original PR description
Description of the issue/feature this PR addresses: In the official NAV XML 3.0 documentation (available at: https://onlineszamla.nav.gov.hu/dokumentaciok page 123), according to the list of possible product codes, there is an 'SZJ' code that is missing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226213