Daily updates from Odoo
Navigate
Branch
Wednesday, September 25, 2024
50 changes
5 changes
Miscellaneous changes
Follow-up on #179964, but this time properly checking if the link is still usable from both sides (i.e. both PO *and* SO). Also fixes the issue with the link from PO <-> MO in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180923
Original PR description
Follow-up on #179964, but this time properly checking if the link is still usable from both sides (i.e. both PO *and* SO). Also fixes the issue with the link from PO <-> MO in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180923
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lin
Original PR description
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:**…
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lines 4. Confirm the invoice, then try to process the document 5. Observe the error about not having a tax scope set, even though the scope is set in the tax settings **Cause of the issue:** When an invoice in in this state, it goes through the `_l10n_es_edi_get_invoices_tax_details_info()` method without a value for the `TipoDesglose` EDI node, causing the exception. **Fix:** If there are taxes present but no values for the `TipoDesglose` node filled at the end of the method, add them (respectively, based on the tax type) with a value == 0. opw-4083107 Forward-Port-Of: odoo/odoo#180333
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause o
Original PR description
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause of the issue:** These move lines were intentionally separated. **Fix:** Remove the template logic where the lines that previously displayed such lines one time, prioritizing the package. opw-4148795 Forward-Port-Of: odoo/odoo#180859
In `test_base_on_rule_currency_is_converted` we create a rate for a testing currency and check that is applied, but we don't specify its name/date, so under certain conditions it will considered as applying only tomorrow and the test will fail. runbot-97969 Forward-Port-Of: odoo/odoo#180943 Forward-Port-Of: odoo/odoo#180287
Original PR description
In `test_base_on_rule_currency_is_converted` we create a rate for a testing currency and check that is applied, but we don't specify its name/date, so under certain conditions it will considered as applying only tomorrow and the test will fail. runbot-97969 Forward-Port-Of: odoo/odoo#180943 Forward-Port-Of: odoo/odoo#180287
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a n
Original PR description
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a new CoA 3. Download the template offerred, upload it 4. Click 'Test' -> see the FKEY error **Cause of the issue:** The precommit hook for updating a company's opening move is expected to flush its changes, which is currently not happening. **Fix:** Flush the changes made in the precommit hook at the end of the method. opw-4103686 Forward-Port-Of: odoo/odoo#180708
12 changes
Resolved issues and error corrections
Intercompany sales and dropship orders now route goods through the Inter-Company Transit location as intended, instead of incorrectly treating the end customer as the internal destination. This helps companies avoid inventory routing errors and keeps cross-company deliveries aligned with the expected business flow.
Original PR description
Since #156437, the moves can have a final location representing their final endpoint. This causes some issues for inter-company transactions, as they are meant to deliver to/pick from the 'Inter-Company Transit' location. This means that for sale orders meant to other companies, they are always supposed to deliver their goods there: - Normal delivery: CompA/Stock -> ICT, ICT -> CompB/Stock - Dropship: CompA/Stock -> ICT, ICT -> Customer But this opens a few issues, as the compA SO's `partner_shipping_id` is the customer itself, meaning that the final location would end up as Customers, which we want to avoid. Also, to accomodate both these cases, we need to add a bit complexity computation of the location_dest of a move. We consider that if the location_dest is Customers but its final is ICT, then we apply the ICT. opw-4163612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a Point of Sale issue where product information could fail to open after refreshing a session that uses employee login. The system now reads the cashier role from the correct place, preventing an error for users with administrator PoS access.
Original PR description
Problem: The `role` attribute is being retrieved from the `raw` field, but when the page is refreshed, all attributes (including `role`) are set in the `cashier` object, not in `raw`. Steps to reproduce: - Set up a PoS session with the "Log in with Employees" setting enabled. - Use a User/Employee with Administrator PoS access (e.g., Mitchell Admin). - Start a PoS session. - Refresh the page. - Click the "i" icon to see more information about a product. - A traceback occurs. opw-4120414 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website. error: ``` SyntaxError: syntax error at or near ")" LINE 7: AND "website_page".id IN () ^ File "odoo/http.py", line 2383, in __call__ response = request._serve_db() File "odoo/http.py", line 1913, in _serve_db return self._transactioning( File "odoo/http.py", line 1976, in _tra
Original PR description
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website. error: ``` SyntaxError: syntax error at or near ")" LINE 7: AND…
Currently, an exception was generated when the user deleted all website pages and tried to search for anything on the website.
error:
```
SyntaxError: syntax error at or near ")"
LINE 7: AND "website_page".id IN ()
^
File "odoo/http.py", line 2383, in __call__
response = request._serve_db()
File "odoo/http.py", line 1913, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1976, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1943, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2100, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 227, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/website/controllers/main.py", line 606, in hybrid_list
data = self.autocomplete(search_type=search_type, term=search, order='name asc', limit=500, max_nb_chars=200, options=options)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/website/controllers/main.py", line 487, in autocomplete
results_count, search_results, fuzzy_term = request.website._search_with_fuzzy(search_type, term, limit, order, options)
File "addons/website/models/website.py", line 1711, in _search_with_fuzzy
count, results = self._search_exact(search_details, fuzzy_term, limit, order)
File "addons/website/models/website.py", line 1740, in _search_exact
results, count = model._search_fetch(search_detail, search, limit, order)
File "addons/website/models/website_page.py", line 259, in _search_fetch
self.env.cr.execute(SQL(
File "odoo/sql_db.py", line 347, in execute
res = self._obj.execute(query, params)
```
This is because the user deleted all pages, and we got an empty list on `most_specific_pages`.
This commit will fix the above issue by preventing the execution of the query when most_specific_pages is empty.
sentry-5449704973
Forward-Port-Of: odoo/odoo#179619Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the first one. Issue: The content of the first tab don't appears anymore when switching tabs. In 17.2 and above the same problem appears with the tel protocol, so '123' is converted to tel://123. Cause: The href attribute of the tab link is incorrectly converted to a mail protocol (mailto:email
Original PR description
Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the…
Steps to reproduce the issue : - Open web editor - Drag and drop the Tab building block - Rename the first tab "email@gmail.com" or "example.com" - Switch to the second tab and switch back to the first one. Issue: The content of the first tab don't appears anymore when switching tabs. In 17.2 and above the same problem appears with the tel protocol, so '123' is converted to tel://123. Cause: The href attribute of the tab link is incorrectly converted to a mail protocol (mailto:email@gmail.com), an http protocol (https://example.com/) or since 17.2, a tel protocol due to the deduceURLfromLabel() function introduced in [1]. This commit addresses the issue by disabling the conversion of URL, mail, and tel protocols when an anchor tag includes a role="tab" attribute, ensuring that the tab functionality remains intact. Only anchor links (href="#...") are allowed for tabs. [1]: https://github.com/odoo/odoo/commit/a903a3114b335fcd9c69b1c74a68838f2cef3e36 opw-4165676 Forward-Port-Of: odoo/odoo#181212 Forward-Port-Of: odoo/odoo#179931
With new Type 1 font constraints and the fonts-urw-base35 package, the 'Courier' font may not be available and we have to use the substitution font. However, the delivered afm files lack the required Ascender/Descender for reportlab to correctly position the human readable part of barcodes. task: 4179663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180994
Original PR description
With new Type 1 font constraints and the fonts-urw-base35 package, the 'Courier' font may not be available and we have to use the substitution font. However, the delivered afm files lack the required Ascender/Descender for reportlab to correctly position the human readable part of barcodes. task: 4179663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180994
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a n
Original PR description
**Current behavior:** Attempting to test the import of a new CoA on a fresh DB will result in a query actually getting executed and an error propagated up to the UI, however if you were to instead actually do the import, it would work and everything would be correct. **Expected behavior:** If the actual import would work, the 'Test' button should indicate the same. **Steps to reproduce:** *From a fresh DB with account_accountant* 1. Go to the Chart of Accounts view 2. Import a new CoA 3. Download the template offerred, upload it 4. Click 'Test' -> see the FKEY error **Cause of the issue:** The precommit hook for updating a company's opening move is expected to flush its changes, which is currently not happening. **Fix:** Flush the changes made in the precommit hook at the end of the method. opw-4103686 Forward-Port-Of: odoo/odoo#180708
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause o
Original PR description
**Current behavior:** If a kit component is packaged, it will only appear once on a delivery slip for the kit product under the package section. **Expected behavior:** It should always (also) be shown under the kit section. **Steps to reproduce:** 1. Create a product with a kit bom with 2 components 2. Create on-hand quantities for the components, where one is in a package and the other is not 3. Create a delivery for the kit product, validate, print the delivery slip **Cause of the issue:** These move lines were intentionally separated. **Fix:** Remove the template logic where the lines that previously displayed such lines one time, prioritizing the package. opw-4148795 Forward-Port-Of: odoo/odoo#180859
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lin
Original PR description
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:**…
**Current behavior:** An invoice with offsetting lines (total == 0.00) with 0% tax will prevent the invoice from being processed by the SII Llevanza de libros registro (ES). **Expected behavior:** The invoice can be processed. **Steps to reproduce:** 1. Create an invoice from a Spanish company to, e.g., a Belgian company 2. Create 2 invoice lines for the same product, one for positive 10 euros, the other for negative 10 euros 3. Add the `0% EU S (Services)` tax to both invoice lines 4. Confirm the invoice, then try to process the document 5. Observe the error about not having a tax scope set, even though the scope is set in the tax settings **Cause of the issue:** When an invoice in in this state, it goes through the `_l10n_es_edi_get_invoices_tax_details_info()` method without a value for the `TipoDesglose` EDI node, causing the exception. **Fix:** If there are taxes present but no values for the `TipoDesglose` node filled at the end of the method, add them (respectively, based on the tax type) with a value == 0. opw-4083107 Forward-Port-Of: odoo/odoo#180333
On accounting reports you can set the availability based on various conditions. The `availability_condition` field is a stored computed one that depends on `country_id` since [this commit]. Since the field also has an `onchange` registered that empties the `country_id` field when the `availability_condition` is not `country`, setting the field to anything else than `country` triggers a recomputation of the `availability_condition`. This `compute` function defaults to setting the `availability
Original PR description
On accounting reports you can set the availability based on various conditions. The `availability_condition` field is a stored computed one that depends on `country_id` since [this commit]. Since the field also has an `onchange` registered that empties the `country_id` field when the `availability_condition` is not `country`, setting the field to anything else than `country` triggers a recomputation of the `availability_condition`. This `compute` function defaults to setting the `availability_condition` to `always`. Thus you can never choose the option `coa` again. This commit only sets the default `always` value in the `compute` function when there is no value set yet. That way the field doesn't reset itself to `always` on every computation of the field. [this commit]: https://github.com/odoo/odoo/commit/73a8098f7c5247b4620170f90513b50672f9a776 Forward-Port-Of: odoo/odoo#181195
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the cu
Original PR description
Steps to reproduce: - Create 2 websites and give them a different domain - Go to any product page (shared between all websites) - Check the source code with https://validator.schema.org/: the URL and image microdata start with the wrong domain. => Case 1: if no company_id was set on the product, the URL returns `web.base.url`. => Case 2: if a company_id is set and that company has a website_id set, both websites return the company's website domain. This commit makes sure to return the current website domain. opw-4113559 Forward-Port-Of: odoo/odoo#179455
**Steps to reproduce the bug:** - Create a storable product “P1”: - Vendor: Azure Interior - Reordering rule: - Trigger: Auto - Route: Buy - Go to the user settings and give Marc Demo access only to Sales. - Log in as Marc. - Create a sales order: - Product: 1 unit of P1. - Confirm the SO. - A purchase order is created. - Create a second SO with another 1 unit of P1. - Confirm it. **Problem:** An error is triggered: `odoo.exceptions.AccessError: You are not al
Original PR description
**Steps to reproduce the bug:** - Create a storable product “P1”: - Vendor: Azure Interior - Reordering rule: - Trigger: Auto - Route: Buy - Go to the user settings and give Marc Demo access only to…
**Steps to reproduce the bug:**
- Create a storable product “P1”:
- Vendor: Azure Interior
- Reordering rule:
- Trigger: Auto
- Route: Buy
- Go to the user settings and give Marc Demo access only to Sales.
- Log in as Marc.
- Create a sales order:
- Product: 1 unit of P1.
- Confirm the SO.
- A purchase order is created.
- Create a second SO with another 1 unit of P1.
- Confirm it.
**Problem:**
An error is triggered:
`odoo.exceptions.AccessError: You are not allowed to access 'Purchase Order Line' (purchase.order.line) records.`
When the second SO is confirmed, a quantity request is made, triggering the "buy" rule. A check is made if there is a candidate “purchase order line” with the same specifications to update its quantity instead of creating a new one:
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase_stock/models/stock_rule.py#L130-L136
The function `_update_purchase_order_line` is called, where access to the taxes associated with the purchase order line is attempted: https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase_stock/models/stock_rule.py#L248
Since it’s a Many2Many field, a query is made to fetch all the records. However, because the user does not have access to the `account.tax` model, an error is triggered.
opw-4193125
Forward-Port-Of: odoo/odoo#181073The taxes on Peru localization no not have the percentage added by default on the invoice_label field. Currently, the tax name is simply IGV (for the 18% tax) which makes the invoice PDF feel incomplete. This Pr adds the percentage on the invoice label. task: 4114767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179132
Original PR description
The taxes on Peru localization no not have the percentage added by default on the invoice_label field. Currently, the tax name is simply IGV (for the 18% tax) which makes the invoice PDF feel incomplete. This Pr adds the percentage on the invoice label. task: 4114767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179132
27 changes
Enhancements to existing features
Several labels and fields in the Belgian salary configurator can now be translated. This makes the tool easier to use for employees and administrators working in different languages.
Original PR description
This PR allows several fields to be translatable in the salary configurator, which were previously untranslatable. task-4116696
Studio approval workflows now let authorized users revoke approvals made at lower notification levels, giving teams better control over multi-step approvals. The update also fixes a mobile debug crash in the approval dropdown and refreshes records after approval actions so related discussions stay current.
The Documents app has been redesigned so folders, files, sharing, permissions, and shortcuts are managed in one place. This gives users clearer document navigation, simpler sharing links, improved portal access, and more consistent permissions across related apps such as HR, Sign, Project, Fleet, and Spreadsheet.
Original PR description
Commit messages are being written... could start with: [IMP] documents, *: modernize access rights, sharing, and actions #### Model changes * `documents.folder` is merged into `documents.document`…
Commit messages are being written... could start with:
[IMP] documents, *: modernize access rights, sharing, and actions
#### Model changes
* `documents.folder` is merged into `documents.document` ("`document`" below)
=> Records with `type=folder`
* `documents.share` is removed,
=> Sharing is now defined on each `documents.document` (see below)
* `documents.access` is added to store partners access and access logs
* `documents.workflow.action` is removed and functionally replaced by
`ir.embedded.actions` records linked to `ir.actions.server`
* `documents.facet` are removed, `documents.tag` are now available cross-app
##### `document` types
Functionally, folders are now displayed together with files in our kanban view,
where folders can be entered with double click.
Shortcuts are also introduced for quick access to a `document` from
another place.
Technically, types are materialized in the `type`, `attachment_id`, and
`shortcut_document_id` fields.
The type can be `binary`, `url`, `folder`.
The old `request` type is virtualized by the `type=binary` with
`attachment_id=False` condition (which was already true),
and shortcuts have a set `shortcut_document_id` and match their type.
##### Access rights
Access rights and sharing are now directly, and only, defined on each
`document` and result in a user's permission `user_permission`.
* User permissions are:
* `view`: right to view a document's fields value.
* `edit`: right to edit a document + upload inside for folders, update sharing
Note that public users are only able to upload.
* `none`: no right
* These permissions can be defined to give access to users via a combination
of parameters. When users match multiple conditions, they are granted the
highest permission given by these:
* The `owner` of a document now has `edit` permission.
* Individual partners can be added (see Knowledge's "Members")
(m2m `documents.access`)
* All internal users via `access_internal`
* All users that have the link to the document (enabled via `access_via_link`)
That is either:
* Having the URL (access token)
* Unless marked as "non-discoverable" via `is_access_via_link_hidden`
having access to a related record:
* The parent folder,
* A shortcut to the document,
* In selected cases (such as project), access to the related record
This access is logged so that on new access to the app, a visited
document is still accessible (as long as it is shared in the same way)
without having to click on the direct link or related record again.
* Upon creating a document inside a folder:
* Default: Access rights on the document are inherited from the folder.
* Customization: Via the documents.mixin, other values can be defined
depending on the linked record.
* Documents will now appear in different sections:
* Company: All documents owned by OdooBot and their children,
as well as all documents shared with all internal users
* My drive: Personal space for each internal user
* Shared with me: All documents shared with the user that are
not in the Company drive
* Shortcuts can be created to create quick references to documents in other
places without the need to duplicate the document or spread access rights
management.
[...]
task-4014624
Co-authored-by: std-odoo <std@odoo.com>
Co-authored-by: Pierre-Yves Dufays <pydu@odoo.com>
Co-authored-by: Julien Castiaux <juc@odoo.com>
Co-authored-by: Lopes Marc (loma) <loma@odoo.com>
Co-authored-by: Patrick Hoste <pko@odoo.com>New Odoo databases now show polished sample dashboards instead of blank charts and tables when there is no business data yet. This helps users understand the value and expected layout of dashboard apps during onboarding, before real records are created.
Original PR description
Prior to this commit, when an Odoo database had no records, the dashboards were empty and ugly. This commit alleviates this problem by introducing dashboards with dummy data displayed in the background with low opacity when there are no records for the main model that is supposed to be displayed in the main dashboard sheet. Task: 3947773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Colombian electronic invoice emails now include a ZIP file with both the PDF and the legally required XML document. This helps businesses comply with DIAN requirements by including the invoice details and the official DIAN status response in the emailed document package.
Original PR description
Due to legal reasons, we need to send a zip containing the PDF and the xml. The xml is an UBL `AttachedDocument` containing both the initial xml representing the invoice and the `ApplicationResponse` returned when calling the GetStatus webservice of DIAN. The `ApplicationResponse` is an xml representing the state of the invoice on the DIAN server. task-4133688
When users create a sales order line from a helpdesk ticket, the product form now prevents choosing a non-service product type. This reduces mistakes and keeps the workflow aligned with services that can be billed from helpdesk work.
Original PR description
When creating a SOL on the fly within a helpdesk ticket, users can also create or edit products. To avoid errors from selecting non-service products, the type field is now hidden in the product form during this process, ensuring only service products are created. task-4179188
Payroll work entry types can now be linked to a specific country, helping companies manage local payroll rules more accurately. This also improves multi-company setups by showing work entry types based on each company's country and updates localized payroll data accordingly.
Original PR description
added country field in hr work entry type added multi company rule for work entry type based on countries added country for every l10n with work entry type task-3978261
Radio button options added to documents in Odoo Sign now appear immediately instead of waiting for the next periodic refresh. This makes template editing feel faster and reduces delays for users preparing documents for signature.
Original PR description
Before this commit: rendering of new radio items was slow. This happened due to the `refreshSignItems` being called each 2 seconds normally. which is responsible for making the sign items visible. In this commit: `refreshSignItems` is called after adding new radio items. Task: 4208037
Subscription quote PDFs now show the subscription start date when it is available. This gives customers clearer information about when their subscription begins and helps reduce follow-up questions during the sales process.
Original PR description
Before this commit, the PDF of a subscription quote did not show the subscription start date to customers. With this commit, the subscription start date will be included in the quote report if it is available. task-3794915
The POS kitchen preparation display now supports decimal quantities instead of rounding or ignoring them. This helps kitchen staff see accurate order amounts for items sold in partial quantities, reducing preparation mistakes.
Original PR description
Before this commit: =================== The POS kitchen display only handled integer quantities, ignoring float values. After this commit: ================== The kitchen display now supports float quantities, accurately reflecting partial quantities from the POS.
Resolved issues and error corrections
This fix prevents an error when calculating allocated hours for open planning shifts that do not yet have a resource assigned. It improves stability for scheduling workflows by checking that a resource exists before using its flexibility settings.
Original PR description
Before this commit, the compute of the allocated hours could be raised a traceback if the shift is an open one because we check if the resource is flexible before checking if there is a resource set on the shift. This commit makes sure a resource exists on the shift before checking if the resource is flexible or not. task-4206945
Users editing Kanban views in Studio can now successfully turn bold formatting on or off for fields. This fixes a formatting issue so cards display as configured, improving consistency for teams customizing their workflows.
The demo setup for restaurant table bookings now shows the appointment name as “Table” instead of “Table Booking.” This avoids confusing or redundant wording on the customer-facing booking page.
Original PR description
**How to reproduce:** 1) Create a Table Booking appointment from the Action helper. 2) Go to the booking page for that appointment it looks like this - https://tinyurl.com/29q2ktjb **After this PR** Now that appointment name will be Table instead of Table Booking. Task-4210749
Payment method names in expense extraction views are adjusted so the journal name only appears where it is useful, such as grouped reporting views. This avoids clutter or confusing labels in other screens while preserving the added context where users need it.
Original PR description
In this pr: https://github.com/odoo/odoo/pull/174537 we have change the display name of the payment method line by adding the name of the journal. But it has changed every view where the payment method line are available. Since we want to have the journal on the groupby of some view, we added a context key to be added when we want to hide the journal. no task id community: https://github.com/odoo/odoo/pull/181340
Residual amounts in foreign currency are now shown only when multi-currency support is enabled. This avoids unnecessary or confusing currency fields for businesses that operate in a single currency.
Original PR description
Ensures that the different residual in currency fields are only visible when base.group_multi_currency is enabled.
Users can now customize the final part of an appointment sharing link instead of being blocked by a read-only field. This makes shared links easier to personalize and manage when sending appointment invitations.
Original PR description
How to reproduce: 1. Create a share link. 2. Try to change the last part. 3. It's read-only. Technical Reason: The last part of the link 'short_code' is set to 'readonly'. After this commit: The link can be edited. Task-4194229
WhatsApp conversations in Discuss now reactivate as soon as a new message arrives from a WhatsApp contact. This prevents teams from missing the first incoming message on previously deactivated channels and keeps customer follow-up timely.
Original PR description
This commit [1] introduces a bug where WA channel doesn't get re-activated after first new message from WA Partner. Steps to reproduce: 1. Keep a de-activated channel open in Discuss. 2. Send a message from WA Partner. 3. Channel doesn't get activated. 4. Send another message. 5. Channel gets activated. This commit fixes the issue. [1]: 4eafd01620b48cd79c4fd319237003d8d39cb217
The Partner Ledger filter now shows individual partners without a parent company, not just company records. This helps users find and report on all relevant partners more accurately from the dropdown.
Original PR description
Steps to reproduce: - Go to Partner Ledger report - Open partner filtering dropdown list Current behaviour: - Show company partners only Expected behaviour: - Should show indiviual partners without parent as well X-original-commit: de5b10f
Budget committed amounts now stay accurate when a purchase order has a draft vendor bill. Draft bills no longer reduce the committed amount until they are posted, preventing budgets from appearing under-committed too early.
Original PR description
When calculating the commited amount of a budget, if a draft bill is available for a PO, the commited amount will be 0. This is due to the fact that qty_invoiced is set even when the bill is not posted. To ensure that the commited amount stays consistent, we will only take into account the qty_invoiced when the related bill is posted.
Odoo Studio now preserves compatibility for older Kanban views after a template naming change. This prevents legacy Kanban menus from breaking, helping users continue editing and using existing views reliably.
Original PR description
Commit [1] renamed `kanban-card` and `kanban-menu` template names into `card` and `menu`. This was meant to be done on kanban views using the new API (i.e. defining a `kanban-card` template instead of `kanban-box`), to keep backward compatibility. However, the renaming for the menu impacted both old and new API kanban views (as they both share the same template name), thus breaking legacy ones. This commit fixes the issue. [1] odoo/odoo@233f03da5ae9c269618e6e28c775a123c0afca79
This fixes the label used for the financial budget action after it was previously changed incorrectly. Users will see the proper budget action name, reducing confusion when navigating budget reports.
Original PR description
The aim of this commit is renaming the financial budget action name properly. In this commit [[1]], we wrongly change the action name for analytic budget, it was wrong. no task id [1]: https://github.com/odoo/enterprise/commit/6ccc3030a57bc1218ad327280804c2e95dee0a59
Miscellaneous changes
The common SAFT test class has tags that will be passed to all inheriting test classes. We don't want that. Hence, we remove to tags and let the lower level test classes define those test tags. Runbot error 99192 Forward-Port-Of: odoo/enterprise#70634
Original PR description
The common SAFT test class has tags that will be passed to all inheriting test classes. We don't want that. Hence, we remove to tags and let the lower level test classes define those test tags. Runbot error 99192 Forward-Port-Of: odoo/enterprise#70634
To reproduce: Be in multicompany, with several companies selected. Create an asset Click on the Expense Account field Select accounts from a different company than the asset's We should not show these. Even worse, in ulterior version, you can save the asset. (computing depreciations would still be prevented) The issue is that we define a custom domain, so it should include it. no-task Forward-Port-Of: odoo/enterprise#68699
Original PR description
To reproduce: Be in multicompany, with several companies selected. Create an asset Click on the Expense Account field Select accounts from a different company than the asset's We should not show these. Even worse, in ulterior version, you can save the asset. (computing depreciations would still be prevented) The issue is that we define a custom domain, so it should include it. no-task Forward-Port-Of: odoo/enterprise#68699
## Task Description This task aims to add the possibility to show the value of the serie on the chart (above the point for scatter/line chart, above the bar for bar/combo chart and inside part for pie chart). ## Related Task - Task: [3953835](https://www.odoo.com/odoo/project/2328/tasks/3953835?cids=1) - https://github.com/odoo/o-spreadsheet/pull/4324 - https://github.com/odoo/odoo/pull/171553 Forward-Port-Of: odoo/enterprise#65890
Original PR description
## Task Description This task aims to add the possibility to show the value of the serie on the chart (above the point for scatter/line chart, above the bar for bar/combo chart and inside part for pie chart). ## Related Task - Task: [3953835](https://www.odoo.com/odoo/project/2328/tasks/3953835?cids=1) - https://github.com/odoo/o-spreadsheet/pull/4324 - https://github.com/odoo/odoo/pull/171553 Forward-Port-Of: odoo/enterprise#65890
For readability; so that the name of the line the carryover is made is more distinguishable from the text around it. Forward-Port-Of: odoo/enterprise#70474
Original PR description
For readability; so that the name of the line the carryover is made is more distinguishable from the text around it. Forward-Port-Of: odoo/enterprise#70474
Problem: The UNSPSC codes for "Square meter" and "Square foot" were not created for the corresponding units of measure. Steps to reproduce: - Navigate to Purchase > Configuration > UoM Categories > Surface. - There is no UNSPSC category assigned by default for these units of measure. opw-4103838 Forward-Port-Of: odoo/enterprise#70102
Original PR description
Problem: The UNSPSC codes for "Square meter" and "Square foot" were not created for the corresponding units of measure. Steps to reproduce: - Navigate to Purchase > Configuration > UoM Categories > Surface. - There is no UNSPSC category assigned by default for these units of measure. opw-4103838 Forward-Port-Of: odoo/enterprise#70102
Commit https://github.com/odoo/enterprise/commit/a47e68a18fa478341efe21d82fa7f0e3e86e4c2c added an user error when trying to connect a bank journal with an online account that does not share the same currency, if there are already some moves created in that journal. The field currency_id being not required on the journal model, this error would also trigger when the currency_id was not set on the journal, but it contained only moves of the same currency as the account that we are trying to co
Original PR description
Commit https://github.com/odoo/enterprise/commit/a47e68a18fa478341efe21d82fa7f0e3e86e4c2c added an user error when trying to connect a bank journal with an online account that does not share the same currency, if there are already some moves created in that journal. The field currency_id being not required on the journal model, this error would also trigger when the currency_id was not set on the journal, but it contained only moves of the same currency as the account that we are trying to connect. An additional condition was added to the check, being that the journal has no currency set but the moves in that journal all use the same currency than the online account. If this is the case, the currency of the journal is set to the one from the online account. opw-[4177736](https://www.odoo.com/odoo/49/tasks/4177736) opw-[4148374](https://www.odoo.com/odoo/my-support-tasks/4148374) Forward-Port-Of: odoo/enterprise#70294
6 changes
Enhancements to existing features
This improvement extends the fiscal folio display feature to vendor invoices and payment records in list views. Previously, this important Mexican tax identification number was only visible for customer invoices. Now users can see the fiscal folio across all relevant transaction types, improving visibility and compliance tracking for Mexican operations.
Original PR description
Allow viewing the fiscal folio for vendor invoices and all payments in the tree view, as it currently only displays for customer invoices.
Resolved issues and error corrections
This update fixes a display issue on mobile devices where two important alerts were overlapping each other on the map view. Now, the setup token alert will only appear after the address locating process is complete, providing a cleaner and more user-friendly experience on mobile devices.
Original PR description
before this commit: On mobile devices, the `Locating new addresses` and `Set up token` Bootstrap alerts are overlapping. after this commit: On mobile devices, the `Set up token` alert only becomes visible after the `Locating new addresses` process has been completed. Task-3928322 Forward-Port-Of: odoo/enterprise#70526 Forward-Port-Of: odoo/enterprise#69822
A previous update accidentally removed access control restrictions from a sensitive field in the Dutch tax reporting module. This fix restores the proper access group settings to ensure only authorized users can view or modify this field, maintaining data security and compliance.
Original PR description
The PR https://github.com/odoo/enterprise/pull/67874 wrongly removed a group parameter on a sensitive field. This adds it back. Forward-Port-Of: odoo/enterprise#70575
Fixed a bug where users could incorrectly select expense accounts from different companies when creating assets in a multi-company environment. This prevents data integrity issues and ensures assets only use accounts from their own company.
Original PR description
To reproduce: Be in multicompany, with several companies selected. Create an asset Click on the Expense Account field Select accounts from a different company than the asset's We should not show these. Even worse, in ulterior version, you can save the asset. (computing depreciations would still be prevented) The issue is that we define a custom domain, so it should include it. no-task Forward-Port-Of: odoo/enterprise#68699
This fix adds the missing UNSPSC (United Nations Standard Products and Services Code) classifications for "Square meter" and "Square foot" units of measure. These codes are now properly assigned in the Surface category, ensuring accurate product classification for purchasing and compliance purposes.
Original PR description
Problem: The UNSPSC codes for "Square meter" and "Square foot" were not created for the corresponding units of measure. Steps to reproduce: - Navigate to Purchase > Configuration > UoM Categories > Surface. - There is no UNSPSC category assigned by default for these units of measure. opw-4103838 Forward-Port-Of: odoo/enterprise#70102
Fixed an issue that prevented non-administrator users from sending and printing Mexican invoices (CFDI). The system now properly handles certificate access during invoice processing without requiring administrative rights. This allows regular users to complete their invoicing tasks independently.
Original PR description
### Steps to reproduce issue: 1. Install Mexican localization 2. Make sure Demo User has no administration right 3. As Demo User, create and confirm Invoice for Mexican customer - Make sure Products of the Invoice have an UNSPSC Category (Accounting tab) 5. Send and print Invoice for CFDI 6. An Access Error is raised: > You are not allowed to access 'SAT Digital Sail' (l10n_mx_edi.certificate) records. > > This operation is allowed for the floowing groups: > - Administration/Settings ### Explanation: During the operation, the user will retrieve the certificates of the company in `_send_api`. Those certificates can only be accessed by people with `group_system` access rights. ### Fix reasoning: Since the issue only concerns the retrieval of the certificates, we will enter superuser mode when executing this operation. opw-4205612