Tuesday, May 9, 2023
69 changes · master
Security fixes and vulnerability patches
This change strengthens how Odoo validates search filter fields, especially for translated fields. It prevents malformed filters from producing unsafe database queries, reducing the risk of SQL injection and improving platform security.
Original PR description
Since https://github.com/odoo/odoo/commit/5a998694a6f353da05d7f69e4c59b9e7dd139e27, we don't crash anymore at https://github.com/odoo/odoo/commit/5a998694a6f353da05d7f69e4c59b9e7dd139e27#diff-fa4d9268d6e65e19aebec81c46038f0e496b91142588ed4d1c1bce7ff2338f2cL759 (at `field.auto_join`) if `len(path) > 1`, `field` is translated the `left` is not only a field name (example: `"name.<something else>"`). Because we trust `left` at this [point](https://github.com/odoo/odoo/blob/1bbdd77f0ee6bd632f5ade88b8b71c5576fa9053/odoo/osv/expression.py#L1339), (we shouldn't, coming from https://github.com/odoo/odoo/pull/101115) then SQL expression generated for translated field is unsafe (SQL injection). In case of translated field, check that `left` side is only a valid field name. (if it is not, it will crash later in `__leaf_to_sql`). In addition, use `field.name` instead of `left` when it is possible to be more robust.
Newly created bank accounts are no longer automatically trusted for outgoing payments unless the user has the proper permission. This helps reduce the risk of unauthorized payment details being enabled at creation time.
Original PR description
This comes as a followup of https://github.com/odoo/odoo/pull/120423 where we restrict unallowed users to toggle the field allow_out_payment when writing on res.partner.bank. Similarly, we'll now do the same check at the creation of bank accounts --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
New internal tests measure how long Odoo takes to validate and prepare web asset bundles. This helps teams monitor performance over time and identify slowdowns earlier in the development process.
Original PR description
This is a part of 116700 Add a test_logs_assets_check_time test to make stats on the time needed to validate all asset bundle (will be added to runbot stats) Add a test_logs_pregenerate_time, mainly to profile this part during devlopment. This test is -standard and will only run if requested.
Resolved issues and error corrections
This update fixes a flaky automated test related to emoji handling in Discuss messages. It helps keep validation runs stable by checking the intended emoji behavior without being affected by timing issues.
Original PR description
This PR fixes the `Posting message should transform relevant data to emoji` test that sometimes failed due to a race condition. The assertion was too strict, this test just needs to check that the emoji are properly parsed when posting a message. Fixes runbot error: 20934.
Code cleanup and technical improvements
Web editor-generated custom asset links now use a clearer URL structure that makes them immediately recognizable as custom assets. This helps teams debug asset issues more easily and may improve performance when many custom assets are used in one bundle.
Original PR description
This pr is a part of 116700 Before this commit an ir_assets generated automaticaly by the web editor will generate an url ending with ...custom.addon.bundle_name.ext After this commit the url will start with /_custom/addon.bundle_name/... This will make it easier to spot immediately if it is a custom asset and thus it is useless to apply the glob. Actually, it will fail on the /_custom when trying to glob, making it faster. This is mainly useful to clarify and debug, but in a case with many customized ir_asset for one bundle, it may have an impact on speed. An upgrade script was created for this change.
Miscellaneous changes
Steps to reproduce ================== - Go to a kanban view with lots of records, for example products - Remove any filter and group by name There is only 80 groups, and there is no way to get the next ones Cause of the issue ================== The `web_read_group` uses a limit, by default of 80 Solution ======== For kanban grouped views, we don't want to set a limit on the groups opw-3283004 Forward-Port-Of: odoo/odoo#120119
Original PR description
Steps to reproduce ================== - Go to a kanban view with lots of records, for example products - Remove any filter and group by name There is only 80 groups, and there is no way to get the next ones Cause of the issue ================== The `web_read_group` uses a limit, by default of 80 Solution ======== For kanban grouped views, we don't want to set a limit on the groups opw-3283004 Forward-Port-Of: odoo/odoo#120119
Customers can now see eligible coupon, gift card, and next-order coupon codes directly on the checkout page. This makes promotions easier to claim and reduces the need for customers to search emails for their codes.
Original PR description
task-2957014 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Invoices issued in a foreign currency now also show totals, taxes, and tax group details in the company's local currency. This helps businesses meet local compliance requirements where authorities require VAT amounts to appear in the national currency.
Original PR description
Display the totals and taxes on pdf invoices in the company currency when the invoice is in foreign currency. This is a requirement from some countries where local authorities need the VAT to be expressed on the invoice in the national currency even if the invoice has been issued in another currency. The tax groups details are also required. The new information is expressed using a rectangle at the bottom right of an invoice. It includes the same information as the detail of totals and taxes above, with the difference that it is in company currency. If cash rounding is activated, the total rounded must not be displayed in company currency. task : 3256515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request refreshes the look and feel of the Odoo interface with larger fonts, more consistent spacing, updated colors, redesigned buttons, badges, menus, inputs, and shared avatar styling. The changes make screens across Accounting and other apps feel more consistent, readable, and polished for everyday users.
Users replying to or editing a message will no longer lose their draft just because they click elsewhere on the page. This reduces accidental cancellations and makes message editing and replying more forgiving.
Original PR description
Before this PR, when you reply to a message or edit a message, the action would be cancelled when you click somewhere else than in the composer or emoji picker. This PR remove this behavior.
Recruitment interview survey invitations are now sent right away instead of waiting in the scheduled email queue. This helps candidates receive interview materials faster and reduces delays in the hiring process.
Original PR description
https://www.odoo.com/web#id=3216342&menu_id=4720&cids=1&action=333&active_id=1251&model=project.task&view_type=form
Payroll attendance now separates overtime entries from regular worked time lines. This makes payslip information clearer and helps payroll teams review overtime amounts more accurately.
Original PR description
see odoo/enterprise#40733
When recruiters use the Create Employee action on an applicant, the employee record is now created automatically instead of only opening a pre-filled form. This reduces manual follow-up and helps ensure successful hires are properly recorded without extra steps.
Original PR description
The action `Create Employee` on an applicant would open the form view with the fields pre-filled, but the employee would not be automatically created when leaving the view. task-3301176
Ecuadorian tax names have been updated to follow a clearer, more consistent naming approach. This improves how taxes appear on invoice descriptions and helps users find the right tax more easily.
Original PR description
We want to invigorate a Tax Name Taxonomy so that tax names are as codified as possible. This allow for a better display on Invoice Description, and allowed us to implement a smart name_search. In this PR, we change the taxes name so that it's more clear for the users task-id: 3052677 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Vendors can now have a specific buyer set on their partner record. When an RFQ or purchase order is generated automatically for that vendor, the buyer is filled in automatically, reducing manual follow-up and improving purchasing accountability.
Original PR description
Currently, automatically PO is generated in that PO buyer field is empty. So in this commit, we added buyer field in partner form view, when rfq is generated automatically and vendor has a specific buyer then at creation of rfq, the PO buyer field will be set according to that. TaskID - 3151213
Image search results now show Unsplash photos and built-in illustrations in an alternating order, starting with an Unsplash image. This creates a more balanced browsing experience while keeping existing attachment results first.
Original PR description
Before this commit, all search result illustrations were displayed before the Unsplash images. This commit makes the search result images from Unsplash and the illustrations alternate, beginning with the first Unsplash image. The existing attachment results remain in front. task-3060679
Slovak tax labels have been updated to follow a clearer, more consistent naming approach. This makes tax descriptions easier for users to understand on invoices and improves tax search results.
Original PR description
We want to invigorate a Tax Name Taxonomy so that tax names are as codified as possible. This allow for a better display on Invoice Description, and allowed us to implement a smart name_search. In this PR, we change the taxes name so that it's more clear for the users task-id: 3052677 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Singapore tax names have been updated to follow a clearer, more consistent naming approach. This should make tax labels easier for users to understand on invoices and improve how taxes are found when searching.
Original PR description
We want to invigorate a Tax Name Taxonomy so that tax names are as codified as possible. This allow for a better display on Invoice Description, and allowed us to implement a smart name_search. In this PR, we change the taxes name so that it's more clear for the users task-id: 3052677 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Bulgarian tax labels have been updated to follow a clearer, more consistent naming approach. This makes tax information easier to understand on invoices and supports better tax search behavior for users.
Original PR description
We want to invigorate a Tax Name Taxonomy so that tax names are as codified as possible. This allow for a better display on Invoice Description, and allowed us to implement a smart name_search. In this PR, we change the taxes name so that it's more clear for the users task-id: 3052677 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes several day-to-day purchasing and inventory workflows easier, including clearer Incoterm display, better links in purchase forms, more precise reserve actions, and improved filtering of warehouse transfers. It also fixes confusing behavior around manufacturing lists, dynamic product barcodes, and blanket order descriptions, reducing manual work and navigation issues for users.
Original PR description
Multiple small improvements across stock and purchase : 1. Allow the modification of the custom description of Blanket Order line whithout having to reset it to draft. 2. Adds the link to the product…
Multiple small improvements across stock and purchase : 1. Allow the modification of the custom description of Blanket Order line whithout having to reset it to draft. 2. Adds the link to the product in the purchase form when the grid selection is enabled & remove links to uom form. 3. Add the source document of a RFQ as the source of any newly created alternative from that RFQ. 4. Add product category groupby on the valuation layers 5. When using [un]reserve buttons on the forecast, only [un]reserve the product of the forecast, not the whole picking/MO. 6. Properly link to Manufacturing Order when going to Inventory -> Operations -> Manufacturing, as it's done in the Overview. 7. Use filters instead of domains for pickings listed on the Inventory -> Operations -> Transfers menu. 8. Hide barcode when using product attributes with dynamic variants. 9. Only activate auto-batch for `Ready` pickings. 10. Display the code with the name for the incoterms. 11. Add incoterm code and location on Delivery slips. 12. Remove links to uom in various forms. Details can be found in their respective commits. Related to odoo/enterprise#40153 Task - 3218314 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now insert Gantt views directly into Knowledge articles and add links to those views from the editor workflow. This makes project timelines and schedules easier to share and reference inside documentation.
Original PR description
With this PR, users will be able to embed the Gantt view directly within the knowledge editor, directly in the body of articles, and it also allows linking the Gantt view. To insert a Gantt view, users have to: Open the Gantt view; Click on the 'Favorite' dropdown menu under the search bar of the control panel; Click on the 'Insert view in article' menu item for inserting the view; and; Click on the 'Insert link in article' menu item for inserting the link. **Task**-3297331
When a candidate completes the recruitment signing process, the system now aligns with the updated recruitment flow to create the related employee record automatically. This reduces manual follow-up for HR teams and helps keep hiring records consistent.
Original PR description
Adapt hr_recruitment_sign to changes introduced in odoo/odoo#120566. task-3301176
This update adjusts several Odoo Enterprise apps so their visual and web assets work correctly with the updated asset caching system. It helps keep pages reliable and up to date while reducing the risk of stale styling or interface resources being shown to users.
This fixes a small issue in the Mail app where conversation state data could be stored in the wrong format. Correcting this helps keep messaging behavior reliable and prevents potential inconsistencies in how threads are handled.
The website editor now correctly shows image width options when editing page snippets. This prevents confusing placeholder text from appearing, making it easier for users to adjust image layouts accurately.
Original PR description
Since commit [1], underscore functions have been replaced with native JavaScript functions. However, this replacement caused a display issue with the 'sprintf' function that is used to display…
Since commit [1], underscore functions have been replaced with native JavaScript functions. However, this replacement caused a display issue with the 'sprintf' function that is used to display several "width" values in the image option width selector. In order to properly display the "width" values, the 'sprintf' function should handle both string (%s) and numeric (%d) placeholders, as it was done with underscore. However, the function only handled string placeholders (%s), resulting in non-string "width" values being improperly displayed. To fix this issue, this commit updates the image option width selector to use only string values (%s) in the 'sprintf' function. Steps to reproduce the bug: - Open the home page in Website edit mode. - Drag and drop a "Text-image" snippet onto the page. - Click on the image to show its options in the editor panel. - Open the "width" selector in the image option section. - Bug: the "%d" placeholders have not been replaced by the correct numeric values. [1]: https://github.com/odoo/odoo/commit/614de869892fd2623311ac1fae5c76ee06a356c7 task-3289218
Point of Sale no longer crashes on mobile devices when the restaurant module is installed. The core PoS and loyalty flows are now tested in mobile mode as well, reducing the risk of future mobile-only issues.
Original PR description
Previously, opening the PoS on a mobile device with pos_restaurant installed would crash, this was caused by pos_restaurant loading an addon for jQuery UI in the pos bundle, but jQuery UI is no longer present in the bundle. The first commit removes that addon. To prevent mobile-only issues like this from occurring in the future, the second commit makes it so that all the basic pos tours are also run in mobile mode.
This change removes an unnecessary validation step when editing list views with the keyboard. It helps avoid misleading checks while keeping the existing validation in place where records are actually added.
Original PR description
In this commit, we will remove unnecessary uses of the checkValidity function. In the ListRenderer, during a keydown, we do if checkValidity but it is an async function so the condition is always true. We have checked the various calls and they are probably unnecessary as the add(...) function will perform its checkValidity.
This fixes a crash that could happen when a hidden related-list field was made visible in Studio. Users can now display these fields without the page failing due to a missing optional display setting.
Original PR description
Before this commit, when having a x2many field invisible in a view, and displaying it anyway in studio, there was a crash because some variable was undefined. This originated from commit f22961ad07e4b04efe4b504ee5a276f20802ed1f, which did not account for the fact that viewMode is an optional props. 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
Some user-facing text was not being included in translation exports, which could leave parts of the interface untranslated. The change adjusts how those messages are written so they can be properly detected and translated without changing the current dependency policy.
Original PR description
Some translations could not be exported, as reported in odoo/odoo#114711. This is due to Babel—the library we use to extract `_t` occurrences from the sources—ignoring javascript template literals, resulting in any gettext inside template literals not being parsed and exported as translatable resources. From version 2.12.0 of the library, support for javascript template literals can be enabled by providing the `parse_template_string` option to the Babel `extract` method. Unfortunately, the library cannot be updated for now, as our policy is to stick to the version of packages from the official Debian repository. This commit refactors some code so that no gettext is inlined within template literals. Enterprise: https://github.com/odoo/enterprise/pull/40457
This update cleans up how asset files are listed in several Odoo module manifests, removing unnecessarily complex patterns. It should make the configuration easier to maintain without changing how users experience the product.
Original PR description
Some glob are more complex than they should. Since `**` matches no/one or many directories, the use of /**/**/ is the same as /**/. Since **.js is similar to *.js except if you except to have a js file in a directory ending with js. Moreover ** will match any directory recursively before a js file.
This fix updates the barcode picking screens so action buttons keep their intended spacing after recent interface changes. It also makes the edit button look clearly available, reducing confusion for users managing stock operations.
Original PR description
Enteprise part of odoo/odoo#119381 Following the Kanban view refactor that came with WOWL, the `style` attribute set on a button put in a kanban view is no longer used. So instead we make use of the Bootstrap classes to set the paddings of the extra button in the kanban view, since classes are properly handled. This avoids breaking the layout of the header line. Also removes the opacity dimming on the edit button of a picking, since it kinda gave the impression that the button was disabled. Task-3218314
This update cleans up how several Odoo apps list and organize their web assets, removing overly complex patterns and placing static files in the expected location. It should make the system easier to maintain without changing day-to-day user behavior.
Original PR description
Some glob are more complex than they should. Since `**` matches no/one or many directories, the use of /**/**/ is the same as /**/. Since **.js is similar to *.js except if you except to have a js file in a directory ending with js. Moreover ** will match any directory recursively before a js file. Also move static file into a static directory
This fixes document PDF processing so it remains compatible with newer Python versions. Businesses using Odoo on Python above 3.10 avoid failures caused by changes in the underlying PDF library.
Original PR description
Odoo uses a more up to date version of PyPDF2 for Python > 3.10, and the api has changed. This commit fixes the issue by wrapping the import in a try/except block to use the correct api. The same code is present in the report code in base.
Odoo Studio now reliably displays hidden one-to-many or many-to-many fields when users enable the "Show invisible" option while editing a form. This prevents crashes and helps teams safely customize forms that include hidden related-record fields.
Original PR description
Have a form view with an invisible x2many field (with `invisible="1"`) In studio, edit that form view and enable the "Show invisible" switch in the sidebar. Before this commit, that flow was not tested, leading to the feature being constantly lost and crashy. After this commit, and in link with odoo/odoo#120685, this flow is fixed and tested.
Some text in spreadsheet and cohort views was not available for translation because it was written in a format the translation tool could not read. The code was adjusted so those labels can be exported and translated properly, improving localization without changing user workflows.
Original PR description
This is due to Babel—the library we use to extract `_t` occurrences from the sources—ignoring javascript template literals, resulting in any gettext inside template literals not being parsed and exported as translatable resources. From version 2.12.0 of the library, support for javascript template literals can be enabled by providing the `parse_template_string` option to the Babel `extract` method. Unfortunately, the library cannot be updated for now, as our policy is to stick to the version of packages from the official Debian repository. This commit refactors some code so that no gettext is inlined within template literals. Community: https://github.com/odoo/odoo/pull/119996
Payroll attendance calculations now compare employee check-in dates consistently with payroll date ranges. This prevents attendance records from being missed or handled incorrectly when generating payslips.
Original PR description
bug was introduced in https://github.com/odoo/enterprise/pull/38639 bug: check_in is a datetime but is compared with 2 dates. fix: convert check_in to date for comparison.
Create 3 invoices for customer (A: $100, B: $300, C: $200) Have a customer payment of $500 Reconcile the payment, in the widget add the lines in the order: - Payment line - Invoice A - Invoice B - Invoice C (partial payment) Reconcile Check invoices Issue: C will be fully paid, the partial payment will be applied to B After 5b2c1d243c0dd5b049ceae280dd270fc8a59f955 We order the lines by amount currency but the user provided order is lost. Moving the original fix to point of s
Original PR description
Create 3 invoices for customer (A: $100, B: $300, C: $200) Have a customer payment of $500 Reconcile the payment, in the widget add the lines in the order: - Payment line - Invoice A - Invoice B - Invoice C (partial payment) Reconcile Check invoices Issue: C will be fully paid, the partial payment will be applied to B After 5b2c1d243c0dd5b049ceae280dd270fc8a59f955 We order the lines by amount currency but the user provided order is lost. Moving the original fix to point of sale opw-3240586 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#120646 Forward-Port-Of: odoo/odoo#119477
Previously WO duration per unit was not getting updated in WO report, since there was no code for updating WO duration per unit while triggering immediate production. With this commit, WO duration per unit is updated in WO report when immediate production is triggered. TaskID - 3251232 Forward-Port-Of: odoo/odoo#117441
Original PR description
Previously WO duration per unit was not getting updated in WO report, since there was no code for updating WO duration per unit while triggering immediate production. With this commit, WO duration per unit is updated in WO report when immediate production is triggered. TaskID - 3251232 Forward-Port-Of: odoo/odoo#117441
The correct behavior for the gift cards should be that the value of the gift card is equal to the value of the order line. For example : - 50$ giftcard -> Apply discount 50% on the order line -> 25$ gift card If we want to apply a discount on a gift card we need to use the global discount The commit we are reverting was forcing the value of the gift card to be the base value of the order line. This reverts commit 83ceeecde76a859749d0659d6c387d95155c8425. OPW-3264945 --- I confirm
Original PR description
The correct behavior for the gift cards should be that the value of the gift card is equal to the value of the order line. For example : - 50$ giftcard -> Apply discount 50% on the order line -> 25$ gift card If we want to apply a discount on a gift card we need to use the global discount The commit we are reverting was forcing the value of the gift card to be the base value of the order line. This reverts commit 83ceeecde76a859749d0659d6c387d95155c8425. OPW-3264945 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#120712 Forward-Port-Of: odoo/odoo#120579
Description of the issue/feature this PR addresses: - Step 1: Create new MO - Step 2: In page by-products click three dots to show column cost_share in tree by-products - Step 3: Create new Byproduct and input cost share >100% or <10% or input two byproducts have cost share is 60% and 70% Current behavior before PR: https://user-images.githubusercontent.com/117807675/232964088-ea25087b-5ca0-448f-90c7-2deb00ab49a1.mp4 Desired behavior after PR is merged: https://user-images.github
Original PR description
Description of the issue/feature this PR addresses: - Step 1: Create new MO - Step 2: In page by-products click three dots to show column cost_share in tree by-products - Step 3: Create new Byproduct and input cost share >100% or <10% or input two byproducts have cost share is 60% and 70% Current behavior before PR: https://user-images.githubusercontent.com/117807675/232964088-ea25087b-5ca0-448f-90c7-2deb00ab49a1.mp4 Desired behavior after PR is merged: https://user-images.githubusercontent.com/117807675/232964236-8f7f1e67-f004-4c4f-9630-02cd202bbdf6.mp4 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#119009
Duplicate the default Account Payable (211000) Set the default Account Payable to Deprecated Create a Vendor Bill with a line Save Error will raise The account Account Payable (211000) is deprecated. opw-3199157 opw-3229350 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#120725 Forwa
Original PR description
Duplicate the default Account Payable (211000) Set the default Account Payable to Deprecated Create a Vendor Bill with a line Save Error will raise The account Account Payable (211000) is deprecated. opw-3199157 opw-3229350 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#120725 Forward-Port-Of: odoo/odoo#120698
Before this commit, tests were using current date to make assertion. It's best to avoid making tests that use current date, as it might fail when run at specific time (e.g. at midnight or during holidays). Forward-Port-Of: odoo/odoo#120762
Original PR description
Before this commit, tests were using current date to make assertion. It's best to avoid making tests that use current date, as it might fail when run at specific time (e.g. at midnight or during holidays). Forward-Port-Of: odoo/odoo#120762
Clicking on the 'Employee' smartbutton on a res.users form view would lead to a traceback if the user was not part of HR Officer. task-3279347 Forward-Port-Of: odoo/odoo#118958
Original PR description
Clicking on the 'Employee' smartbutton on a res.users form view would lead to a traceback if the user was not part of HR Officer. task-3279347 Forward-Port-Of: odoo/odoo#118958
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116578
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116578
When using a different invoicing address for a partner on a sale order, an error is thrown up. This is caused by checking the wrong partner in the access token. opw-3298228 Forward-Port-Of: odoo/odoo#120759
Original PR description
When using a different invoicing address for a partner on a sale order, an error is thrown up. This is caused by checking the wrong partner in the access token. opw-3298228 Forward-Port-Of: odoo/odoo#120759
Steps to reproduce ================== - Use an android phone - Go to Timesheets - Click on Add a line - Click on the Hours Spent input The keyboard is missing the colon `:` symbol It is then only possible the enter a time in the float format. Cause of the issue ================== The inputmode=decimal attribute prevents a user from entering a `:` symbol Note that this doesn't happen on IOS, since the inputmode is ignored for other reasons. opw-3278089 Forward-Port-Of:
Original PR description
Steps to reproduce ================== - Use an android phone - Go to Timesheets - Click on Add a line - Click on the Hours Spent input The keyboard is missing the colon `:` symbol It is then only possible the enter a time in the float format. Cause of the issue ================== The inputmode=decimal attribute prevents a user from entering a `:` symbol Note that this doesn't happen on IOS, since the inputmode is ignored for other reasons. opw-3278089 Forward-Port-Of: odoo/odoo#120697
Steps to reproduce ================== - Enter debug mode - Go to "Settings / Technical / User Interface / Views" - Click on the "View Type" column header - Click on any record - Use the breadcrumbs to go back Issue: the list is not sorted anymore by "View Type" Cause of the issue ================== When there is an `orderBy` param passed to `DynamicList`, it takes precedence over the previous exported state. We should only use the params.orderBy if it is not the initial one.
Original PR description
Steps to reproduce ================== - Enter debug mode - Go to "Settings / Technical / User Interface / Views" - Click on the "View Type" column header - Click on any record - Use the breadcrumbs to go back Issue: the list is not sorted anymore by "View Type" Cause of the issue ================== When there is an `orderBy` param passed to `DynamicList`, it takes precedence over the previous exported state. We should only use the params.orderBy if it is not the initial one. Solution ======== In order to know if we are using the initial order by, we need to export it. With that, we can check if the `params.orderBy` is the initial one. If it is the same, use the `state.orderBy` If not, use the `params.orderBy` opw-3202088 Forward-Port-Of: odoo/odoo#120537
task - 3293181 Forward-Port-Of: odoo/odoo#120064
Original PR description
task - 3293181 Forward-Port-Of: odoo/odoo#120064
To reproduce the issue: 1. Install `mrp` 2. Send a RPC to create a new BoM: - `{"product_tmpl_id": 1, "product_qty": -1}` Error: It will generate a traceback Because of the negative product qty, the RPC triggers a SQL constraint that we try to return. However, the context does not have any `lang`, hence the traceback sentry-4088426130 Forward-Port-Of: odoo/odoo#119341
Original PR description
To reproduce the issue:
1. Install `mrp`
2. Send a RPC to create a new BoM:
- `{"product_tmpl_id": 1, "product_qty": -1}`
Error: It will generate a traceback
Because of the negative product qty, the RPC triggers a SQL constraint
that we try to return. However, the context does not have any `lang`,
hence the traceback
sentry-4088426130
Forward-Port-Of: odoo/odoo#119341Starting on version 16.0, the HTML/CSS editor is very hard to resize. This is due to 16.0 introducing an iframe for the website: as soon as your mouse enters the iframe, the editor loses focus and cannot be resized anymore. This commit removes the pointer-events on the iframe while resizing the editor. task-3006138 Forward-Port-Of: odoo/odoo#118178
Original PR description
Starting on version 16.0, the HTML/CSS editor is very hard to resize. This is due to 16.0 introducing an iframe for the website: as soon as your mouse enters the iframe, the editor loses focus and cannot be resized anymore. This commit removes the pointer-events on the iframe while resizing the editor. task-3006138 Forward-Port-Of: odoo/odoo#118178
Handled error for if e-waybill is already generated and we send request for e-way bill generation it will give error - [4026] Duplicate e-waybill for the given document. Fix - It will fetch the ewaybill details and shows the ewaybill has been already generated task-3262244 Forward-Port-Of: odoo/odoo#117609
Original PR description
Handled error for if e-waybill is already generated and we send request for e-way bill generation it will give error -
[4026] Duplicate e-waybill for the given document.
Fix - It will fetch the ewaybill details and shows the ewaybill has been already
generated
task-3262244
Forward-Port-Of: odoo/odoo#117609before this commit, on clearing the value from post_date field in the blog.post model is not recalculating the post_date value from the inverse function. * open a blog post * clear the post date value * click go to website smart button * traceback will be shown due to missing date _write is not needed because it was done for method _compute_ranking, which doesn't exist in v16 https://github.com/odoo/odoo/commit/74e1d6940da7b5f0cc8fe4b2ba60d0bb81990ba5 post_date is computed metho
Original PR description
before this commit, on clearing the value from post_date field in the blog.post model is not recalculating the post_date value from the inverse function. * open a blog post * clear the post date value * click go to website smart button * traceback will be shown due to missing date _write is not needed because it was done for method _compute_ranking, which doesn't exist in v16 https://github.com/odoo/odoo/commit/74e1d6940da7b5f0cc8fe4b2ba60d0bb81990ba5 post_date is computed method with inverse function which is handled in write, not in _write after this commit, on clearing post_date value the inverse function will set the post_date value from create date as it was in the previous versions. close: https://github.com/odoo/odoo/issues/108577 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116922
Bugfix: at the moment, if the environment's language is not en_US, loading a CoA doesn't correctly load the translations: the translations for all languages are created with the en_US terms. ### Steps to reproduce: 1. Create a DB and install l10n_be. 2. Switch to French. 2. Create a new company based in Belgium. 3. Install the Belgian CoA on the company. Expected behaviour: The accounts should be in French. Actual behaviour: The French translations of the accounts contain the terms in
Original PR description
Bugfix: at the moment, if the environment's language is not en_US, loading a CoA doesn't correctly load the translations: the translations for all languages are created with the en_US terms. ###…
Bugfix: at the moment, if the environment's language is not en_US, loading a CoA doesn't correctly load the translations: the translations for all languages are created with the en_US terms. ### Steps to reproduce: 1. Create a DB and install l10n_be. 2. Switch to French. 2. Create a new company based in Belgium. 3. Install the Belgian CoA on the company. Expected behaviour: The accounts should be in French. Actual behaviour: The French translations of the accounts contain the terms in English. ### Analysis: When the records are created by _load_records(), the language of the environment is French. As a result, all translatable terms are created with translations in en_US and in fr_FR, because of the behaviour of _String.write() See https://github.com/odoo/odoo/blob/39292a02ab34ea86abd5601055901eb968006944/odoo/fields.py#L1762-L1771 Since we only pass the en_US value at this stage, both the en_US and fr_FR translations are created with the en_US value. Later on, when the translations are loaded by _load_translations, there already exists a name->'fr_FR', so our call to translation_importer.save(overwrite=False) doesn't want to overwrite it. See https://github.com/odoo/odoo/blob/2780c37cfdb8560ac7c725fd27f4fe272f1d3072/addons/account/models/chart_template.py#L787 As a result, we end up with the English terms in both the en_US and fr_FR translations. ### The fix: Set the language to en_US when calling _load_records(). Forward-Port-Of: odoo/odoo#120844
task - 3247012 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116553
Original PR description
task - 3247012 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116553
We want to propagate the analytic breakdown on the accrued entries that user can already create from the PO/SO list views. task-3096126 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#108288
Original PR description
We want to propagate the analytic breakdown on the accrued entries that user can already create from the PO/SO list views. task-3096126 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#108288
This reverts https://github.com/odoo/odoo/commit/59dcd17c2d389d52365a2e2975de800284cd271f Issue: With a comma as decimal separator, it is replaced by a dot It is then ignored in parseFloat. Forward-Port-Of: odoo/odoo#120807
Original PR description
This reverts https://github.com/odoo/odoo/commit/59dcd17c2d389d52365a2e2975de800284cd271f Issue: With a comma as decimal separator, it is replaced by a dot It is then ignored in parseFloat. Forward-Port-Of: odoo/odoo#120807
task - 3293181 Forward-Port-Of: odoo/odoo#120815 Forward-Port-Of: odoo/odoo#120067
Original PR description
task - 3293181 Forward-Port-Of: odoo/odoo#120815 Forward-Port-Of: odoo/odoo#120067
Before this PR: When creating a new model, selecting options had no impact to the newly created model as the options where not formatted correctly for the back-end. After this PR: Model options are now properly taken into account. Task Id: 3283738 Forward-Port-Of: odoo/enterprise#40672
Original PR description
Before this PR: When creating a new model, selecting options had no impact to the newly created model as the options where not formatted correctly for the back-end. After this PR: Model options are now properly taken into account. Task Id: 3283738 Forward-Port-Of: odoo/enterprise#40672
Before this commit, the `order_number` key was not used when creating parcel information on sendcloud. This commit adds the sale order number to the information, which helps with referencing the packages. opw-3283665 Forward-Port-Of: odoo/enterprise#40641
Original PR description
Before this commit, the `order_number` key was not used when creating parcel information on sendcloud. This commit adds the sale order number to the information, which helps with referencing the packages. opw-3283665 Forward-Port-Of: odoo/enterprise#40641
If the duration is zero in recurrence_id of the sale order, then the error will occur Steps To Produce:- 1) Create a new record of 'sale.temporal.recurrence' with duration = 0 2) Create new Sale Order from 'Subscription' and Select recurrence = new record which has duration = 0 See:- https://tinyurl.com/2lmww7mq By applying these changes it will resolve this issue sentry - 4020105397 Forward-Port-Of: odoo/enterprise#38612
Original PR description
If the duration is zero in recurrence_id of the sale order, then the error will occur Steps To Produce:- 1) Create a new record of 'sale.temporal.recurrence' with duration = 0 2) Create new Sale Order from 'Subscription' and Select recurrence = new record which has duration = 0 See:- https://tinyurl.com/2lmww7mq By applying these changes it will resolve this issue sentry - 4020105397 Forward-Port-Of: odoo/enterprise#38612
This commit fixes the following situation: - a subscription is created with recurring lines and non recurring line. - a first invoice is created for all lines - time flies, the customer needs to pay because the subscription is expired. Before this commit, the customer must pay the total amount of the order, even the already paid non recurring lines. After this commit, only the recurring lines are due. ticket-id: 3280806 Forward-Port-Of: odoo/enterprise#40282
Original PR description
This commit fixes the following situation: - a subscription is created with recurring lines and non recurring line. - a first invoice is created for all lines - time flies, the customer needs to pay because the subscription is expired. Before this commit, the customer must pay the total amount of the order, even the already paid non recurring lines. After this commit, only the recurring lines are due. ticket-id: 3280806 Forward-Port-Of: odoo/enterprise#40282
'Complementary declaration' and 'without activity' fields of the BOE export for mod 303 had been swapped, causing the file to be incorrect and get rejected when casilla 71 was 0 (because the government's site then assumed it was a complementary declaration, and expected an additional reference field to be completed). The desired content for mod 303's file can be found here https://sede.agenciatributaria.gob.es/Sede/ayuda/disenos-registro/modelos-300-399.html This commit keeps the same beha
Original PR description
'Complementary declaration' and 'without activity' fields of the BOE export for mod 303 had been swapped, causing the file to be incorrect and get rejected when casilla 71 was 0 (because the government's site then assumed it was a complementary declaration, and expected an additional reference field to be completed). The desired content for mod 303's file can be found here https://sede.agenciatributaria.gob.es/Sede/ayuda/disenos-registro/modelos-300-399.html This commit keeps the same behavior as before for pre-2023 report generations. The documentation for them is not accessible anymore, so we assume the issue was introduced by the 2023 update. OPW 3271321 Forward-Port-Of: odoo/enterprise#40823 Forward-Port-Of: odoo/enterprise#40814
task - 3247012 Forward-Port-Of: odoo/enterprise#38704
Original PR description
task - 3247012 Forward-Port-Of: odoo/enterprise#38704
In the documents application, documents of type url are not managed. It is not possible to download or share them. Solution: [1] For sharing: Do not treat the file as a binary. We redirect the user. [2] For downloading: When you want to download a link document, you are redirected to the page. If it is a download of several link documents, nothing happens. If it is a download of several documents, some of which are link documents, we remove the link documents. We need to redirect the us
Original PR description
In the documents application, documents of type url are not managed. It is not possible to download or share them. Solution: [1] For sharing: Do not treat the file as a binary. We redirect the user. [2] For downloading: When you want to download a link document, you are redirected to the page. If it is a download of several link documents, nothing happens. If it is a download of several documents, some of which are link documents, we remove the link documents. We need to redirect the user from the client side (because the CORS policy will not allow us to redirect from the server). opw-3185130 Forward-Port-Of: odoo/enterprise#39274
This commit fixes a bug where the banner for member_only article would appear in private articles as a user that cannot access it. It was appearing because the invisible modifier was not complete, we needed to also make it invisible when the internal_permission field was set to 'none', meaning when the article is only accessible to the members. Now we added this check in the invisible modifier for the banner and it does not appear when the user has no permission on the opened article. task
Original PR description
This commit fixes a bug where the banner for member_only article would appear in private articles as a user that cannot access it. It was appearing because the invisible modifier was not complete, we needed to also make it invisible when the internal_permission field was set to 'none', meaning when the article is only accessible to the members. Now we added this check in the invisible modifier for the banner and it does not appear when the user has no permission on the opened article. task-3293200 Forward-Port-Of: odoo/enterprise#40639
Before, an RPC request was made every time the order button was pressed even if there was no change. Now before making the request we check if the server_id exists. If yes, we pass the request. Forward-Port-Of: odoo/enterprise#40725
Original PR description
Before, an RPC request was made every time the order button was pressed even if there was no change. Now before making the request we check if the server_id exists. If yes, we pass the request. Forward-Port-Of: odoo/enterprise#40725
Impacted versions: ================== - 16.0 Changes: ======== This commit improve below features: - Add noupdate on demo data to prevent data keep updating - Add referral fee in payslip input type and salary rule to help calculate MPF Gross - Add skip rent allowance in payslip input type to control the condition of rent allowance - Add expenses salary rule - Update Backpay category - Update which rules should display on payroll report - Update hr.contract to recompute the paysli
Original PR description
Impacted versions: ================== - 16.0 Changes: ======== This commit improve below features: - Add noupdate on demo data to prevent data keep updating - Add referral fee in payslip input type and salary rule to help calculate MPF Gross - Add skip rent allowance in payslip input type to control the condition of rent allowance - Add expenses salary rule - Update Backpay category - Update which rules should display on payroll report - Update hr.contract to recompute the payslip with l10n_hk_internet - Update hr.payslip to recompute payslip when changing other inputs - Update hr.payslip to recompute future payslips when setting payslip to done - Use contract wage if paid_amount is close to contract_wage to prevent round issue Forward-Port-Of: odoo/enterprise#40629
- In the depreciation schedule report - multiple gray squares appeared as a background color in multiple cells. This commit solves the issue and restore the gray background color for one column out of two to have a better visualization. - The header of the table is visualy similar to what was rendered in odoo 15. The border has been restored and the font size and family of all line is similar. - We display by default all values in the table, even when equal to 0. This is done to s
Original PR description
- In the depreciation schedule report - multiple gray squares appeared as a background color in multiple cells. This commit solves the issue and restore the gray background color for one column out…
- In the depreciation schedule report
- multiple gray squares appeared as a background color in multiple cells. This commit solves the issue and restore the gray background color for one column out of two to have a better visualization.
- The header of the table is visualy similar to what was rendered in odoo 15. The border has been restored and the font size and family of all line is similar.
- We display by default all values in the table, even when equal to 0. This is done to specifically fill the columns + and - to make the report more clear.
- A new option is available, to visualize the datas based on the groupby accounts. This was available in Odoo 15 and is coherent to business needs.
- In the trial balance, when the hierarchy is not active, display the accounts without bold font.
- In all reports
- the font family is now consistent, specifically for numbers. Indeed, different font family were used for different line.
- The bold font is also more coherent when rendering in PDF in comparison with the html reports. The objective is to make the pdf as close as possible to what is rendered in the html page.
- Adds assets demo data in the generic company
task: 3226777
Forward-Port-Of: odoo/enterprise#40790
Forward-Port-Of: odoo/enterprise#38862Create 3 invoices for customer (A: $100, B: $300, C: $200) Have a customer payment of $500 Reconcile the payment, in the widget add the line in the order: - Payment line - Invoice A - Invoice B - Invoice C (partial payment) Reconcile Check invoices Issue: C will be fully paid, the partial payment will be applied to B After 5b2c1d243c0dd5b049ceae280dd270fc8a59f955 We order the lines by amount currency but the user provided order is lost. Moving the original fix to point of sale opw-
Original PR description
Create 3 invoices for customer (A: $100, B: $300, C: $200) Have a customer payment of $500 Reconcile the payment, in the widget add the line in the order: - Payment line - Invoice A - Invoice B - Invoice C (partial payment) Reconcile Check invoices Issue: C will be fully paid, the partial payment will be applied to B After 5b2c1d243c0dd5b049ceae280dd270fc8a59f955 We order the lines by amount currency but the user provided order is lost. Moving the original fix to point of sale opw-3240586 Forward-Port-Of: odoo/enterprise#40761 Forward-Port-Of: odoo/enterprise#40173