Daily updates from Odoo
Navigate
Branch
Saturday, December 21, 2024
22 changes
Enhancements to existing features
WhatsApp integrations can now record detailed request and response information when debug logging is enabled. This helps administrators troubleshoot message delivery and integration issues more easily while limiting control of the setting to authorized access-rights users.
Original PR description
PURPOSE Implement detailed logging of WhatsApp requests and response data, for enhanced debugging and traceability. SPECIFICATION In debug logs, for requests, the log captures the WhatsApp account name (to identify the source of the log), request type, call URL, and data payload. It logs the account name, call URL, response status code, and response body text for responses. TECHNICAL The WhatsApp account's `debug_logging` boolean field controls logging. When enabled, logs are created. Access to manage `debug_logging` is restricted to users in the `Administration / AccessRights` group, ensuring alignment with `ir.logging` access permissions. Task-4004969
The Knowledge app has a cleaner, more user-friendly look across the sidebar, top bar, article views, and website Knowledge pages. The Search menu is now called Articles, making navigation clearer for users, and related guided tours were updated to match the new experience.
Original PR description
This commit improves the look of the app based on feedback we received/saw online. Specifications ============== 1. UI & UX changes of sidebar, topbar, view. 2. The 'Search' menu is renamed to 'Articles'. 3. website_knowledge is also adapted to appropriate changes. 4. The tour has been adapted to above changes. Task-4246990
Australian payroll opening balances can now include the relevant income stream type during setup or import. This helps ensure year-to-date payroll values are reported correctly when employees had income stream changes before moving to Odoo.
Original PR description
All year to date values are expected to be reported per income stream type. That requires all the opening balance to be imported with an income stream type if it has changed prior to transferring to Odoo. This commit adds the income stream type field to the opening balances and the import flow.
Helpdesk and project views now show a meaningful label when grouped information is missing, instead of displaying a generic empty or false value. This makes map, Gantt, graph, pivot, list, and kanban reporting easier to read while removing some custom view code.
Original PR description
*helpdesk, project_enterprise This commit is the counterpart of https://github.com/odoo/odoo/pull/190719 which adds an attribute on field allowing to specify, on a field definition, the value to display when that field is not set. We use that attribute in the map and gantt views to display its value as group name, for the false group. Moreover, we define it in helpdesk on two fields, which allows to get rid of several custom views (js_class). Task~4410227
Test coverage in Documents Spreadsheet and Studio was updated to match renamed search operator labels. This keeps automated checks aligned with the latest wording and helps prevent false test failures without changing business workflows.
Original PR description
This commit adapts tests to the rename of basic search operators done in https://github.com/odoo/odoo/pull/190987 task-4416442
Marketing Automation and Planning screens now use the standard record-opening action instead of an outdated edit-specific option. This aligns these modules with the current Odoo behavior, where forms are already editable by default, reducing maintenance without changing expected user workflows.
Original PR description
**Before this commit:** Historically, buttons with type="edit" opened the record in form view in edit mode, and those with type="open" opened them in readonly. Since v16, form views are always in edition, so those two types are redundant. **After this commit:** Support of `type="edit"` has been removed from the codebase. Community: https://github.com/odoo/odoo/pull/190018 Task-4367373
Resolved issues and error corrections
The Rental Prices section on rental products now displays its list across the full available space. This fixes a visual layout issue so users can read and manage rental pricing more comfortably.
Original PR description
This commit fixes some ARCH to fixes some visual issue. Inside a group (grid) there will be always two columns: * one smaller on the left (max 150px) * one taking all the remaining space on the right. When we add only one element with `nolabel="1"` it will take one part of the grid to take all the space we need to specify it with `colspan="2"`. Steps to reproduce: * Go to Sale App * Go to menu Product * Select a Product (with Rental) * Select the `Rental prices` pane The list view inside the form not taking all space => BUG task-4416643
French localization features now use the standard company registry identifier instead of the older SIRET-specific field. This helps keep payroll, VAT, Intrastat, and reporting outputs consistent with the current company record and reduces the risk of incorrect registration details.
Original PR description
The company_registry should be used instead. task-4204049
Splitting a manufacturing order now keeps the related work order statuses accurate on the backorder. This helps production teams avoid confusion and rely on correct progress information after a split.
Original PR description
Before this Commit: ---------------------------- Whenever a manufacturing order (MO) with work orders is split, the work order states in the backorder MO are incorrect. Step to Produce: ---------------------------- 1. Create a MO with work orders. 2. Split the MO. 3. Open the backorder MO and check the work order states. With this Commit: ---------------------------- The issue was due to improper state computation and a lack of necessary dependencies. The dependencies have been properly applied, ensuring the correct state computation of work orders in backorder MOs. Task-id: 4410926
The cart no longer shows the Avatax tax control icon when the Avatax integration is turned off. This avoids confusing point-of-sale users with an option that is not available for their current setup.
Original PR description
This commit removes the Avatax tax control icon from the cart when the Avatax integration is not active. Task ID: 4365326
Code cleanup and technical improvements
Mexican electronic invoicing can now attach more than one addenda to an invoice and place required extra information in either the Addenda or Complemento sections. This improves compliance flexibility for businesses that need to send customer- or authority-specific XML details before government submission.
Original PR description
This commit refactors the usage of `l10n_mx_edi.addenda` to allow adding multiple addendas at once, and also to support injecting to Complemento instead of Addenda node. On top of it, we will now also be able to inject before sending to make sure the injected XML gets sent to the government. - l10n_mx_edi_addenda_id on res_partner and account_move is now l10n_mx_edi_addenda_ids (Many2many) - new fields in the addenda model to support specifying where to inject the XML, and when to inject so that it may be sent to government related-upgrade-PR: https://github.com/odoo/upgrade/pull/6862 task-id: 3894067
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#75807
Original PR description
Forward-Port-Of: odoo/enterprise#75807
Steps to reproduce: - In the rental module, set a product as storable and uncheck 'Out-of-Stock: Continue Selling.' - Create a discount program for product purchase with 'Get Free Product' reward. - Add enough rental products to an order on the website to trigger the discount. Issue: - Traceback error: TypeError: < not supported between instances of datetime.datetime and bool. Cause: - The reward_line has reservation_begin = False, which results in a dictionary containing a False v
Original PR description
Steps to reproduce: - In the rental module, set a product as storable and uncheck 'Out-of-Stock: Continue Selling.' - Create a discount program for product purchase with 'Get Free Product' reward. - Add enough rental products to an order on the website to trigger the discount. Issue: - Traceback error: TypeError: < not supported between instances of datetime.datetime and bool. Cause: - The reward_line has reservation_begin = False, which results in a dictionary containing a False value alongside other datetime objects. Fix: - Filter the lines to ensure the loop iterates only over rental lines. opw-4360396 Forward-Port-Of: odoo/enterprise#75950 Forward-Port-Of: odoo/enterprise#75894
On a previous commit: https://github.com/odoo/enterprise/commit/8e2957c238e28b8a952c0e354c46e39b1fdd03a6 We changed the condition on the VATNumber node on oss report, but actually it was a mistake and in some cases, this change broke some xml exports on other customer db. But, after more investigation, we decided to remove the fixedEstablishment node from the xml export, as we don't have any use cases where this node is required for now. no task Forward-Port-Of: odoo/enterprise#75964 Forw
Original PR description
On a previous commit: https://github.com/odoo/enterprise/commit/8e2957c238e28b8a952c0e354c46e39b1fdd03a6 We changed the condition on the VATNumber node on oss report, but actually it was a mistake and in some cases, this change broke some xml exports on other customer db. But, after more investigation, we decided to remove the fixedEstablishment node from the xml export, as we don't have any use cases where this node is required for now. no task Forward-Port-Of: odoo/enterprise#75964 Forward-Port-Of: odoo/enterprise#75705
Due to a typo in the directory name the warnings.xml file got duplicated and one of them is now unnecesary. linked pr: #67187 Forward-Port-Of: odoo/enterprise#75833
Original PR description
Due to a typo in the directory name the warnings.xml file got duplicated and one of them is now unnecesary. linked pr: #67187 Forward-Port-Of: odoo/enterprise#75833
There are new requirements for the ph check format: - No '*' allowed anymore - In amount in words: • no thousand comma separator • no 'And' between hundreds and tens https://www.metrobank.com.ph/articles/new-check-format-advisory This commit fixes also an issue with the cents format in the amount in words ('X/100' instead of 'X0/100') opw-4376550 Forward-Port-Of: odoo/enterprise#75647
Original PR description
There are new requirements for the ph check format:
- No '*' allowed anymore
- In amount in words:
• no thousand comma separator
• no 'And' between hundreds and tens
https://www.metrobank.com.ph/articles/new-check-format-advisory
This commit fixes also an issue with the cents format in the amount in
words ('X/100' instead of 'X0/100')
opw-4376550
Forward-Port-Of: odoo/enterprise#75647This change: - Adds tests for the combo configurator, - Aligns the product configurator tests with the combo configurator ones. Community PR: https://github.com/odoo/odoo/pull/186645 task-4320163 Forward-Port-Of: odoo/enterprise#73556
Original PR description
This change: - Adds tests for the combo configurator, - Aligns the product configurator tests with the combo configurator ones. Community PR: https://github.com/odoo/odoo/pull/186645 task-4320163 Forward-Port-Of: odoo/enterprise#73556
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4) From the "Recurring Prices" tab, create 2 different pricing rules, for different variants (like one for size S, and one for size M) 5) From the "Sales" tab, set an "Optional Product" 6) On the website's product page, keep the default variant and click "Add to cart", the modal "Configure your p
Original PR description
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4)…
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4) From the "Recurring Prices" tab, create 2 different pricing rules, for different variants (like one for size S, and one for size M) 5) From the "Sales" tab, set an "Optional Product" 6) On the website's product page, keep the default variant and click "Add to cart", the modal "Configure your product" will open 7) Close the modal by clicking "X" or "Esc" 8) Choose another variant that results in a different price (from the prices configured in step 4) 9) Click "Add to cart" again -> Notice that the product's price is no longer the expected recurring price, but it's the "Sales Price" configured in step 2. Reason: When opening the modal, we query the `data-subscription-plan-id` attribute from the DOM using JQuery's `data` method. However, this latter is not meant to querying data attributes from DOM. Its usage is to actually store data associated with the JQuery objects it's associated with. It worked the first time when we opened the modal, as the first call for it will try to initialize the internal store, if empty, with the value of the appropriate `data-*` attribute from DOM, but any subsequent updates to the underlying `data-*` attribute won't be seen by a new call to this function. Fix: Use `attr` instead of `data`, as the former reads directly from the DOM, every time it's invoked. Refs: https://api.jquery.com/data/ https://api.jquery.com/data/#data-html5 https://api.jquery.com/attr/ opw-4369487 Forward-Port-Of: odoo/enterprise#75896
Before This Commit: - The `Payment Matching` button was invisible in the payment form view, even if the payment was not reconciled. After This Commit: - The `Payment Matching` button will be invisible when the payment is reconciled or not in the state of `In Process` or `Paid.` Reason: - In version 18, the state selection field for payments has changed, and the `posted` state no longer exists. As a result, the condition `state != 'posted'` is always true, so the button is always invisib
Original PR description
Before This Commit: - The `Payment Matching` button was invisible in the payment form view, even if the payment was not reconciled. After This Commit: - The `Payment Matching` button will be invisible when the payment is reconciled or not in the state of `In Process` or `Paid.` Reason: - In version 18, the state selection field for payments has changed, and the `posted` state no longer exists. As a result, the condition `state != 'posted'` is always true, so the button is always invisible. Ref - https://github.com/odoo/odoo/commit/01b87f1230beac0568f4e3b1b76e547909506892#diff-143d17de807d23650088a8c12f0a5b5cc2246b1b51e0bb7634e85247b6e535eaR38 Task: 4419369 Forward-Port-Of: odoo/enterprise#75875
Versions ----- SaaS 17.4+ Steps ----- 1. Create a new rental product and add at least one pricing in the "Rental prices" tab. 2. Go to the product page on the website and try to pick a date that is not valid (e.g., a range in the past). This should grey out the "Add to Cart" button and display an error message in red. 3. Change the date range to one that is valid. Issue: The "Add to Cart" button stays greyed out. Issue ----- When a customer picks a date range for a rental product t
Original PR description
Versions ----- SaaS 17.4+ Steps ----- 1. Create a new rental product and add at least one pricing in the "Rental prices" tab. 2. Go to the product page on the website and try to pick a date that is…
Versions ----- SaaS 17.4+ Steps ----- 1. Create a new rental product and add at least one pricing in the "Rental prices" tab. 2. Go to the product page on the website and try to pick a date that is not valid (e.g., a range in the past). This should grey out the "Add to Cart" button and display an error message in red. 3. Change the date range to one that is valid. Issue: The "Add to Cart" button stays greyed out. Issue ----- When a customer picks a date range for a rental product that is not valid, the "Add to Cart" button is greyed out and stays greyed out regardless of what the customer does next, even if they change the rental period to one that is available. Cause ----- In `_verifyValidRentingPeriod` and `_verifyValidPeriod`, when a rental period is not valid, the product form is disabled, and the `css_not_available` class is added to the form. However, this form is never re-enabled, meaning the `css_not_available` class is never removed, and the "Add to Cart" button stays greyed out. Solution ----- Call the `_toggleDisable` method every time the rental period is checked to ensure the form is always in the correct state. opw-4197234 Forward-Port-Of: odoo/enterprise#75826 Forward-Port-Of: odoo/enterprise#74507
have a t call node with another tag than "t". Edit the view Before this commit, there was a crash when saving the changes. The helper that recomposes the arch with the different parts inside the t-call did not account for node not to be "t" tags. After this commit, it works fine. opw-4383844 Forward-Port-Of: odoo/enterprise#75905
Original PR description
have a t call node with another tag than "t". Edit the view Before this commit, there was a crash when saving the changes. The helper that recomposes the arch with the different parts inside the t-call did not account for node not to be "t" tags. After this commit, it works fine. opw-4383844 Forward-Port-Of: odoo/enterprise#75905
…nslations Before this commit the inheriting studio view (containing the user's customizations) had its translations updated with its parent's translated terms. This was because in the previous implementation we copied all the parent's views into the inheriting, which not the case anymore since odoo/enterprise@acdca428d7543530177b7368ca9baddfb340e97c This behavior has become problematic because of how translations work. To illustrate, create a report, put in some text, save. Then, add some
Original PR description
…nslations Before this commit the inheriting studio view (containing the user's customizations) had its translations updated with its parent's translated terms. This was because in the previous…
…nslations Before this commit the inheriting studio view (containing the user's customizations) had its translations updated with its parent's translated terms. This was because in the previous implementation we copied all the parent's views into the inheriting, which not the case anymore since odoo/enterprise@acdca428d7543530177b7368ca9baddfb340e97c This behavior has become problematic because of how translations work. To illustrate, create a report, put in some text, save. Then, add some style to that text (making it bold for example) The result is that in other language than in the base one, the report looks as if it weren't edited: there is no style, no bold text. This was due to multiple parts of the code: 1. translate.py doesn't take into account tags or style to produce terms, only the text 2. fields.py tries to match an old term with a new term at write time with some kind of similarity threshold 3. When getting a field's translated terms, we cannot know whether those terms come from the an actual translation in DB, or from the base language's default Now that customizations are stored in the form of an inheriting view, with xpaths, we can go back to the standard odoo's behavior for translations: the inheriting view has its own terms, and must be translated individually. This commit is considered the best of two evils: 1. losing terms when editing 2. not modifying translations, even though the semantic structure has changed opw-4389993 Forward-Port-Of: odoo/enterprise#75888