Daily updates from Odoo
Wednesday, November 20, 2024
40 changes
3 changes
Resolved issues and error corrections
This fixes the customer portal account form so users can see and select available state or province options. It prevents customers from getting stuck when updating address details, improving self-service account management.
Original PR description
Reproduce --- - -i website,portal - open /my/account - select state -> BUG nothing to select from History of changes --- From newest to latest da2c32470c63b8a45ddfb3565c158feece33c924 just reformatted it 14183883432e9d35c6240e1d7dc8c51d04cb93db it also just reformatted it ea27c1b7a341b6f913197a2e8843562c5e71ea52 moved from addons/website_portal/views/website_portal_templates.xml 55d72e1ab4a64f52e040911a8b4b4c8ce9443f65 updated in here c3c0408471763ea90e9379a2d05fd2add820d57e initially introduced it opw-4218359 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
This fixes an installation issue where Odoo could pick an unsuitable chart of accounts when a company had no country set. The change prevents failed module installations and avoids applying accounting settings that do not match the company’s country.
Original PR description
When new modules with coas are being installed, the matching coa based on country is autoinstalled if possible, but if multiple charts match then we overwrite the autoinstall and use the one from the last module. Here we make sure we do not overwrite the chart if it is not associated with the company's country. Using a chart not associated with any country (except generic_coa) during module installation will result in failure. Problem is reproduced on: 1- CI when any syscohada module is installed 2- start a new db and do not set a country on your company, then try installing any syscohada module --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes issues that could prevent the website logout page from displaying correctly, including errors caused by language handling during early page loading. This improves the sign-out experience for website visitors and avoids unexpected error pages.
Original PR description
The website module overrides `ir.http:_get_default_lang`, which is called by `http_routing`'s override of `ir.http:_match`. In this override, it calls `website:_get_cached('default_lang_id')` which…
The website module overrides `ir.http:_get_default_lang`, which is called by `http_routing`'s override of `ir.http:_match`.
In this override, it calls `website:_get_cached('default_lang_id')` which calls `website:_get_cached_values`.
However, `ir.http:_match` is called at a time when the environment hasn't been completely initialized (it will be properly initialized when `ir.http:_authenticate` is called), and its context language hasn't been checked against activated languages yet.
This means that `website:_get_cached_values` cannot rely on this language. The first of the two bugs fixed by this commit happens when website has translatable fields. When reading data from the website, the ORM does a prefetch and tries to load this other field, but fails because the language of the context is invalid. The fix is to prefetch manually the four fields that are not translatable and that we want to cache.
The second bug happens specifically on the logout page, which is set as `auth='none'` by the web module. The website module already overrides the `/web/login` route to set it as `auth='public'` in order to be able to read the website. We need to do the same with the /web/session/logout route, so that the page renders properly.
This commit targets saas-17.2 as the first branch because it is fixing two bugs that were introduced as follows, as determined by a git bisect.
- in a3a3650 from #112000 (saas-17.1), the call to /web/session/logout fails with a 500 status (IndexError) because rule.endpoint.routing has no 'no_db' key, in '_serve_ir_http'.
- in 584a172 from #112000 too (saas-17.1), that code is removed, and the error is now a 403 status because it is not possible to read website records without a user. This error is fixed by adding user='public' to the logout route.
- since d01302b from #151502 (saas-17.2), the test added in this commit could reproduce the error in _get_cached_values by accessing the logout route.
As the saas-17.1 is already EOL, we target saas-17.2 and forward-port it to master.
[OPW-3721341](https://www.odoo.com/odoo/project.task/3721341)
[OPW-3911437](https://www.odoo.com/odoo/project.task/3911437)3 changes
Resolved issues and error corrections
This fix adds missing test dependencies for Helpdesk Timesheet and Sales Timesheet Enterprise after related model changes. It helps keep automated checks stable, reducing the risk of disruptions in future updates.
Original PR description
[*] sale_timesheet_enterprise Purpose of this commit: Following the changes in PR https://github.com/odoo/odoo/pull/187029 the removal of certain model definitions caused test cases in the specified modules to fail. This commit resolves the issue by adding the necessary model dependencies. Community PR: https://github.com/odoo/odoo/pull/187029 Part of task-3818666
The payroll sales commission tests now calculate expected commissions from the sales order total instead of fixed product prices. This prevents unrelated price list settings from causing false test failures, improving reliability for payroll commission validation.
Original PR description
If a pricelist matches the test product, the commission will be affected. This is one more repeat of odoo/odoo@abe8e38ccc18cfba77317d3fdaf4a066b5f69b79: it's possible for a module to set up a universally applicable pricelist (like `pos_pricer` which sets a 20% discount on everything). In the presence of such a module, tests with hard-coded "output" prices will fail. A common workaround is to disable all pricelists when creating the test, but in this case it seems reasonably easy (and correct) to use the SO's total amount as computation basis.
Enabling UPS delivery in Inventory settings now installs the current UPS integration instead of the legacy one. This prevents users from being placed on the outdated connector and ensures the expected shipping setup is activated.
Original PR description
Steps to reproduce the bug:
- Go to the inventory settings:
- Enable the UPS delivery
Problem:
The Legacy UPS is installed instead of the new one
opw-434177626 changes
Resolved issues and error corrections
This fixes a small visual alignment issue in the visitor live chat window. The avatar and conversation name now line up more cleanly, making the chat header look more polished and consistent.
Original PR description
In the backend, the avatar and conversation name is a clickable button to show more thread actions. When this is clickable, there's some spacing to align avatar nicely. In livechat from visitor perspective, however, the avatar was not spaced properly. This come from avatar and conversation name not being clickable to show more actions, because all actions are available in quick on the right side of header. This commit adds some spacing at beginning of header content of chat window when there's no actions menu, to compensate with the padding of the actions menu button. Before / After <img width="361" alt="Screenshot 2024-11-20 at 15 07 07" src="https://github.com/user-attachments/assets/0cbf75af-df85-4509-8ec3-31ed0893025b"> <img width="363" alt="Screenshot 2024-11-20 at 15 06 49" src="https://github.com/user-attachments/assets/2197a159-a64e-4b80-a5df-cd1b8fe3d578">
This fix lets website grid sections expand vertically when content needs more room, such as on smaller screens or in longer translated text. It helps prevent cramped or overflowing content, improving the visitor experience across devices and languages.
Original PR description
Website CSS grid bug fix affecting responsiveness to smaller screen resolutions. **Description of the issue/feature this PR addresses:** Having `grid-auto-rows` fixed at 50px stops the grid cells from growing in order to accommodate its content when the content narrows and increases in height. **Current behavior before PR:** Div does not respond to changes in screen resolution or changes caused by the content being translated to a different language. **Desired behavior after PR is merged:** Using the `minmax()` CSS function allows the grid cells to expand vertically to accommodate content that exceeds the minimum height of 50px, improving responsiveness on smaller screens. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix allows website content blocks to grow vertically when text wraps on smaller screens or after translation. It helps prevent cramped or cut-off content, improving the viewing experience across devices and languages.
Original PR description
Website CSS grid bug fix affecting responsiveness to smaller screen resolutions. **Description of the issue/feature this PR addresses:** Having `grid-auto-rows` fixed at 50px stops the grid cells from expanding vertically in order to accommodate it's content when the content narrows and increases in height. **Current behavior before PR:** Div does not respond to changes in screen resolution or changes caused by the content being translated to a different language. **Desired behavior after PR is merged:** Using the `minmax()` CSS function allows the grid cells to expand vertically to accommodate content that exceeds the minimum height of 50px, improving responsiveness on smaller screens. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Task records will no longer show duplicate update messages when a linked customer name changes. This keeps project communication logs clearer and avoids unnecessary noise for users reviewing task activity.
Original PR description
Before this commit, the `partner_name` was tracked in `project.task` model because `name` of `res.partner` model is tracked and so the related setup will keep the value set on `name` field of `res.partner` to also make the related field tracked. This commit removes the tracking on the related field in task since it was not expected. Moreover, we will get a duplicated tracking message with `partner_id` field which is also tracked in `project.task` model.
This fixes an issue where empty company-specific numeric or yes/no fields could cause database errors when records were loaded. Businesses using multi-company setups should see more reliable access to records with optional fields left blank.
Original PR description
Issue --> For company dependant fields of type `boolean`, `integer`, `float`, `monetary`, casting a `null` value leads to a `cannot cast jsonb null to type _` error on postgresql. For example,…
Issue -->
For company dependant fields of type `boolean`, `integer`, `float`, `monetary`, casting a `null` value leads to a `cannot cast jsonb null to type _` error on postgresql.
For example, consider the following ->
1. Database has two companies : 'a' and 'b'
2. has one res.partner record with no `credit_limit` set.
3. `credit_limit` (float or numeric) is not a required field and does not have a default value
`credit_limit` on the backend looks like `{"a.id": null, "b.id": null}`
Fetching the value for this field leads to method `_field_to_sql` which builds the select query, while also casting the type to each field. In this case, with no fallback default value and a float field, the query is `SELECT ("res_partner"."credit_limit"->'a.id')::double precision FROM res_partner` which resolves to `null(jsonb)::double precision` which unfortunately, is not supported on Postgresql.
Solution -->
Remove the condition for the types `boolean`, `integer`, `float`, `monetary` and use the `field->company_id->>0` logic instead. This works because the `->>` operator returns a text object; the text `null` value can be cast into the types mentioned above.
https://github.com/odoo/odoo/blob/2ed38db47ac3152eef1a0e328c8ff572474d079f/odoo/models.py#L2964-L2967
opw-4313425
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe Discuss sidebar counter bubbles now keep their rounded shape even when channel or conversation names are long. This prevents the notification count from looking squeezed, improving readability and polish in the messaging interface.
Original PR description
This commit sets the `flex-shrink` of the counter element to `0` so it won't be reduced when a sidebar item has a long name. We can also remove the `min-width` from `o-discuss-badge` as all `.o-discuss-badge` cases use `.badge` which has a `min-width: 2.7ch`.
Portal users can now view pages containing the Blog snippet without hitting an error. The fix changes how the author name is shown so it no longer depends on permissions that portal users do not have.
Original PR description
Since [1], the template attempted to display the author's name using `record.author_id.name`, which caused access errors for portal users due to insufficient permissions on the res.partner model. By switching to the related field `author_name`, the template no longer requires direct access to `res.partner`, ensuring smooth functionality for all users. Steps to reproduce: - Log in as an administrator - Navigate to Website - Enter Edit Mode - Add a "Blog" snippet to the home page - Save the changes - Log out - Log in as a portal user - Observe that a traceback occurs [1]: https://github.com/odoo/odoo/commit/dbb72d1f68cf7f462e1d6bdf8998f29627ccc2f0 opw-4330845
Worldline payments can now correctly recognize additional statuses returned during validation. This prevents valid in-progress or declined payments from being misclassified, reducing payment follow-up issues for customers and staff.
Original PR description
Adding missing payment statuses: 'REDIRECTED', 'PENDING_CAPTURE' and 'CAPTURE_REQUESTED' as 'pending' states, 'REJECTED_CAPTURE' as 'declined' state as those statuses can effectively be received from Worldline.
The website's rounded box header now keeps proper spacing on mobile screens. This prevents header content from touching the border, improving the appearance and readability of mobile pages.
Original PR description
This PR aims to fix a spacing issue within the `rounded box` header template, which has no spacing in mobile, making the first and last element stick to the border of the header. To fix that behavior, we simply need to set a `padding` utility class on Mobile as well. - task-3608124 - extracted from https://github.com/odoo/odoo/pull/171050 | 18.0 | This PR | |--------|--------| |  |  | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Mentions in Odoo Discuss now display correctly on Safari when messages span multiple lines. This prevents overlapping text, making conversations easier to read and improving the visual reliability of the messaging interface.
Original PR description
Before this commit, rendering of `@`mentions in Discuss on Safari was bigger than line height, which results in unintended UI overlap. This is mostly visible and problematic when 2 successive text…
Before this commit, rendering of `@`mentions in Discuss on Safari was bigger than line height, which results in unintended UI overlap. This is mostly visible and problematic when 2 successive text lines have mentions in the same horizontal range. This happens because discuss mentions are `<a>` and anchor links have `display: inline`. As a reminder, `inline` does not respect top/bottom padding and margin of element in its container so this is very likely prone to overlap vertically with sibling nodes. `inline-block`, on the other hand, take vertical padding and margin into account so it doesn't overlap. If the element takes more space, then siblings are pushed accordingly. This commit fixes the issue by setting `display: inline-block` to all discuss mentions, so that there's no risk of overlap in multi-line especially on Safari. Before / After <img width="520" alt="Screenshot 2024-11-20 at 12 54 31" src="https://github.com/user-attachments/assets/c1888680-e579-4573-930b-69bdf400f8e8"> <img width="523" alt="Screenshot 2024-11-20 at 12 54 12" src="https://github.com/user-attachments/assets/acfdfe8c-b6ef-49cc-8baf-816cf3058516">
This fix prevents an error when collaboration details for another editor are unavailable. It helps keep the HTML editor stable during shared editing sessions instead of interrupting users with a crash.
Original PR description
The `getPeerMetadata` function can return a falsy value and that was not taken into account.
This fixes an issue where users working in right-to-left languages could not see the table picker in Firefox. It restores access to table insertion in the HTML editor, improving reliability for affected language users.
Original PR description
Issue: ====== Table picker doesn't appear in rtl language in firefox Steps to reproduce the issue: ============================= - Make sure you use rtl lang - Create a new todo - Try to add table -…
Issue: ====== Table picker doesn't appear in rtl language in firefox Steps to reproduce the issue: ============================= - Make sure you use rtl lang - Create a new todo - Try to add table - Table picker doesn't appear Origin of the issue: ==================== The case of `left < 0` was handled wrong. They can both be handled by the sane formule. When left > 0 it will be like this: `|---left---||---width---||---right---|` `|-----------------window-------------|` So here `right = window-left-width` And when left < 0 it will be like this `|---width-----||---right------------------------ |` `|---left---| |` ` |-----------------window--------------|` And here `right = window - left - width` (left here is < 0) task-4282549 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The accounting screen now shows the secured entry status only when an entry is already secured or its journal is configured to secure posted entries with a hash. This prevents users from seeing a misleading status indicator just because they have access to inalterability features.
Original PR description
Before this **PR**: Since the visibility of the status bar for secured entries was controlled by the security group 'Show Inalterability Features', once assigned to a user, it would make the status bar visible indefinitely, regardless of whether the "Secure Posted Entries with Hash" option was activated or not. After this **PR**: The status bar for secured entries is now displayed only for entries that are already secured or belong to journals where the "Secure Posted Entries with Hash" option is enabled. **task**-4314073
This fix removes an incorrect blocking warning that prevented credit notes from being sent with UBL XML files when no recipient bank was set. Businesses can now process and send credit notes normally while keeping the bank requirement for customer invoices where it applies.
Original PR description
The previous warning asking to add a Recipient Bank was shown incorrectly in previous versions in case of Credit Notes. With the rework, we escalated this warning to a danger warning that prevent from sending, as in case of Customer Invoices it is a blocking error. The combinations of those two is now preventing Credit Notes to be sent with an UBL XML file. See: https://github.com/odoo/odoo/commit/9e769e1b11f22890e5245859053bc8dd31e42634 task-no
Regular employees can once again open their time off dashboard when their allocation uses an accrual plan. The fix ensures available time off is calculated correctly without exposing unnecessary setup details to users.
Original PR description
Accrual plans are not readable for regular users, so once a user has an accrual plan set on one of his allocation, he cannot open anymore his time off dashboard when it tries to get his allocation data (the time off he has). To ensure the correct computation of available time off, we add a sudo. This has been introduced in https://github.com/odoo/odoo/pull/172892/ --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Unfollow action in messages now uses the correct icon setup, preventing a broken or incorrect icon from appearing. This keeps the messaging interface visually consistent and easier for users to understand.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/184552 Commit above fixed an issue with `.oi` icon not showing correctly. To fix the issue, it puts the appropriate prefix `.fa` and `.oi` in the icon of the message action. The "Unfollow" message action was not properly adapted, which results in buggy icon due to missing `.fa`. This commit adds `.fa` in its icon definition similarly to how all message actions that use a font awesome icon should do.
The product catalog now waits for component changes to finish before refreshing shopfloor records. This prevents newly added manufacturing components from temporarily disappearing when users close the catalog quickly, improving reliability for shopfloor workflows and tests.
Original PR description
### Issue: Since 18.0, the catalog is used in certain actions of the shopfloor However, if you leave the catalog fast enough after your last change (something of the order of ~0.5 sec in localhost),…
### Issue: Since 18.0, the catalog is used in certain actions of the shopfloor However, if you leave the catalog fast enough after your last change (something of the order of ~0.5 sec in localhost), you can trigger a reload of the shopfloor records and call a `web_read` prior to the update of these records. ### Note: This is easily reproducible by hand in localhost and should worsen if you have server delay.In addition, Also, it makes it impossible to write a proper tour involving the catalog in the shopfloor. ### Steps to reproduce: - Create a product with a bom and an operation op1 - Create and confirm an MO for 1 unit of that product - Go to the shopfloor > on the operation > wheel > Add component - Add a component to be consumed in that operation - Close the catalog fast (using ESC for instance) #### > While the componenet was correctly added to the MO and linked to the WO it is not visible on the shopfloor. ### Cause of the issue: When a product is added from the catalog it triggers an rpc call to update the data's of the MO (notably creating a new raw move): https://github.com/odoo/odoo/blob/193c9a49dfc039ee93fbc8e171819236697b5c50/addons/product/static/src/product_catalog/kanban_record.js#L62-L69 https://github.com/odoo/odoo/blob/193c9a49dfc039ee93fbc8e171819236697b5c50/addons/mrp/models/mrp_production.py#L2898-L2901 On the other hand, closing the product catalog will reload the mrp record that started the action that opened the catalog: https://github.com/odoo/enterprise/blob/c1346dd2279bf3882b47b260b8d03ef9651ffaf1/mrp_workorder/static/src/mrp_display/dialog/mrp_menu_dialog.js#L41-L45 Since this reload is currently not waiting for the update of the record the associated `web_read` might be called prior to the last update of the record and the newly created raw moves might not be displayed. ### Fix: We use the props option of the action opening the catalog to transfer a callback to reload the records when all the record update promisses are resolved. Enterprise: https://github.com/odoo/enterprise/pull/72942 opw-4199156 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Translation has been forgotten in the forward port of the following PR: https://github.com/odoo/odoo/pull/187686 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Translation has been forgotten in the forward port of the following PR: https://github.com/odoo/odoo/pull/187686 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The UK CIS reporting module no longer loads test code during regular startup. This keeps testing logic separate from normal business use, reducing unnecessary processing and avoiding potential setup issues.
Original PR description
Tests should not be imported in module init. The import is done when tests are enabled.
Changing the project while creating a new timesheet no longer accidentally starts timers or creates duplicate records. The timer now starts only when users intentionally launch it from the timesheet timer header, reducing erroneous timesheet entries.
Original PR description
Steps to reproduce:
- List/grid view
- Click 'New'
- Change project field (1 or more times)
- Switch to kanban view
=> Timer started and many records created
Source of the bug:
- due to this condition 'record.isNew && record.data.project_id', introduced in commit 576c0eac3b8431a5080b6383ae256a0699ba7c7d,
each time project_id field is changed, action_start_new_timesheet_timer is called to start the timer and create a new record.
Fix:
- Start the timer only if new is called from the header timer by checking is_timer_running for that record.
task-4210112Uninstalling the Sign app after signing a document now also removes related activity reminders that would otherwise point to deleted records. This prevents users from seeing confusing missing-record errors after removing the app.
Original PR description
The issue: When uploading and signing a document, then uninstalling the Sign module, the following error message appears: `Missing Record Record does not exist or has been deleted. (Record: documents.document(42,), User: 2)` How to reproduce the issue: - Install Sign and Documents modules - Upload a PDF document and click on sign - Go to Apps and uninstall Sign When signing a document from `documents.document`, its `res_model` is set to `sign.template`, and a `mail.activity` is created for validation. On uninstalling Sign, all records with `res_model = 'sign.template'` are removed, but not in `mail.activity`. This happens because deletion occurs via cascade (`sign.template` -> `attachment.id` -> `documents.document`), meaning that`unlink` from `documents.document`is not called. opw-4283568
When an appointment creates a CRM lead, the lead now keeps the attendee-provided description. This helps sales teams see important appointment answers directly on the lead, where they are easier to use during follow-up.
Original PR description
commit [1] removes the hard-coded description on appointment calendar events. We still want to use the "attendee description" on crm leads as questions are not easily accessible from there. [1] 8b9a1a4462453bf64e7bc1307ededd0d127a27fa task-4347415
The Belgian payroll process now skips freelancers when allocating paid time off. This prevents incorrect leave allocations for workers who should not receive employee time off entitlements.
This fix prevents document updates or upgrades from failing when certain document tags are missing. It makes the Documents module more reliable during setup and migration by avoiding errors from optional setup records.
Original PR description
The server actions refer to document tags added in this version. Since the records have the `forcecreate=0` flag, the might not exist, triggering an error. To reproduce: - Create a fresh db in 18. - Delete any referenced tag in the file (eg `documents.documents_tag_inbox`) - Update documents This error will also happen during upgrades from previous versions if the old record to be renamed is missing. ``` ValueError: External ID not found in the system: documents.documents_tag_inbox ```
This update improves the signing experience by fixing mobile display problems, preventing expired items from appearing in completion dialogs, and ensuring refused signature requests are properly cancelled. It also stabilizes related automated checks so archived or cancelled requests are handled consistently.
Original PR description
Before this commit, some things were unclear. The mobile view was not working as expected and expired sign items were displayed in the thank you dialog. Refusing sign request would not cancel them.…
Before this commit, some things were unclear. The mobile view was not working as expected and expired sign items were displayed in the thank you dialog. Refusing sign request would not cancel them. Moreover this commit fix the sign tests. This commit aims to fix an issue with test_archived_requests_dont_send_reminders. Previously the test was trying to archive a record by performing a direct write command, but since we have a designated action for archiving sign requests, it should be used. Another issue is that when we archive a sign request, its state is set to 'canceled', and for canceled sign requests we cannont update the validity, however the test was trying to update the validity (as a way of jumping to the future). But this is not the correct way of doing it, since we shouldn't change the validity if state is canceled. To fix the issue, a mock_datetime_and_now is introduced. Note: this is the backport of https://github.com/odoo/enterprise/pull/73156 task: 4294860
This change ensures manufacturing work orders are marked as started before they are completed. It prevents an incorrect date sequence that could block users with an error when finishing work orders immediately.
Original PR description
As we immediatly call button_done on the wworkorder, the start_date is greater than the end_date which raises a user error. So we start the workorder before setting it to done
8 changes
Resolved issues and error corrections
This update resolves an issue where duplicate keyboard shortcuts were preventing users from accessing key actions within the Subscription module. The fix ensures that different actions have unique shortcuts, improving usability and preventing workflow disruptions. This change focuses on the 'Upsell' and 'Close' buttons.
Original PR description
**Issue:** Two different actions have the same shortcut making one action impossible to reach. **Expected:** Different actions should have different keyboard shortcuts. **Steps to reproduce:** - Activate Subscription app; - Open an existing subscription; - Press `ALT` (`CTRL` on MacOS) to display all shortcuts and look at the `UPSELL` and `CLOSE` buttons. **Cause:** The same `data-hotkey` has been used for both buttons. **Fix:** Change the `UPSELL` button shortcut to `ALT+E` (`CTRL+E` on MacOS) as for Odoo 17. opw-4306179 Forward-Port-Of: odoo/enterprise#73548
This update addresses a test failure within the Web Studio module, which is a key component of Odoo's website customization tools. The fix was triggered by a recent change from the Odoo community, ensuring continued stability and functionality for users building and managing their online storefronts.
Original PR description
This is a fix for failing test after the change introduced in the corrosponding community [PR] task-4240730 [PR]: https://github.com/odoo/odoo/pull/183129
This update fixes a rounding issue in the Mexican CFDI invoice generation process. The change ensures that the subtotal and discount values are calculated accurately, aligning with Mexican tax regulations. This improves the reliability of invoices for Mexican customers.
Original PR description
### Steps to reproduce the issue: 1. Activate Mexican Localization 2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code 3. On the Invoice Line, set Price to 1030.17…
### Steps to reproduce the issue:
1. Activate Mexican Localization
2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code
3. On the Invoice Line, set Price to 1030.17 and add a 3% Discount
4. Confirm then Send & Print (with CFDI checked)
5. In the generated XML, the following values are off:
- In node "Comprobante, SubTotal="1030.16" Descuento="30.90"
- In node "Concepto", ValorUnitario="1030.16" Importe="1030.16" Descuento="30.90"
- Expected are 1030.17 and 30.91
### Explanation:
During the calculation of the values for the CFDI, `gross_price_subtotal_before_discount` is calculated using `price_subtotal` in every case where `discount` is not 100%. This is due to other values affecting `price_subtotal` (e.g.: taxes with `price_include=True`), in which case calculating a value related to `price_subtotal` with `price_unit` would give the wrong result.
This calculation method causes rounding issues such as above because `price_subtotal` is rounded before calculating `gross_price_subtotal_before_discount`.
### Fix reasoning:
We need to account for any value that could affect `price_subtotal` and make it different from `price_unit * quantity` except for `discount`, which will be included when comparing both values.
The case `discount == 100.0` is covered by this new condition as well, since `discount_factor` would equal to 0 and `price_subtotal` too.
opw-4183556This update resolves an issue where a key test failed when the 'pos_preparation_display' module wasn't present. The test has been moved to the correct module, ensuring consistent and reliable testing of the self-order POS functionality. This improves the overall stability of the system.
Original PR description
The test `test_self_order_preparation_disabling_preparation_display` in `test_self_order_common` does not work when the `pos_preparation_display` module is not installed. This is because there is no warning message when `pos_preparation_display` is absent. This commit changes the test location to the module `pos_self_order_preparation_display`.
This update resolves an issue where new states were incorrectly created for Amazon orders, leading to data inconsistencies and confusion. The change now creates an activity for the sales representative to manually set the correct state, ensuring data accuracy and preventing disruptions to related workflows.
Original PR description
Before this commit contact created from amazon order create new state if it does not find matching state in odoo and it was causing issues like having record multiple record for same state and user don't know which one is right with proper code in data. This commit stop creating new state instead create activity on contact for amazon sale person to set proper state on the related contact to not break flows that are related to contact's state. Backport of b327ea1897fca34164a9bbea59a23d34b97e65a2 task-3865454 Forward-Port-Of: odoo/enterprise#74099
This update resolves a technical issue that could cause errors in the generation of financial reports for Belgium. Specifically, it avoids division-by-zero errors when dealing with entries that have zero balances and currency amounts. The fix ensures reports are generated accurately and reliably.
Original PR description
## [FIX] l10n_be_reports: 281.50 and exchange diff The aim of this commit is to prevent a Zero devision error by excluding irrelevant 'zeroed' exchange difference. Context: Some misc entry with a 0 balance and some amount_currency might be present and taken into account for the computation. Such moves have an `amount_total_signed` equal to 0 leading to the zeroDivisionError issue in the query computation. Before the commit: When having such entry considered by the query, creating the 325.50 form leads to a traceback. After the commit: Those irrelevant moves are ignored and the process carry on smoothly. task-id: None - Issue spotted on next ## [FIX] l10n_be_reports: 281.50, no 0-0-0-0-0 form The aim of this commit is to avoid generating a 281.50 form if there isn't any amounts to fill in the form. task-id: None - Dicussed with TSB Forward-Port-Of: odoo/enterprise#73842
This update fixes a technical error that prevented users from configuring TaxCloud within the invoicing system. The issue stemmed from a problem accessing data related to CartItemsResponse, which has now been resolved. This ensures TaxCloud functionality is reliably available for US customers.
Original PR description
**Steps to reproduce:** - Edit \__init__.py file of account_taxcloud module to allow its installation - Install sale_account_taxcloud and industry_fsm_stock - In Invoicing settings, configure TaxCloud credentials - Configure TaxCloud fiscal position: * Country: United States * Detect Automatically: [enabled] - Go to "Field Service" - Create a new Task: * Title: [anything] * Customer: [a US customer] (e.g. Deco Addict) - Click on "Products" smart button - Add a product - Click on the task name in the breadcrumb to go back to the task **Issue:** A traceback is raised while trying to access CartItemResponse property of the None value of CartItemsResponse. opw-4199902
This update adjusts the color contrast of primary buttons in the Odoo Enterprise application. Previously, the focus state wasn't visually distinct enough, making it harder for users to easily identify which buttons were active. This change ensures better usability and accessibility by providing clear visual feedback when buttons receive focus.
Original PR description
This PR aims to increase the contrast between the default and the `focus` state of our `btn-primary`. | 17.0 | This PR | |--------|--------| | <img width="729" alt="image" src="https://github.com/user-attachments/assets/19c29432-4467-46bf-b240-41017d435c09"> | <img width="717" alt="image" src="https://github.com/user-attachments/assets/1efc15cc-6e10-460b-9040-4088cf3a98e0"> | Prior to this PR, the color was not dark enough to grant enough visual feedback on focus. This can be solve quickly by tweaking the value directly. task-3382308