Daily updates from Odoo
Navigate
Branch
Monday, November 28, 2022
15 changes
Enhancements to existing features
The spreadsheet features in Documents and Spreadsheet Edition were updated to stay compatible with the latest spreadsheet engine. This helps preserve existing spreadsheet, pivot, list, and collaboration behavior while benefiting from upstream reliability and usability improvements.
The Helpdesk rating form now uses the standard layout shared with other Odoo apps. This keeps the user experience more consistent, with the comment field displayed in a narrower half-window layout rather than a Helpdesk-specific full-width customization.
Original PR description
rating.rating form view: The customization used in helpdesk is removed to uniformize this form with other apps. The cosmetic change in the form should be done directly in rating.rating. The result here is that the comment field will only takes half the window in the helpdesk module (as it was the case in the project module). Community PR: odoo/odoo#104250 task-3034806
Resolved issues and error corrections
The online shop now correctly blocks accessory and optional products from being sold when they have a zero price. This helps avoid accidental free sales and protects revenue when product pricing is incomplete or incorrect.
Original PR description
This commit fixes zero priced accessory and optional products task-2983615
Features or functions removed from Odoo
The unused Event Sales Dashboard module has been removed because its reporting fields, custom grouping logic, and remaining view were no longer used. This reduces maintenance overhead without affecting active business workflows.
Original PR description
All fields and the override of `read_group` of `EventSaleReport` is not used since 70412a6f908d04985d93ec21f5031c341d3eabc8. Then remove it. https://github.com/odoo/odoo/pull/104863 https://github.com/odoo/upgrade/pull/4012
Code cleanup and technical improvements
Email attachment logic for electronic invoicing has been moved from shared mail components into the relevant accounting models. This makes the system easier to maintain and reduces the risk of errors when sending localized accounting documents by email.
Original PR description
Purpose of this task is to cleanup attachment management done in composer overrides in account modules and move it to model. See community PR for more details. Task-2710804 (Mail: Clean MailThread API) Task-2792146 (Mail: Move model-dependent code from composer / template)
Test support code for document-related spreadsheet behavior was moved to the module where it belongs. This is an internal cleanup that helps keep future development and testing better organized, with no expected impact on daily users.
Original PR description
mocked methods for `documents.document` belongs to `documents_spreadsheet` module.
A new shared module centralizes the common business logic used by Odoo's document extraction features. This should make invoice, expense, purchase, and recruitment extraction easier to maintain and more consistent, with no major direct change for end users.
Original PR description
This commit adds a module that contains the common business logic of all *_extract modules.
Miscellaneous changes
`mock` is included in the standard library under `unittest.mock`. It is not listed as official dependency. Issue detected during test upgrades to 16.0 (upgrade-platform) Forward-Port-Of: odoo/enterprise#34451
Original PR description
`mock` is included in the standard library under `unittest.mock`. It is not listed as official dependency. Issue detected during test upgrades to 16.0 (upgrade-platform) Forward-Port-Of: odoo/enterprise#34451
add pot files for hr_payroll_fleet and hr_payroll_planning modules Forward-Port-Of: odoo/enterprise#34427
Original PR description
add pot files for hr_payroll_fleet and hr_payroll_planning modules Forward-Port-Of: odoo/enterprise#34427
in the account_followup module, when trying to follow up the customer, in the wizard, sms templates of all the models is listed in the sms_template_id field, actually the field is expecting to select the templates related to the model res.partner. if templates of any other model is selected error will be thrown as failed to render template cannot be done. So its better to apply the domain similar to template_id field in the model. - Accounting -> Customers -> Follow-up Reports - Select a
Original PR description
in the account_followup module, when trying to follow up the customer, in the wizard, sms templates of all the models is listed in the sms_template_id field, actually the field is expecting to select the templates related to the model res.partner. if templates of any other model is selected error will be thrown as failed to render template cannot be done. So its better to apply the domain similar to template_id field in the model. - Accounting -> Customers -> Follow-up Reports - Select and open any customer - Click on Follow Up button in form - Tick SMS in wizard, select random template from sms template field  Forward-Port-Of: odoo/enterprise#33779
[FIX] documents_spreadsheet: send user id when joining spreadsheet(https://github.com/odoo/enterprise/pull/34254/commits/e2efce48ecf34887a047255edfa6bab12a3e28a0) When a user joins a spreadsheet collaborative session, he doesn't correctly send its id. As a consequence, the user count displayed at the top right always stays to "1" no matter the number of users. Note: I can't write a proper/complete test because the function sending the `CLIENT_JOINED` message to all other users is debou
Original PR description
[FIX] documents_spreadsheet: send user id when joining spreadsheet(https://github.com/odoo/enterprise/pull/34254/commits/e2efce48ecf34887a047255edfa6bab12a3e28a0) When a user joins a spreadsheet collaborative session, he doesn't correctly send its id. As a consequence, the user count displayed at the top right always stays to "1" no matter the number of users. Note: I can't write a proper/complete test because the function sending the `CLIENT_JOINED` message to all other users is debounced with the owl `debounce` helper for which no mocking utility exists. Forward-Port-Of: odoo/enterprise#34320 Forward-Port-Of: odoo/enterprise#34254
currently for the module l10n_lt_saft icon is specified as empty in the manifest and thus when trying to open the apps from the apps menu, it throws exception. Versions: 15 and above 1. Open apps menu 2. Search for l10n_lt_saft 3. Try open the form of the app 4. Exception will be raised.  Forward-Port-Of: odoo/enterprise#34371
Original PR description
currently for the module l10n_lt_saft icon is specified as empty in the manifest and thus when trying to open the apps from the apps menu, it throws exception. Versions: 15 and above 1. Open apps menu 2. Search for l10n_lt_saft 3. Try open the form of the app 4. Exception will be raised.  Forward-Port-Of: odoo/enterprise#34371
In the Barcode App, when a picking's type operation is selected, it displays the picking's kanban view. On the top of that, there is a message, "Scan a transfer or a product to filter your records". This message made sense when the focus was by default on the searchbar, but since #31306, it's not the case anymore as we prefer to catch the scan event to call `filter_on_barcode`. This method, `filter_on_barcode`, filters the pickings by the scanned product (also by the package but it isn't writte
Original PR description
In the Barcode App, when a picking's type operation is selected, it displays the picking's kanban view. On the top of that, there is a message, "Scan a transfer or a product to filter your records". This message made sense when the focus was by default on the searchbar, but since #31306, it's not the case anymore as we prefer to catch the scan event to call `filter_on_barcode`. This method, `filter_on_barcode`, filters the pickings by the scanned product (also by the package but it isn't written in the message) but doesn't filter by the picking's name. This commit fixes that, so the user can scan the picking's barcode to display only this picking. task-3081480 Forward-Port-Of: odoo/enterprise#34377
When invoicing subscription with a payment token in automatic mode (i.e. cron), once the invoice has been created we're going to: 1. issue a payment request (`_do_payment()`) and commit This will call the transaction callback method, in our case `reconcile_pending_transaction()`, which will update the next invoice date (1st time) 2. handle the result of that request (either success or failure) and commit 3. Later, the transaction post-processing will see the transaction and proces
Original PR description
When invoicing subscription with a payment token in automatic mode (i.e. cron), once the invoice has been created we're going to: 1. issue a payment request (`_do_payment()`) and commit This will…
When invoicing subscription with a payment token in automatic mode (i.e. cron), once the invoice has been created we're going to: 1. issue a payment request (`_do_payment()`) and commit This will call the transaction callback method, in our case `reconcile_pending_transaction()`, which will update the next invoice date (1st time) 2. handle the result of that request (either success or failure) and commit 3. Later, the transaction post-processing will see the transaction and process it. In case the payment request succeed (1), but the method that handle it's result crash (2) we're going to unlink the draft invoice. As we've committed after the payment succeeded but unlinked the invoice, when the transaction the transaction is post-processed (3) it won't have any invoice; so we're creating a new invoice and forcing update of the next invoice date (2nd time). The result is that the subscription next invoice date is updated twice. This commit ensure we don't delete the invoice if the payment succeeded and the callback method as been called, even if later down the road the crash for some other reason. The transaction post-processing will then see a transaction with a "draft" invoice, that he's going to post before creation the payment and reconciling them; but will NOT update the next invoice date. opw-3051424 Forward-Port-Of: odoo/enterprise#34277
Stepts to reproduce: - In the sales app > Quotations > create. - Inside the quotation form change the quotation template without having any Pricelist selected. Issue: It throws and error with a Traceback that says that we cannot have a rounding of 0.0. We got 0.0 when we don't have any pricelist in the order. Solution: We check that the quotation has a pricelist before cheking if the subtotal is good. opw-3024133 Forward-Port-Of: odoo/enterprise#32887
Original PR description
Stepts to reproduce: - In the sales app > Quotations > create. - Inside the quotation form change the quotation template without having any Pricelist selected. Issue: It throws and error with a Traceback that says that we cannot have a rounding of 0.0. We got 0.0 when we don't have any pricelist in the order. Solution: We check that the quotation has a pricelist before cheking if the subtotal is good. opw-3024133 Forward-Port-Of: odoo/enterprise#32887