Saturday, November 16, 2024
26 changes
4 changes
Miscellaneous changes
The UBL file could contain SO or PO information if the invoice is linked to one. The MyInvois platform does not support this information and return a validation error if it is provided. This fix will update the template in order to remove this information from the file. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187342
Original PR description
The UBL file could contain SO or PO information if the invoice is linked to one. The MyInvois platform does not support this information and return a validation error if it is provided. This fix will update the template in order to remove this information from the file. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187342
Adds a corporate signature for Codeforward B.V. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187182
Original PR description
Adds a corporate signature for Codeforward B.V. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187182
We have new coders --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186749
Original PR description
We have new coders --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186749
Steps to reproduce: - In Website edit mode. - Drag and drop a "Text" block into the page. - Click on the first paragaph of the "Text" block. - click the "Insert media" button of the text toolbar. - A traceback occurs. The bug was introduced in commit [1], where we checked that "this.props.media" was not undefined before calling the "closest" function on it. However, this was incorrect because, in cases where "this.props.media" was false, the "closest" function was still called, causing
Original PR description
Steps to reproduce: - In Website edit mode. - Drag and drop a "Text" block into the page. - Click on the first paragaph of the "Text" block. - click the "Insert media" button of the text toolbar. - A traceback occurs. The bug was introduced in commit [1], where we checked that "this.props.media" was not undefined before calling the "closest" function on it. However, this was incorrect because, in cases where "this.props.media" was false, the "closest" function was still called, causing the traceback. With this fix, the "closest" function is not called if "this.props.media" is false. [1]: https://github.com/odoo/odoo/commit/625c1aa71e17882848dd827f3be6162e49cbc8ca opw-4335833 opw-4328280 opw-4334279 opw-4328490 opw-4334012 opw-4332500 opw-4332028 opw-4332684 opw-4329687 opw-4331635 opw-4331371 opw-4331287 opw-4332437 opw-4331144 opw-4329646 opw-4328364 opw-4323197 opw-4325959 opw-4322945 Forward-Port-Of: odoo/odoo#187406
1 change
Miscellaneous changes
When opening a validated quality check from a MO/WO, if the type of the quality check is 'picture', the QC wizard should show the image taken. Forward-Port-Of: odoo/enterprise#73561
Original PR description
When opening a validated quality check from a MO/WO, if the type of the quality check is 'picture', the QC wizard should show the image taken. Forward-Port-Of: odoo/enterprise#73561
20 changes
Resolved issues and error corrections
This update adds coverage for command-line configuration handling and cleans up related test settings. It helps ensure configuration behavior stays reliable during future changes, with no direct impact on day-to-day users.
1 change
Resolved issues and error corrections
This pull request updates the Arabic translations for key Odoo Enterprise modules, specifically l10n_ar_edi and l10n_ar_reports. These updates ensure the software is correctly localized for Arabic-speaking users, improving the user experience and accuracy of financial and reporting functionalities.
Original PR description
Related to https://github.com/odoo/odoo/pull/187430 Forward-Port-Of: odoo/enterprise#73927
Features or functions removed from Odoo
A leftover internal method was removed from the HTML editor after a recent cleanup of the editor framework. This reduces outdated code and helps keep the editor easier to maintain, with no expected impact on day-to-day users.
Original PR description
The handleCommand method was removed from Plugin in a recent API refactor [1] but, due to an oversight, this one was forgotten. [1]: https://github.com/odoo/odoo/commit/9aebe936fea2f260d85581062d84860dfcea6c3c
Miscellaneous changes
The issue: When a manufacturing order has a quantity to produce whose decimal accuracy has several digits, in Done status, the fields qty_producing and product_qty overlap. How to reproduce the issue: -Enable debug mode -navigate to Settings > Technical > Database Structure > Decimal Accuracy: Select Stock Weight and set '8' to Digits -Create a product whose UOM is g, add a weight in Logistics and select manufacturing in Routes -Create a Manufacturing Order, select the product, confirm the
Original PR description
The issue: When a manufacturing order has a quantity to produce whose decimal accuracy has several digits, in Done status, the fields qty_producing and product_qty overlap. How to reproduce the issue: -Enable debug mode -navigate to Settings > Technical > Database Structure > Decimal Accuracy: Select Stock Weight and set '8' to Digits -Create a product whose UOM is g, add a weight in Logistics and select manufacturing in Routes -Create a Manufacturing Order, select the product, confirm the Mo, and click on Produce all opw-4237620 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#183072
Before this commit, the welcome page was using "Guest" as the default name, regardless of what the name was. Forward-Port-Of: odoo/odoo#187005 Forward-Port-Of: odoo/odoo#186759
Original PR description
Before this commit, the welcome page was using "Guest" as the default name, regardless of what the name was. Forward-Port-Of: odoo/odoo#187005 Forward-Port-Of: odoo/odoo#186759
If user wanted to filter products by more than one attribute, after going to the next page, second attribute filter was deleted. opw-4191891 Forward-Port-Of: odoo/odoo#187107
Original PR description
If user wanted to filter products by more than one attribute, after going to the next page, second attribute filter was deleted. opw-4191891 Forward-Port-Of: odoo/odoo#187107
Follow-up of https://github.com/odoo/odoo/pull/185583 PR above fixed an issue that results in a traceback when posting a message with `@`mention in multi-company. This happens because a message post with `@`mention notifies the recipients of new message in their inbox, but the computing of this notification was made in the context of the recipient but with `allowed_company_ids` of the person that sends the message. If the recipient does not have access to the `allowed_company_ids` of the send
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/185583 PR above fixed an issue that results in a traceback when posting a message with `@`mention in multi-company. This happens because a message post…
Follow-up of https://github.com/odoo/odoo/pull/185583
PR above fixed an issue that results in a traceback when posting a message with `@`mention in multi-company. This happens because a message post with `@`mention notifies the recipients of new message in their inbox, but the computing of this notification was made in the context of the recipient but with `allowed_company_ids` of the person that sends the message. If the recipient does not have access to the `allowed_company_ids` of the sender then this leads to the crash that PR above fixes.
The PR fixed it by removing the `allowed_company_ids` from the context, with `allowed_company_ids=None`. However, some code inspect presence of `ctx.allowed_company_ids` with the following code:
```py
len(self.env.context.get('allowed_company_ids', [])) <= 1
```
Due to `allowed_company_ids` being present as `None`, code attempts to `len(None)` which is invalid thus it crashes.
This commit fixes the issue by passing `[]` as allowed_company_ids. This is semantically the same as passing no `allowed_company_ids` but it prevents crash from the pattern above.
opw-4231529
Forward-Port-Of: odoo/odoo#187393The UBL file could contain SO or PO information if the invoice is linked to one. The MyInvois platform does not support this information and return a validation error if it is provided. This fix will update the template in order to remove this information from the file. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187367 Forward-Port-Of: odoo/odoo#187342
Original PR description
The UBL file could contain SO or PO information if the invoice is linked to one. The MyInvois platform does not support this information and return a validation error if it is provided. This fix will update the template in order to remove this information from the file. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187367 Forward-Port-Of: odoo/odoo#187342
When applying a global discount on an order that contains lines using tax group, the tax amount was always ignored by the discount. Steps to reproduce: ------------------- * Create a tax group with 2 taxes included in price (e.g 15% and 5%) * Create a product with a price of 120€, the price without tax should be 99.38€ * Open PoS and add the product * Add a global discount of 10% > Observation: As all the taxes are included in price the discount should be 12€ (10% of 120) but it is not
Original PR description
When applying a global discount on an order that contains lines using tax group, the tax amount was always ignored by the discount. Steps to reproduce: ------------------- * Create a tax group with 2 taxes included in price (e.g 15% and 5%) * Create a product with a price of 120€, the price without tax should be 99.38€ * Open PoS and add the product * Add a global discount of 10% > Observation: As all the taxes are included in price the discount should be 12€ (10% of 120) but it is not Why the fix: ------------ We now get the base by getting the total with tax of the line and substracting the tax amount that comes from that that are not included in price opw-4289157 Forward-Port-Of: odoo/odoo#186629
Current behaviour: --- When being on the kanban view of "my activities", the new button is visible but doesn't do anything. Expected behaviour: --- The button shouldn't be visible, because you shouldn't be able to create activities in the kanban view. Steps to reproduce: --- 1. Install contacts 2. Go to contacts 3. Click on the clock in the upper right 4. Click on "View all activities" 5. Switch to kanban view 6. Click on "New" 7. Nothing happens Fix: --- Disabled the "new
Original PR description
Current behaviour: --- When being on the kanban view of "my activities", the new button is visible but doesn't do anything. Expected behaviour: --- The button shouldn't be visible, because you shouldn't be able to create activities in the kanban view. Steps to reproduce: --- 1. Install contacts 2. Go to contacts 3. Click on the clock in the upper right 4. Click on "View all activities" 5. Switch to kanban view 6. Click on "New" 7. Nothing happens Fix: --- Disabled the "new" button opw-4210619 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#184942
Steps to reproduce: [point_of_sale] - activate "Generate a code on ticket" option in PoS settings. - have a PoS session in GMT-6 and create an order after 6pm local time. - go to /pos/ticket, enter the order information and the date that appears on the ticket - ** No sale order found ** Cause The `date_order` of the sale order is stored in UTC while the date displayed on the ticket is in local time. Change This commit makes the search domain bigger to account for orders made in diff
Original PR description
Steps to reproduce: [point_of_sale] - activate "Generate a code on ticket" option in PoS settings. - have a PoS session in GMT-6 and create an order after 6pm local time. - go to /pos/ticket, enter the order information and the date that appears on the ticket - ** No sale order found ** Cause The `date_order` of the sale order is stored in UTC while the date displayed on the ticket is in local time. Change This commit makes the search domain bigger to account for orders made in different timezones. opw-4311152 Forward-Port-Of: odoo/odoo#187075 Forward-Port-Of: odoo/odoo#186770
### Steps to reproduce: - Install "l10n_ch" and switch to the Swiss company - In the Accounting settings activate the QRcodes on invoices - Change the name of the Swiss company - Create an invoice - The old company name is still displayed next to the QR code ### Cause: The field displayed is the field `account_holder_name` which is not updated when changing the company name. Solution: As the field `account_holder_name` is not supposed to be shown anymore in 18.0, we can display dire
Original PR description
### Steps to reproduce: - Install "l10n_ch" and switch to the Swiss company - In the Accounting settings activate the QRcodes on invoices - Change the name of the Swiss company - Create an invoice - The old company name is still displayed next to the QR code ### Cause: The field displayed is the field `account_holder_name` which is not updated when changing the company name. Solution: As the field `account_holder_name` is not supposed to be shown anymore in 18.0, we can display directly the partner name. opw-4273688 Forward-Port-Of: odoo/odoo#186479
Steps to reproduce the issue: ============================= - Set the company of the website to one that uses (euro) currency. - Open the website editor - Drag a banner block and a products carousel block under it - Set the last template to the products block (last one in the list) - Try to edit the title of the banner block - One of two keystrokes are reverted Origin of the issue: ==================== When we added content, we do historyStep which calls sanitize on the target (the
Original PR description
Steps to reproduce the issue: ============================= - Set the company of the website to one that uses (euro) currency. - Open the website editor - Drag a banner block and a products carousel block under it - Set the last template to the products block (last one in the list) - Try to edit the title of the banner block - One of two keystrokes are reverted Origin of the issue: ==================== When we added content, we do historyStep which calls sanitize on the target (the editable), which will sanitize the non editable elements inside it and have `oe_unremovable`. observerApply now will mark this._toRollback as true so in the next keystroke it will revert the changes and so on... Solution: ========= We should not unwrap content for `oe_currency_value` spans opw-4252743 Forward-Port-Of: odoo/odoo#185995
Steps to reproduce: - Enable Analytic Accounting and Anglo-Saxon Accounting in the settings - Create a storable product - Set inventory valuation to Automated on the product's category - Add a cost to the product - Create an invoice with the product and add an analytic distribution - When the invoice is confirmed, the distribution is also applied to the CoGS line. For example, in an invoice where the product’s sale price equals its cost, the account plan will show a balance
Original PR description
Steps to reproduce:
- Enable Analytic Accounting and Anglo-Saxon Accounting in the settings
- Create a storable product
- Set inventory valuation to Automated on the product's category
- Add a cost to the product
- Create an invoice with the product and add an analytic distribution
- When the invoice is confirmed, the distribution is also applied to the CoGS line.
For example, in an invoice where the product’s sale price equals its cost, the account plan will show a balance of 0 (debit = credit).
After this fix, the account plan will show a balance of 10.
Task 2008567 led to the commit https://github.com/odoo/odoo/commit/3590efa47849be09e694e7755ec640f41cb14313, which removed the analytic distribution from the stock interim account. However, the expense line was not modified accordingly.
opw-4177695
Forward-Port-Of: odoo/odoo#183066Adds a corporate signature for Codeforward B.V. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187182
Original PR description
Adds a corporate signature for Codeforward B.V. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187182
When using ship later with 3 steps delivery and receipt, all the steps would always be done again even when the product is already available Steps to reproduce: ------------------- * Create a product A with any vendor * Setup 3 steps receipt and delivery in your warehouse * Create a sale order for product A * Receiving steps and purchase order will be created * Validate the purchase order and all the receiving steps so that there is 1 quantity in the warehouse * Open PoS, settle the or
Original PR description
When using ship later with 3 steps delivery and receipt, all the steps would always be done again even when the product is already available Steps to reproduce: ------------------- * Create a product…
When using ship later with 3 steps delivery and receipt, all the steps would always be done again even when the product is already available Steps to reproduce: ------------------- * Create a product A with any vendor * Setup 3 steps receipt and delivery in your warehouse * Create a sale order for product A * Receiving steps and purchase order will be created * Validate the purchase order and all the receiving steps so that there is 1 quantity in the warehouse * Open PoS, settle the order and ship it later > Observation: In the PoS order you will see that all receiving steps have been created again, and a new purchase order has been created too Why the fix: ------------ The error was happening because the quantity of the original sale order was still reserved. So when creating the new delivery order there was no quantity available and the whole receiving process was required again. We now make sure to free the quantity before creating the delivery order opw-4092298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186484 Forward-Port-Of: odoo/odoo#185469
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce: 1. Install account_reports 2. Add a manual field `x_M` to `account.move.line` 3. Open Profit and Loss report 4. Group by Analytic. Error (edited to reduce space): ``` 2024-11-13 11:12:53,437 1855548 ERROR test_17.4 odoo.sql_db: bad query: -- Create a temporary table, dropping not null constraints because we're not filling
Original PR description
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce: 1. Install account_reports 2. Add a manual…
It defeats the purpose to use `SQL` with f-strings. We observed that if there is an uppercase letter in field names we get an error. Steps to reproduce:
1. Install account_reports
2. Add a manual field `x_M` to `account.move.line`
3. Open Profit and Loss report
4. Group by Analytic.
Error (edited to reduce space):
```
2024-11-13 11:12:53,437 1855548 ERROR test_17.4 odoo.sql_db: bad query:
-- Create a temporary table, dropping not null constraints because we're not filling those columns
CREATE TEMPORARY TABLE IF NOT EXISTS analytic_temp_account_move_line () inherits (account_move_line) ON COMMIT DROP;
ALTER TABLE analytic_temp_account_move_line NO INHERIT account_move_line;
ALTER TABLE analytic_temp_account_move_line DROP CONSTRAINT IF EXISTS account_move_line_check_amount_currency_balance_sign;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN move_id DROP NOT NULL;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN currency_id DROP NOT NULL;
INSERT INTO analytic_temp_account_move_line (...)
SELECT account_move_line.company_id AS "account_move_line.company_id",... to_jsonb(UNNEST(ARRAY[account_analytic_line.account_id, x_plan2_id, x_plan3_id])) AS "account_move_line.analytic_distribution", ... account_move_line.x_M AS "account_move_line.x_M", ...
FROM account_analytic_line
LEFT JOIN account_move_line
ON account_analytic_line.move_line_id = account_move_line.id
WHERE
account_analytic_line.general_account_id IS NOT NULL;
-- Create a supporting index to avoid seq.scans
CREATE INDEX IF NOT EXISTS analytic_temp_account_move_line__composite_idx ON analytic_temp_account_move_line (analytic_distribution, journal_id, date, company_id);
-- Update statistics for correct planning
ANALYZE analytic_temp_account_move_line
ERROR: column account_move_line.x_m does not exist
LINE 10: ... AS "account_move_line.discount_amount_currency", account_mo...
^
HINT: Perhaps you meant to reference the column "account_move_line.x_M".
```
After this patch the same query is:
```
-- Create a temporary table, dropping not null constraints because we're not filling those columns
CREATE TEMPORARY TABLE IF NOT EXISTS analytic_temp_account_move_line () inherits (account_move_line) ON COMMIT DROP;
ALTER TABLE analytic_temp_account_move_line NO INHERIT account_move_line;
ALTER TABLE analytic_temp_account_move_line DROP CONSTRAINT IF EXISTS account_move_line_check_amount_currency_balance_sign;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN move_id DROP NOT NULL;
ALTER TABLE analytic_temp_account_move_line ALTER COLUMN currency_id DROP NOT NULL;
INSERT INTO analytic_temp_account_move_line (...)
SELECT "account_move_line"."company_id" AS "account_move_line.company_id", ... "account_move_line"."x_M" AS "account_move_line.x_M", ... to_jsonb(UNNEST(ARRAY["account_analytic_line"."account_id", "account_analytic_line"."x_plan2_id", "account_analytic_line"."x_plan3_id"])) AS "account_move_line.analytic_distribution", ...
FROM account_analytic_line
LEFT JOIN account_move_line
ON account_analytic_line.move_line_id = account_move_line.id
WHERE
account_analytic_line.general_account_id IS NOT NULL;
-- Create a supporting index to avoid seq.scans
CREATE INDEX IF NOT EXISTS analytic_temp_account_move_line__composite_idx ON analytic_temp_account_move_line (analytic_distribution, journal_id, date, company_id);
-- Update statistics for correct planning
ANALYZE analytic_temp_account_move_line
```
A similar issue can be triggered if we add a manual field `x_plan2_id` to `account.move.line`:
```
ERROR: column reference "x_plan2_id" is ambiguous
LINE 10: ...nb(UNNEST(ARRAY[account_analytic_line.account_id, x_plan2_id...
```
Both issues are fixed here.
This was observed during upgrades. Mainly due to studio fields being generated with uppercase letters. Still, as shown above, it also fails for manual fields.
Forward-Port-Of: odoo/enterprise#73735### Steps to reproduce: - In the settings Enable Multi-steps route - Create a product FP with a BOM: - 1 component: 1 x COMP (tracked by SN) - 1 operation: "Register SN on COMP" - Add an instruction on your op: - type: "Register consumed component" - Product To Register: COMP - Put 2 SN for COMP: - SN01 in Stock/Shelf1 - SN02 in Stock/Shelf2 - Create and confirm an MO for 1 Unit of FP > SN01 is reserved on the COMP raw move. - Go to the shopfloor > "Register SN o
Original PR description
### Steps to reproduce: - In the settings Enable Multi-steps route - Create a product FP with a BOM: - 1 component: 1 x COMP (tracked by SN) - 1 operation: "Register SN on COMP" - Add an instruction…
### Steps to reproduce:
- In the settings Enable Multi-steps route
- Create a product FP with a BOM:
- 1 component: 1 x COMP (tracked by SN)
- 1 operation: "Register SN on COMP"
- Add an instruction on your op:
- type: "Register consumed component"
- Product To Register: COMP
- Put 2 SN for COMP:
- SN01 in Stock/Shelf1
- SN02 in Stock/Shelf2
- Create and confirm an MO for 1 Unit of FP
> SN01 is reserved on the COMP raw move.
- Go to the shopfloor > "Register SN on COMP"
- Change the SN of the COMP from SN01 to SN02
#### > Go back to the MO the incorrect location was used
### Cause of the issue:
While the lot is correctly updated by the action here: https://github.com/odoo/enterprise/blob/e90cf74be3945d1f1256d398ca9c4b61bc35ed08/mrp_workorder/models/quality.py#L485-L507 The associated quant is not set and hence the move location_id, package, ... are not updated with it.
### Fix:
We take advantage of the `quant_id` dummy field of the `stock.move.line` to update the info to write thanks to the write override: https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L85 https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L399-L400 https://github.com/odoo/odoo/blob/09cac8b9e6d2db46dadece0442a8a947a49c9de7/addons/stock/models/stock_move_line.py#L911-L920
### Note:
Unfortunately, the Dialog opened when clicking on the the quality check from the shopfloor:
https://github.com/odoo/enterprise/blob/34ab94cdcc49f4ade66953874a03f2988b2b4317/mrp_workorder/static/src/mrp_display/dialog/mrp_quality_check_confirmation_dialog.js#L12
is not embedded in a form view so that the onchange:
https://github.com/odoo/odoo/blob/366676cafdce00d55823c6daf41452b0c2373e4d/addons/stock/models/stock_move_line.py#L185-L192
is not triggered by our change of "lot_id".
opw-4149941
---
Forward-Port-Of: odoo/enterprise#73685
Forward-Port-Of: odoo/enterprise#72816Before this commit, the buttons "Add By-Product" and "Validate" are both visible when the user is in a by-product move line form view from the Barcode app. This should not happen. Forward-Port-Of: odoo/enterprise#73242
Original PR description
Before this commit, the buttons "Add By-Product" and "Validate" are both visible when the user is in a by-product move line form view from the Barcode app. This should not happen. Forward-Port-Of: odoo/enterprise#73242
1. Set up Avatax on the current company 2. In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' 3. Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' 4. Add a partner and product having avatax category defined 5. Compute taxes 6. Confirm order, it will be automatically locked 7. Click "Send by Email" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because when sending
Original PR description
1. Set up Avatax on the current company 2. In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' 3. Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' 4. Add a partner and product having avatax category defined 5. Compute taxes 6. Confirm order, it will be automatically locked 7. Click "Send by Email" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because when sending by email we recompute external taxes, but it should not be the case for locked orders It also occurs on the web shop when finalizing the payment opw-4261396 Forward-Port-Of: odoo/enterprise#73846 Forward-Port-Of: odoo/enterprise#73505
For the PFA (prime de fin d'année), the unpredictable leaves should be considered as paid. Task: 4331164 Forward-Port-Of: odoo/enterprise#73721
Original PR description
For the PFA (prime de fin d'année), the unpredictable leaves should be considered as paid. Task: 4331164 Forward-Port-Of: odoo/enterprise#73721