Tuesday, October 15, 2024
79 changes · master
Enhancements to existing features
This change standardizes how Odoo's internal model classes are named so they match the business objects they represent. It is mainly an internal improvement that makes the codebase more consistent and prepares it for future developer productivity improvements such as better typing support.
Original PR description
There are 3 commits in this pr. The first one corresponds to the feature and the addition of the file migration script, the second one is the result of the script and the third one is the adaptations…
There are 3 commits in this pr. The first one corresponds to the feature and the addition of the file migration script, the second one is the result of the script and the third one is the adaptations to be made after the script.
===================================
[IMP] *: adapt model class names to correspond to model names
The purpose is to remove the attribute `_name` from model classes, and derive the model name from its class name. This will lead to more consistent class naming, and will ease the process of making Odoo code more Pythonic.
The script updates every class name to match the new convention. The name of a model (**dotcase**) is determined by the name of its class (**camelcase**) as follows. Each capital letter is lowercased and is preceded by a period, unless it is the first one or is itself preceded by an underscore. The use of underscores in model names is now discouraged.
```
res.users <=> ResUsers
ir.ui.view <=> IrUiView
ir.config_parameter <=> IrConfig_parameter
e.g <=> EG
```
The `_name` attribute on model classes are removed, except in the case where the model name cannot be derived from the class name. The `_inherit` attribute is no longer used as a fallback for the model name, and only the `list` variant is now accepted.
For instance,
```py
class FieldConverter(models.AbstractModel):
_name = 'ir.qweb.field'
class IntegerConverter(models.AbstractModel):
_name = 'ir.qweb.field.integer'
_inherit = 'ir.qweb.field'
class Integer(models.AbstractModel):
_name = 'ir.qweb.field.integer'
_inherit = 'ir.qweb.field.integer'
```
becomes:
```py
class IrQwebField(models.AbstractModel):
class IrQwebFieldInteger(models.AbstractModel):
_inherit = ['ir.qweb.field']
class IrQwebFieldInteger(models.AbstractModel):
_inherit = ['ir.qweb.field.integer']
```
===================================
Renaming is a first step to set up typing. All model classes will soon be available at the root of the addons. We will not make any changes to the directory structure.
Soon the syntax for extending a model will become:
```py
from odoo import fields
from odoo.addons import base
class IrQwebFieldInteger(base.IrQwebFieldInteger):
```This change moves a shared JSON conversion helper into a more appropriate core location. It makes future maintenance clearer for developers without changing business workflows or user-facing behavior.
Original PR description
Since odoo/odoo@1ecb0641efead9966faafb853c1e03138a49f111 `json_default` is no longer entirely related to dates anymore. Besides, if you want to a new object to implement the JSON serialization for, which has nothing to do with dates, it's weird to have to add it in tools/date_utils. I therefore suggest to move this in tools/json rather than tools/date_utils
The mailing contact form is easier to use with clearer guidance on the Title field. Users can also now see all subscriptions directly from the Subscriptions page, making contact subscription details more accessible.
Original PR description
### Purpose: Improve the form view ### After this PR: - Added placeholder on Title field - List of all subscriptions will be displayed inside 'Subscriptions' page Task-4138413
The email template form no longer shows a separate custom delete button, making the interface cleaner and less confusing. The delete confirmation dialog also receives a small usability refinement to make the action feel more consistent.
Original PR description
Remove the custom delete button from email templates' form view. And a tiny UI/UX change in delete confirmation dialog. Task-4231737
The planning time-off module's automated tests were moved to a newer testing framework. This helps keep future maintenance more reliable without changing day-to-day user behavior.
Original PR description
Purpose of this PR: This PR aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task: 3818666
The accounting reports tests now set the country before applying country-based availability rules. This keeps the test process aligned with the latest validation requirements and helps prevent avoidable failures during development.
Original PR description
In the community PR, a constraint on the availability_condition was added, where if availability_condition is set to country, the country_id should be set. Therefore, in tests where the availability condition is set to country, the country should be set before. task-4160643
This update standardizes internal class names so they better match the related Odoo accounting models. It helps developers maintain the accounting code more easily without changing day-to-day user workflows.
Original PR description
see: https://github.com/odoo/odoo/pull/178200
Resolved issues and error corrections
List views no longer show a misleading currency aggregation error when users display monetary values without totaling the column. This prevents unnecessary confusion while keeping the warning available when aggregation is actually used.
Original PR description
### Impacted versions: 16.0 ### Steps to reproduce: 1. Create list view 2. Use the monetary widget for a column with various currencies. 3. Do not aggregate the column. ### Bug Fix Description: **Bug…
### Impacted versions: 16.0 ### Steps to reproduce: 1. Create list view 2. Use the monetary widget for a column with various currencies. 3. Do not aggregate the column. ### Bug Fix Description: **Bug Description:** Previously, in the `web` module's `list_render`, an issue occurred where an error message was incorrectly being displayed below a table column with multiple currencies, even when the column wasn't being aggregated. This behavior was misleading and could confuse users, as the error message appeared even when it wasn't relevant. **Root Cause:** The error message was triggered regardless of whether the column was being aggregated by the user. This resulted in incorrect behavior and an unnecessary error display. **Resolution:** In this PR, the issue has been addressed by modifying the error display logic. The error message will no longer appear if the user does not choose to aggregate the column. This enhancement ensures that the error message is contextually relevant and only displayed when aggregation is being attempted on the column. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Task: 41734 Odoo-task: 1239 Description of the issue/feature this PR addresses: This task was created to modify the demo data for Argentina, to avoid using real partner information except for their VAT number. Current behavior before PR: Desired behavior after PR is merged: Edit the demo data with fake information except for the VAT number. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182780 Forward-Port-Of:
Original PR description
Task: 41734 Odoo-task: 1239 Description of the issue/feature this PR addresses: This task was created to modify the demo data for Argentina, to avoid using real partner information except for their VAT number. Current behavior before PR: Desired behavior after PR is merged: Edit the demo data with fake information except for the VAT number. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182780 Forward-Port-Of: odoo/odoo#175390
Module names, categories, and summaries were updated across service-related apps such as Projects, Timesheets, Helpdesk, Field Service, and Planning. This improves consistency and makes the apps easier to understand in Odoo’s app listings without changing business workflows.
Original PR description
Cleaning of the name, category and summary of every module linked to services applications (project, timesheet, helpdesk, field service, planning) taskid:3524126
This update standardizes the names, categories, and short descriptions of service-related Odoo modules. It makes app listings clearer and more consistent for users browsing project, timesheet, helpdesk, field service, and planning features.
Original PR description
Cleaning of the name, category and summary of every module linked to services applications (project, timesheet, helpdesk, field service, planning) taskid:3524126
This fix ensures companies are listed in the expected order in account reports, with the main company shown before its branches. This helps keep report results consistent and avoids confusion when reviewing multi-company data.
Original PR description
Companies will be returned main first then branches. reshuffling the expected results
This commit hides the unit price of products in the catalog, in case that the catalog was opened from a manufacturing or a repair order. This is because the catalog in this case is used to add a component so the price information is irrelevant. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182575
Original PR description
This commit hides the unit price of products in the catalog, in case that the catalog was opened from a manufacturing or a repair order. This is because the catalog in this case is used to add a component so the price information is irrelevant. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182575
In the new IoT image we use Chromium instead of Firefox, however it comes bundled with some extensions, namely uBlock, which use up disk space in the background. This leads to the `/tmp` directory getting full, which causes various errors and instability. After this change, the `/tmp` directory only reaches around 50% capacity, even after many restarts and webpage visits. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/
Original PR description
In the new IoT image we use Chromium instead of Firefox, however it comes bundled with some extensions, namely uBlock, which use up disk space in the background. This leads to the `/tmp` directory getting full, which causes various errors and instability. After this change, the `/tmp` directory only reaches around 50% capacity, even after many restarts and webpage visits. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183333 Forward-Port-Of: odoo/odoo#182883
**Steps:** - Create a product with two variants (e.g., Steel & White and Aluminum & White). - Enable 'Product Reference Price' in the settings. - Set the base_unit_price of the 'Steel & White' variant to 0. - Go to the product page on the website and observe that the base unit price disappears for all variants, even though it should be displayed for the other variants. **Issue:** - The base_unit_price for product variants was not being displayed when the base_unit_price of one variant wa
Original PR description
**Steps:** - Create a product with two variants (e.g., Steel & White and Aluminum & White). - Enable 'Product Reference Price' in the settings. - Set the base_unit_price of the 'Steel & White'…
**Steps:** - Create a product with two variants (e.g., Steel & White and Aluminum & White). - Enable 'Product Reference Price' in the settings. - Set the base_unit_price of the 'Steel & White' variant to 0. - Go to the product page on the website and observe that the base unit price disappears for all variants, even though it should be displayed for the other variants. **Issue:** - The base_unit_price for product variants was not being displayed when the base_unit_price of one variant was set to 0. This caused the price to disappear for all variants in the template, even when other variants had valid base_unit_price values. **Cause:** The condition in the template was relying on a falsy check, which incorrectly evaluated 0 as a falsy value and prevented the display of base_unit_price for all variants, including those with valid prices. **Fix:** The condition in the template was updated to check for the existence of base_unit_price explicitly using if condition effectively. This ensures that even when base_unit_price is 0, it will still be displayed, while preventing the field from disappearing for other variants. Affected Version: 17.0~master opw-4061530 Forward-Port-Of: odoo/odoo#183281
Before this commit: =================== - The kitchen order ticket was not printing correctly when the kiosk was configured with online payment, the ticket printed with incomplete or incorrect details. After this ticket: ================ - The kitchen order ticket now prints correctly when using kiosk self order. - Ticket layout has been improved, with proper margin and padding adjustments for better readability. Task- 4182015 Forward-Port-Of: odoo/odoo#180143
Original PR description
Before this commit: =================== - The kitchen order ticket was not printing correctly when the kiosk was configured with online payment, the ticket printed with incomplete or incorrect details. After this ticket: ================ - The kitchen order ticket now prints correctly when using kiosk self order. - Ticket layout has been improved, with proper margin and padding adjustments for better readability. Task- 4182015 Forward-Port-Of: odoo/odoo#180143
Before this commit, the commit 5045bd712f21e2f92e97ab9cb8a7221e0340ca54 avoid displayed the warning message in the chatter and alters the description field of applicant model to remove the warning message as well. The problem is the update on the description field does not take into account the custom fields added to the website form and also remove them. This commit makes sure the warning message is not added in the chatter and description instead of letting the warning message in the descri
Original PR description
Before this commit, the commit 5045bd712f21e2f92e97ab9cb8a7221e0340ca54 avoid displayed the warning message in the chatter and alters the description field of applicant model to remove the warning message as well. The problem is the update on the description field does not take into account the custom fields added to the website form and also remove them. This commit makes sure the warning message is not added in the chatter and description instead of letting the warning message in the description and erased it afterwards. Forward-Port-Of: odoo/odoo#178786
Various v18 bugfixes for MRP before the feature freeze. Current behaviour: 1. HTML help string markup for empty reports don't get parsed in some cases (such as the forecasted inventory report). 2. Replenishments sidepanel is expanded by default. Desired behaviour: 1. HTML help string markup gets parsed for every report view. 2. Replenishments sidepanel is collapsed by default. Task ID: [4154879](https://www.odoo.com/odoo/966/tasks/4154879) Forward-Port-Of: odoo/odoo#180081
Original PR description
Various v18 bugfixes for MRP before the feature freeze. Current behaviour: 1. HTML help string markup for empty reports don't get parsed in some cases (such as the forecasted inventory report). 2. Replenishments sidepanel is expanded by default. Desired behaviour: 1. HTML help string markup gets parsed for every report view. 2. Replenishments sidepanel is collapsed by default. Task ID: [4154879](https://www.odoo.com/odoo/966/tasks/4154879) Forward-Port-Of: odoo/odoo#180081
opw-4224602 Forward-Port-Of: odoo/odoo#183559
Original PR description
opw-4224602 Forward-Port-Of: odoo/odoo#183559
When installing Event via the Apps menu, you actually install website_event (and therefore Website). This means that the next action the user has to take is installing a theme. In the case of a demo setup, the cron for the mail scheduler of Event will launch immediately post-install and will run for a rather long time, preventing any other module from installing (because module installations are blocked whilst a cron is running). This means that after installing the Website event in a d
Original PR description
When installing Event via the Apps menu, you actually install website_event (and therefore Website). This means that the next action the user has to take is installing a theme. In the case of a demo setup, the cron for the mail scheduler of Event will launch immediately post-install and will run for a rather long time, preventing any other module from installing (because module installations are blocked whilst a cron is running). This means that after installing the Website event in a demo setup, the user is the prevented from finishing the website setup until the cron is finished. This commit introduces a 'grace period' of 15min until the cron first runs, making it possible to finish the website setup right away. Forward-Port-Of: odoo/odoo#182668 Forward-Port-Of: odoo/odoo#182488
Steps to reproduce: 1. Create a live session for a 'Quiz about your company' survey 2. Add images to your answers 2. Complete it with one user 3. Review your answer in the last 4. The images are getting overlap Technical Reason: on the user-side results page, images that were not properly handled were displayed at their default size. After this commit: it should be perfectly aligned. Task-4208130 Forward-Port-Of: odoo/odoo#181386
Original PR description
Steps to reproduce: 1. Create a live session for a 'Quiz about your company' survey 2. Add images to your answers 2. Complete it with one user 3. Review your answer in the last 4. The images are getting overlap Technical Reason: on the user-side results page, images that were not properly handled were displayed at their default size. After this commit: it should be perfectly aligned. Task-4208130 Forward-Port-Of: odoo/odoo#181386
Community-side fix for creating move lines instead of moves for production backorders. This change ensures that product quantity which was *intended* to be used by one production will rightly get reserved by that production's backorder. Additionally, we now use more care when marking moves as picked because this field has an inverse which will mark all of the move's move lines as consumed / done, despite them being incomplete. opw-4148050 Forward-Port-Of: odoo/odoo#182960 Forward-Po
Original PR description
Community-side fix for creating move lines instead of moves for production backorders. This change ensures that product quantity which was *intended* to be used by one production will rightly get reserved by that production's backorder. Additionally, we now use more care when marking moves as picked because this field has an inverse which will mark all of the move's move lines as consumed / done, despite them being incomplete. opw-4148050 Forward-Port-Of: odoo/odoo#182960 Forward-Port-Of: odoo/odoo#180617
Steps to reproduce: - Project > Pick any task > Debug Mode - Studio > View tab > Tick 'Show invisible elements' - Scroll to 'Sales Order' and click it - Untick 'Invisible' then tick and untick readonly - Close > you should have a Sales Order field on the task - Click to change it's value An error occurs because the 'commercial_partner_id' field was removed from task in 17.0 in dcbdb6e690f29bc5327d7067688c93071d9a6b2d. Because of this the domain which filters 'Sales Order' (which contain
Original PR description
Steps to reproduce: - Project > Pick any task > Debug Mode - Studio > View tab > Tick 'Show invisible elements' - Scroll to 'Sales Order' and click it - Untick 'Invisible' then tick and untick readonly - Close > you should have a Sales Order field on the task - Click to change it's value An error occurs because the 'commercial_partner_id' field was removed from task in 17.0 in dcbdb6e690f29bc5327d7067688c93071d9a6b2d. Because of this the domain which filters 'Sales Order' (which contains this field) cannot be evaluated. Since the field is still available on the sale_order model, we can simply invert the child_of relation: from sale_order.partner_id child_of task.commercial_partner_id to sale_order.commercial_partner_id parent_of task.partner_id Which should serve essentially the same purpose. opw-4199947 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183523 Forward-Port-Of: odoo/odoo#182945
<img width="676" alt="Screenshot 2024-10-14 at 10 01 31" src="https://github.com/user-attachments/assets/abe73eca-145c-4c65-80fd-41477892f0cc"> Forward-Port-Of: odoo/odoo#183361
Original PR description
<img width="676" alt="Screenshot 2024-10-14 at 10 01 31" src="https://github.com/user-attachments/assets/abe73eca-145c-4c65-80fd-41477892f0cc"> Forward-Port-Of: odoo/odoo#183361
Description of the issue this commit addresses: Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one but when that change was made, the computation of the number of items on the dashboard was not changed so it was still counting the amount of account.move. line there was in the account.move items that were shown in the view resulting in wrong totals. --- Steps to reproduce: 1. Install a
Original PR description
Description of the issue this commit addresses: Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one…
Description of the issue this commit addresses:
Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one but when that change was made, the computation of the number of items on the dashboard was not changed so it was still counting the amount of account.move. line there was in the account.move items that were shown in the view resulting in wrong totals.
---
Steps to reproduce:
1. Install account
2. Create new Vendor Bill with a split payment term ("30% now, Balance 60 Days" for example) on today's date for Bill Date.
3. Go to the dashboard, click the <[X] To Pay> button.
4. the amount of moves in the view that is opened with the button is one above the value of "X" in the button.
This is due to using a split payment term that creates two installment for a single vendor bill hence counting one more aml than there are moves.
---
Desired behavior after this commit is merged:
The right amount of To Pay and Late moves is shown at all times.
---
Enterprise PR: https://github.com/odoo/enterprise/pull/70725
No task
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#181535Versions -------- - saas-17.2+ Steps ----- 1. Go to eCommerce; 2. go to a product page with variants; 3. open editor; 4. drag & drop a "Products" block from Dynamic Content; 5. click on the newly added block; 6. set filter to "Recently Viewed Products"; 7. save; 8. change an attribute of the current product; 9. use the added carousel to go back to the previous variant. Issue ----- Nothing happens. Cause ----- Commit 016a72bae9c3 changed the event listener on website_sale
Original PR description
Versions -------- - saas-17.2+ Steps ----- 1. Go to eCommerce; 2. go to a product page with variants; 3. open editor; 4. drag & drop a "Products" block from Dynamic Content; 5. click on the newly…
Versions -------- - saas-17.2+ Steps ----- 1. Go to eCommerce; 2. go to a product page with variants; 3. open editor; 4. drag & drop a "Products" block from Dynamic Content; 5. click on the newly added block; 6. set filter to "Recently Viewed Products"; 7. save; 8. change an attribute of the current product; 9. use the added carousel to go back to the previous variant. Issue ----- Nothing happens. Cause ----- Commit 016a72bae9c3 changed the event listener on website_sale from `hashchange` to `popevent` with a check on the event's `state?.newURL` attribute. Issue is that this will always be `undefined`, as there's no logic in place to push or replace states[^1] when viewing products. Solution -------- Revert the change, and have the listener trigger on `hashchange` events[^2] again. > [!Note] > In the future we could consider moving away from using the URL hash property[^3] for storing product attribute ids to a more conventional practice, as was intended by the commit that made this change. opw-4150284 [^1]: https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent/state [^2]: https://developer.mozilla.org/en-US/docs/Web/API/Window/hashchange_event [^3]: https://developer.mozilla.org/en-US/docs/Web/API/URL/hash Forward-Port-Of: odoo/odoo#183373 Forward-Port-Of: odoo/odoo#183210
This is more a theoretical issue than a real issue per se. The list renderer has a flag (`useMagicColumnWidths`) that allows to disable the column widths logic. It is enabled by default, and there's only one usecase in Odoo where we disable it (and this usecase is very custom, and doesn't allow to d&d records). However, when the feature is disabled, the table layout is broken when the user drags a record. This commit is a simple patch that ensures that the layout of the list remains intact wh
Original PR description
This is more a theoretical issue than a real issue per se. The list renderer has a flag (`useMagicColumnWidths`) that allows to disable the column widths logic. It is enabled by default, and there's only one usecase in Odoo where we disable it (and this usecase is very custom, and doesn't allow to d&d records). However, when the feature is disabled, the table layout is broken when the user drags a record. This commit is a simple patch that ensures that the layout of the list remains intact when drag&dropping a record, whether the column widths logic is enabled or not. 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#183546
### Issue: When a sale order made from the website with a pickup point (for instance using a sendcloud delivery method) is confirmed, a new partner is created to mix the data of the partner making the order and the address of the pickup point. If the partner is named Bob, this new partner will be named Bob, Bob. It woul dbe much clearer if he was named: Bob, pickup point name. opw-4181787 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-P
Original PR description
### Issue: When a sale order made from the website with a pickup point (for instance using a sendcloud delivery method) is confirmed, a new partner is created to mix the data of the partner making the order and the address of the pickup point. If the partner is named Bob, this new partner will be named Bob, Bob. It woul dbe much clearer if he was named: Bob, pickup point name. opw-4181787 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183164 Forward-Port-Of: odoo/odoo#182977
Forward-Port-Of: odoo/odoo#183000
Original PR description
Forward-Port-Of: odoo/odoo#183000
A frequent issue is the GC cron times-out when deleting attachments, due to a lack of index on the Fkey `message_main_attachment_id`, forcing Postgres to do a `Seq.Scan` on potentially really large tables to check if it needs to set the Fkey to `NULL`. Therefor we add the missing index. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183302
Original PR description
A frequent issue is the GC cron times-out when deleting attachments, due to a lack of index on the Fkey `message_main_attachment_id`, forcing Postgres to do a `Seq.Scan` on potentially really large tables to check if it needs to set the Fkey to `NULL`. Therefor we add the missing index. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183302
On mobile, whwen a domain is selected in the SearchPanel, there is a red dot that indicates there is a domain applied. This red dot is useless because we actually see that the domain is selected. This commit removes it. task-4246980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183507 Forward-Port-Of: odoo/odoo#183136
Original PR description
On mobile, whwen a domain is selected in the SearchPanel, there is a red dot that indicates there is a domain applied. This red dot is useless because we actually see that the domain is selected. This commit removes it. task-4246980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183507 Forward-Port-Of: odoo/odoo#183136
## Pull Request HOOT (PRHOOT) - part 25 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10
Original PR description
## Pull Request HOOT (PRHOOT) - part 25 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PRHOOT) - part 25 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Part 15: https://github.com/odoo/odoo/pull/160292 / https://github.com/odoo/enterprise/pull/59971 Part 15.5: https://github.com/odoo/odoo/pull/166463 Part 16: https://github.com/odoo/odoo/pull/166311 Part 17: https://github.com/odoo/odoo/pull/168328 Part 18: https://github.com/odoo/odoo/pull/171004 / https://github.com/odoo/enterprise/pull/65657 Part 19: https://github.com/odoo/odoo/pull/171242 / https://github.com/odoo/enterprise/pull/65767 Part 20: https://github.com/odoo/odoo/pull/173332 / https://github.com/odoo/enterprise/pull/66895 Part 21: https://github.com/odoo/odoo/pull/174337 Part 22: https://github.com/odoo/odoo/pull/176777 / https://github.com/odoo/enterprise/pull/68721 Part 23: https://github.com/odoo/odoo/pull/179660 / https://github.com/odoo/enterprise/pull/69728 Part 24: https://github.com/odoo/odoo/pull/181971 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183667 Forward-Port-Of: odoo/odoo#183358
The check is comparing an empty recordset to False, which is not equal. Credits to @JZorko https://github.com/odoo/odoo/pull/171478 task-no Forward-Port-Of: odoo/odoo#183545
Original PR description
The check is comparing an empty recordset to False, which is not equal. Credits to @JZorko https://github.com/odoo/odoo/pull/171478 task-no Forward-Port-Of: odoo/odoo#183545
Issue: ====== webp images doesn't appear in outlook Steps to reproduce the issue: ============================= - Create a new mass mailing - Add cover block and replace the background image with a .webp one - Add text-image block and replace the image with a .webp one - Test it and open the email with outlook desktop - The images doesn't appear in the email. Solution: ========= We replace the .webp images when converting inline. For image elements: we just create another img
Original PR description
Issue: ====== webp images doesn't appear in outlook Steps to reproduce the issue: ============================= - Create a new mass mailing - Add cover block and replace the background image with a .webp one - Add text-image block and replace the image with a .webp one - Test it and open the email with outlook desktop - The images doesn't appear in the email. Solution: ========= We replace the .webp images when converting inline. For image elements: we just create another img element with the png version. For background-image: we create the png image and we replace the url of background-image style with the dataURL of the canvas. opw-3776054 Forward-Port-Of: odoo/odoo#177216
When closing the PoS the reordering rules where not triggered correctly Steps to reproduce: ------------------- * Create a product and add a reordering rules to it. (min_qty 1) * Make sure the product has no quantity on hand * Sell the product in PoS, and close the session > Observation: No purchase order is made Why the fix: ------------ When closing the session we make sure to trigger the scheduler that will create required purchase order and manufacturing orders. opw-4133635
Original PR description
When closing the PoS the reordering rules where not triggered correctly Steps to reproduce: ------------------- * Create a product and add a reordering rules to it. (min_qty 1) * Make sure the product has no quantity on hand * Sell the product in PoS, and close the session > Observation: No purchase order is made Why the fix: ------------ When closing the session we make sure to trigger the scheduler that will create required purchase order and manufacturing orders. opw-4133635 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183570 Forward-Port-Of: odoo/odoo#182789
Since [1], when using a website boxed layout, the Bootstrap $body-bg variable was used as the color of the *box* instead of the body itself. Indeed, it made sense as default Bootstrap components started to use that $body-bg value themselves, supposing those components would be placed in the body by default, and not a colored main box. The color of the body itself was then forced to the user-chosen Odoo color, by setting the --body-bg CSS variable Bootstrap sets up and which at the time, was o
Original PR description
Since [1], when using a website boxed layout, the Bootstrap $body-bg variable was used as the color of the *box* instead of the body itself. Indeed, it made sense as default Bootstrap components…
Since [1], when using a website boxed layout, the Bootstrap $body-bg variable was used as the color of the *box* instead of the body itself. Indeed, it made sense as default Bootstrap components started to use that $body-bg value themselves, supposing those components would be placed in the body by default, and not a colored main box. The color of the body itself was then forced to the user-chosen Odoo color, by setting the --body-bg CSS variable Bootstrap sets up and which at the time, was only used for that. However, since [2], the new Bootstrap version started to use that CSS variable instead of the $body-bg SCSS variable to style components. Therefore, in boxed layout, this was broken: the components used the "color behind the box" instead of the "color of the box". Commit [3] solved a specific consequence of this issue: the tables, in boxed layouts, would use the "color behind the box" (for instance, on the shop page) breaking the design. It fixed the issue by restoring the table transparent background color as wanted (not only in those boxed layouts). But other components that use var(--body-bg) would still be broken... (un)fortunately, it seems to not be the case as we force those variables ourselves to $body-bg instead of var(--body-bg) (which will be changed in master to follow Bootstrap conventions). [1]: https://github.com/odoo/odoo/commit/977868f5e0f50937499c89efacadf1d30ed19b5d [2]: https://github.com/odoo/odoo/commit/058212e12b5079eba870bde9775fe98f27928935 [3]: https://github.com/odoo/odoo/commit/17592b131001647cc4c8028db8c1dacb05797c0b Related to opw-4203976 Forward-Port-Of: odoo/odoo#183132
To avoid confusion, the field previously labeled as 'Purchase Order' has been renamed to 'Purchase Order Warning'. This clarifies that the field relates to triggering purchase warnings, not managing purchase orders themselves. This change only affects the field label, ensuring consistency in user expectations without altering the filter content or behavior. OPW-4141054 Forward-Port-Of: odoo/odoo#183352 Forward-Port-Of: odoo/odoo#180176
Original PR description
To avoid confusion, the field previously labeled as 'Purchase Order' has been renamed to 'Purchase Order Warning'. This clarifies that the field relates to triggering purchase warnings, not managing purchase orders themselves. This change only affects the field label, ensuring consistency in user expectations without altering the filter content or behavior. OPW-4141054 Forward-Port-Of: odoo/odoo#183352 Forward-Port-Of: odoo/odoo#180176
In this commit: https://github.com/odoo/odoo/commit/43027a34a6e51901ff869beec2bba74218b29356 They added a new button to open the form view directly. If the view has an attribute open_form_view to True or being in debug mode. Since we manually added a button to do the exact same thing, let's use the button from the list view. task: 4204366 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182278
Original PR description
In this commit: https://github.com/odoo/odoo/commit/43027a34a6e51901ff869beec2bba74218b29356 They added a new button to open the form view directly. If the view has an attribute open_form_view to True or being in debug mode. Since we manually added a button to do the exact same thing, let's use the button from the list view. task: 4204366 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182278
Commit [958b41c4] added support to prevent 3rd-party iframes from loading without proper consent. As some iframes are built client-side, preventing them from loading required getting their container by their class. Those classes are stored in a set. Allowing any user to update that set does not make sense, but to make it possible for developers to update it through custos, this commit retrieves it from a method on the Website model instead of hard-coding it in the middle of a function. [958b
Original PR description
Commit [958b41c4] added support to prevent 3rd-party iframes from loading without proper consent. As some iframes are built client-side, preventing them from loading required getting their container by their class. Those classes are stored in a set. Allowing any user to update that set does not make sense, but to make it possible for developers to update it through custos, this commit retrieves it from a method on the Website model instead of hard-coding it in the middle of a function. [958b41c4]: https://github.com/odoo/odoo/commit/958b41c4acec7e1700ca4d6e0b25ee0ad2aac9f1 task-4045932 Forward-Port-Of: odoo/odoo#182961
This commit will add an underscore to a dict key to avoid any problem that might arise in the future. no task id Related commit: https://github.com/odoo/odoo/commit/2f2f5f63e8d0ab9729bffa25192a7ef9a2da5fb9 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183531
Original PR description
This commit will add an underscore to a dict key to avoid any problem that might arise in the future. no task id Related commit: https://github.com/odoo/odoo/commit/2f2f5f63e8d0ab9729bffa25192a7ef9a2da5fb9 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183531
Steps to reproduce the issue: - Have 2 different authenticated browser (one as `admin` and one as `demo`) - With the `demo browser`, change your own language to French -> Reload the main menu page - With the `admin browser`, update the demo user language from the Settings to English - Reload the page on the `demo browser`, the menus will have stayed in French while the rest of the page is translated in English Details: - Only the first query after the following step will have an issue, t
Original PR description
Steps to reproduce the issue: - Have 2 different authenticated browser (one as `admin` and one as `demo`) - With the `demo browser`, change your own language to French -> Reload the main menu page -…
Steps to reproduce the issue: - Have 2 different authenticated browser (one as `admin` and one as `demo`) - With the `demo browser`, change your own language to French -> Reload the main menu page - With the `admin browser`, update the demo user language from the Settings to English - Reload the page on the `demo browser`, the menus will have stayed in French while the rest of the page is translated in English Details: - Only the first query after the following step will have an issue, the problem corrects itself on the second refresh. - Could not reproduce on the runbot but could do it locally and on Odoo.SH (in 16.0) and on `odoo.com` free database (18.0). This issue was already discussed more than a year ago (https://github.com/odoo/odoo/pull/110207) but was finally closed without being merged. The problem can now be fully reproduced while previously, it was a bit blurry. 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#182640
Version: saas-17.4 Issue: When only one delivery method is available, the checkout process skips the delivery page and redirects directly to payment, which confuses users. Fix: Removed the redundant `can_skip_delivery_step` logic. - Updated `shop_checkout` to always go through the delivery step if the order has deliverable products. - Now checking `order_sudo._has_deliverable_products()` to determine if delivery selection is needed. - Orders with non-deliverable products skip the
Original PR description
Version: saas-17.4 Issue: When only one delivery method is available, the checkout process skips the delivery page and redirects directly to payment, which confuses users. Fix: Removed the redundant `can_skip_delivery_step` logic. - Updated `shop_checkout` to always go through the delivery step if the order has deliverable products. - Now checking `order_sudo._has_deliverable_products()` to determine if delivery selection is needed. - Orders with non-deliverable products skip the delivery step and go directly to payment. The delivery page will now be displayed regardless of the number of delivery methods, improving user experience by allowing them to review their delivery details before payment. Forward-Port-Of: odoo/odoo#182948 Forward-Port-Of: odoo/odoo#182269
Forward-Port-Of: odoo/odoo#183427 Forward-Port-Of: odoo/odoo#183367
Original PR description
Forward-Port-Of: odoo/odoo#183427 Forward-Port-Of: odoo/odoo#183367
Before this commit: =================== The payment page was being rendered multiple times due to the `onWillStart` method triggering the `startPayment` method multiple times. This led to multiple requests being sent to the Razorpay terminal for the same order. After this commit: ================== Replaced `onWillStart` with `onMounted` to initiate the `startPayment` method. This prevents duplicate requests to the Razorpay terminal for the same order, ensuring the payment process is hand
Original PR description
Before this commit: =================== The payment page was being rendered multiple times due to the `onWillStart` method triggering the `startPayment` method multiple times. This led to multiple requests being sent to the Razorpay terminal for the same order. After this commit: ================== Replaced `onWillStart` with `onMounted` to initiate the `startPayment` method. This prevents duplicate requests to the Razorpay terminal for the same order, ensuring the payment process is handled efficiently. Task- 4254682 Forward-Port-Of: odoo/odoo#183518
Before this commit, the height of the form view does not really take the whole space available in the screen as it is the case in the form view of task. This commit makes sure the height of the form view in To-Do app takes the whole screen height as task form view. Forward-Port-Of: odoo/odoo#183396
Original PR description
Before this commit, the height of the form view does not really take the whole space available in the screen as it is the case in the form view of task. This commit makes sure the height of the form view in To-Do app takes the whole screen height as task form view. Forward-Port-Of: odoo/odoo#183396
Issue 1: Previously, the chart was being overlapped by the navigation on smaller screen sizes. This commit fixes the issue by limiting the max-width for navigations and also hiding the button text for smaller screens. Issue 2: Previously, after a certain amount of data, the bar colors defaulted to black as the dataIndex exceeded the colors array. This commit fixes the issue by using the modulo operation on dataIndex with the colors array to repeat the colors, and also added additional color
Original PR description
Issue 1: Previously, the chart was being overlapped by the navigation on smaller screen sizes. This commit fixes the issue by limiting the max-width for navigations and also hiding the button text for smaller screens. Issue 2: Previously, after a certain amount of data, the bar colors defaulted to black as the dataIndex exceeded the colors array. This commit fixes the issue by using the modulo operation on dataIndex with the colors array to repeat the colors, and also added additional colors referenced from reporting. Task-4089537 Forward-Port-Of: odoo/odoo#183315 Forward-Port-Of: odoo/odoo#175704
In migration and init scripts, when loading the chart of accounts or parts of it, we should always start with the parent companies to avoid creating duplicate chart records Description of the issue/feature this PR addresses: When a new account is added and the chart is loaded for the child company before the parent, the account will be created for both companies Current behavior before PR: Desired behavior after PR is merged: see also https://github.com/odoo/enterprise/pull/71421
Original PR description
In migration and init scripts, when loading the chart of accounts or parts of it, we should always start with the parent companies to avoid creating duplicate chart records Description of the issue/feature this PR addresses: When a new account is added and the chart is loaded for the child company before the parent, the account will be created for both companies Current behavior before PR: Desired behavior after PR is merged: see also https://github.com/odoo/enterprise/pull/71421 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#182706
Before this PR, the `Browser` helper class used a `chromium_additional_args` variable to keep track of extra command line arguments. However, it's contents were overwritten by the `fullscreen()` and `enable_kiosk_mode()` functions, causing the additional arguments to be lost. This PR removes the variable and instead constructs the argument list when `open_browser` is called. It also fixes fullscreen mode in Firefox by restoring a keypress call that was removed in v18. --- I confirm I
Original PR description
Before this PR, the `Browser` helper class used a `chromium_additional_args` variable to keep track of extra command line arguments. However, it's contents were overwritten by the `fullscreen()` and `enable_kiosk_mode()` functions, causing the additional arguments to be lost. This PR removes the variable and instead constructs the argument list when `open_browser` is called. It also fixes fullscreen mode in Firefox by restoring a keypress call that was removed in v18. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183565
In the Calendar app with the Arabic language, there is no AM/PM distinction or 24-hour clock option. Users can only select a time between 1 and 12 without the ability to specify AM or PM. This issue is caused by the missing %p placeholder in the Arabic record of the res.lang.csv file. OPW-4182242 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183053 Forward-Port-Of: odoo/odoo#180858
Original PR description
In the Calendar app with the Arabic language, there is no AM/PM distinction or 24-hour clock option. Users can only select a time between 1 and 12 without the ability to specify AM or PM. This issue is caused by the missing %p placeholder in the Arabic record of the res.lang.csv file. OPW-4182242 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183053 Forward-Port-Of: odoo/odoo#180858
Steps to reproduce : - Add a second language in your website settings. - Drop a "Text" block in a new page. - Add a highlight to some text > Save. - Switch to the translation mode. - Select the highlighted text > The text highlight options are shown. - Select a text without any option > The highlight options remain displayed. Starting from [1], we allow using text options (text animations & text highlights) in the translation mode, mainly by allowing the creation of snippet editors
Original PR description
Steps to reproduce : - Add a second language in your website settings. - Drop a "Text" block in a new page. - Add a highlight to some text > Save. - Switch to the translation mode. - Select the…
Steps to reproduce : - Add a second language in your website settings. - Drop a "Text" block in a new page. - Add a highlight to some text > Save. - Switch to the translation mode. - Select the highlighted text > The text highlight options are shown. - Select a text without any option > The highlight options remain displayed. Starting from [1], we allow using text options (text animations & text highlights) in the translation mode, mainly by allowing the creation of snippet editors if the target is a text option snippet. Another fix (from [2]) was added later to exceptionally authorize the editor's creation for "invisible" elements in translate mode, with a small adaptation on `_activateSnippet()` to prevent activating invisible snippets when their related sidebar buttons are clicked. This code unintentionally leads to keeping the old editors created for a text snippet when switching to another one in the DOM. To fix this behaviour, we still need to ensure existing editors are destroyed so we only create the ones we need in translate mode. [1]: https://github.com/odoo/odoo/commit/3a149e36f7e6deaf156a7ee35e654aad61cf2e5d [2]: https://github.com/odoo/odoo/commit/67efd1d98072f36caf9c473e97984631eb6bc8a3 task-3975683 Forward-Port-Of: odoo/odoo#183245 Forward-Port-Of: odoo/odoo#168642
when a field object is not _toplevel, it may be shared with multiple registries and should be readonly in any case 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#183698 Forward-Port-Of: odoo/odoo#182859
Original PR description
when a field object is not _toplevel, it may be shared with multiple registries and should be readonly in any case 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#183698 Forward-Port-Of: odoo/odoo#182859
Before this PR: - The state field on the res_company form is not automatically populated based on the entered GST number - On the res_company and res_partner, even if there is a mismatch between the GST number and state no warning is shown After this PR: - The state field on the res_company form now automatically populates based on the entered GST number - A validation check is implemented for both res_company and res_partner forms. Users will receive a warning if there's a discrepancy be
Original PR description
Before this PR: - The state field on the res_company form is not automatically populated based on the entered GST number - On the res_company and res_partner, even if there is a mismatch between the GST number and state no warning is shown After this PR: - The state field on the res_company form now automatically populates based on the entered GST number - A validation check is implemented for both res_company and res_partner forms. Users will receive a warning if there's a discrepancy between the GST number and the corresponding state. Task ID - 4055948 Forward-Port-Of: odoo/odoo#183732 Forward-Port-Of: odoo/odoo#178910
When computing the payment method, we searched for `in_process` but now we consider them `paid`, so we're just checking for `not draft` payments instead. Related PR: odoo/odoo#178235 Runbot link: https://runbot.odoo.com/web#id=76193&model=runbot.build.error&menu_id=405 runbot-76193 Forward-Port-Of: odoo/odoo#183750
Original PR description
When computing the payment method, we searched for `in_process` but now we consider them `paid`, so we're just checking for `not draft` payments instead. Related PR: odoo/odoo#178235 Runbot link: https://runbot.odoo.com/web#id=76193&model=runbot.build.error&menu_id=405 runbot-76193 Forward-Port-Of: odoo/odoo#183750
Currently, an exception was generated when the user uploaded a non-pdf file in Quate Builder of quotation templates. error: `UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte` This commit will fix the above issue by preventing uploading non-supported files that were uploaded by users. sentry-5962839786 Forward-Port-Of: odoo/odoo#183168
Original PR description
Currently, an exception was generated when the user uploaded a non-pdf file in Quate Builder of quotation templates. error: `UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte` This commit will fix the above issue by preventing uploading non-supported files that were uploaded by users. sentry-5962839786 Forward-Port-Of: odoo/odoo#183168
PoS receipt should show fiskaly information but they are not shown Steps to reproduce: ------------------- * Setup you db with fiskaly * Start a PoS and sell any product > Observation: The receipt doesn't contain any information opw-4216415 Forward-Port-Of: odoo/enterprise#71779
Original PR description
PoS receipt should show fiskaly information but they are not shown Steps to reproduce: ------------------- * Setup you db with fiskaly * Start a PoS and sell any product > Observation: The receipt doesn't contain any information opw-4216415 Forward-Port-Of: odoo/enterprise#71779
1. Create Vendor bill and register payment 2. Create credit note for the vendor bill 4. Open the CABA entry created from vendor bill 5. Reverse Entry 6. Check DIOT report Issue: DIOT report shows negative line, but it not allowed CABA Entries should not be reverted, as the reversal generate a document with negative tax grid. They will revert automatically after the original document is reset to draft. opw-4142232 Forward-Port-Of: odoo/enterprise#71414 Forward-Port-Of: odoo/enterprise#
Original PR description
1. Create Vendor bill and register payment 2. Create credit note for the vendor bill 4. Open the CABA entry created from vendor bill 5. Reverse Entry 6. Check DIOT report Issue: DIOT report shows negative line, but it not allowed CABA Entries should not be reverted, as the reversal generate a document with negative tax grid. They will revert automatically after the original document is reset to draft. opw-4142232 Forward-Port-Of: odoo/enterprise#71414 Forward-Port-Of: odoo/enterprise#70223
The end date on the Holiday Attest (N-1) was wrong. It should be the same as the end of the notice period. Forward-Port-Of: odoo/enterprise#71780 Forward-Port-Of: odoo/enterprise#71642
Original PR description
The end date on the Holiday Attest (N-1) was wrong. It should be the same as the end of the notice period. Forward-Port-Of: odoo/enterprise#71780 Forward-Port-Of: odoo/enterprise#71642
Steps to reproduce: - Any project > Gantt view > Add any groupby filter The weekends are no longer greyed out like they were without the filter. This happens because _gantt_unavailablities in this module defers calls to the super() method which is empty unless the field is user_id. This makes sense since we don't want to get unavailability by employee if the tasks are not sorted by user, we could however use company leaves instead of leaving every day as available under other filters. opw
Original PR description
Steps to reproduce: - Any project > Gantt view > Add any groupby filter The weekends are no longer greyed out like they were without the filter. This happens because _gantt_unavailablities in this module defers calls to the super() method which is empty unless the field is user_id. This makes sense since we don't want to get unavailability by employee if the tasks are not sorted by user, we could however use company leaves instead of leaving every day as available under other filters. opw-4237953 Forward-Port-Of: odoo/enterprise#71841
1. Enable "auto-detect" on the Avatax fiscal position, 2. Go to "Abigail Peterson" contact and set "United States" as country 3. Expenses > My Expenses > New 4. Enter a description, set a total and "Abigail Peterson" as employee 5. "Create Report" > "Submit to Manager" > "Approve" > "Post Journal Entries" Issue: Validation error will raise because of the incomplete address However we only handle customer invoices and customer invoice refunds (aka credit notes) with external tax integr
Original PR description
1. Enable "auto-detect" on the Avatax fiscal position, 2. Go to "Abigail Peterson" contact and set "United States" as country 3. Expenses > My Expenses > New 4. Enter a description, set a total and "Abigail Peterson" as employee 5. "Create Report" > "Submit to Manager" > "Approve" > "Post Journal Entries" Issue: Validation error will raise because of the incomplete address However we only handle customer invoices and customer invoice refunds (aka credit notes) with external tax integrations so the constraint should only show for journal entries of this type. opw-4151193 Forward-Port-Of: odoo/enterprise#71833 Forward-Port-Of: odoo/enterprise#71543
This commit targets to fix two errors: 1. With an invoice that has a sale order related to it, when using the Addenda Autozone a traceback appeared. In attribute t-att-PODATE for the Autozone Addenda we are sending a datetime object to the strptime function of datetime which in reality it needs to receive a string object instead. This raises a TypeError Since the objective is to set a string date, we convert the date_order into a string date using strftime function from datetime mod
Original PR description
This commit targets to fix two errors: 1. With an invoice that has a sale order related to it, when using the Addenda Autozone a traceback appeared. In attribute t-att-PODATE for the Autozone Addenda…
This commit targets to fix two errors: 1. With an invoice that has a sale order related to it, when using the Addenda Autozone a traceback appeared. In attribute t-att-PODATE for the Autozone Addenda we are sending a datetime object to the strptime function of datetime which in reality it needs to receive a string object instead. This raises a TypeError Since the objective is to set a string date, we convert the date_order into a string date using strftime function from datetime module - Install 'Sales' application and 'l10n_mx_edi' module - In a company with mexican localization selected go to Sales > Quotations and create a new Order - Select a contact with the Addenda Autozone selected - Confirm it and create the corresponding invoice - Confirm the invoice and generate the CFDI 2. Traceback with invoice that have multiple sale order linked. In attribute t-att-PODATE for the Autozone Addenda is not expecting a recordset when initializing the value of sale_id, this causes a ValueError: expected singleton error when retrieving value of date_order when we create a invoice for multiple sale orders Initialize sale_id with the first order retrieved to use it task-no Forward-Port-Of: odoo/enterprise#71939 Forward-Port-Of: odoo/enterprise#71875
In migration and init scripts, when loading the chart of accounts or parts of it, we should always start with the parent companies to avoid creating duplicate chart records Forward-Port-Of: odoo/enterprise#71953 Forward-Port-Of: odoo/enterprise#71421
Original PR description
In migration and init scripts, when loading the chart of accounts or parts of it, we should always start with the parent companies to avoid creating duplicate chart records Forward-Port-Of: odoo/enterprise#71953 Forward-Port-Of: odoo/enterprise#71421
…checkout _* = website_sale_renting, website_sale_stock_renting Added the 'tourUtils.confirmOrder(),' to fix the tour. Forward-Port-Of: odoo/enterprise#71618
Original PR description
…checkout _* = website_sale_renting, website_sale_stock_renting Added the 'tourUtils.confirmOrder(),' to fix the tour. Forward-Port-Of: odoo/enterprise#71618
Before this commit the following error was observed: File "/data/build/enterprise/test_sale_subscription/tests/test_subscription_payment_integration.py", line 112, in test_subscription_invoice_automate self.assertInvoicePaid(self.invoice) File "/data/build/enterprise/test_sale_subscription/tests/test_subscription_payment_integration.py", line 66, in assertInvoicePaid self.assertEqual(invoice.amount_paid, invoice.amount_total, "Amount should match") AssertionError: 1206.3700000
Original PR description
Before this commit the following error was observed:
File "/data/build/enterprise/test_sale_subscription/tests/test_subscription_payment_integration.py", line 112, in test_subscription_invoice_automate
self.assertInvoicePaid(self.invoice)
File "/data/build/enterprise/test_sale_subscription/tests/test_subscription_payment_integration.py", line 66, in assertInvoicePaid
self.assertEqual(invoice.amount_paid, invoice.amount_total, "Amount should match")
AssertionError: 1206.3700000000001 != 1206.37 : Amount should match
Runbot errors: 100947, 100946, 100945, 100944, 100944
Forward-Port-Of: odoo/enterprise#71894
Forward-Port-Of: odoo/enterprise#71843When invoicing an order from the PoS the invoice was not signed by the government before rendering the pdf of the invoice. This lead to a missing QR Code on the invoice. Steps to reproduce: ------------------- * Install l10n_pe_edi_pos module * Open the PoS * Make an order and invoice it > Observation: The invoice should contains a QR Code attesting that the document has been signed by the government but it's not Why the fix: ------------ The issue was that the invoice was sent to
Original PR description
When invoicing an order from the PoS the invoice was not signed by the government before rendering the pdf of the invoice. This lead to a missing QR Code on the invoice. Steps to reproduce: ------------------- * Install l10n_pe_edi_pos module * Open the PoS * Make an order and invoice it > Observation: The invoice should contains a QR Code attesting that the document has been signed by the government but it's not Why the fix: ------------ The issue was that the invoice was sent to the government after the invoice was rendered. To fix it we make the call to the government manually instead of waiting for the CRON to send it. We also cancel the CRON for this specific invoice so that it is not called twice. This is based on what is done here : https://github.com/odoo/odoo/blob/647197c0eae7ef786fa3d1aeafeafd1d14fe0fae/addons/l10n_es_pos_tbai/models/pos_order.py#L18-L29 opw-4165399 Forward-Port-Of: odoo/enterprise#71926 Forward-Port-Of: odoo/enterprise#70583
Issue: When a sale order made from the website with a pickup point (for instance using a sendcloud delivery method) is confirmed, a new partner is created to mix the data of the partner making the order and the address of the pickup point. If the partner is named Bob, this new partner will be named Bob, Bob. It woul dbe much clearer if he was named: Bob, pickup point name. opw-4181787 Forward-Port-Of: odoo/enterprise#71674 Forward-Port-Of: odoo/enterprise#71567
Original PR description
Issue: When a sale order made from the website with a pickup point (for instance using a sendcloud delivery method) is confirmed, a new partner is created to mix the data of the partner making the order and the address of the pickup point. If the partner is named Bob, this new partner will be named Bob, Bob. It woul dbe much clearer if he was named: Bob, pickup point name. opw-4181787 Forward-Port-Of: odoo/enterprise#71674 Forward-Port-Of: odoo/enterprise#71567
Description of the issue this commit addresses: Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one but when that change was made, the computation of the number of items on the dashboard was not changed so it was still counting the amount of account.move. line there was in the account.move items that were shown in the view resulting in wrong totals. --- Steps to reproduce: 1. Install a
Original PR description
Description of the issue this commit addresses: Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one…
Description of the issue this commit addresses:
Since recently, the <[X] To Pay> and <[X] Late> buttons don't send the user to an account.move.line model view anymore but to an account.move model one but when that change was made, the computation of the number of items on the dashboard was not changed so it was still counting the amount of account.move. line there was in the account.move items that were shown in the view resulting in wrong totals.
---
Steps to reproduce:
1. Install account
2. Create new Vendor Bill with a split payment term ("30% now, Balance 60 Days" for example) on today's date for Bill Date.
3. Go to the dashboard, click the <[X] To Pay> button.
4. the amount of moves in the view that is opened with the button is one above the value of "X" in the button.
This is due to using a split payment term that creates two installment for a single vendor bill hence counting one more aml than there are moves.
---
Desired behavior after this commit is merged:
The right amount of To Pay and Late moves is shown at all times.
---
Note on the fix:
The fix for this issue is in the community PR of the bundle, the fix modifies a method which was overriden in enterprise and this PR addresses the override to match with the new version of the method.
---
Community PR: https://github.com/odoo/odoo/pull/181535
No task
Forward-Port-Of: odoo/enterprise#70725…ountant *: account_reports, account_online_synchronization Configuration steps on empty Bank, Misc journals should not be shown for users that do not have the Administrator/Accountant rights. They don't have the necessary rights to execute those actions anyway. This commit hide the configuration steps for non-accountant users. task-4149584 Forward-Port-Of: odoo/enterprise#71210
Original PR description
…ountant *: account_reports, account_online_synchronization Configuration steps on empty Bank, Misc journals should not be shown for users that do not have the Administrator/Accountant rights. They don't have the necessary rights to execute those actions anyway. This commit hide the configuration steps for non-accountant users. task-4149584 Forward-Port-Of: odoo/enterprise#71210
Before this commit, when the invoice consolidation option was activated and several user_id were set on subscription invoicing at the same time, a traceback was observed: ``py File "/home/arj/PycharmProjects/worktree/17.0/odoo/addons/mail/models/mail_thread.py", line 276, in create thread._message_auto_subscribe(create_values, followers_existing_policy='update') File "/home/arj/PycharmProjects/worktree/17.0/odoo/addons/mail/models/mail_thread.py", line 4138, in _message_auto_subscr
Original PR description
Before this commit, when the invoice consolidation option was activated and several user_id were set on subscription invoicing at the same time, a traceback was observed: ``py File…
Before this commit, when the invoice consolidation option was activated and several user_id were set on subscription invoicing at the same time, a traceback was observed:
``py
File "/home/arj/PycharmProjects/worktree/17.0/odoo/addons/mail/models/mail_thread.py", line 276, in create
thread._message_auto_subscribe(create_values, followers_existing_policy='update')
File "/home/arj/PycharmProjects/worktree/17.0/odoo/addons/mail/models/mail_thread.py", line 4138, in _message_auto_subscribe
res = self._message_auto_subscribe_followers(updated_values, def_ids)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/arj/PycharmProjects/worktree/17.0/enterprise/sale_subscription/models/account_move.py", line 76, in _message_auto_subscribe_followers
if salesperson and user_id == salesperson.id and user_id != self.env.user.id:
^^^^^^^^^^^^^^
File "/home/arj/PycharmProjects/worktree/17.0/odoo/odoo/fields.py", line 5154, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: res.users(56, 60)
```
Forward-Port-Of: odoo/enterprise#71478
Forward-Port-Of: odoo/enterprise#71188**Current behavior:** If you have a production opened in barcode and consume part of a component line to produce part of the final product, leave the transfer, then re-open it and confirm -> create the backorder, the resulting backorder will have split the remaining raw moves in an unintuitive manner. **Expected behavior:** The backorder should have one move for the remaining component quantity. **Steps to reproduce:** 1. Create a production for 10 of some final product consuming 1
Original PR description
**Current behavior:** If you have a production opened in barcode and consume part of a component line to produce part of the final product, leave the transfer, then re-open it and confirm -> create…
**Current behavior:**
If you have a production opened in barcode and consume part of a
component line to produce part of the final product, leave the
transfer, then re-open it and confirm -> create the backorder,
the resulting backorder will have split the remaining raw moves
in an unintuitive manner.
**Expected behavior:**
The backorder should have one move for the remaining component
quantity.
**Steps to reproduce:**
1. Create a production for 10 of some final product consuming 10
some component -> Confirm
2. Open the production in barcode, add 5 of the final product to
its line and 5 of the component to its line -> exit the
transfer view
3. Reopen the production and validate it -> create backorder
4. Open the backorder to see the odd split of the component
product's moves
**Cause of the issue:**
When creating the backorder we normally expect each component
product to be encapsulated by a single line- so the split that
occurs when we leave the transfer initially without validating
which creates 2 moves for the same product means we get 2 moves
for the component for half of the remaining quantity for that
component.
**Fix:**
Incomplete barcode lines for production transfers should get
split into additional move lines as opposed to moves.
opw-4148050
Forward-Port-Of: odoo/enterprise#71636
Forward-Port-Of: odoo/enterprise#69149Various v18 bugfixes for MRP before the feature freeze. Current behaviour: 1. Entering the Shop Floor from a WO searches the WOs in that workcenter by state by default. 2. The timer field is blank if the WO is in ready or pending states. 3. The month substring in the weekly MPS display column header shows the month of the starting date if the given period straddles two months. Desired behaviour: 1. Entering the Shop Floor from a WO reflects the same behaviour as entering from MO, which i
Original PR description
Various v18 bugfixes for MRP before the feature freeze. Current behaviour: 1. Entering the Shop Floor from a WO searches the WOs in that workcenter by state by default. 2. The timer field is blank if the WO is in ready or pending states. 3. The month substring in the weekly MPS display column header shows the month of the starting date if the given period straddles two months. Desired behaviour: 1. Entering the Shop Floor from a WO reflects the same behaviour as entering from MO, which is the suppression of the default filter. (Depends on #68419) 2. 'Pending' text is displayed if the WO is in pending state. 3. It shows the month of the end date instead. Task ID: [4154879](https://www.odoo.com/odoo/966/tasks/4154879) Forward-Port-Of: odoo/enterprise#69897
### [FIX] account_report: fix indentation in xlsx export Currently the indentation of XLSX export of reports was sometimes broken. The current implementation only supported up to three levels of indentation in the export as well. This fix supports a virtually infinite number of indentation levels and fixes the indentation in the XLSX exports. ### [I18N] account_reports: update terms ### [IMP] account_reports: move account code column to the right in xlsx Currently, when exporting an a
Original PR description
### [FIX] account_report: fix indentation in xlsx export Currently the indentation of XLSX export of reports was sometimes broken. The current implementation only supported up to three levels of indentation in the export as well. This fix supports a virtually infinite number of indentation levels and fixes the indentation in the XLSX exports. ### [I18N] account_reports: update terms ### [IMP] account_reports: move account code column to the right in xlsx Currently, when exporting an accounting report as XLSX file, we add a column for the account codes on the very left of the sheet. This looks a bit weird and is not the most important information to have as a first column. In this commit, we move the column to the right so the name of the line will be first, followed by the account code (if applicable). We also add a column name for the account codes. task-3986483 Forward-Port-Of: odoo/enterprise#71866 Forward-Port-Of: odoo/enterprise#67111
Hide temporarily withhold subtotals widget in withhold wizard and form view There is an JS error about account-tax-totals-field-for-withhold widget Forward-Port-Of: odoo/enterprise#71806
Original PR description
Hide temporarily withhold subtotals widget in withhold wizard and form view There is an JS error about account-tax-totals-field-for-withhold widget Forward-Port-Of: odoo/enterprise#71806
- Replicate error in runbot v18: 1. Create a Vendor Bill with partner 'Instituto Ecuatoriano de Seguridad Social' 2. Add a reimbursement line with all the fields set up 3. Press the save button - Solution: Call the method _round_base_lines_tax_details before the _get_tax_totals_summary method to add the raw base amount in the base lines dictionary - Screenshot 18.0 runbot  Forward-Port-Of: od
Original PR description
- Replicate error in runbot v18: 1. Create a Vendor Bill with partner 'Instituto Ecuatoriano de Seguridad Social' 2. Add a reimbursement line with all the fields set up 3. Press the save button - Solution: Call the method _round_base_lines_tax_details before the _get_tax_totals_summary method to add the raw base amount in the base lines dictionary - Screenshot 18.0 runbot  Forward-Port-Of: odoo/enterprise#71705
In v18 I installed the EC localization and the first EC company was created. I try to create the second EC company. Cannot create and I get the following error Solution Use `@template` annotation to create journals in l10n_ec_edi Additionally, we call the method `_l10n_ec_configure_default_withhold_accounts` in load() to set accounts by default  Forward-Port-Of: odoo/enterprise#71495
Original PR description
In v18 I installed the EC localization and the first EC company was created. I try to create the second EC company. Cannot create and I get the following error Solution Use `@template` annotation to create journals in l10n_ec_edi Additionally, we call the method `_l10n_ec_configure_default_withhold_accounts` in load() to set accounts by default  Forward-Port-Of: odoo/enterprise#71495
…sales Steps to reproduce:: [l10n_fr] - create a customer, BE Company; delivery adress USA - create an invoice for the customer - Go to EC Sales Report Issue: The transaction is displayed Solution: When there is a delivery adress is specified, the country should be the the EC countries. If not specified, the company should be in the EC Countries opw-4131299 Forward-Port-Of: odoo/enterprise#69960
Original PR description
…sales Steps to reproduce:: [l10n_fr] - create a customer, BE Company; delivery adress USA - create an invoice for the customer - Go to EC Sales Report Issue: The transaction is displayed Solution: When there is a delivery adress is specified, the country should be the the EC countries. If not specified, the company should be in the EC Countries opw-4131299 Forward-Port-Of: odoo/enterprise#69960
Error is generated because ``applicant_id`` field is used to create record of ``hr.candidate.skill`` model. Error: ``ValueError: Invalid field 'applicant_id' on model 'hr.candidate.skill'`` https://github.com/odoo/enterprise/blob/0c7c006dcd0ba53ff9a7aa8ca2446794505a6916/hr_recruitment_extract/models/hr_candidate.py#L60-L61 Here, ``applicant_id`` field is used instead of ``candidate_id`` field. sentry-5983999720 Forward-Port-Of: odoo/enterprise#71789
Original PR description
Error is generated because ``applicant_id`` field is used to create record of ``hr.candidate.skill`` model. Error: ``ValueError: Invalid field 'applicant_id' on model 'hr.candidate.skill'`` https://github.com/odoo/enterprise/blob/0c7c006dcd0ba53ff9a7aa8ca2446794505a6916/hr_recruitment_extract/models/hr_candidate.py#L60-L61 Here, ``applicant_id`` field is used instead of ``candidate_id`` field. sentry-5983999720 Forward-Port-Of: odoo/enterprise#71789
https://github.com/odoo/odoo/commit/351b047c3726527d8f59c0ba701c8934dd7c9af5 changed how the chatter is added to a view and updated the codebase except for this module. This commit fixes this. Forward-Port-Of: odoo/enterprise#71878
Original PR description
https://github.com/odoo/odoo/commit/351b047c3726527d8f59c0ba701c8934dd7c9af5 changed how the chatter is added to a view and updated the codebase except for this module. This commit fixes this. Forward-Port-Of: odoo/enterprise#71878
Partner Ledgers can be sent to Partners by email which is usually signed by the `followup_responsible` user, however, `_get_followup_responsible` is defined in `account_followup` which may not be installed. To solve this dependency issue, we define the method in `account_reports`, and the method in `account_followup` now extends it. No task - issue identified by marketing team upon review of the email template. Forward-Port-Of: odoo/enterprise#71923
Original PR description
Partner Ledgers can be sent to Partners by email which is usually signed by the `followup_responsible` user, however, `_get_followup_responsible` is defined in `account_followup` which may not be installed. To solve this dependency issue, we define the method in `account_reports`, and the method in `account_followup` now extends it. No task - issue identified by marketing team upon review of the email template. Forward-Port-Of: odoo/enterprise#71923
This task was created to modify the demo data for Argentina, to avoid using real partner information. latam-task-1239 adhoc-task-41734 Forward-Port-Of: odoo/enterprise#71471 Forward-Port-Of: odoo/enterprise#71230
Original PR description
This task was created to modify the demo data for Argentina, to avoid using real partner information. latam-task-1239 adhoc-task-41734 Forward-Port-Of: odoo/enterprise#71471 Forward-Port-Of: odoo/enterprise#71230