Monday, July 20, 2026
7 changes · 17.0
Resolved issues and error corrections
Steps to reproduce: - Go to the Website app and enter Edit mode. - Drop an 'Embed Code' snippet onto the page. - Paste an external embed code (e.g., an Instagram iframe or YouTube video). - Change the alignment of the snippet to 'Center' or 'Right' using the editor options. Observation: The embedded content remains left-aligned regardless of the alignment option selected. Cause: Embedded elements (like iframes or injected scripts) do not inherently respect the parent's 'text-align' prope
Original PR description
Steps to reproduce: - Go to the Website app and enter Edit mode. - Drop an 'Embed Code' snippet onto the page. - Paste an external embed code (e.g., an Instagram iframe or YouTube video). - Change…
Steps to reproduce: - Go to the Website app and enter Edit mode. - Drop an 'Embed Code' snippet onto the page. - Paste an external embed code (e.g., an Instagram iframe or YouTube video). - Change the alignment of the snippet to 'Center' or 'Right' using the editor options. Observation: The embedded content remains left-aligned regardless of the alignment option selected. Cause: Embedded elements (like iframes or injected scripts) do not inherently respect the parent's 'text-align' properties, and standard auto-margins fail if the injected element behaves as an inline block without a defined width. Solution: Update '000.scss' to apply Flexbox properties to the '.s_embed_code_embedded' wrapper. By using 'align-items' (center, flex-start, flex-end) corresponding to the parent snippet's alignment classes, the embedded content is forced to respect the chosen UI alignment. Additionally, apply 'max-width: 100%' to child elements to ensure responsiveness and prevent overflow. opw-5429966
Issue: Negative discount raises error on file validation Steps to reproduce: - Create an invoice for a customer using UBL BIS 3 - Add a line with a negative discount - Confirm and Send Current Behavior: - in the UBL, Charge indicator is set to false - UBL File raises error: [PEPPOL-EN16931-R040]-Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists it happens as amount is negative whereas percentage and base amount are positive Expec
Original PR description
Issue: Negative discount raises error on file validation Steps to reproduce: - Create an invoice for a customer using UBL BIS 3 - Add a line with a negative discount - Confirm and Send Current Behavior: - in the UBL, Charge indicator is set to false - UBL File raises error: [PEPPOL-EN16931-R040]-Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists it happens as amount is negative whereas percentage and base amount are positive Expected behavior: - Charge indicator is set to true - UBL File is valid opw-6352183
Reverse charge taxes (Inversione Contabile) should have the translated code ending with 'IC' (the acronym), not 'CI'. Suggested by partner: eLBati task-none
Original PR description
Reverse charge taxes (Inversione Contabile) should have the translated code ending with 'IC' (the acronym), not 'CI'. Suggested by partner: eLBati task-none
Scenario: - go with a portal user that has a company on /my - change the commercial_partner_id of that user - refresh /my with portal user Result: you see a "403: Forbidden" error because you do not have read access to your own res.partner record. Cause: ir.rule domain are cached, so the "res_partner: portal/public: read access on my commercial partner" ir.rule domain: [('id', 'child_of', user.commercial_partner_id.id)] is cached (until the cache is cleared or odoo instance is restarted) w
Original PR description
Scenario:
- go with a portal user that has a company on /my
- change the commercial_partner_id of that user
- refresh /my with portal user
Result: you see a "403: Forbidden" error because you do not have read
access to your own res.partner record.
Cause: ir.rule domain are cached, so the "res_partner: portal/public: read
access on my commercial partner" ir.rule domain:
[('id', 'child_of', user.commercial_partner_id.id)]
is cached (until the cache is cleared or odoo instance is restarted)
with the wrong commercial_partner_id.
Fix: in master, adding a domain operator 'expr' to dynamically
interpret an expression in a domain is being considered. For stable this
PR is modifying the ir.rule to ensure the portal user still has access
to its own user.
opw-5258358Helpers for the enterprise PR opw-5862529 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
Original PR description
Helpers for the enterprise PR opw-5862529 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
Seven entries of the Mexican chart of accounts template carry a name belonging to a **different** group, copied from a neighbouring entry. Each record's XML ID still states the intended name, which is what this restores. | Code | Field | Before | After | |---|---|---|---| | `6` | `name@es` | Gastos generales | Gastos | | `252.07` | `name@es` | `account_subgroup_hipotecas_por_pagar_a_largo_plazo_nacional` | Hipotecas por pagar a largo plazo nacional | | `602` | `name`, `name@es` | Cost of sales
Original PR description
Seven entries of the Mexican chart of accounts template carry a name belonging to a **different** group, copied from a neighbouring entry. Each record's XML ID still states the intended name, which…
Seven entries of the Mexican chart of accounts template carry a name belonging
to a **different** group, copied from a neighbouring entry. Each record's XML ID
still states the intended name, which is what this restores.
| Code | Field | Before | After |
|---|---|---|---|
| `6` | `name@es` | Gastos generales | Gastos |
| `252.07` | `name@es` | `account_subgroup_hipotecas_por_pagar_a_largo_plazo_nacional` | Hipotecas por pagar a largo plazo nacional |
| `602` | `name`, `name@es` | Cost of sales / Costo de venta | Selling expenses / Gastos de venta |
| `613` | `name@es` | Amortización contable | Depreciación contable |
| `614` | `name` | Accounting depreciation | Accounting amortisation |
| `701.06` | `name`, `name@es` | Interest on foreign bank charges / Intereses a cargo bancario extranjero | Interest payable by national natural persons / Intereses a cargo de personas físicas nacional |
| `702` | `name@es` | Utilidad cambiaria | Productos financieros |
### Why it is not cosmetic
The electronic accounting Chart of Accounts XML takes the `Desc` attribute of
every `<Ctas>` element from the *account group name* — `cfdicoa.xml`
(`t-att-Desc="account.get('name')"`), fed by `trial_balance.py`
`_l10n_mx_get_coa_values()`. Any `es_*` database therefore declares:
```xml
<catalogocuentas:Ctas CodAgrup="702" NumCta="702" Desc="Utilidad cambiaria" Nivel="1" Natur="A"/>
```
whereas the SAT catalogue (Anexo 24) publishes `702` as *Productos financieros*,
with `702.01 Utilidad cambiaria` … `702.10 Otros productos financieros` beneath
it. `CodAgrup` comes from `code_prefix_start` and stays correct, so the file
still validates against the XSD, but the declared description does not match the
official nomenclature. Trial Balance and Pólizas are unaffected — neither
exports group names.
### Evidence
- `252.07` contains its own XML ID as the Spanish name.
- `602` duplicates `501.01`, yet its children are `Sueldos y Salarios`,
`Compensaciones`, `Tiempos extras`.
- `613` and `614` are swapped in one language each: `613`'s children are
depreciations, `614`'s are amortisations.
- `701.06` duplicates `701.05` in both languages; the correct name is symmetric
to `701.07` and to `702.06`.
- `6` is the only single-digit root group whose Spanish name does not match its
XML ID (`account_group_gastos`).
### Notes
Introduced in d782b8b92557; correct in 15.0, where the names lived in
`account.account.tag.csv`. Still present in 18.0, 19.0 and master, hence
targeting 17.0. Template data only — existing databases are unaffected until the
chart is (re)installed, and renaming a group moves no balance.### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6143cd9985 [REL] 17.0.103 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/7ffa322974 [FIX] scorecardPanel: mismatch baseline/keyValue [Task: 6380393](https://www.odoo.com/odoo/2328/tasks/6380393) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authore
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6143cd9985 [REL] 17.0.103 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/7ffa322974 [FIX] scorecardPanel: mismatch baseline/keyValue [Task: 6380393](https://www.odoo.com/odoo/2328/tasks/6380393) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>