Monday, November 27, 2023
25 changes · 17.0
Enhancements to existing features
Odoo now allows certain automatically generated field labels to be excluded from translation export files when they are not useful for translators. This reduces confusing translation work and helps teams focus on meaningful user-facing text.
Original PR description
[IMP] core: support field.export_string_translation Some auto-generated field labels don't make sense for translators. For example field: needed_terms_dirty label: "Needed Terms Dirty" After this commit, if the field.export_string_translation is False, we don't export their labels when export translations. 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
The restaurant floor screen now uses a softer off-white background instead of stark pure white, making the interface easier on the eyes. Table badges are also hidden while editing the floor layout, reducing visual clutter during setup.
Resolved issues and error corrections
This fix updates several Mexican tax group labels so they use the correct tax type and language. It helps users see accurate VAT and income tax withholding names in localized accounting records and reports.
Original PR description
Description of the issue/feature this PR addresses: This changes intend to update current tax group records to fix naming issues and add missing translations. Current behavior before PR: - "tax_group_iva_16" is missing translation. - "tax_group_iva_ret_1_25" current name is in Spanish and missing translation. - "tax_group_iva_ret_10" translation reads "ISR" when record is VAT. - "tax_group_isr_ret_10" name is "IVA" when records is "ISR". Desired behavior after PR is merged: - added "tax_group_iva_16" translation. - updated "tax_group_iva_ret_1_25" name to English and added translation. - updated "tax_group_iva_ret_10" translation. - updated "tax_group_isr_ret_10" name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Steps to reproduce: - Install Stock and Project - Create a new project with current company as customer (3 dots menu on project overview to set the customer) - Create a new warehouse for the current company - Error pops Bug: since commit[1] check company is enforced on the project_id field of partners in bothways when creating a new warehouse CheckCompany fields are editted on the partner if set (property_stock_customer/supplier) the issue is if the partner's company_id is False while p
Original PR description
Steps to reproduce: - Install Stock and Project - Create a new project with current company as customer (3 dots menu on project overview to set the customer) - Create a new warehouse for the current…
This fix prevents copied databases from accidentally interacting with live Viva Wallet payment systems. It helps support teams investigate issues safely without affecting production data or customers.
Original PR description
This commit adds the missing neutralisation necessary for the `pos_viva_wallet` module introduced in [1] The purpose of the standard neutralisation framework is to allow us to create database copies that will not interract with external systems in ways that could impact the production database (or if it is not possible to prevent the interractions, make sure that they are benign or wont result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/odoo/pull/140353
Fixed the website sharing button so email subjects show normal spaces instead of plus signs. This makes shared page titles look cleaner and more professional when visitors use the email share option.
Original PR description
Steps to reproduce: - Drop a "Share" snippet anywhere on the page and save. - Click on the email icon. - Your default email client should open with, as a subject line, the title of the page where…
Steps to reproduce: - Drop a "Share" snippet anywhere on the page and save. - Click on the email icon. - Your default email client should open with, as a subject line, the title of the page where spaces are replaced by +. => This should not be the case, spaces should show as spaces. Since the sharer refactoring in [1], the title of a page used in share buttons of the `s_share` snippet is encoded as a `URLSearchParams()`, which encodes spaces as "+" characters (see the specs [2] of the built-in method). This works fine for most share buttons, but not for email clients, which do not properly parse the "+". Typically, that means that the subject line of the mailto link is something like "Home+%7CMy+Website", which renders as "Home+|+My+Website" in a mail client, instead of showing spaces. This commit uses another way to encode the title parameter, so that it works for every share button. It also replaces a space that was encoded twice for Whatsapp. [1]: https://github.com/odoo/odoo/commit/5297388cd2aa1f693b04538c846c7025e243b09d [2]: https://url.spec.whatwg.org/#ref-for-urlsearchparams%E2%91%A4 task-3603556
Manufacturing orders can now use operations where the expected duration is set to 0.0 without causing an error when opening the overview. This prevents a customer-facing crash and allows businesses to keep zero-duration operations when needed.
Original PR description
This issue occurs when the customer creates an operation with a 0.0 expected duration fields. An error is then generated when the customer creates a manufacturing order and selects that operation due…
This issue occurs when the customer creates an operation with a 0.0 expected duration fields. An error is then generated when the customer creates a manufacturing order and selects that operation due to expected duration fields is set zero.
step to reproduce -
- Install the `Manufacturing`
- Click on `Configuration > Operations `
- Create New Operations.
- Select the Bill of Material (ex - [FURN_8621] Plastic Laminate)
- Default Duration fields must be 0.0
- click on `Operations > Manufacturing Orders`
- Create New Manufacturing Orders.
- Select the Product (select the product which you selects while creating operation ex. FURN_8621] Plastic Laminate)
- Click on the `Overview` button.
sentry traceback-
```
ZeroDivisionError: float division by zero
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1960, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 462, in call_kw
result = _call_kw_model(method, model, args, kwargs)
File "odoo/api.py", line 435, in _call_kw_model
result = method(recs, *args, **kwargs)
File "addons/mrp/report/mrp_report_mo_overview.py", line 19, in get_report_values
'data': self._get_report_data(production_id),
File "addons/mrp/report/mrp_report_mo_overview.py", line 78, in _get_report_data
operations = self._get_operations_data(production, level=1, current_index='')
File "addons/mrp/report/mrp_report_mo_overview.py", line 268, in _get_operations_data
real_cost = expected_cost / workorder.duration_expected * bom_duration_expected
```
https://github.com/odoo/odoo/blob/8adb65993e77150ac711d8e64d1768284bfb49fb/addons/mrp/report/mrp_report_mo_overview.py#L268
after this commit, the customer will be able to set 0.0 in expected duration.
sentry-4657725988Radio and checkbox-style button groups using the light button style now show the selected state consistently. This prevents confusing visual feedback in redesigned frontend forms and controls.
Original PR description
The new frontend redesign includes the same logic for btn-light inside a button group but it applies only if the label gets the active class. btn-group can also be composed of checkbox or radio buttons, which rely on the checked attribute to define the active state. task-3551245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Payment providers can now be uninstalled even if they were added to a journal but have not yet processed any payments. This removes an unnecessary blocker during cleanup or configuration changes, making payment setup maintenance smoother.
Original PR description
Improve the uninstallation of payment providers by allowing to uninstall payment providers that have a payment method line on a journal but no payment yet. Task id #3595006 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The closing entry helper text in the tax report now displays with proper formatting instead of appearing as plain text. This improves the readability and presentation of the helpful information shown to users when they interact with the closing entry button.
Original PR description
This fix makes the helper of the closing entry button of the tax report be markuped as it is currently not the case and its content is in plain text. Forward-Port-Of: odoo/enterprise#51085 Forward-Port-Of: odoo/enterprise#50914
A recently added error notification widget in the accounting reports module had a limitation that prevented it from working correctly with functions that accept multiple parameters. This fix enables the widget to properly handle these more complex function calls, improving the reliability of error reporting during file generation processes.
Original PR description
The newly added widget for file generation error added in this commit https://github.com/odoo/enterprise/commit/49c9dc9151435fddfc2e3b62ad397015f144a7b6 needs a minor fix to be able to handle methods that have multiple arguments. task-3610890
This update corrects the display width of the percentage field in the shift form view within the Planning module. The field was appearing wider than necessary due to inherited styling. By applying the proper percentage field styling class, the field now displays at the correct, more compact width, improving the visual layout of the shift form.
Original PR description
1) Step: - Install planning. - Go to form view of shift. Issue: - Percentage field has more width than needed. Cause: - `oe_inline` give mw inherit to float field. Fix: - Added `o_field_percentage` class to get 7ch width same as percentage field. task-3282848 Forward-Port-Of: odoo/enterprise#51466 Forward-Port-Of: odoo/enterprise#37155
This update adjusts automated tests in the Peru electronic invoicing module to align with a change that removes rounding from unit price calculations. The modification ensures tests accurately reflect how prices are now processed, maintaining the integrity of Peru's electronic document submission system.
Original PR description
As this community PR https://github.com/odoo/odoo/pull/143348 is removing the rounding on unit price amount, some tests have to be adapted. opw-3509940
Steps to reproduce: - Install Stock and Project - Create a new project with current company as customer (3 dots menu on project overview to set the customer) - Create a new warehouse for the current company - Error pops Bug: since commit[1] check company is enforced on the project_id field of partners in bothways when creating a new warehouse CheckCompany fields are editted on the partner if set (property_stock_customer/supplier) the issue is if the partner's company_id is False while project belongs to company "_check_company" fails Fix: Relax condition on check company to allow for company False to pass for corecords alternatives: - Set partner's company to the project company when adding it as a customer - Add a domain to only allow partners that belongs to the current company - Remove check company on project_ids from the partner's side opw-3507952 [1]:https://github.com/odoo/odoo/pull/109464 Forward-Port-Of: odoo/odoo#143041 Forward-Port-Of: odoo/odoo#138398
When using account.root (through account.account().root_id or account.move.line().account_root_id) in read_group, we can have inconsistent results because of how account.root is defined. account_root is a view with the id field computed out of account codes, but there can be the same account for several companies, so we can have several same ID for different rows => this is not expected by the ORM who expects one record by ID => in result, we get for example the values in the pivot tabl
Original PR description
When using account.root (through account.account().root_id or account.move.line().account_root_id) in read_group, we can have inconsistent results because of how account.root is defined. account_root…
When using account.root (through account.account().root_id or account.move.line().account_root_id) in read_group, we can have inconsistent results because of how account.root is defined. account_root is a view with the id field computed out of account codes, but there can be the same account for several companies, so we can have several same ID for different rows => this is not expected by the ORM who expects one record by ID => in result, we get for example the values in the pivot table of journal items be multiplied by the number of companies if we group by "Account Root". With this changeset, we add a small optimisation in ORM so if a group by is ordered by a many2one, if the order of the many2one is "id" we don't add a left join for ordering. note: without the change, the added tests failed: - in account, with 1000 as balance, and 2 as number of root with id=90090 - in test_read_group with a query containing a left join to o2m table opw-[2282699](https://www.odoo.com/web#id=2282699&view_type=form&model=project.task) opw-[2289440](https://www.odoo.com/web#id=2289440&view_type=form&model=project.task) opw-[3288390](https://www.odoo.com/web#id=3288390&view_type=form&model=project.task) Forward-Port-Of: odoo/odoo#143199 Forward-Port-Of: odoo/odoo#120595
Accounting moved the logic of _get_reconciled_vals into _compute_payments_widget_reconciled_info but did not made the change in point_of_sale. This commit resolve this by putting the logic of the previous _get_reconciled_vals into an override of the _compute_payments_widget_reconciled_info method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#133655
Original PR description
Accounting moved the logic of _get_reconciled_vals into _compute_payments_widget_reconciled_info but did not made the change in point_of_sale. This commit resolve this by putting the logic of the previous _get_reconciled_vals into an override of the _compute_payments_widget_reconciled_info method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#133655
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#143661 Forward-Port-Of: odoo/odoo#143324
Original PR description
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#143661 Forward-Port-Of: odoo/odoo#143324
Have an Invoice partner with type Individual Create an invoice with said customer confirm. ZATCA invoice has warning "invoiceTimeStamp_QRCODE_INVALID". ``` {"type":"WARNING", "code":"invoiceTimeStamp_QRCODE_INVALID", "category":"QRCODE_VALIDATION", "message":"Time on QR Code does not match with Invoice Issue Time (KSA-25). If ZATCA's SDK was used to generate QR Code, kindly use the latest version of SDK", "status":"WARNING"} ``` This occurs because when the In
Original PR description
Have an Invoice partner with type Individual Create an invoice with said customer confirm. ZATCA invoice has warning "invoiceTimeStamp_QRCODE_INVALID". ``` {"type":"WARNING",…
Have an Invoice partner with type Individual
Create an invoice with said customer confirm.
ZATCA invoice has warning "invoiceTimeStamp_QRCODE_INVALID".
```
{"type":"WARNING",
"code":"invoiceTimeStamp_QRCODE_INVALID",
"category":"QRCODE_VALIDATION",
"message":"Time on QR Code does not match with Invoice Issue Time (KSA-25).
If ZATCA's SDK was used to generate QR Code, kindly use the
latest version of SDK",
"status":"WARNING"}
```
This occurs because when the Invoice partner is an Individual the validation requires an additional QR code enclosing invoice information that needs to match the xml content.
In this case the IssueTime of the invoice was not matching because the QR is manually formatted with a wrong 'Z' at the end, while its timezone is, correctly, Asia/Riyadh
opw-3586326
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#143379Steps to reproduce: - Install l10n_sa_edi - Switch to a SA company - Create a 15% INCLUDED tax - Create an invoice: * Customer: [any] * Invoice Lines: - Product: [any] - Quantity: 90 - Price: 200.00 - Taxes: [the 15% INCLUDED tax] - Confirm the invoice and process it by ZATCA service => The invoice is accepted by ZATCA, but there is the following warning: `BR-KSA-EN16931-11 : Invoice line net amount (BT-131) must equal (Invoiced quantity (BT-129) * (Item net pr
Original PR description
Steps to reproduce: - Install l10n_sa_edi - Switch to a SA company - Create a 15% INCLUDED tax - Create an invoice: * Customer: [any] * Invoice Lines: - Product: [any] - Quantity: 90 - Price: 200.00…
Steps to reproduce:
- Install l10n_sa_edi
- Switch to a SA company
- Create a 15% INCLUDED tax
- Create an invoice:
* Customer: [any]
* Invoice Lines:
- Product: [any]
- Quantity: 90
- Price: 200.00
- Taxes: [the 15% INCLUDED tax]
- Confirm the invoice and process it by ZATCA service
=> The invoice is accepted by ZATCA, but there is the following warning:
`BR-KSA-EN16931-11 : Invoice line net amount (BT-131) must equal (Invoiced quantity (BT-129) * (Item net price (BT-146) / item price base quantity (BT-149))) + Sum of invoice line charge amount (BT-141) - Sum of invoice line allowance amount (BT-136)`
Cause:
The net unit price (200 / 1.15) has more than 2 decimals but its value is rounded to the decimal accuracy of "Product Price" (2 digits by default) in the generated EDI document.
When multiplying its rounded value with the quantity, the result is not equal to the invoice line subtotal, which is triggering the warning.
Solution:
Remove the rounding for unit price amount as there is no restriction on its number of decimals.
Reference:
- https://docs.peppol.eu/poacc/billing/3.0/bis/#_unit_price_amount
- https://zatca.gov.sa/ar/E-Invoicing/SystemsDevelopers/Documents/20230519_ZATCA_Electronic_Invoice_XML_Implementation_Standard_%20vTrack.pdf
opw-3509940
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#143131[IMP] hw_posbox_homepage: Change logger level Add the possibility to dynamically change the logger level of Odoo and per IoT handler (drivers and interfaces). This will be done through the "Handler List" page. This will be useful to troubleshoot purposes. In particular when it happens on a specific handler. The level set should persist on shutdown as saved in Odoo's configuration using the `--log-handler` parameter, see: https://www.odoo.com/documentation/16.0/developer/reference/cli.
Original PR description
[IMP] hw_posbox_homepage: Change logger level Add the possibility to dynamically change the logger level of Odoo and per IoT handler (drivers and interfaces). This will be done through the "Handler…
[IMP] hw_posbox_homepage: Change logger level Add the possibility to dynamically change the logger level of Odoo and per IoT handler (drivers and interfaces). This will be done through the "Handler List" page. This will be useful to troubleshoot purposes. In particular when it happens on a specific handler. The level set should persist on shutdown as saved in Odoo's configuration using the `--log-handler` parameter, see: https://www.odoo.com/documentation/16.0/developer/reference/cli.html#cmdoption-odoo-bin-log-handler Notes: - When changing Odoo's level, `werkzeug` logger will change to the same level automatically (except in `debug` on which `werkzeug` will be set to `info`) - `--log-level` Odoo config wasn't used as it has unintended side effects when dynamically switching to this level - `load_iot_handlers` was modified as otherwise the loggers `__name__` could be wrong and inconsistent on which several logger for a handler exists. For example: `PrinterInterface.py` and `odoo.addons.hw_drivers.iot_handlers.interfaces.PrinterInterface`. In this situation `_logger` can be different from one used in the class. In addition, of that, the parent logger for the different loggers could be different (root and Odoo generally) Preview:  opw-3493585 Forward-Port-Of: odoo/odoo#137547 Forward-Port-Of: odoo/odoo#134174
Due a typo, sortedKeys were not always cleared when pruning the new trees after an update. Consequently the method _getTableRows could be called on a inexisting sub tree. Here we simply fix the typo and a test. opw-3584675 Forward-Port-Of: odoo/odoo#143712 Forward-Port-Of: odoo/odoo#143318
Original PR description
Due a typo, sortedKeys were not always cleared when pruning the new trees after an update. Consequently the method _getTableRows could be called on a inexisting sub tree. Here we simply fix the typo and a test. opw-3584675 Forward-Port-Of: odoo/odoo#143712 Forward-Port-Of: odoo/odoo#143318
Steps: - Install project app. - Go to task view from specific project. - Open activity view. - Set an activity on any task. - Click on "Schedule Activity" button. Issue: - User able to select all tasks instead of tasks from that specific project as it is working for first time user opens that view. Cause: - Domain of `SelectCreateDialog` became empty when load calls from other activity view actions. Fix: - Pass props in load method call to have default data as it is when calling
Original PR description
Steps: - Install project app. - Go to task view from specific project. - Open activity view. - Set an activity on any task. - Click on "Schedule Activity" button. Issue: - User able to select all tasks instead of tasks from that specific project as it is working for first time user opens that view. Cause: - Domain of `SelectCreateDialog` became empty when load calls from other activity view actions. Fix: - Pass props in load method call to have default data as it is when calling load method. task-3293310 Forward-Port-Of: odoo/odoo#143195 Forward-Port-Of: odoo/odoo#139810
__Current behavior before commit:__ When searching for an **Internal Reference** of a product variant on the website shop, the fuzzy search is likely to return a wrong result. If the **Internal Reference** of a product template resembles the searched term, it will take it as a fuzzy term and will not even search for product variants internal references. This is because the method `_basic_enumerate_words` only parses the fields of the model considered but not the "subfields", in this case
Original PR description
__Current behavior before commit:__ When searching for an **Internal Reference** of a product variant on the website shop, the fuzzy search is likely to return a wrong result. If the **Internal…
__Current behavior before commit:__ When searching for an **Internal Reference** of a product variant on the website shop, the fuzzy search is likely to return a wrong result. If the **Internal Reference** of a product template resembles the searched term, it will take it as a fuzzy term and will not even search for product variants internal references. This is because the method `_basic_enumerate_words` only parses the fields of the model considered but not the "subfields", in this case the `product_variant_ids.default_code`. __Description of the fix:__ Run `_search_exact` in any case and only then, if no result is found, run a fuzzy search. __To reproduce on runbot 15.0:__ In the website shop, search *FURN_0096*. Although there is a variant of *Customizable Desk* that has this exact **Internal Reference**, the search will only return *Office Chair Black* because this product template has a **default_code** set (*FURN_0269*). opw-3476643 Forward-Port-Of: odoo/odoo#133584
Steps to reproduce the bug: - Navigate to inventory > transfers > select two ready transfers. - Click on Action > Validate. The wizard will open. - Try to deselect the "To process" button in one of the lines. Problem: A ValidationError is triggered: ``` The operation cannot be completed: - Create/update: a mandatory field is not set. Model: Immediate Transfer Line (stock.immediate.transfer.line) Field: Immediate Transfer (immediate_transfer_id) ``` The error is triggered becaus
Original PR description
Steps to reproduce the bug: - Navigate to inventory > transfers > select two ready transfers. - Click on Action > Validate. The wizard will open. - Try to deselect the "To process" button in one of the lines. Problem: A ValidationError is triggered: ``` The operation cannot be completed: - Create/update: a mandatory field is not set. Model: Immediate Transfer Line (stock.immediate.transfer.line) Field: Immediate Transfer (immediate_transfer_id) ``` The error is triggered because we attempt to create the "stock.immediate.transfer.line" via the widget=toggle before the creation of the "stock.immediate.transfer." opw-3556027 Forward-Port-Of: odoo/odoo#143478 Forward-Port-Of: odoo/odoo#143372
Since [this other commit], the `link_tools` tour is failing because the `_syncContent` between url and link text is not working anymore. This is due to the ZWS that are added to the link to permit the user to select edges of the link. In addition, this PR prevents the editor to search for anchors when the link URL is an email. This way we prevent an error in the console. [this other commit]: https://github.com/odoo/odoo/commit/ab40f484d55e151e175ccf9d6b3ea3bf34c56b35 runbot-18747 Forwa
Original PR description
Since [this other commit], the `link_tools` tour is failing because the `_syncContent` between url and link text is not working anymore. This is due to the ZWS that are added to the link to permit the user to select edges of the link. In addition, this PR prevents the editor to search for anchors when the link URL is an email. This way we prevent an error in the console. [this other commit]: https://github.com/odoo/odoo/commit/ab40f484d55e151e175ccf9d6b3ea3bf34c56b35 runbot-18747 Forward-Port-Of: odoo/odoo#143436 Forward-Port-Of: odoo/odoo#142135
*: website_livechat. Forward-Port-Of: odoo/odoo#143536 Forward-Port-Of: odoo/odoo#143115
Original PR description
*: website_livechat. Forward-Port-Of: odoo/odoo#143536 Forward-Port-Of: odoo/odoo#143115