Friday, March 1, 2024
55 changes · saas-17.1
New functionality added to Odoo
This update adds support for Jordanian country states to the Odoo system. Previously, Odoo did not recognize or allow for state-level selection within Jordan. This change ensures users can accurately manage locations within Jordan, improving data accuracy and operational efficiency.
Original PR description
Description of the issue/feature this PR addresses: Add country states for Jordan Current behavior before PR: No country states are imported by default for Jordan Desired behavior after PR is merged: Country states are imported by default for Jordan --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155010
Enhancements to existing features
This update adds ‘lastmod’ attributes to forum post URLs in the website sitemap. This helps search engines like Google efficiently crawl and index our forum content, improving its visibility. While complex date tracking is difficult across the website, this targeted approach focuses on the forum, providing a reliable way to signal content freshness.
Original PR description
When a crawler (eg Googlebot) come to visit your website, it grants you a limited amount of time and ressources, it's called "Crawler budget". If you have millions of URLs, it won't go through each…
When a crawler (eg Googlebot) come to visit your website, it grants you a limited amount of time and ressources, it's called "Crawler budget". If you have millions of URLs, it won't go through each one of them in a single go.
The best you can help those crawler, the better. The sitemap `lastmod` attribute, despite not being fully respected and trusted by crawlers, is one of the way you can still try to help them.
For website.pages, it's already done. But for controllers, it's not an easy thing to do as we have no way to automatically figure what are the relevant records/fields to look at to know the last update date. For instance, on the event pages, some pages content are mostly stored inside an `ir.ui.view`, but the title, hours etc are part of the event itself.
We can't just say "we take the last write_date of the record", it's wrong in 2 ways:
- The first one I just explained where we wouldn't be able to easily get all the elements part of the page rendering and would miss a possible element write_date, leaving an outdated date in `lastmod`.
- Then, there is another issue (which is more problematic in stable): the `write_date` is often updated for non website related purposes. For instance, on /partners/<partner>, we wouldn't be able to use the write date on odoo.com as the partners shown there (having a grade) are update every weeks in average, because of many fields, for instance: commission_plan_id, partner_weight, grade_id, ...
Still, there is a quick win possible in stable about forum posts which are not impacted by the 2 issues explained above:
- There is a dedicated `last_activity_date` field which is updated only when relevant information are modified. We can ensure to show a date which is not updated too frequently for no reason.
- All the forum.post information displayed on the page are stored inside the forum.post itself.
This commit is thus adding the `lastmod` on forum.post URLs in the sitemap in hope of not making Google waste time on (very) old posts.
Note: the `lastmod` has to be trustworthy and correct, if you set wrong
or outdated info inside it, Google won't trust you/it anymore.
Forward-Port-Of: odoo/odoo#155197Resolved issues and error corrections
This update fixes a previous issue where products within a POS category's child categories weren't visible. Now, all products associated with a category and its children are correctly displayed, improving the user experience for product browsing in the Point of Sale system. This ensures accurate product listings and simplifies the sales process.
Original PR description
Before this commit, if a POS category had children, we didn't show the products in the child categories. This commit fixes this issue by ensuring that products in child categories are also displayed. opw-3754832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
## Description Deleting planning slots can be slow on some databases that make heavy usage of the Timesheet/WorkEntries from shifts feature and/or they have large tables for their `account.analytic.line` and/or `hr.work. entry`. It can be especially felt when deleting all recurrences of a shifts. This is due to the missing indexes on the FKey to the `planning.slot` model on large models. Without an index on the FKey, deleting a `planning.slot` will trigger Seq.Scans on the tables that referenc
Original PR description
## Description Deleting planning slots can be slow on some databases that make heavy usage of the Timesheet/WorkEntries from shifts feature and/or they have large tables for their `account.analytic.line` and/or `hr.work. entry`. It can be especially felt when deleting all recurrences of a shifts. This is due to the missing indexes on the FKey to the `planning.slot` model on large models. Without an index on the FKey, deleting a `planning.slot` will trigger Seq.Scans on the tables that references the `planning.slot` model to set the field to NULL or trigger the SQL `ON DELETE` constrains. ## Fix Add the missing indexes. Partial on nulls because it's a sparse relationship. ## Reference task-3747131 Forward-Port-Of: odoo/enterprise#56681
This update adds a placeholder to the industry selection field on the website creation process. Previously, users were unsure of what information to enter, leading to potential confusion. This simple addition provides a helpful hint, streamlining the website setup for our customers.
Original PR description
-User might not know what they going to type in, this commit add a placeholder in the input of industry selection to give a hint for user when in website creation 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#155862
This update fixes a potential issue where manually editing follower lists could cause errors when assigning users to records after merging. The change ensures that follower lists are always up-to-date, preventing duplicate entries and improving the reliability of follower management. This primarily impacts users managing leads and contacts.
Original PR description
`_message_auto_subscribe` relies on `_get_subscription_data` to know who is subscribed to what. This method uses a raw SQL query but doesn't flush the relevant records beforehand. This is not an issue in most normal cases, but if followers are edited manually, for example in order to merge existing models, it may cause issues when then assigning someone to the model will attempt adding them to the list of followers, when they already were on it. task-3713472 original issue in opw-3634410 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155043 Forward-Port-Of: odoo/odoo#152041
This update resolves an issue where users were unable to save custom background colors for product ribbons on the website. The fix adds an 'important' tag to the ribbon color setting, ensuring changes are applied as intended. This improves the user experience by allowing for personalized product displays.
Original PR description
Before this commit, the `bg-primary` class was overwriting the `bg_color` set by the user after saving changes as it has the `!important` tag. Steps to reproduce the issue: 1. Go to Shop page on website 2. Enable edit mode 3. Pick a product and create a new Badge (ribbon) 4. Change the background color and save changes -> color reverts to `bg-primary` This commit fixes this behavior by adding the `!important` tag to the `bg_color` so that it properly overwrites the `bg-primary` color. opw-3734598 Forward-Port-Of: odoo/odoo#155040
This update fixes a minor issue where loyalty points were being displayed with slight rounding errors due to how the system calculates points. The change ensures that loyalty points are shown accurately, providing a better customer experience. This improves the reliability of the loyalty program's point calculations.
Original PR description
Steps ----- 1. Create a loyalty card program awarding 1 point per $ spent; 2. make sure "Show points Unit" is enabled; 3. give yourself a loyalty card with 267.39 points on it; 4. create a product with a price of $0.89; 5. go to website and add it to your shopping car; 6. go to checkout. Issue ----- > You have 268.28000000000003 Loyalty point(s) Cause ----- The number comes from the `_get_real_points_for_coupon` method, which uses `float_round` by way of `res.currency`. The `float_round` function isn't suited for raw number display, as it can make tiny rounding errors due to floating point arithmetic. Solution -------- Add a `_format_points` method to `loyalty.card` which will return a string using the same format the `points_display` field uses. opw-3705546 Forward-Port-Of: odoo/odoo#155466 Forward-Port-Of: odoo/odoo#153541
This update fixes an issue where pricelists created in new databases caused problems with multi-company sales reporting. The change now ensures pricelists are tied to the current company, simplifying setup and preventing errors, especially for businesses using a single company.
Original PR description
Since 83c52575d0ce3d7deb1737c622c6ce366db8c31b, there is no default pricelist in new database, and a magic pricelist is created for each company when the pricelist setting is enabled. But, since this…
Since 83c52575d0ce3d7deb1737c622c6ce366db8c31b, there is no default pricelist in new database, and a magic pricelist is created for each company when the pricelist setting is enabled. But, since this automatically created pricelist is restricted to a specific company, you couldn't use it as 'Base' for rules of other pricelists, which are, by default, shared between companies, unless you set a specific company on them. This commit changes that default behavior, to restrict pricelists to the current company (unless the field is manually emptied), to avoid those multi-company issues, particularly in single-company databases where multi-company issues are not expected. Also, while testing this task, we discovered that a user could change the company of a pricelist, even if it conflicted with existing rules. To avoid this situation, we now trigger the multi-company check on the pricelist rules when the pricelist company is updated. task-3610823 See odoo/enterprise#55857 Forward-Port-Of: odoo/odoo#147014
This update resolves an issue where the 'l10n_ar_withholding' module couldn't be installed correctly when multiple Argentine companies were set up in Odoo. The fix ensures that tax data is properly calculated and linked to each company individually, preventing compatibility errors.
Original PR description
Steps to reproduce: - Install Accounting and l10n_ar - Create 2 companies located in Argentina (e.g. Company A & Company B) - Switch to Company A - Go to Accounting settings - Set Fiscal Localization…
Steps to reproduce: - Install Accounting and l10n_ar - Create 2 companies located in Argentina (e.g. Company A & Company B) - Switch to Company A - Go to Accounting settings - Set Fiscal Localization to Argentina (e.g. Argentina - Argentine Generic Chart of Accounts for Excempt individuals) - Switch to Company B - Go to Accounting settings - Set Fiscal Localization to the same Fiscal Localization than Company A (i.e. Argentina - Argentine Generic Chart of Accounts for Excempt individuals) - Try to install "l10n_ar_withholding" module Issue: A User Error is raised: "Incompatible companies on records: - 'account.tax.repartition.line,1230' belongs to company 'Company A' and 'Account' (account_id: '1.1.4.03.020 SUSS Withholding incurred') belongs to another company. - 'account.tax.repartition.line,1232' belongs to company 'Company A' and 'Account' (account_id: '1.1.4.03.020 SUSS Withholding incurred') belongs to another company. - 'account.tax.repartition.line,1234' belongs to company 'Company A' and 'Account' (account_id: '1.1.4.05.030 Withholdings of Profits incurred') belongs to another company. - 'account.tax.repartition.line,1236' belongs to company 'Company A' and 'Account' (account_id: '1.1.4.05.030 Withholdings of Profits incurred') belongs to another company." Cause: When installing "l10n_ar_withholding" module, each Argentine company is updated with some tax data. These data are "generic" (not linked to any company) and used for each company, but some treatment is performed on them by the first Argentine company, linking them to the account ids of that company. The following companies are then updated with data linked to the first company. Solution: Compute the data for each company. opw-3709819 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#154219
This update fixes an issue where the website's header search field couldn't be accessed using the keyboard. The change ensures all users, including those using assistive technologies, can easily find and use the search function, improving website usability and accessibility. This resolves a previous accessibility concern.
Original PR description
This commit resolves the accessibility issue where the search field located within the header was not navigable (see [1]) via keyboard tabbing, rendering it inaccessible to users relying on keyboard navigation. This fix ensures that users can seamlessly navigate to the search field in the header using the keyboard, thereby enhancing the overall accessibility and usability of the website. [1]: https://github.com/odoo/odoo/commit/ac5866a059c345480e246b558eeae1e94aead822 task-3607481 Forward-Port-Of: odoo/odoo#153197
A warning was appearing during internal transfers when tracked products had existing serial numbers. This update prevents the warning from triggering, ensuring smoother internal transfers and avoiding potential disruptions to inventory management. The fix addresses a technical issue related to serial number verification.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Tracked by “SN”
- Update the qty to 1 in “WH/stock” with “SN1”
- Create an internal transfer:
- Location: wh/Stock
- Dest location: wh2/stock
- Mark as todo
- Try to select SN1 in the `stock.move`
Problem:
A warning is triggered:
`Existing Serial numbers. Please correct the serial numbers encoded: (001) exists in location WH/Stock`
We do a search to find all the quants in every location to verify if the same serial number is not being used, but we do not exclude the source location.
opw-3734300
Forward-Port-Of: odoo/odoo#155651
Forward-Port-Of: odoo/odoo#154626This update fixes a potential issue where channel subscriptions weren't reliably updating, leading to test failures. The change simplifies the subscription process using 'onAdd/onDelete' events, ensuring accurate channel tracking. This improves the overall stability and performance of the messaging system.
Original PR description
Before this PR, the `bus subscription is refreshed when channel is left` test was sometimes failing. This actually reveals a real issue: if a channel is joined a leave very quickly, the bus subscription is not updated. This occurs because we rely on the last subscription made and the one that should be made to detect if channels differ. Since the `updateBusSubscription` method is debounced, we can miss information. This PR replaces the complicated `updateBusSubscription` method by a `onAdd/onDelete`. This is much more reliable and more efficient since there is no need to walk through every channel to detect changes. This PR also remove a test that was redundant that the failing one. fixes runbot-55292,57645,56232 Forward-Port-Of: odoo/odoo#155720
This update resolves an issue where clicking on a color code in the colorpicker would reset the text field instead of updating the color. The fix ensures that color selections from the colorpicker now correctly update the note's color, improving usability.
Original PR description
Issue: ===== Clicking on hex color or rbga in colorpicker will reselect the inital selected text and not the value if hex or rgba. Steps to reproduce the issue: ============================= - Create…
Issue: ===== Clicking on hex color or rbga in colorpicker will reselect the inital selected text and not the value if hex or rgba. Steps to reproduce the issue: ============================= - Create a note , type anything and apply custom color - When clicking on the hex color code , the cursor is alwyas set back to the text. Origin of the issue: ==================== The behavior was introduced by https://github.com/odoo/odoo/commit/033b49e1a810c3decd8988698620616bd927f6c3 In the click listener, we always reset the comuted selection wich reselects the original text. When clicking on empty space on the dropdown menu, it happens too but it doesn't matter since the menu closes anyway, but clicking on text input fields that you want to update will be a problem since the menu doesn't close but the text get reselected. Solution: ========= To overcome the problem of resetting when clicking on the dropdown, we first check if the click is on the colorpicker or not, if Yes do nothing and skip this. task-3648629 Forward-Port-Of: odoo/odoo#149480
This update clarifies the analytic widget by replacing a confusing floppy disk button with a 'New model' link. This change simplifies the process of creating analytic distribution templates, reducing user confusion and improving the overall user experience. The update also automatically populates relevant fields for easier setup.
Original PR description
On the analytic widget, when putting an Analytic Account, a floppy disk appear on top of the wizard. This button is used to create a new analytic distribution template. It is confusing for users that thinks that the purpose of the button is to save the analytic distribution. This PR will replace the button to be a link called "New model". Also, this pr will fill some field (partner_id, account_prefix and product_id) if there are populated. task: 3736786 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155611 Forward-Port-Of: odoo/odoo#153588
This update fixes an issue where the Kanban view incorrectly displayed overdue statuses for activities, even when no overdue activities existed. The fix ensures the Kanban column header accurately reflects the status of activities, improving the user experience and data consistency. This resolves a visual inconsistency impacting lead management.
Original PR description
How to reproduce: - Install CRM with demo data - Configure one activity type to keep done activities - Go to CRM and chose a kanban column with a green status (only planned activities for that state)…
How to reproduce: - Install CRM with demo data - Configure one activity type to keep done activities - Go to CRM and chose a kanban column with a green status (only planned activities for that state) - On a lead of that column, add an activity of the type chosen above with a deadline in the past - When going back to the kanban view, that column has the overdue status (red) - Mark that activity as done - Reload the kanban view The kanban column has still the status overdue (red) while there are no more overdue activity in that state. With this fix, after reloading the kanban view, the header displays the correct status summary. In the example above, the kanban column header is green. Technical note: archived activities were returned when grouping by activity_state because that part was done in SQL and not taking into account the recently added active field. While adding it in the "_read_group_groupby" method, we also add it in "_search_activity_state" to avoid the same problem when searching on activity_state. Note that we don't add flush in those methods using raw SQL so flush is needed in the added test. Task-3732333 Forward-Port-Of: odoo/odoo#153274
This update simplifies the process for international partners by removing unnecessary state validation within the l10n_in_edi module. Now, state requirements are only enforced for e-invoicing specifically for partners in India. This streamlines operations and reduces complexity for our overseas clients.
Original PR description
This commits removes the state validation for `l10n_in_edi` for overseas partner and now state will be only required for e-invoicing for partner having country `India` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#154118
This update resolves an issue where SelectionFields within draggable kanban views couldn't be edited. The fix prevents a technical restriction that blocked the opening of the SelectionField's edit options. This ensures users can now correctly modify SelectionFields within the kanban interface, improving usability.
Original PR description
Before this commit, if a SelectionField was used in a kanban view alongside the HandleField (enabling re-sequencing, i.e. drag&drop), the "select" element couldn't be edited. This is because the d&d feature calls preventDefault on almost all "pointerdown" events occuring in the card, and the "pointerdown" event is the one that opens the select. There's no usecase in 17.0, but there's one in master, in the product document kanban view. We fix this in 17.0 which is the version that introduced the kanban version of the SelectionField. 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#155827
This update simplifies the process of generating UBL invoices by removing a redundant check for the 'Bronnoysund' field. Previously, a constraint ensured this field was populated, but now that 'peppol_endpoint' and 'peppol_eas' fields are used, this check is no longer needed. This streamlines the system and improves efficiency.
Original PR description
In saas-16.2, the `peppol_endpoint` and `peppol_eas` fields were added on the partner. These fields are used to fill the `<cbc:EndpointID` node. Before that, we had to map every localization specific field to this node. For instance, with the norvegian "Bronnoysund" field (see: [1]). To ensure the node was filled, a constraint was checking the existence of this field. Now that we have the `peppol_endpoint` and `peppol_eas`, we no longer have to require the bronnoysund to be filled. [1] https://github.com/odoo/odoo/blob/saas-16.1/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_bis3.py#L119 opw-3763725 Forward-Port-Of: odoo/odoo#155604
This update resolves an issue where the Contact widget on Odoo.com would crash when a partner's display name was blank. Approximately 3,000 partners had a null display name, causing this error. This fix ensures the widget functions correctly even with missing display name data.
Original PR description
In case where display_name is null, the widget contact crash - AttributeError: 'bool' object has no attribute 'split' On odoo.com we have around 3K of partners that have name with null value. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155735
This update fixes an issue where employees with flexible hours and removed calendars displayed 0 remaining holiday leave on their dashboards. The change prioritizes the employee's contract calendar to ensure accurate leave balances are shown, improving the employee experience and reporting accuracy.
Original PR description
Steps to reproduce the issue: - have an employee with an allocation with an end date - remove the employee's calendar - go on his dashboard - his remaining leaves amount is 0 This commit implements a new method on the resource mixin to fetch a calendar for the record even though it might not have one. The default behaviour is to fall back on the company's calendar to ensure a value. This is overrided in the `hr_contract` module so that the calendar of the contract is prioritized. task-3609738 Forward-Port-Of: odoo/odoo#155753 Forward-Port-Of: odoo/odoo#144418
This update fixes a visual issue where the 'Apply' button in the daterange picker appeared flattened and misaligned. The change centers the button vertically and adds a 'close' button, mirroring the behavior of pressing ESC or clicking outside the picker, for a more polished user experience.
Original PR description
Current behaviour - when we access the daterange picker, it was observed that the `apply` button appeared flatter and was not vertically centered. Expected behaviour - add h-100 on buttons container to ensure they are vertically centered and no longer appear flatter - add cancel button in which action is similar to pressing ESC or clicking outside the popover Task-3624556 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148812
This update streamlines how the Odoo website identifies event booths. Previously, the system repeatedly checked for booth existence, which was inefficient. Now, the website automatically discovers booths through crawling, ensuring accurate event listings without unnecessary manual checks.
Original PR description
If booth exists for this event, bot will discover it via crawling. Don't need to ask to crawler to check for each event if a booth exists. 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#156022
This update fixes a layout issue in the Point of Sale interface that occurred after printing receipts. Previously, the receipt's placement caused scrolling, but this change uses a 'fixed' positioning to prevent overflow and maintain a clean, non-scrollable POS experience for users.
Original PR description
Before this commit, the POS receipt was added to the bottom of the page after printing. In some browsers, this caused overflow and made the POS interface scrollable. With this commit, we fix this issue by changing the position of the receipt container to 'fixed'. This prevents the receipt from affecting the layout of the page after printing, thus avoiding the overflow issue and keeping the POS interface non-scrollable. opw-3775808 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156025
This update resolves an issue where selling consumable products through Point of Sale (POS) automatically generated an unnecessary expense entry in the accounting system. The fix ensures that consumable products are no longer tracked for Cost of Goods Sold (COGS), streamlining the accounting process and improving accuracy. This change was made to address a reported bug and improve the overall POS experience.
Original PR description
Steps to reproduce: - Open POS session - Sell a consumable product in POS (no invoice) - Close session Bug: an expense entry is added to the Account move opw-3705156 Forward-Port-Of: odoo/odoo#153657
This update resolves a problem where adding new tabs within a 'Tabs' block in website pages would create a disorganized and confusing layout. The fix restricts tab selectors to only the parent tab, ensuring a cleaner and more predictable clone experience. This improves the overall usability of our website templates.
Original PR description
Commit [1] refactored the tabs snippets options, in doing so, it introduced a selector which could also target a tabs snippet from within its own tab. This leads to very weird behaviour on clone.…
Commit [1] refactored the tabs snippets options, in doing so, it introduced a selector which could also target a tabs snippet from within its own tab. This leads to very weird behaviour on clone. Commit [2] introduced a new MultipleItems abstract option, and with it, added a selector which could cause the same issue as above. This commit fixes this by properly restricting the selectors to the direct children. Steps to reproduce: - Create a new web page - Add a "Tabs" block - Put some text in each tab in other to identify which text belongs to which tab - In the first tab, add a new "Tabs" block, so that you will have tabs and sub-tabs - Put some text in sub tabs in order to identify which text belongs to which sub tab - try to add a new tab in your main tab block => look at the beautiful mess it creates. [1]: https://github.com/odoo/odoo/commit/7572cc150d5469af92138533a024cffbd57d878e [2]: https://github.com/odoo/odoo/commit/ebfa28638b47a7be45b96d561bdf144c3487f366 opw-3730155 Forward-Port-Of: odoo/odoo#154695
This update fixes a technical issue related to how tax closing accounts are configured for Odoo's international localizations (l10n_xx). Previously, the port from version 16.2 didn't correctly implement the new requirement to define these accounts on the tax group level. This ensures accurate tax reporting across various countries.
Original PR description
Commit 14abe7acb11 (PR #123816) introduced default tax closing accounts for localizations that were so far missing them. However, the mechanism for specifying the default tax closing accounts changed in 16.2: they must now be specified on the tax groups. This was not correctly done in the fw-port, so we fix this in this commit. taskid: 3524378 Forward-Port-Of: odoo/odoo#155911 Forward-Port-Of: odoo/odoo#155074
This update ensures our cyclic inventory tests accurately reflect how Odoo handles annual inventory days, specifically considering leap years. Previously, the tests didn't account for the safeguards that automatically select the latest possible month day. This fix improves the reliability of our inventory testing process.
Original PR description
When a company's annual inventory day is selected which is higher than the number of days in that month, there are already safeguards in the feature to ensure the latest day possible for that month is selected. Unfortunately the related test forgot to take this into account for leap years, so this commit modifies it to test for this expected safeguard. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#155841
This update addresses a minor issue in the automated testing of Odoo's email functionality. A temporary problem with how test steps were being handled was causing intermittent failures. The team has applied a standard fix to ensure the tests run reliably, though the original issue wasn't consistently reproducible.
Original PR description
Not a guaranteed fix (not reproducible 1500 attempts), but applying standard fix for `step` failing to use the new step helper. runbot-54560 Forward-Port-Of: odoo/odoo#155925
This update fixes an issue where the default selected value for form selection fields was not being saved after page updates. The change restores this functionality, ensuring users consistently see their preferred selections when editing website forms. This improves the user experience and data consistency.
Original PR description
Since the PR [1] changed the rendering engine of qweb, the default "selected" value set on selects field on the form snippet were lost once the page is saved. This commit builds upon the changes made in [this commit] by reinstating the default "selected" value. Steps to replicate: - Go to Website -> Edit. - Drop a Form snippet onto the page. - Click on the 'Company' field. - In Field > Type, opt for "Selection". - Choose option 3 from the options list to establish it as the default. - Save the modifications. Issue: The expected default value for the selection field is not retained after saving. [1]: https://github.com/odoo/odoo/pull/130467 [this commit]: https://github.com/odoo/odoo/commit/b42e9cc686e7d3ccf82cd091a5dc24028fff8a2b task-3767819 Forward-Port-Of: odoo/odoo#155838
This update fixes issues with how product categories are displayed in the Point of Sale system. Previously, long category names caused overlapping and incorrect ordering, especially when categories had multiple parent levels. This change ensures a cleaner and more organized category display for users.
Original PR description
Before this commit, there were issues with the display and ordering of categories. Long category names would overflow their containers and overlap with other categories. Additionally, the order of parent categories was incorrect when a selected category had many parents. This was due to the `getAllChildren` function not returning all children correctly, which in turn affected the display of the parent sequence. opw-3776740 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a recurring issue where tour scheduling tests were failing intermittently due to timing differences in the Odoo system. The fix adds a verification step to ensure the activity type input is fully loaded before proceeding, improving test reliability and preventing scheduling errors. This ensures tours are scheduled correctly.
Original PR description
Since PR #154105, `mail_activity_schedule_from_chatter` test was failing on some runbot builds. The problem is, the `timeout` to make sure the activity type input is ready (has its data) to click again, is not enough for all builds. Instead of using timeout (which is not same for different builds), we can add an extra step to check if the activity id input has its data after clicking on dropdown, to proceed to the next steps. fixes runbot-57738 Forward-Port-Of: odoo/odoo#156030
This update fixes a minor typo in the Belgian accounting module. The incorrect reference to the Office National de Sécurité Sociale (ONNS) has been corrected to the correct ONSS designation. This ensures accurate reporting for Belgian businesses using the Odoo accounting system.
Original PR description
Office National de Sécurité Sociale (ONNS) should be (ONSS). Forward-Port-Of: odoo/odoo#155828
A bug was causing an error when adding timesheet entries for certain users. This update corrects a technical issue related to how the employee selection field in the Timesheets module handles user permissions, ensuring correct functionality for all employees. This fix improves the user experience for all users.
Original PR description
Steps to reproduce ================== - Install Timesheets - Login as Admin - Edit the access rights of Mark Demo: * Timesheets: "User: all timesheets" * Employees: "None" - Logout and login as Demo…
Steps to reproduce ================== - Install Timesheets - Login as Admin - Edit the access rights of Mark Demo: * Timesheets: "User: all timesheets" * Employees: "None" - Logout and login as Demo - Go to a project task - Switch to the Timesheets notebook - Add a new line - Click on the employee field > Search More => An error occurred Cause of the issue ================== The hr.employee.public model is an SQL view of the hr.employee table with differents permissions. Since the user doesn't have the hr.group_hr_user group, the model hr.employee.public should be used and not hr.employee. Since [0], the model is switched depending on whether the user has the appropriate group. The EmployeeFieldRelationMixin is used and defines a getter for the relation. That relation was not propagated to the Many2OneField. Solution ======== Pass the relation to the many2OneProps. --- [0]: https://github.com/odoo/odoo/pull/136786 opw-3765393 Forward-Port-Of: odoo/odoo#155743
Steps to reproduce: 1. set up a shipping method with UPS rest module 2. enable "generate return label" on the shipping method 3. make a shipping and validate it A return label will be generated that has the customer's address as the receiver and the seller's address as the sender. This is conceptually wrong as the return label will be used to ship from the customer to the seller. This commit uses the correct addresses when generating labels. Also the name of the arguments are added whe
Original PR description
Steps to reproduce: 1. set up a shipping method with UPS rest module 2. enable "generate return label" on the shipping method 3. make a shipping and validate it A return label will be generated that has the customer's address as the receiver and the seller's address as the sender. This is conceptually wrong as the return label will be used to ship from the customer to the seller. This commit uses the correct addresses when generating labels. Also the name of the arguments are added when calling `_send_shipping` method for better readability. opw-3756731 Forward-Port-Of: odoo/enterprise#57477 Forward-Port-Of: odoo/enterprise#57037
Before this commit, the taskGanttView object was not exported and so if someone would like to override that object, he will have to get that object in the views registry. This commit allows to export taskGanttView from that file to easily use it to create another Gantt JS based on that one instead of getting the object from the registry. task-3776786 Forward-Port-Of: odoo/enterprise#57893
Original PR description
Before this commit, the taskGanttView object was not exported and so if someone would like to override that object, he will have to get that object in the views registry. This commit allows to export taskGanttView from that file to easily use it to create another Gantt JS based on that one instead of getting the object from the registry. task-3776786 Forward-Port-Of: odoo/enterprise#57893
The annual changes to the intrastat code lists have occured. In order to synchronise with these new standards, we have to add the new codes, and remove the old ones. This commit adds the new codes in into the relevant csv. We also add expiry dates for the removed codes, and start dates for the new codes. In forward ports, these should be added directly on the account.intrastat.code.csv (since the modules account_intrastat and account_intrastat_expiry were merged after v15.0) One of the cod
Original PR description
The annual changes to the intrastat code lists have occured. In order to synchronise with these new standards, we have to add the new codes, and remove the old ones. This commit adds the new codes in into the relevant csv. We also add expiry dates for the removed codes, and start dates for the new codes. In forward ports, these should be added directly on the account.intrastat.code.csv (since the modules account_intrastat and account_intrastat_expiry were merged after v15.0) One of the codes (50072060) has a supplementary unit, so we add that to the relevant dictionary, though in the forward ports this will be added directly in the data. task-id: 3747808 Forward-Port-Of: odoo/enterprise#57633 Forward-Port-Of: odoo/enterprise#57124
**Current behavior:** Selecting the pre-loaded 'My Team' filter from the search bar in the Timesheets view grid will list, in addition to employees managed by the current user, employees who have no assigned manager nor time sheet approver. **Expected behavior:** This filter will list exclusively employees who the current user is either the manager of or is the time sheet approver of. **Steps to reproduce:** 1. In the Timesheets application, select the My Team filter **Cause of the i
Original PR description
**Current behavior:** Selecting the pre-loaded 'My Team' filter from the search bar in the Timesheets view grid will list, in addition to employees managed by the current user, employees who have no assigned manager nor time sheet approver. **Expected behavior:** This filter will list exclusively employees who the current user is either the manager of or is the time sheet approver of. **Steps to reproduce:** 1. In the Timesheets application, select the My Team filter **Cause of the issue:** The filter's domain includes these aforementioned un-managed employees. **Fix:** Remove that part of the domain. This commit is a partial revision to one of the changes made by https://github.com/odoo/enterprise/commit/60dc8c38519b75b5383a54e923135d557e3737e0 (see log chatter on Odoo for associated ticket for justification) opw-3708825 Forward-Port-Of: odoo/enterprise#57049
Steps to reproduce: - Create a storable product invoice on delivered qty MTO enabled - Create a subscription for a service product and invoice it - Create an upsell and add on it the storable product Bug: PO line and delivery quantities are doubled Fix: only trigger stock rules on the upsell not from the parent SO opw-3696134 Forward-Port-Of: odoo/enterprise#57590
Original PR description
Steps to reproduce: - Create a storable product invoice on delivered qty MTO enabled - Create a subscription for a service product and invoice it - Create an upsell and add on it the storable product Bug: PO line and delivery quantities are doubled Fix: only trigger stock rules on the upsell not from the parent SO opw-3696134 Forward-Port-Of: odoo/enterprise#57590
This commit ensures that non-UK companies using a UK fiscal position are correctly handled, using the foreign VAT when connecting and sending reports to the HMRC. Additionally, the need to input the VAT without the 'GB' prefix has been eliminated by automatically stripping the prefix before sending. task-3765235 Forward-Port-Of: odoo/enterprise#57570
Original PR description
This commit ensures that non-UK companies using a UK fiscal position are correctly handled, using the foreign VAT when connecting and sending reports to the HMRC. Additionally, the need to input the VAT without the 'GB' prefix has been eliminated by automatically stripping the prefix before sending. task-3765235 Forward-Port-Of: odoo/enterprise#57570
Add the Bank Negara Malaysia as a live exchange rate service for malaysia. This is common practice in the country to get exchange rates from it. Task id # 3724397 Forward-Port-Of: odoo/enterprise#57694 Forward-Port-Of: odoo/enterprise#56030
Original PR description
Add the Bank Negara Malaysia as a live exchange rate service for malaysia. This is common practice in the country to get exchange rates from it. Task id # 3724397 Forward-Port-Of: odoo/enterprise#57694 Forward-Port-Of: odoo/enterprise#56030
In #25518, the journal options were reworked to better use journal groups and multi-company reports. However, this caused a regression where _get_options_journals would select journal groups as journals This change uses the 'model' key in the journal options to only select the 'account.journal' ids --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#56730
Original PR description
In #25518, the journal options were reworked to better use journal groups and multi-company reports. However, this caused a regression where _get_options_journals would select journal groups as journals This change uses the 'model' key in the journal options to only select the 'account.journal' ids --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#56730
Fix wrong computation of displayed exchange difference in the bank rec widget. 1. We are adding twice the debit side and not the credit one. 2. In the bank rec widget you can have an `account.move.line` with multiple partials, thus multiple `matched_debit/credit_ids` and we are acting as if there is only one. Forward-Port-Of: odoo/enterprise#57758 Forward-Port-Of: odoo/enterprise#57709
Original PR description
Fix wrong computation of displayed exchange difference in the bank rec widget. 1. We are adding twice the debit side and not the credit one. 2. In the bank rec widget you can have an `account.move.line` with multiple partials, thus multiple `matched_debit/credit_ids` and we are acting as if there is only one. Forward-Port-Of: odoo/enterprise#57758 Forward-Port-Of: odoo/enterprise#57709
Make sure to use the resource calendar of the employee. Indeed, it is possible that the resource calendar set on the user is different than the one on the employee. Which can leads to a traceback if the resource calendar was not in the unavailabilities_by_calendar. As we base previous computation on employee, we also use the employee here. task-3698586 Forward-Port-Of: odoo/enterprise#57712
Original PR description
Make sure to use the resource calendar of the employee. Indeed, it is possible that the resource calendar set on the user is different than the one on the employee. Which can leads to a traceback if the resource calendar was not in the unavailabilities_by_calendar. As we base previous computation on employee, we also use the employee here. task-3698586 Forward-Port-Of: odoo/enterprise#57712
### [I18N] l10n_fr_reports: add tax rounding terms A few of translations relating to 03ce6ce were not included with the original commit. This commit adds the terms to the l10n_fr_reports.pot file, and the translations to the fr.po file. Thank you Antoine (andu) for the Frenchification of the terms. task-id: 3717388 ### [I18N] l10n_fr_reports: restructure po/pot files Add the missing terms to the pot file. When the terms are missing from the pot file, but present in the po file,
Original PR description
### [I18N] l10n_fr_reports: add tax rounding terms A few of translations relating to 03ce6ce were not included with the original commit. This commit adds the terms to the l10n_fr_reports.pot file, and the translations to the fr.po file. Thank you Antoine (andu) for the Frenchification of the terms. task-id: 3717388 ### [I18N] l10n_fr_reports: restructure po/pot files Add the missing terms to the pot file. When the terms are missing from the pot file, but present in the po file, they get marked as "obsolete". This happens during the merge function that is called within tools/translate.py. In order to avoid this, the pot and po files have been re-generated and restructured in order to make future additions easier to merge. Forward-Port-Of: odoo/enterprise#56590
Erroneously added (https://github.com/odoo/enterprise/commit/0695afece962ad1c5d3dafc930b00c0e16d30b25) coutry_code field when reselving merge conflict. Forward-Port-Of: odoo/enterprise#57774
Original PR description
Erroneously added (https://github.com/odoo/enterprise/commit/0695afece962ad1c5d3dafc930b00c0e16d30b25) coutry_code field when reselving merge conflict. Forward-Port-Of: odoo/enterprise#57774
Fix test after Community change, 1xxx accounts should have been debit tag, thus Natur='D'. Community: https://github.com/odoo/odoo/pull/119485 Forward-Port-Of: odoo/enterprise#57666 Forward-Port-Of: odoo/enterprise#57531
Original PR description
Fix test after Community change, 1xxx accounts should have been debit tag, thus Natur='D'. Community: https://github.com/odoo/odoo/pull/119485 Forward-Port-Of: odoo/enterprise#57666 Forward-Port-Of: odoo/enterprise#57531
**Steps to reproduce:** 1- Install Helpdesk, Website module 2- Login using portal user 3- Navigate to tickest and search by assignees **Current behavior before PR:** When searching by assignees using a portal user you will not get any results. This is happening because the portal user seems to not have the access to search in 'res.users' so when the orm parse the user_id assigned to the ticket to a name it will not be able to parse it for the portal user. **Desired behavior after PR
Original PR description
**Steps to reproduce:** 1- Install Helpdesk, Website module 2- Login using portal user 3- Navigate to tickest and search by assignees **Current behavior before PR:** When searching by assignees using a portal user you will not get any results. This is happening because the portal user seems to not have the access to search in 'res.users' so when the orm parse the user_id assigned to the ticket to a name it will not be able to parse it for the portal user. **Desired behavior after PR is merged:** We search first for the users that are matching the search key in 'res.users' using 'sudo()' then get their ids and search in 'helpdesk.ticket' using those ids opw-3719387 Forward-Port-Of: odoo/enterprise#56716
… the time Have a rule with no responsible but with some users to notify. Have a user who cannot validate the rule execute the action. Before this commit, the users to notify were not pinged. After this commit, those users are pinged, even though there is no responsible. opw-3752133 Forward-Port-Of: odoo/enterprise#57684
Original PR description
… the time Have a rule with no responsible but with some users to notify. Have a user who cannot validate the rule execute the action. Before this commit, the users to notify were not pinged. After this commit, those users are pinged, even though there is no responsible. opw-3752133 Forward-Port-Of: odoo/enterprise#57684
Due to a change in the base UBL template, the `<PriceAmount>` is no longer rounded to the number of decimals of the product price. Since the SUNAT only accepts numbers with a maximum of 10 decimals, we round the computed product price for Peru specifically to 10 decimals. [Issue reported by Fernando Vazquez (fvz)](https://www.odoo.com/web#id=3415758&cids=1&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#57578
Original PR description
Due to a change in the base UBL template, the `<PriceAmount>` is no longer rounded to the number of decimals of the product price. Since the SUNAT only accepts numbers with a maximum of 10 decimals, we round the computed product price for Peru specifically to 10 decimals. [Issue reported by Fernando Vazquez (fvz)](https://www.odoo.com/web#id=3415758&cids=1&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#57578
Steps to reproduce: ------------------- - go to Sales; - click on a sale order with tickets assigned to it; - click on the "Tickets" smart button; - group by stage. Issue: ------ A traceback appears. Cause: ------ The query formed is incorrect. We are using a Query object in the domain instead of the team id. Which has been placed in context beforehand. Solution: --------- Place the team id in the context. Note: ----- This will automatically be converted to a list if ne
Original PR description
Steps to reproduce: ------------------- - go to Sales; - click on a sale order with tickets assigned to it; - click on the "Tickets" smart button; - group by stage. Issue: ------ A traceback appears. Cause: ------ The query formed is incorrect. We are using a Query object in the domain instead of the team id. Which has been placed in context beforehand. Solution: --------- Place the team id in the context. Note: ----- This will automatically be converted to a list if necessary when generating the query with a domain using the `IN` operator (relation). opw-3759882 Forward-Port-Of: odoo/enterprise#57502
If you create an upsell for a subscription, when the upsell is confirmed the non-recurring products are copied into the parent subscription which trigger the creation of 2 delivery orders (one on upsell, one on parent sub) and also as there are 2 SOL in the report the product is considered sold twice. This commit fixes this by not creating lines for non recurring products in _subscription_update_line_data. task-3689908 Forward-Port-Of: odoo/enterprise#55613
Original PR description
If you create an upsell for a subscription, when the upsell is confirmed the non-recurring products are copied into the parent subscription which trigger the creation of 2 delivery orders (one on upsell, one on parent sub) and also as there are 2 SOL in the report the product is considered sold twice. This commit fixes this by not creating lines for non recurring products in _subscription_update_line_data. task-3689908 Forward-Port-Of: odoo/enterprise#55613
Pricelists are now restricted to the current company by default. Some tests had to be adapted to keep some pricelists shared between companies. task-3610823 See odoo/odoo#147014 Forward-Port-Of: odoo/enterprise#55857
Original PR description
Pricelists are now restricted to the current company by default. Some tests had to be adapted to keep some pricelists shared between companies. task-3610823 See odoo/odoo#147014 Forward-Port-Of: odoo/enterprise#55857
Before this commit, since 8df2e440 to avoid fetching the last validated timesheet date when the sample data is displayed, when the user changes the range of the grid view or remove a default filter and get some data. A traceback is occured because `lastValidationDatePerEmployee` is undefined. That attribute in timesheet grid renderer is indeed undefined since we did not fetch the data to populate that attribute. This commit makes sure to fetch the last validated timesheet data once the user l
Original PR description
Before this commit, since 8df2e440 to avoid fetching the last validated timesheet date when the sample data is displayed, when the user changes the range of the grid view or remove a default filter and get some data. A traceback is occured because `lastValidationDatePerEmployee` is undefined. That attribute in timesheet grid renderer is indeed undefined since we did not fetch the data to populate that attribute. This commit makes sure to fetch the last validated timesheet data once the user leaves the sample data. X-original-commit: 8df2e440 Forward-Port-Of: odoo/enterprise#57535
It seems some people are getting an "unassigned variable 'balance'". This shouldn't happen with the standard code because _get_write_off_move_lines_dict is only called from the manual reconciliation widget in which, you only have access to models having strictly lines being percentage or fixed (see get_reconcile_modelds_for_manual_reconciliation). This method is not called from the bank reco widget pointed by "RECONCILE x ITEMS" on the accounting dashboard. It probably comes from some customizat
Original PR description
It seems some people are getting an "unassigned variable 'balance'". This shouldn't happen with the standard code because _get_write_off_move_lines_dict is only called from the manual reconciliation widget in which, you only have access to models having strictly lines being percentage or fixed (see get_reconcile_modelds_for_manual_reconciliation). This method is not called from the bank reco widget pointed by "RECONCILE x ITEMS" on the accounting dashboard. It probably comes from some customization but I don't know which ones. github issue: 116064 X-original-commit: 99525f8dac17170a59ed10e471a8ea364258884c Forward-Port-Of: odoo/enterprise#57047