Thursday, November 21, 2024
32 changes · saas-17.4
Enhancements to existing features
Point of Sale users can now start typing on the product screen and have the search field focus automatically. This makes finding products quicker during checkout and reduces extra clicks for cashiers.
Original PR description
- Added keydown event listener to focus the search input field when typing. Task ID: 4070511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
The blogs page now correctly shows the newest blog post when the layout is set to show the blog name/latest post without full-width mode. This prevents important new content from being hidden from visitors using that display option.
Original PR description
Prior to [1], when the "Name / Latest post" option was active and "Full-width" was disabled, the blogs page displayed the first blog post as a cover. However, [1] replaced this dynamic cover with a static one titled "Our latest posts," inadvertently omitting the first blog post from the page. Steps to reproduce the issue: - Navigate to the "Blog" menu. - Enable "Edit" mode. - In the "Customize" panel, disable the "Full-width" option. - The latest blog post no longer appears in the list. This commit resolves the issue by ensuring the first blog post is displayed correctly. [1]: https://github.com/odoo/odoo/commit/05ef95d3f13ac42713bb8d8a3002f149345cc08b opw-4289735
Miscellaneous changes
In #173866, the IoT configuration files were merged into one file. However, a logic check in `wireless_ap.sh` was inverted in the process, causing it not to wait for an IP. This PR simply restores the `!` to fix the check. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187862
Original PR description
In #173866, the IoT configuration files were merged into one file. However, a logic check in `wireless_ap.sh` was inverted in the process, causing it not to wait for an IP. This PR simply restores the `!` to fix the check. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187862
The VoIP data reset process has been adjusted to match the current way provider settings are stored. This helps ensure test or demo environments are cleaned correctly without relying on an outdated setting.
Original PR description
Since odoo/enterprise@4f162e7e1ea, the `voip.mode` ICP has been replaced by `voip.provider`'s mode. This commit update the neutralization script accordingly.
This fixes a timing issue in an automated Documents app test that could pick the wrong document before the selected workspace finished loading. The change helps keep quality checks stable and reduces false test failures during releases.
Original PR description
In some specific builds where there are not many records, the test selects the wrong document before the chosen workspace is loaded. See odoo/enterprise#71638 See runbot error 69805
Customers using the portal can now edit their information without hitting an error when UPS delivery support is installed. The change ensures the correct customer details are passed between website account forms, improving reliability for affected storefronts.
Original PR description
Version: - saas-17.4 Steps to reproduce: - Install module l10n_ar_website_sale - go to portal - click on edit information Issue: - it is giving traceback when clicking on edit information Cause: - value of 'partner_sudo' is not available when calling 'partner_info' template from 'portal_my_details_fields' template Solution: - change partner to partner_sudo while calling 'portal_my_details_fields' template to ensure consistency in value of partner in 'partner_info' template. task-4169074
The dependency `l10n_syscohada` doesn't get installed automatically when account is installed, therefore these l10n don't get installed either. Each localization that had `countries` set in the manifest should have an `auto_install` containing the main app it is for. Forward-Port-Of: odoo/odoo#187916
Original PR description
The dependency `l10n_syscohada` doesn't get installed automatically when account is installed, therefore these l10n don't get installed either. Each localization that had `countries` set in the manifest should have an `auto_install` containing the main app it is for. Forward-Port-Of: odoo/odoo#187916
**Steps to reproduce:** - Go to the `Todo` app. - Open a task. - Write any text. - Select the text. - Type `/command` - Hit Enter. **Description of the issue/feature this PR addresses:** The command is correctly added, but the issue is that the selected text is also re-added after the command is applied. **Desired behavior after PR is merged:** Selected text from before the `/command` will be removed and commands will still be executed. The process now involves clearing the c
Original PR description
**Steps to reproduce:** - Go to the `Todo` app. - Open a task. - Write any text. - Select the text. - Type `/command` - Hit Enter. **Description of the issue/feature this PR addresses:** The command is correctly added, but the issue is that the selected text is also re-added after the command is applied. **Desired behavior after PR is merged:** Selected text from before the `/command` will be removed and commands will still be executed. The process now involves clearing the content first and then launching the command. task-3487792 Forward-Port-Of: odoo/odoo#187949 Forward-Port-Of: odoo/odoo#175808
Control panel breadcrumb tooltips aren't translated. This is because the tooltip is defined with a t-att-*, and dynamic attributes are never translatable. This commit redefines the tooltip in a different way that allows translation. opw-4160838 Community: https://github.com/odoo/enterprise/pull/72501 Forward-Port-Of: odoo/odoo#185581 Forward-Port-Of: odoo/odoo#184555
Original PR description
Control panel breadcrumb tooltips aren't translated. This is because the tooltip is defined with a t-att-*, and dynamic attributes are never translatable. This commit redefines the tooltip in a different way that allows translation. opw-4160838 Community: https://github.com/odoo/enterprise/pull/72501 Forward-Port-Of: odoo/odoo#185581 Forward-Port-Of: odoo/odoo#184555
When new modules with coas are being installed, the matching coa based on country is autoinstalled if possible, but if multiple charts match then we overwrite the autoinstall and use the one from the last module. Here we make sure we do not overwrite the chart if it is not associated with the company's country. Using a chart not associated with any country (except generic_coa) during module installation will result in failure. Problem is reproduced on: 1- CI when any syscohada module is in
Original PR description
When new modules with coas are being installed, the matching coa based on country is autoinstalled if possible, but if multiple charts match then we overwrite the autoinstall and use the one from the last module. Here we make sure we do not overwrite the chart if it is not associated with the company's country. Using a chart not associated with any country (except generic_coa) during module installation will result in failure. Problem is reproduced on: 1- CI when any syscohada module is installed 2- start a new db and do not set a country on your company, then try installing any syscohada module --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187271
Prior to this commit, the `FormStatusIndicator` buttons were not properly aligned with the content of the breadcrumb in the control panel. This commit adjusts the alignment of `FormStatusIndicator` correctly according to the content of the breadcrumb. Also, to align the cog menu perfectly with the "save" and "cancel" buttons, we've removed the border around the latter two. task-3874495 | Before | After | |--------|--------| |  |  | |  |  | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186463
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app > New > Enable 'Billable' in the project's settings - New Task > Set any Customer - Sales Order Item > Search More > New > Add product then save - Click 'Sales Order' button Coupled with https://github.com/odoo/enterprise/pull/73492 You'll see in the chatter that the confirmation email
Original PR description
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app…
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app > New > Enable 'Billable' in the project's settings - New Task > Set any Customer - Sales Order Item > Search More > New > Add product then save - Click 'Sales Order' button Coupled with https://github.com/odoo/enterprise/pull/73492 You'll see in the chatter that the confirmation email is sent before the product is added to the sales order, resulting in a $0 quotation document being sent to the customer. This happens because we confirm the SO at the same time as we create it (After pressing the New button). Instead we would rather confirm the SO on save, after the order line creation. The SO confirmation is necessary because we don't want people to work on tasks/projects that are still in quotation since they could hypothetically still be cancelled. opw-4190402 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187807 Forward-Port-Of: odoo/odoo#183586
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186787
Original PR description
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186787
Since odoo/odoo@4d2aa271 we cannot add any manual field to `res.users`. We are always faced with the error: ``` ... fields used for ordering must be present on the model and stored. ``` The reason is that the `res.users.name` field is a related stored field, via inherits. Similarly if we install base_automation we cannot add any field to `base.automation` model, because they are ordered by `sequence`, another stored related field. In this patch we propose to extend the check for field
Original PR description
Since odoo/odoo@4d2aa271 we cannot add any manual field to `res.users`. We are always faced with the error: ``` ... fields used for ordering must be present on the model and stored. ``` The reason is that the `res.users.name` field is a related stored field, via inherits. Similarly if we install base_automation we cannot add any field to `base.automation` model, because they are ordered by `sequence`, another stored related field. In this patch we propose to extend the check for field used in `_order` to related fields. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187629
We were misconfiguring some accounts in ec localization: - Sale and purchase journals default accounts - Missing default valuation accounts on Adjustement and Production locations opw-4127252 Forward-Port-Of: odoo/odoo#187150 Forward-Port-Of: odoo/odoo#179361
Original PR description
We were misconfiguring some accounts in ec localization: - Sale and purchase journals default accounts - Missing default valuation accounts on Adjustement and Production locations opw-4127252 Forward-Port-Of: odoo/odoo#187150 Forward-Port-Of: odoo/odoo#179361
### Steps to reproduce the issue: 1. Make sure you are in a company that is not a branch 2. Create a branch company 3. In the parent company, create an account group 4. In the branch company, create an account that should be set in the account group 5. The branch account is not set in the account group ### Explanation: When creating an account, we will enter `_adapt_accounts_for_account_groups` with a value for `account_ids`. As can be seen, `company_ids` is then assigned `account_i
Original PR description
### Steps to reproduce the issue: 1. Make sure you are in a company that is not a branch 2. Create a branch company 3. In the parent company, create an account group 4. In the branch company, create an account that should be set in the account group 5. The branch account is not set in the account group ### Explanation: When creating an account, we will enter `_adapt_accounts_for_account_groups` with a value for `account_ids`. As can be seen, `company_ids` is then assigned `account_ids.company_id.root_id.ids` which only corresponds to the id of the root company, not its branches. ### Fix reasoning: As asked by TSB, `account.group.company_id` can not have a `parent_id`, redirecting default value to `root_id`. `_accessible_branches` is only looking for active companies, the objective is to retrieve all children of `root_companies` (recursively). opw-4192988 Forward-Port-Of: odoo/odoo#182109
The website module overrides `ir.http:_get_default_lang`, which is called by `http_routing`'s override of `ir.http:_match`. In this override, it calls `website:_get_cached('default_lang_id')` which calls `website:_get_cached_values`. However, `ir.http:_match` is called at a time when the environment hasn't been completely initialized (it will be properly initialized when `ir.http:_authenticate` is called), and its context language hasn't been checked against activated languages yet. This
Original PR description
The website module overrides `ir.http:_get_default_lang`, which is called by `http_routing`'s override of `ir.http:_match`. In this override, it calls `website:_get_cached('default_lang_id')` which…
The website module overrides `ir.http:_get_default_lang`, which is called by `http_routing`'s override of `ir.http:_match`.
In this override, it calls `website:_get_cached('default_lang_id')` which calls `website:_get_cached_values`.
However, `ir.http:_match` is called at a time when the environment hasn't been completely initialized (it will be properly initialized when `ir.http:_authenticate` is called), and its context language hasn't been checked against activated languages yet.
This means that `website:_get_cached_values` cannot rely on this language. The first of the two bugs fixed by this commit happens when website has translatable fields. When reading data from the website, the ORM does a prefetch and tries to load this other field, but fails because the language of the context is invalid. The fix is to prefetch manually the four fields that are not translatable and that we want to cache.
The second bug happens specifically on the logout page, which is set as `auth='none'` by the web module. The website module already overrides the `/web/login` route to set it as `auth='public'` in order to be able to read the website. We need to do the same with the /web/session/logout route, so that the page renders properly.
This commit targets saas-17.2 as the first branch because it is fixing two bugs that were introduced as follows, as determined by a git bisect.
- in a3a3650 from #112000 (saas-17.1), the call to /web/session/logout fails with a 500 status (IndexError) because rule.endpoint.routing has no 'no_db' key, in '_serve_ir_http'.
- in 584a172 from #112000 too (saas-17.1), that code is removed, and the error is now a 403 status because it is not possible to read website records without a user. This error is fixed by adding user='public' to the logout route.
- since d01302b from #151502 (saas-17.2), the test added in this commit could reproduce the error in _get_cached_values by accessing the logout route.
As the saas-17.1 is already EOL, we target saas-17.2 and forward-port it to master.
[OPW-3721341](https://www.odoo.com/odoo/project.task/3721341)
[OPW-3911437](https://www.odoo.com/odoo/project.task/3911437)
Forward-Port-Of: odoo/odoo#187313Description of the issue/feature this PR addresses: Commit [1] made sure that when pasting within blockquote and pre the pasted tag are not unwrapped. But the commit did not change the title as well as the describe of the test cases. This PR places the test cases at correct place. [1]: https://github.com/odoo/odoo/commit/460d88a20a908182e7e9aaf607816c0419a1c6bc --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187918 Fo
Original PR description
Description of the issue/feature this PR addresses: Commit [1] made sure that when pasting within blockquote and pre the pasted tag are not unwrapped. But the commit did not change the title as well as the describe of the test cases. This PR places the test cases at correct place. [1]: https://github.com/odoo/odoo/commit/460d88a20a908182e7e9aaf607816c0419a1c6bc --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187918 Forward-Port-Of: odoo/odoo#187724
**Steps to reproduce:** - Install Accounting and Point of Sale - Open a "Point of Sale" session - Create a POS order and pay it by bank - Create another POS order and pay it by Customer Account - Close POS session - Go to Accounting - Open Bank journal - Create a statement line and reconcile it with the POS payment - Go to "Accounting / Reporting / Audit Reports / General Ledger" - Check the amount of the POS orders in the following journals: * [101300] Account Receivable (PoS) *
Original PR description
**Steps to reproduce:** - Install Accounting and Point of Sale - Open a "Point of Sale" session - Create a POS order and pay it by bank - Create another POS order and pay it by Customer Account -…
**Steps to reproduce:** - Install Accounting and Point of Sale - Open a "Point of Sale" session - Create a POS order and pay it by bank - Create another POS order and pay it by Customer Account - Close POS session - Go to Accounting - Open Bank journal - Create a statement line and reconcile it with the POS payment - Go to "Accounting / Reporting / Audit Reports / General Ledger" - Check the amount of the POS orders in the following journals: * [101300] Account Receivable (PoS) * [121000] Account Receivable * [400000] Product Sales - Check "Cash Basis Method" in the options - Check again the amount of the POS orders in the same journals **Issue 1:** The amount for "[121000] Account Receivable" is present but it shouldn't because no payment has been done for it yet. **Extra steps:** - Create another statement line and reconcile it with the POS customer account payment - Check again the amount of the POS orders in the same journals **Issue 2:** The amount of the POS orders is double the original amount. **Issue 3:** If a partial payment is made for one line, the report has incorrect values. **Cause:** To retrieve the cash basis lines, a complex SQL query is executed. Let's take the following entries: - Invoice: | account | debit | credit | | ----------- | -------- | -------- | | Account Receivable 1 | 100 | 0 | | Account Receivable 2 | 200 | 0 | | Product Sales | 0 | 300 | - Payments: | account | debit | credit | | ---------------- | ------------ | ----------- | | Bank | 50 | 0 | | Account Receivable 1 | 0 | 50 | | account | debit | credit | | ------------ | ---------------- | ----------- | | Bank | 200 | 0 | | Account Receivable 2 | 0 | 200| A SELECT is executed to compute and get the percentage of the paid amount of each receivable/payable account by move, generating a temporary "table" as followed: | move_id | matched_percentage| | ------------------|---------------------------------| | 1 | 0.5 (50% paid for Account Receivable 1)| | 1 | 1.0 (100% paid for Account Receivable 2)| This table is then joined to account_move_line table on move_id where matched_percentage is applied to the amounts. Issues 1 and 2 are due to the fact that it was assumed that each account move would only contain 1 receivable/payable account, which is not the case here. As account_id is not present in the temporary table, it is not possible to identify to which account a line of that table refers to. As there is only a JOIN ON move_id when joining with account_move_line table, each aml from a move is taken into account even when it shouldn't. In this example, they are taken into account twice because the 2 entries have the same move_id. Issue 3 is coming from the fact that the WHOLE amount of "Product Sales" is computed with matched_percentage each time. For example, these 2 lines are computed from the tempory table for "Product Sales": * Product Sales = 300 * 0.5 = 150 (for Account Receivable 1) * Product Sales = 300 * 1.0 = 300 (for Account Receivable 2) The amount for "Product Sales" sums to 450, which is not correct. It should be 250. **Solution for issues 1 and 2:** Get account_id and join account_move_line table on it. An exception should be done for "Product Sales" when joining account_move_line table because it is not a receivable/payable account and the temporay table only contains receivable/payable accounts. **Solution for issue 3:** Compute a ratio for "Product Sales" for each receivable account. Its amount is 100 for "Account Receivable 1" and 200 for "Account Receivable 2" So its ratio should be: * 100 / 300 = 0.33 (for Account Receivable 1) * 100 / 300 = 0.66 (for Account Receivable 2) By applying this ratio, the correct amounts are computed for "Product Sales": * Product Sales = 300 * 0.5 * 0.33 = 50 (for Account Receivable 1) * Product Sales = 300 * 1.0 * 0.66 = 200 (for Account Receivable 2) opw-4224136 Forward-Port-Of: odoo/enterprise#74237 Forward-Port-Of: odoo/enterprise#73593
Following 81dce8461c7, when only some of the invoice lines have subscription start/end date, the commission generation crash when computing the maximum end date or minimal start start: ``` TypeError: '>' not supported between instances of 'bool' and 'datetime.date' ``` This commit ensure we only try to max/min non-falsy values. Forward-Port-Of: odoo/enterprise#74112
Original PR description
Following 81dce8461c7, when only some of the invoice lines have subscription start/end date, the commission generation crash when computing the maximum end date or minimal start start: ``` TypeError: '>' not supported between instances of 'bool' and 'datetime.date' ``` This commit ensure we only try to max/min non-falsy values. Forward-Port-Of: odoo/enterprise#74112
### Steps to reproduce: - Create a new project and set it to be billable. - Set an analytic account on it - On the analytic account, set a plan that is not the default plan - Create a sale order for a subscription product with this analytic account and confirm it. - Create an invoice and confirm it. - Go to the project and click on Status Updates - Notice that the revenues show 0 in “Invoiced” even though we have invoiced the product - If we change the plan on the analytic accoun
Original PR description
### Steps to reproduce: - Create a new project and set it to be billable. - Set an analytic account on it - On the analytic account, set a plan that is not the default plan - Create a sale order for…
### Steps to reproduce:
- Create a new project and set it to be billable.
- Set an analytic account on it
- On the analytic account, set a plan that is not the default plan
- Create a sale order for a subscription product with this analytic account and confirm it.
- Create an invoice and confirm it.
- Go to the project and click on Status Updates
- Notice that the revenues show 0 in “Invoiced” even though we have invoiced the product
- If we change the plan on the analytic account, we will be able to see the invoiced amount on the profitability report
### Current behavior before PR:
When setting analytic account with different analytic plan than the default one the analytic account value will be stored in x_plan{plan_id}_id field when creating the analytic account line record. https://github.com/odoo/odoo/blob/39029710bbce55889c6b951fc423c1254e05ff22/addons/account/models/account_move_line.py#L3092
https://github.com/odoo/odoo/blob/17.0/addons/analytic/models/analytic_plan.py#L106:L122
So when fetching the profitability data for a project we are just checking the account_id field.
https://github.com/odoo/enterprise/blob/17.0/project_sale_subscription/models/project.py#L111:L115
### Desired behavior after PR is merged:
We are now using the same method of _column_name() to know which field should we use in the domain whether it is 'account_id' or 'x_plan{plan_id}_id'
opw-4137931
Forward-Port-Of: odoo/enterprise#70508This commit drastically reduces the spreadsheet thumbnails size. Go to CRM lead and insert the pivot in a spreadsheet: The size of the thumbnail: | Description | Size | |-----------------------|--------| | Before | 107Kb | | After quality=0.5 | 7.8Kb | | After quality=0 | 2.9Kb | Image quality is indeed reduced, but the thumbnails are always displayed so small that it doesn't really make any difference to the naked eye. Note: I'm not back
Original PR description
This commit drastically reduces the spreadsheet thumbnails size. Go to CRM lead and insert the pivot in a spreadsheet: The size of the thumbnail: | Description | Size | |-----------------------|--------| | Before | 107Kb | | After quality=0.5 | 7.8Kb | | After quality=0 | 2.9Kb | Image quality is indeed reduced, but the thumbnails are always displayed so small that it doesn't really make any difference to the naked eye. Note: I'm not backporting this fix to 16.0 because the code changed and webp was not supported at the time (even though we could use jpeg) Task: 4337496 Forward-Port-Of: odoo/enterprise#73881
When extracting data from a ticket expressed in a currency that's inactive in the company, the code crashed with a KeyError, because the 'currency_id' was not in the vals dictionary. This crashed some tests in hr_expense_extract when they were run in a db with only USD as active company. Forward-Port-Of: odoo/enterprise#72941
Original PR description
When extracting data from a ticket expressed in a currency that's inactive in the company, the code crashed with a KeyError, because the 'currency_id' was not in the vals dictionary. This crashed some tests in hr_expense_extract when they were run in a db with only USD as active company. Forward-Port-Of: odoo/enterprise#72941
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app > New > Enable 'Billable' in the project's settings - New Task > Set any Customer - Sales Order Item > Search More > New > Add product then save - Click 'Sales Order' button Coupled with https://github.com/odoo/odoo/pull/183586 You'll see in the chatter that the confirmation email is se
Original PR description
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app…
Steps to reproduce: - Sales app > Configuration > Settings > Enable 'Quotation Templates' - Default template > Search more > New - Set 'Confirmation Mail' to 'Sales: Order Confirmation' - Project app > New > Enable 'Billable' in the project's settings - New Task > Set any Customer - Sales Order Item > Search More > New > Add product then save - Click 'Sales Order' button Coupled with https://github.com/odoo/odoo/pull/183586 You'll see in the chatter that the confirmation email is sent before the product is added to the sales order, resulting in a $0 quotation document being sent to the customer. This happens because we confirm the SO at the same time as we create it (After pressing the New button). Instead we would rather confirm the SO on save, after the order line creation. The SO confirmation is necessary because we don't want people to work on tasks/projects that are still in quotation since they could hypothetically still be cancelled. opw-4190402 Forward-Port-Of: odoo/enterprise#74133 Forward-Port-Of: odoo/enterprise#73492
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#73899 Forward-Port-Of: odoo/enterprise#73579
Original PR description
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#73899 Forward-Port-Of: odoo/enterprise#73579
opw-4160838 Community: https://github.com/odoo/odoo/pull/184555 Forward-Port-Of: odoo/enterprise#72939 Forward-Port-Of: odoo/enterprise#72501
Original PR description
opw-4160838 Community: https://github.com/odoo/odoo/pull/184555 Forward-Port-Of: odoo/enterprise#72939 Forward-Port-Of: odoo/enterprise#72501
After the sign's app OWL upgrade, the guidance dialog's ('Click to start', 'Fill in', etc...) font got unformatted from Helvetica to Times New Roman. Additionally, the sign elements were tooking too long to render, making the user experience also slow. This commits restores the original font for the guidance dialogs and also decrease the rendering refresh from 2s to 500ms for providing a smoother user experience. task-4147887 Forward-Port-Of: odoo/enterprise#73563 Forward-Port-Of: odoo/en
Original PR description
After the sign's app OWL upgrade, the guidance dialog's ('Click to start', 'Fill in', etc...) font got unformatted from Helvetica to Times New Roman. Additionally, the sign elements were tooking too long to render, making the user experience also slow.
This commits restores the original font for the guidance dialogs and also decrease the rendering refresh from 2s to 500ms for providing a smoother user experience.
task-4147887
Forward-Port-Of: odoo/enterprise#73563
Forward-Port-Of: odoo/enterprise#69146Add the picking name as a reference number on ups shipment. [opw-3930816](https://www.odoo.com/odoo/project/49/tasks/3930816) Forward-Port-Of: odoo/enterprise#67303
Original PR description
Add the picking name as a reference number on ups shipment. [opw-3930816](https://www.odoo.com/odoo/project/49/tasks/3930816) Forward-Port-Of: odoo/enterprise#67303
We were misconfiguring some accounts in ec localization: - EDI purchase journal default account opw-4127252 Forward-Port-Of: odoo/enterprise#73776 Forward-Port-Of: odoo/enterprise#69561
Original PR description
We were misconfiguring some accounts in ec localization: - EDI purchase journal default account opw-4127252 Forward-Port-Of: odoo/enterprise#73776 Forward-Port-Of: odoo/enterprise#69561
### Steps to reproduce the issue: 1. Activate Mexican Localization 2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code 3. On the Invoice Line, set Price to 1030.17 and add a 3% Discount 4. Confirm then Send & Print (with CFDI checked) 5. In the generated XML, the following values are off: - In node "Comprobante, SubTotal="1030.16" Descuento="30.90" - In node "Concepto", ValorUnitario="1030.16" Importe="1030.16" Descuento="30.90" - Expecte
Original PR description
### Steps to reproduce the issue: 1. Activate Mexican Localization 2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code 3. On the Invoice Line, set Price to 1030.17…
### Steps to reproduce the issue:
1. Activate Mexican Localization
2. With a Mexican Company, create an Invoice and add a Product with a valid UNSPSC code
3. On the Invoice Line, set Price to 1030.17 and add a 3% Discount
4. Confirm then Send & Print (with CFDI checked)
5. In the generated XML, the following values are off:
- In node "Comprobante, SubTotal="1030.16" Descuento="30.90"
- In node "Concepto", ValorUnitario="1030.16" Importe="1030.16" Descuento="30.90"
- Expected are 1030.17 and 30.91
### Explanation:
During the calculation of the values for the CFDI, `gross_price_subtotal_before_discount` is calculated using `price_subtotal` in every case where `discount` is not 100%. This is due to other values affecting `price_subtotal` (e.g.: taxes with `price_include=True`), in which case calculating a value related to `price_subtotal` with `price_unit` would give the wrong result.
This calculation method causes rounding issues such as above because `price_subtotal` is rounded before calculating `gross_price_subtotal_before_discount`.
### Fix reasoning:
We need to account for any value that could affect `price_subtotal` and make it different from `price_unit * quantity` except for `discount`, which will be included when comparing both values.
The case `discount == 100.0` is covered by this new condition as well, since `discount_factor` would equal to 0 and `price_subtotal` too.
opw-4183556
Forward-Port-Of: odoo/enterprise#72593**Issue:** Two different actions have the same shortcut making one action impossible to reach. **Expected:** Different actions should have different keyboard shortcuts. **Steps to reproduce:** - Activate Subscription app; - Open an existing subscription; - Press `ALT` (`CTRL` on MacOS) to display all shortcuts and look at the `UPSELL` and `CLOSE` buttons. **Cause:** The same `data-hotkey` has been used for both buttons. **Fix:** Change the `UPSELL` button shortcut to `ALT+E` (
Original PR description
**Issue:** Two different actions have the same shortcut making one action impossible to reach. **Expected:** Different actions should have different keyboard shortcuts. **Steps to reproduce:** - Activate Subscription app; - Open an existing subscription; - Press `ALT` (`CTRL` on MacOS) to display all shortcuts and look at the `UPSELL` and `CLOSE` buttons. **Cause:** The same `data-hotkey` has been used for both buttons. **Fix:** Change the `UPSELL` button shortcut to `ALT+E` (`CTRL+E` on MacOS) as for Odoo 17. opw-4306179 Forward-Port-Of: odoo/enterprise#74136 Forward-Port-Of: odoo/enterprise#73548
``_try_to_check_ocr_status`` method attempts to check the OCR status for a record, If an exception occurs during this process, It will log an error. Error: ``` Couldn't check OCR status of hr.expense with id 1: 'currency_id' ``` This commit changes the log level from an error to a warning. This helps reduce noise in the logs by preventing excessive error messages. sentry-4597345306 Forward-Port-Of: odoo/enterprise#73817
Original PR description
``_try_to_check_ocr_status`` method attempts to check the OCR status for a record, If an exception occurs during this process, It will log an error. Error: ``` Couldn't check OCR status of hr.expense with id 1: 'currency_id' ``` This commit changes the log level from an error to a warning. This helps reduce noise in the logs by preventing excessive error messages. sentry-4597345306 Forward-Port-Of: odoo/enterprise#73817