-
Notifications
You must be signed in to change notification settings - Fork 30.6k
[IMP] account: Add new tax helpers for EDI #237678
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
task_id: 5096249 X-original-commit: 942c3c1
|
@smetl while this was properly forward-ported, at least one co-dependent PR (odoo/enterprise#100679) did not succeed. You will need to fix it before this can be merged. Both this PR and the others will need to be approved via More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port |
smetl
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@robodoo r+
commit 9a8e44eb89fb476c5b234c2a77e04c3033b93d9b
Author: Mathieu Coutant <mcou@odoo.com>
Date: Tue Nov 18 08:57:10 2025 +0000
[FIX] l10n_latam_invoice_document: load `journal.l10n_latam_use_documents` for LATAM
Issue:
During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up.
Steps to reproduce:
- Install 'l10n_ar'
- Settings > Accounting
- Make sure the "Fiscal Localization" have a value (not Argentina)
- Change the "Fiscal Localization" to "Argentine - Generic Chart of Accounts [...]"
- Go in Accounting > Configuration > Journals
- Click on "Ventas Preimpreso"
- The journal don't have "Use Documents" ticked but it should
Cause:
When loading the data, `_get_chart_template_data()` calls `_get_ar_base_res_company()` and `_get_latam_document_account_journal()`.
The first one returns the data to change `res.company.account_fiscal_country_id` to `base.ar`.
The second one [checks](https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/addons/l10n_latam_invoice_document/models/account_chart_template.py#L12) that [`self.env.company.account_fiscal_country_id.code == "AR"`](https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/l10n_ar/models/res_company.py#L36) before returning the data to change `l10n_latam_use_documents` to `True`.
As `res.company.account_fiscal_country_id` has not been updated, it's not Argentina during the check and `_get_latam_document_account_journal()` returns nothing.
Solution:
When loading the template, we cannot use `res.company.account_fiscal_country_id` to know if we are in LATAM or not.
So instead we check on `chart_template`.
opw-5221931
closes odoo/odoo#237855
X-original-commit: 5edddc47b29225907d91e35b5fabef2cda487613
Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
Signed-off-by: Mathieu Coutant (mcou) <mcou@odoo.com>
commit b567629c0f9996f554ca2138dbbd524124ad1d3b
Author: Jitendra Prajapat <jipr@odoo.com>
Date: Wed Nov 12 04:07:25 2025 +0000
[FIX] point_of_sale: prevent traceback when making partial payment using SEPA QR
Steps to reproduce:
====================
- Create a SEPA QR payment method (for a BE company).
- Create an order and select this payment method.
- Manually change the payment amount (partial amount).
- Confirm the partial payment.
- Click on the "Adjust Amount" button a traceback occurs.
Issue:
=======
In the XML template, the JS method `sendPaymentAdjust()` was being called,
but this method was not defined on the JS side, leading to a traceback
when the button was clicked.
Fix:
=====
- Restricted visibility of the "Adjust Amount" button to payment terminal
methods that support adjustment.
- Added the missing JS method to handle the call and prevent traceback.
Task-5241346
closes odoo/odoo#237812
X-original-commit: c3d3f4f003172ecc8be7515c80496550e000f08b
Signed-off-by: David Monnom (moda) <moda@odoo.com>
Signed-off-by: Jitendra Kumar Prajapat (jipr) <jipr@odoo.com>
commit bc84c0c100aa88a44288cd7391f57459c49a3238
Author: utma-odoo <utma@odoo.com>
Date: Wed Nov 12 17:33:09 2025 +0530
[FIX] sale: prevent error when replacing combo product on sale order line
Currently, an error occurs when a user replaces a combo product with another
product in a sale order line before the order is saved.
Steps to produce:
- Install the sale_management module with demo data.
- Open sale order, click Add a product, and add a combo product (Office Combo).
(Make sure the form is not saved)
- Click on the combo name (Office combo x 1) and replace it with another product.
Error:
IndexError: tuple index out of range
Root cause:
After PR [1], at [2], when a combo product is replaced before the order is
saved, the code attempts to update the combo item lines even though the
template type (`product_template_id.type`) is not `combo`. This leads to an
update of `product_uom_qty`, which triggers the `_compute_price_unit` method
and results in the error at [3].
Fix:
This commit prevents errors when a user replaces a combo product with
another product.
[1]:
https://github.com/odoo/odoo/pull/194496
[2]:
https://github.com/odoo/odoo/blob/47e561bd1f6bc14724d60ebf09a66e458dfd4799/addons/sale/models/sale_order.py#L966-L970
[3]:
https://github.com/odoo/odoo/blob/c758b93a57cd98ab76c26c03bd0097f2eef50961/addons/sale/models/sale_order_line.py#L766
sentry-7009976704
closes odoo/odoo#235422
Signed-off-by: Utsav Maru (utma) <utma@odoo.com>
commit f6adaf34e470fec3badc43c08e8b7c6029483800
Author: khsr-odoo <khsr@odoo.com>
Date: Thu Nov 27 07:17:21 2025 +0000
[FIX] barcode_gs1_nomenclature: fix GS1 barcode date error message formatting
Steps to reproduce:
1. Install `barcodes_gs1_nomenclature`.
2. Activate GS1 nomenclature in Inventory → Barcode Nomenclature.
3. Open Inventory → Configuration
4. Barcode Nomenclature and select the default GS1 Nomenclature.
5. Create a product tracked by lot/serial number.
6. Add on-hand quantity with a Lot/Serial Number such as: 154105510000000244
7. Create a quotation, confirm it, and scan the code in the Barcode app.
Observation:
Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback.
Cause:
The translated ValidationError message uses the wrong interpolation syntax:
'%(error_message)'
and therefore fails during rendering.
Correct syntax should be:
'%(error_message)s'
Fix:
Fix the faulty interpolation placeholder in the ValidationError message to use
'%(error_message)s', preventing the traceback and allowing the error message to
display correctly.
opw-5253564
closes odoo/odoo#237821
X-original-commit: 41899e24075e12db79f66403435456370f1a7b9b
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
Signed-off-by: Khushi Srivastava (khsr) <khsr@odoo.com>
commit 4cd603e6f58a9b6c817141099da5c9e7f84b96b3
Author: FrancoisGe <fge@odoo.com>
Date: Tue Nov 25 19:59:22 2025 +0000
[PERF] html_builder: Improve BuilderList rendering performance
Before this commit, rendering BuilderList with many elements caused
noticeable delays.
How to reproduce:
=======================
- Use a runbot with all demo data
- Switch to edit mode in the website builder
- Add a form
- Link the form to the Contact model
- Add the "State" field
Before this commit:
The options related to the "State" field took more than one second to
render.
After this commit:
Rendering is several hundred milliseconds faster. Additional commits
will follow to further improve the situation.
Reason for the slowdown:
=======================
BuilderList is not optimized to render several thousand records (about
1900 in this example).
This commit addresses the identified bottlenecks to reduce rendering time:
- compute availableRecords a single time before the loop
- compute next available id a single time for a complete batch
closes odoo/odoo#237639
X-original-commit: a7a78b97668e8dd4cb07016a596a86e6087b15fc
Signed-off-by: Benoit Socias (bso) <bso@odoo.com>
Signed-off-by: Francois Georis (fge) <fge@odoo.com>
commit 90302298c137843082be8a592a5fe846c8f18fbe
Author: metu-odoo <metu@odoo.com>
Date: Fri Nov 7 07:42:25 2025 +0000
[FIX] account: fix restrict "Export ZIP" menu.
Earlier, when downloading an invoice, invoices that were never sent didn’t have
a generated PDF.
This happened because the method _get_invoice_legal_documents_all had
allow_fallback=False by default.
As a result, those invoices returned no attachments, leading to blank pages or
missing files in the ZIP download —
since the invoices weren’t sent and no fallback was allowed.
Steps to reproduce:
1:Go to Invoices
2:Try to use Export ZIP for any non-sent invoice → you’ll see a blank page
What this patch does:
It limits the Export ZIP option to the list view only.
This doesn’t fix the missing PDF issue, but it makes sense —
having “Export ZIP” on every single invoice form view isn’t useful.
Possible improvements to consider:
Restrict Export ZIP so it’s only available for sent invoices.
This would improve performance since sent invoices already have PDFs stored
in the filestore.
Allow a fallback for invoices that haven’t been sent, so their PDFs are
generated when exporting — but this may cause performance issues if too
many non-sent invoices are processed at once.
Instead of showing a blank page for non-sent invoices, show a user-friendly
error message. (I noticed this was in the original commit
odoo/odoo@c81ab09d0404cc57f48c202360361a1700f060db where this was
introduced but was later removed — not sure why.)
closes odoo/odoo#237761
X-original-commit: 39d707c654d116a09023615b5356ecc843a72ed1
Signed-off-by: Laurent Smet (las) <las@odoo.com>
commit 8cb00767f11d664fccbd92b35cf9e214c10bdc56
Author: Laurent Smet (LAS) <las@odoo.com>
Date: Tue Nov 4 08:35:36 2025 +0000
[IMP] account: Add new tax helpers for EDI
task_id: 5096249
closes odoo/odoo#237678
X-original-commit: 942c3c146a2418a9fb8247e325593a88316a40e0
Related: odoo/enterprise#100679
Signed-off-by: Laurent Smet (las) <las@odoo.com>
commit b5ef5c826ddc633eaf3a9351105963ea62e58b20
Author: Nicolas Lempereur <nle@odoo.com>
Date: Tue Aug 19 15:35:42 2025 +0000
[FIX] {test_,}website: search redirect to last page if over
Scenario:
- enable website_studio
- go to Contacts app -> open studio -> Model Pages
- add a new model page and click on "Go to Website"
- go to page 2 and search a specific terms with less than 20 results
Result: we see "5 results" in the search bar, but no result are shown.
Cause: the pager is hidden since there is only one page, and we are
currently displaying the records of page 2 that do not exist.
Fix: if we detect that we are on a page over the last page, redirect to
the last page. Eg. if there is 2 pages and we are on page 500, redirect
to page 2.
opw-5008556
closes odoo/odoo#237665
X-original-commit: 8f4fc7eafcdf77f323255803d5548c04c00ac3f1
Signed-off-by: Soukéina Bojabza (sobo) <sobo@odoo.com>
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
commit f22b18216753a964b21ced073459011e28c051ec
Author: Serhii Rubanskyi <seru@odoo.com>
Date: Thu Oct 23 08:39:51 2025 +0000
[FIX] website: fix hide_sidebar_header tour
Tour added in that [commit], was previously failing and the earlier
[fix] only reduced the frequency of failures. However, it still
occasionally fails due to race conditions of the iframe becoming ready
and the moment the builder opens the block tab after the iframe has been
reloaded.
This commit aims to fix it.
[commit]: odoo@a5455bf
[fix]: https://github.com/odoo/odoo/commit/0a9522792cc0e18a895c0589f34977123d091d1a
runbot-233438
closes odoo/odoo#237727
X-original-commit: cc25e6222bf23fcba27bf0fdcee4dbe73b9dd08d
Signed-off-by: Robin Lejeune (role) <role@odoo.com>
Signed-off-by: Serhii Rubanskyi (seru) <seru@odoo.com>
commit 6f45bea6e018e6143b1afbef94fead75a749cc3f
Author: Victor Decleire <videc@odoo.com>
Date: Thu Nov 27 13:36:16 2025 +0100
[FIX] l10n_nl: correct traduction of tax description translation
The traduction of te description of the 9% ST tax was wrong and was TVA to get back on a sale tax
task-5217323
closes odoo/odoo#237730
Forward-port-of: #236655
X-original-commit: 81fd4a0
Signed-off-by: de Wouters de Bouchout Jean-Benoît (jbw) <jbw@odoo.com>
Signed-off-by: Victor Decleire (videc) <videc@odoo.com>
commit dc63748a408b85294dcc6b33bf39d0db8fcb3a08
Author: Max Whale <mawh@odoo.com>
Date: Tue Nov 25 14:28:45 2025 +0000
[IMP] point_of_sale: use_lna support for IoT requests
Since odoo/odoo#235702, there is a `point_of_sale.use_lna` system
parameter. When it is set, ePOS requests will use HTTP instead of HTTPS,
and the `targetAddressSpace: "local"` option is used in the `fetch`
request. This bypasses the need for a HTTPS certificate.
task-5353672
closes odoo/odoo#237598
X-original-commit: 73103c5f38df07b9946268a44418831762f2d355
Related: odoo/enterprise#100640
Signed-off-by: Louis Travaux (lotr) <lotr@odoo.com>
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
commit 175929cb4d96edf8c20aaa83bdbe2e75af5b1eff
Author: Max Whale <mawh@odoo.com>
Date: Tue Nov 25 14:27:43 2025 +0000
[IMP] iot_base: allow use of LNA for IoT requests
Chromium 142 added support for HTTPS -> HTTP requests on the local
network (Local Network Access). This commit adds a flag to the IoT
longpolling class to enable LNA support. The flag forces all requests
to use HTTP even in an HTTPS environment. It also sets the
`targetAddressSpace` option to `local` in the `fetch` request.
task-5353672
X-original-commit: f763474ff9471a6cd58b43fc9cfad15e72f4fb43
Part-of: odoo/odoo#237598
Related: odoo/enterprise#100640
Signed-off-by: Louis Travaux (lotr) <lotr@odoo.com>
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
commit 596a488364456b403b7b8591f333eae437f1108a
Author: sbbh-odoo <sbbh@odoo.com>
Date: Fri Oct 10 10:41:28 2025 +0000
[FIX] html_editor: remove hint and power buttons when block contains Tab
Description of the issue:
- Pressing Tab inserts a tab (`\t`) followed by a zero-width space (`\u200b`).
`isEmptyBlock` considers the block empty because it checks for visible
characters using a regex that ignores zero-width spaces, and the tab is
no longer the last character. As a result, hint and power buttons remain
visible.
Solution:
- Updated the condition to check for tabs in the block’s descendants
using isEditorTab, preventing the hint and buttons from showing.
After this commit:
- The hint and power buttons do not appear when the block contains a Tab.
task-5062294
closes odoo/odoo#237685
X-original-commit: d57f883353e8f0d0e313f99efac4fbf269873e7c
Signed-off-by: David Monjoie (dmo) <dmo@odoo.com>
Signed-off-by: Samit Bharatbhai Bhadiyadra (sbbh) <sbbh@odoo.com>
commit 2f5c3feedd983d74eb5e8ea74ed8cd65f2f12fe2
Author: Sébastien (blse) <blse@odoo.com>
Date: Mon Nov 17 11:54:00 2025 +0100
[IMP] html_builder, html_editor, website: improve doc typing a bit more
The commit d4df17bacfee069d595d52c91a274d875dd231d1 improved the
documentation around the resources and shared methods of plugin
significantly.
This commit continues a bit on that work and add definitions for some
missed resources, fixes some small typing issues, and changes the type
annotation for the resources declaration to correctly type declaration
with a single implementation of a resource (which gives typing
information to arguments of functions)
Backport of 61a766b4366dbee06a22e04ddc51213ecf9225e7
task-5249231
closes odoo/odoo#237594
X-original-commit: 2ba28b9dd64a47cfaa2f009ff2f384965f6d4178
Signed-off-by: Francois Georis (fge) <fge@odoo.com>
Signed-off-by: Sébastien Blondiau (blse) <blse@odoo.com>
commit 5351adb85fe7f0e1fa6d58e6a5e49554df2ff73f
Author: nees-odoo <nees@odoo.com>
Date: Tue Nov 25 12:40:45 2025 +0000
[FIX] mail: prevent long participant names from overflowing call sidebar
Purpose of this Commit:
Prevent call participant name overflow
Before this commit, long participant names in the call sidebar could overflow
their container, distorting the layout and causing the call action icons to
shift incorrectly.
This commit ensures long names are now handled safely, preventing any layout
breakage in the call participants sidebar.
closes odoo/odoo#237654
X-original-commit: eeecdb82ac0fc4f961ac3f13ba345c7d189558f3
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Signed-off-by: Neel Ajitbhai Shah (nees) <nees@odoo.com>
commit 5876e896423cd2894b4f9d1ffdf47b7c373cd633
Author: parp-odoo <parp@odoo.com>
Date: Thu Nov 27 14:12:27 2025 +0530
[FIX] pos_self_order: restrict kiosk to only configured payment methods
Ensure the kiosk only uses payment methods that are explicitly configured.
Steps to reproduce:
- Set up an online payment method (do not assign it to the kiosk)
- Open a kiosk session.
- Try to validate an order.
Issue:
- The kiosk prompts for an online payment method,
even though none are configured.
Fix:
- Restrict the kiosk to use only the payment methods
explicitly configured in its settings.
- Prevent loading of any unconfigured payment methods to the kiosk.
closes odoo/odoo#237553
Task: 4911495
X-original-commit: fa1bbb2e3bc4c6685304a4f7992d0cd65d67c522
Related: odoo/enterprise#100605
Signed-off-by: David Monnom (moda) <moda@odoo.com>
Signed-off-by: Parthkumar Patel (parp) <parp@odoo.com>
commit 3b7fb50bf66088a01392a8e11050706d0b332e55
Author: Pierre Pulinckx <pipu@odoo.com>
Date: Wed Nov 26 09:08:35 2025 +0000
[FIX] website: test_auto_hide_menu tour
In this commit, we fix a non deterministic behavior by ensuring the
iframe is loaded before set and attribute on iframe content element.
runbot-error-id~233039
closes odoo/odoo#237595
X-original-commit: 7017e9e4f5357eafaa8d76af79174031837ddde3
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
commit 4bf7d5e080b90f205f5b5c7d3c4cfde85970b1f0
Author: nsirjacobs <nosir@odoo.com>
Date: Thu Nov 13 10:33:36 2025 +0000
[FIX] account: Ensure due date is displayed correctly in phone view
Behavior:
When switching to phone view (<768px) 'Due Date' column name dissapears but values stay.
This causes every further column of the table to have the wrong title.
The removal of the Due Date column is intended:
The issue happens beacause the 't-att-class' specifying the condition to make values red
was overriding the initial 'class' specifying the behavior in phone view.
Steps to reproduce:
- Create an Invoice for the current user
- Go to Website -> User -> My Account -> Your Invoices
- switch to phone view (reduce to less than 768px if not initially the case)
- You'll see the 'Due Date' column name dissapear and the value shift to the next column name ('Amount Due')
opw-5239794
closes odoo/odoo#237670
X-original-commit: a6a2ce1b8102631b16789888036dc67c575cbf9a
Signed-off-by: Ali Alfie (alal) <alal@odoo.com>
commit 70308b37545a06afea6553c50b3211f767a613f9
Author: bhna-odoo <bhna@odoo.com>
Date: Mon Nov 17 19:01:00 2025 +0530
[FIX] mrp,{purchase,sale}_stock,stock: handle assigning multiple stock reference
Currently an error occurs when there are multiple stock references of same name,
and user assigns references on Reception report.
Steps to replicate:
- Install `sale_stock`.
- Load Demo data from Settings.
- Go to settings and check `Reception Report`.
- Go to Operations > Reference > S00004 > Duplicate it (from the form view).
- Open Receipts > WH/IN/00002 > Allocation (Smart button) > Click 'Assign All'
or the S00004 line.
Error:
```
File "/home/odoo/odoo18/community/addons/stock/report/report_stock_reception.py", line 271, in action_assign
self._action_assign(in_move, out)
File "/home/odoo/odoo18/community/addons/stock/report/report_stock_reception.py", line 343, in _action_assign
in_move._get_source_document()._add_reference(out_ref)
File "/home/odoo/odoo18/community/addons/stock/models/stock_picking.py", line 2102, in _add_reference
self.move_ids.reference_ids = [Command.link(reference.id)]
File "/home/odoo/odoo18/community/odoo/orm/fields_misc.py", line 112, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: stock.reference(3, 19)
```
Cause:
- As the user duplicated the record, there were two records received in the
variable `reference` at [1] that caused the expected singleton error.
Solution:
- The methods `_add_reference()` and `_remove_reference()` can now handle
multiple reference records.
[1]: https://github.com/odoo/odoo/blob/4b2154870eebcce449f53d8f593386ae6af04a83/addons/sale_stock/models/sale_order.py#L329
sentry-6982131891
closes odoo/odoo#236239
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
commit a127ee658bef77c0efb1147febad793049641cf2
Author: djameltouati <otd@odoo.com>
Date: Wed Nov 26 15:04:56 2025 +0100
[FIX] stock_account: allow Inventory User to validate AVCO pickings
Steps to reproduce:
- Create a storable product “P1” with:
- Product Category:
- Costing Method: AVCO
- Log in as Mark Demo (Inventory User only)
- Create a picking containing:
- 1 unit of P1
- Try to validate it
Issue:
An access error is raised:
“You are not allowed to access 'Product Value' (product.value) records.
This operation is allowed for the following groups:
- Inventory/Administrator”
During the picking validation, the `_run_avco` method performs a search
on the `product.value` model, but this model is only accessible to
Inventory Managers, causing the failure.
https://github.com/odoo/odoo/blob/08b62a4bbcc6f9a391b2cc00a621ef4c76100229/addons/stock_account/security/ir.model.access.csv#L4
opw-5254884
opw-5236047
closes odoo/odoo#237585
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
commit 4dc159852663e52d0f73384d65cc8cbb120f326b
Author: pkgu-odoo <pkgu@odoo.com>
Date: Wed Nov 26 11:35:16 2025 +0530
[FIX] website: escape single quote in technical page title
**Steps to reproduce:**
* Install **Website Sale** modules with demo data.
* Change the language to **French (fr)** from settings.
* Open **Website → Site → Technical Page**.
* The technical pages view fails to load.
**Observed behavior:**
An Odoo **RPC_ERROR** is raised.
```
self._obj.execute(query, params)
psycopg2.errors.UndefinedColumn: column ''S'inscrire'' does not exist
LINE 5: ...'), ('Tableau de bord utilisateur', '/my/home'), (''S'inscrir...
```
**Cause:**
* Method `website.technical.page()._table_query` uses raw values without
correctly escaping them since 25efaf49b6691d1b5aeba40a016134660fe2358c
* A new route title translation ("S'inscrire" for "Sign Up") was added
as french translation.
**Fix:**
Use SQL class to correctly escape litterals when using them.
opw-5354982
closes odoo/odoo#237500
Signed-off-by: Soukéina Bojabza (sobo) <sobo@odoo.com>
commit f4ee7088307bd07e1f9c8948066e9c36f9ece90a
Author: maad-odoo <maad@odoo.com>
Date: Thu Nov 27 20:36:52 2025 +0530
[FIX] mail: use appropriate text selector in tests
Before this commit, the selector used was not reliable.
This commit uses a more reliable selector to ensure the
assertion of the elements's text content.
closes odoo/odoo#237770
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
commit ea5fad6bf0fb63e5a7c0c48f64a92ada0dcc5973
Author: Martin Lefèvre (mlef) <mlef@odoo.com>
Date: Thu Nov 20 16:03:03 2025 +0100
[FIX] hr_work_entry,hr_contract_salary_payroll: offer contract template
Steps to reproduce the bug:
1. install hr_contract_salary_payroll
2. check "My US Company"
3. go on "Work Entries", then click on the arrow to view the next month.
-> This will generate work entries for the next month
4. Go back to employees / Troy Cruz / Offers (smart button)
-> You should be on the form view of a new offer. Do not save it.
5. Change the contract template to (e.g.) Experienced Developer
-> A validation Error should appear
The validation error would tell us that we are trying to set a new
contract to the employee, but the employee already had a running contract.
This happens because `self.employee_id` would be set to false just after
the write of it's version's `contract_date_end`:
https://github.com/odoo/enterprise/blob/9ea4c1382a75024acacba7af1529d0c5cc762827/hr_contract_salary_payroll/models/hr_contract_salary_offer.py#L78C1-L78C7
This only happens when there are work entries after the specified end
date. This is why we had to look at the next month's work entries.
The problematic code gets rolled back at some point, but
`self.employee_id` stays empty if we don't save the form, since self is
a `newId` in this case, which is not stored in the DB (and thus not
rolled back)
The issue was that the context was supposed to have the
`salary_simulation` key present, since we are doing a salary
simulation.
But, the backend would still try to unlink the work entries of
current_version during the simulation. Which is not needed and causes
`self.current_employee_id` to be set to `False`
The context variable and a check before `_remove_work_entries()` has
thus been added to fix that.
task-5207567
closes odoo/odoo#236901
Related: odoo/enterprise#100151
Signed-off-by: Bertrand Dossogne (bedo) <bedo@odoo.com>
commit 7ce97383cb86d6a45306467d2c3e9c6fe79b0608
Author: sben-odoo <sben@odoo.com>
Date: Mon Nov 17 15:39:23 2025 +0100
[FIX] html_builder, website: prevent dropping form snippet inside a form
When a snippet containing a <form> (e.g. “Contact us” form) is dropped
inside an existing form element, the inner form is invalid HTML
(see [1]).
Steps to reproduce:
===================
1- Go to a Shop page and open a Product page.
2- Drag and drop a “Contact us” form snippet inside the existing product
form (e.g. in description_ecommerce, which is an HTML field with
`sanitize_form=False`).
3- Save the page, re-enter edit mode.
4- Click on any field of the inserted “Contact us” form.
→ traceback.
Cause:
======
HTML does not support nested `<form>` elements.
As soon as the browser parses the dropped snippet inside an existing
`<form>`, it normalizes the DOM and strips or moves the inner `<form>`
tag, keeping only its contents. The inner form therefore loses its
attributes (action, method, data-model_name, etc.).
When editing a field, `fetchAuthorizedFields` needs the form’s model it
used to rely directly on `formEl.dataset.model_name`, which is missing
in this broken structure, causing a crash.
Solution:
========
Prevent dropping the snippets that contain a form inside another form,
by filtering out the `selectorSiblings/Children` (which are used to make
the dropzones appear) that are in forms, when they are dragged.
This commit also uses the `getModelName(formEl)` helper wherever we need
the form model instead of accessing `dataset.model_name` directly.
[1]: https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form
opw-5256576
closes odoo/odoo#236074
Signed-off-by: Soukéina Bojabza (sobo) <sobo@odoo.com>
Co-authored-by: Soukéina Bojabza <sobo@odoo.com>
commit ab004d5f745e5c548c3d7c06670d83f56d1fb7b8
Author: Parth Pujara <ptpu@odoo.com>
Date: Thu Jun 19 10:09:46 2025 +0530
[IMP] html_editor, website: customize link popover
The link popover previously had multiple buttons, making the link
editing experience less intuitive. This commit unifies actions into
a single wider popover and refactors some logic to improve consistency.
UI/UX changes:
- Replaced three buttons (copy, edit, remove) with one "Edit" button,
which opens the link editing view.
- Widened the popover for better readability.
- Removed the copy link feature.
Changes in link editing view:
- Moved the "remove link" button in this view.
- Updated URL input placeholder to: "Enter URL, /page, or #anchor".
- Auto-focus the URL input when creating a link for selected text.
- Auto-focus the label input when creating new links or editing
existing links.
task-4862671
closes odoo/odoo#218529
Signed-off-by: Outagant Mehdi (mou) <mou@odoo.com>
Co-authored-by: adch-odoo <adch@odoo.com>
commit 393881d357143bfa93370f0713e8c5d80ec6501b
Author: Pedram (PEBR) <pebr@odoo.com>
Date: Thu Nov 27 15:50:27 2025 +0330
[FIX] pos_sale: Allow settling orders with multiple UoM in POS
When a POS order contains products with different units of measure,
the system was unable to settle the order properly, leading to errors.
opw-5357109
closes odoo/odoo#237728
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
commit 1d0958db75b50d49f230393c396345066e9e13e5
Author: Achraf (abz) <abz@odoo.com>
Date: Tue Nov 25 17:08:01 2025 +0100
[FIX] web: Allow users to empty selection field on list view
Steps:
- Install studio
- Open any list view
- Make sure multi_edit is enabled (or edit the view with debug menu)
- Add a new selection field to the list view with studio with several values
- Get back to the list view, select at least two record and edit the new
selection field
- Put any value, it will edit all selected record correctly
- select at least two record and edit the field again
- Try to clear the value (to have it empty)
- Traceback
Since this change https://github.com/odoo/odoo/pull/214422, selection
fields no longer display “empty” values, to be consistent with many2one
fields.
Now, to set a selection field to a null value, you have to clear it,
just as you would clear a many2one field.
The problem arose because when you clear an input, `onInputClear` is
called and triggers an onchange with the value `null`, but the
`selection_field` code expects to receive a `false` if there is no value
otherwise it searches for the value in the list of possible choices
which is why the traceback is raised when `null` is received, because it
is not in the list of choices.
This comimt change the onchange of `selection_field` to change the value
to `false` if it is equal to `null`.
opw-5226200
closes odoo/odoo#237390
Signed-off-by: Luca Vitali (luvi) <luvi@odoo.com>
commit 63420d62da1298547923594a702fd39c00763576
Author: Tanguy Quéguineur <taqu@odoo.com>
Date: Wed Nov 26 12:52:40 2025 +0100
[FIX] google_calendar: sync event at creation
**Issue**
Events were not synchonized if created by a user with google synchronization
stopped, for a user with an active google synchronization.
To reproduce:
- Have user A with google synchronization stopped and user B with google
synchronization enabled.
- With user A, create an event with user B as the organizer.
- Open the Google calendar of user B and notice the event is not present.
In our own database, it was causing issues for meetings booked from website
and created by the public user.
**Change**
Check the status of the google synchronization of the event organizer instead,
in case it is not the same as the current user.
opw-4795476
closes odoo/odoo#233989
Signed-off-by: Gabriel de Paula Felix (gdpf) <gdpf@odoo.com>
commit 9931582773e83f075bdb8d5a4cb2c85a1b1f3dec
Author: Harsh Shah <hash@odoo.com>
Date: Wed Nov 26 18:39:55 2025 +0530
[IMP] account: restore manual 'Reviewed' toggle on moves
This commit restores the visibility of the `Reviewed` boolean on account.move
(Other Info) so users can manually uncheck it and mark moves as 'to review'.
Applies only to 19.0.
task-5361487
closes odoo/odoo#237601
Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
commit c5e03fd87474662564363c105ca1a1608715be66
Author: romc-odoo <romc@odoo.com>
Date: Thu Oct 23 14:52:23 2025 +0200
[FIX] hr_work_entry: fix leave interval filter
This filter was causing some issues in l10n_BE as the work entry type can change depending on various reasons.
If we don't find a match, we search among all leaves.
task-5103485
closes odoo/odoo#232863
Related: odoo/enterprise#97978
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
commit d19292e7192d62e69d981f3cb422921a739a4bc5
Author: Guillaume V <gvar@odoo.com>
Date: Tue Nov 25 10:32:54 2025 +0100
[FIX] point_of_sale: keep receipt change when payment line is translated
When using another language than english, the change line wasn't displayed
on the receipt.
Steps to reproduce:
-------------------
* Set the POS user language to fr_BE (or any none english)
* Pay an order in cash with an amount greater than the total.
> Observation:
Change line was not visible on the receipt
Why the fix:
------------
The frontend was checking `paymentLine.name !== "return"`, so once the backend
translated the name to “Retour”, the change line was skipped.
By checking `is_change` we get the correct amount and we ensure `order.showChange`
still returns true even when the “return” payment line is translated (e.g. in fr_BE).
opw-5247079
closes odoo/odoo#237522
Signed-off-by: David Monnom (moda) <moda@odoo.com>
commit 840f85a4a2e34358e57b43642a7f7dc0743f7daa
Author: dhruv <djip@odoo.com>
Date: Wed Nov 19 14:58:29 2025 +0530
[FIX] pos_online_payment: fix tb while capturing online payment with invoice
steps to reproduce:
- Create an Online Payment payment method.
- Open POS, create an order, and validate it using the Online Payment method
with Invoice enabled.
issue:
- A traceback error is displayed after validating the order.
fix:
- Fixed the `invoice PDF download` actions so it use the correct service.
- Also, corrected for the cashbox action.
closes odoo/odoo#236466
Task: 5269502
Signed-off-by: David Monnom (moda) <moda@odoo.com>
commit 4d439f4a3b5701eb7189d4941958706d7580f90c
Author: thle-odoo <thle@odoo.com>
Date: Fri Nov 21 16:35:10 2025 +0100
[FIX] website_crm_partner_assign: correct access for unsubscribe/spam
Allow a portal user to read tags on the lead
when he mentions that it is spam.
Correct access for the unsubscribe process with child
partner for the commercial partner of the portal user.
task-5347166
closes odoo/odoo#236943
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
commit 8aba3fa91a38f28b8b6ff72f9bd2c514aab3d5e5
Author: Atul Patel <atp@odoo.com>
Date: Thu Nov 27 08:21:46 2025 +0000
[FIX] website_sale: Fixed error for bool object attribute
When there is no default confirmation template,
An error is raised:
AttributeError: 'bool' object has no attribute 'exists'.
This happens because default_template is False,
So calling default_template.exists() results in the error.
The issue occurs during the upgrade process.
```
File "/home/odoo/src/odoo/19.0/odoo/orm/models.py", line 3142, in _init_column
value = field.default(self)
File "/home/odoo/src/odoo/19.0/addons/website_sale/models/website.py", line 52, in _default_confirmation_email_template
if default_template.exists():
AttributeError: 'bool' object has no attribute 'exists'
```
closes odoo/odoo#237686
Signed-off-by: Valentin Chevalier <vcr@odoo.com>
commit 2548fd8d7f3b53a62089ac9122bd17524500ea1a
Author: Stéphane Diez <snd@odoo.com>
Date: Tue Sep 30 14:00:34 2025 +0200
[FIX] mrp_subcontracting: portal access rights
Make sure that portal subcontractors can do what they need to:
- create new serial numbers and assign them to SMLs
-> new ACL for sequences (READ and WRITE)
-> new ACL for mrp.production.serials to open the wizard
- see SML serials in the Detailed Operations popup
-> add context to portal view
- open the MO list view for registering components for multiple MOs
-> add the missing js file in the manifest
- save the changes on the DB
-> call `_has_workorders` before doing some workorder operations
-> add sudo for MO unlink because a portal user doesn't have DELETE ACL
-> add sudo for MO assign when using lots/serials
-> skip writing the state field if there's no record to write
- correctly increment sequence
-> added the changes from odoo/odoo#227095 to the subcontracting serial wizard
task 5107873
closes odoo/odoo#229930
Related: odoo/enterprise#98611
Signed-off-by: Steve Van Essche <svs@odoo.com>
commit c403736168db7d02df2da58c97c8010839a080d6
Author: Maximilien (malb) <malb@odoo.com>
Date: Fri Nov 21 10:20:31 2025 +0000
[FIX] account_edi_ubl_cii, l10n_fr_facturx_chorus_pro: banner to install module
This commit will add an alert when the customer use Chorus pro but don't have
the module installed, and so don't have all the additional checks
task-5223874
closes odoo/odoo#237655
X-original-commit: b83e9fc9319c40896a08ef73e445ce9d448cd65a
Signed-off-by: Claire Bretton (clbr) <clbr@odoo.com>
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
commit 23f784ec335540354db859c04915dc53ab0ed8e4
Author: Hesham Saleh <hsal@odoo.com>
Date: Mon Nov 24 12:48:20 2025 +0000
[IMP] account: Improve tooltip for Prices setting
This commit improves the tooltip of the Prices setting in configuration.
The old tooltip
"This setting cannot be changed after an invoice is created."
is changed to
"This setting locks once a journal entry is created."
task-5354382
closes odoo/odoo#237672
X-original-commit: 2275daca5acb29567b9d31b21b9f0f73b3f2cdf7
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
Signed-off-by: Hesham Saleh (hsal) <hsal@odoo.com>
commit 3d3bd1c39e7777383477b80fc015a2bd17c0f175
Author: ppat-odoo <ppat@odoo.com>
Date: Wed Nov 26 12:55:20 2025 +0000
[FIX] l10n_hu_edi: stop sending region element in edi as it is not mandatory
Purpose: According to documentation, in region tag in address details, we need
to send that county's province code as per the ISO 3166-2 alpha 2 standard.
E.g. 'HU-BU'. But we were sending state's name E.g. 'Budapest'. But since region
tag is not mandatory for edi, we choose not to send that.
Before this commit: In region tag, state's name was sent.
After this commit: We stopped sending region tag.
EDI Documentation(page-87): https://onlineszamla.nav.gov.hu/files/container/download/2025.10.09.%20EN_Online%20Invoice%20System%203.0%20Interface%20Specification%20.pdf
task-5270199
closes odoo/odoo#237673
X-original-commit: 7c80b4ec60d699b47506994d652dee718891d313
Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
Signed-off-by: Pratham Nareshbhai Patel (ppat) <ppat@odoo.com>
commit 5f92e7e8687cc125e66b36ad088cca810a7fadc8
Author: Giorgio Tocco (gito) <gito@odoo.com>
Date: Wed Nov 26 12:36:20 2025 +0100
[FIX] mail: clicking message link should not open new tab
Before this commit, clicking on a message link for a message outside
of the current thread would open a new tab.
This unwanted behavior is caused by a missing return value on an
override of Thread's `open` introduced in [1], breaking the chain
of returns.
This commit fixes the issue by correctly returning the super call in
said override.
[1] https://github.com/odoo/odoo/pull/223004
task-5268790
closes odoo/odoo#237318
Signed-off-by: Matthieu Stockbauer (tsm) <tsm@odoo.com>
commit 44e25a32abaec1b6319a51938e70525f98d407fe
Author: bikh-odoo <bikh@odoo.com>
Date: Wed Nov 26 16:01:58 2025 -0800
[FIX] website_sale_stock: fixes the no margin bottom issue
The out_of_stock_message div doesn't have a margin bottom,
and it looks like something is off in the product page.
Steps To Reproduce:
1.Go to a product with no inventory.
2.Add a out-of-stock message in the sale tab.
3.Go to the product page on the website.
We can see that the message div has no margin bottom.
To fix this we just add a margin bottom, as it was before.
The PR that affected the margin bottom:
https://github.com/odoo/odoo/pull/220506
opw-5259994
closes odoo/odoo#237674
Signed-off-by: Valeriya Chuprina (vchu) <vchu@odoo.com>
commit d0fb798d1b04fce2a0b3a453805b4ae12dafc083
Author: Antoine (anso) <anso@odoo.com>
Date: Wed Nov 19 16:43:36 2025 +0100
[FIX] web, *: adapt and hide useless elements in print mode
*: account, sale
This change adjusts layouts for print mode and removes interface parts
that do not belong on printed documents.
Form View:
- Removed border on the sheet
- Removed actions line at end of list the list view
(`o_field_x2many_list_row_add`)
- Removed "?" tooltip indicator
- Made list view full width in print mode
Kanban View:
- Removed "new" button (`.o-kanban-button-new`)
Specific:
- Accounting form view: removed "Add" outstanding credit buttons
(`.outstanding_credit_assign`)
- Sale form view: removed `.so_button_below_order_lines`
task-5265277
closes odoo/odoo#236748
Related: odoo/enterprise#100068
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
commit ab174cc161719d81ccf16d0eba523a6ea53d81b2
Author: Max Whale <mawh@odoo.com>
Date: Wed Nov 26 09:44:48 2025 +0000
[FIX] pos_self_order: demo kiosk uses wrong pay after mode
The field `self_ordering_pay_after` should always be `each` when the
`self_ordering_mode` is set to `kiosk`. This is enforced in the `write`
method. However, the demo kiosk is created with a
`self_ordering_pay_after` value of `meal`, until the `write` method is
run. This results in behaviour such as the payment screen being skipped
when it is not expected to.
This commit sets the correct `self_ordering_pay_after` value of `each`
when creating the demo kiosk.
closes odoo/odoo#237658
X-original-commit: 6594ddd6b5d6ffdda696cd8dc73dcd26661e7db9
Signed-off-by: Louis Travaux (lotr) <lotr@odoo.com>
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
commit 645f36c7ecdf2876d175eea7e6a5e9881124bbed
Author: Max Whale <mawh@odoo.com>
Date: Wed Nov 19 08:06:25 2025 +0000
[FIX] pos_viva_wallet: serialization errors from concurrent requests
When using many Viva terminals linked to the same DB, there could be
many serialization errors due to concurrent writes to the DB. This is
because the webhook controller writes to the
`viva_wallet_latest_response` field of the payment method. The webhook
request would be automatically retried later, but this could result in
duplicate notifications being sent to the POS, or notifications being
handled too late.
This commit stops using the `viva_wallet_latest_response` field, instead
sending the information directly via the websocket to the POS. Only the
required information is sent to reduce the size of the message.
In addition, there are two other minor fixes:
- In the event that the initial payment request to Viva failed, the POS
will no longer poll the payment status (this resulted in a Session ID
not found error).
- The webhook controller will now check the event type it receives, and
only process the 'Transaction Payment Created' events. This should
prevent any unintended behaviour if other webhooks are set up in Viva.
opw-5226966
closes odoo/odoo#237582
X-original-commit: c4806e4a3bd2dfaeb863b5256b9041c19f71d36d
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
commit 37c5471ab048e06e150a7ae1aef4cc1adaf9bac0
Author: Arthur Nanson <artn@odoo.com>
Date: Tue Sep 9 08:05:46 2025 +0000
[FIX] pos_sale: change sale_order state when settling with PoS
**Steps to reproduce:**
- Make a quotation in the Sales module
- Go to PoS, click Quotation/Order and select your quotation
- Select Settle the order
- Go through with the payment
- Go back to the Quotation in the Sales module
The Status widget still shows Quotation instead of Sales Order
**Why the fix:**
Since 18.3, the sale_order.state was not updated anymore
when the state changed through the PoS.
This happened because we would only change the sale_order
state if there was a downpayment involved. In 18.2, we
always recomputed the sale_order that was linked to the
order we are currently settling.
We'll do it as well in this version.
opw-5033979
closes odoo/odoo#237484
X-original-commit: 5b80def6bac9d2574fd5d3687ec1f46a0ada7383
Signed-off-by: Sarah Bellefroid (sbel) <sbel@odoo.com>
commit ebbe914ad840d8dc9a532496824972e0d68c5337
Author: nsirjacobs <nosir@odoo.com>
Date: Thu Nov 20 16:10:40 2025 +0000
[FIX] sale: Ensure sale order preview shows correct down payment percentage
Behavior:
Current:
When setting the online payment percentage to something else than 100% and then turning off the setting. The preview of sale orders still show a down payment with the percentage set previously.
This is caused because there is no check on wheter the setting is activated or not in the template.
Steps to reproduce:
- In Settings->Sales: activate Online Payment.
- Set it to somethings else than 100% then save.
- Turn the setting off then save.
- Create a Sale Order.
- There will be a down payment of 0€ with the percentage you set in parentheses.
opw-5254575
closes odoo/odoo#237637
X-original-commit: c95bd8db5597401fb45e08b792d8b6e0cc541fa3
Signed-off-by: Noam Sirjacobs (nosir) <nosir@odoo.com>
commit b7686324e23cce78d00af5dbbce24664f86c0f10
Author: maad-odoo <maad@odoo.com>
Date: Tue Nov 25 10:23:41 2025 +0000
[FIX] mail: correct start subtitle message for group chats
Before this commit, the start message subtitle condition was incorrect for
group chats, this commit corrects that condition and also add a test to
cover all the channel types to show correct start message and subtitle
closes odoo/odoo#237534
X-original-commit: 4df402488df59a508342335d9602e4e5448bef60
Signed-off-by: Aditya Maurya (maad) <maad@odoo.com>
commit 38cffd1d1580693c56f0d897b8c8e60b938a8e85
Author: maad-odoo <maad@odoo.com>
Date: Tue Nov 25 07:27:17 2025 +0000
[FIX] mail: no name in the channel invite dialog opened from sidebar
Before this commit, certain channels whose names were computed on the
client side did not appear correctly as the title of the invite dialog when
opened via the sidebar actions.
This commit resolves the issue by using the channel’s displayName instead
of the thread.name to ensure the correct title is shown in the invite dialog.
task-5357104
closes odoo/odoo#237455
X-original-commit: 360c94f4f58c8d21f10dd8c38493d086f144d2ec
Signed-off-by: Matthieu Stockbauer (tsm) <tsm@odoo.com>
Signed-off-by: Aditya Maurya (maad) <maad@odoo.com>
commit a16ca7c61ca34f24abd1c2c8712112c528e05321
Author: hapt-odoo <hapt@odoo.com>
Date: Fri Aug 22 12:46:55 2025 +0000
[FIX] purchase: correct 'Not Acknowledged' and 'Late Receipt'
Before this commit:
-------------------------
- On the Purchase Dashboard, the 'Not Acknowledged' and 'Late Receipt' counters
also included purchase orders whose receipts had already been done.
- For Not Acknowledged:
- Such POs should be implicitly considered acknowledged once their receipts
are done, but they were still shown at the counter.
- Additionally, unacknowledged POs that were locked were incorrectly excluded
from the counter.
- For Late Receipt:
- POs with received products were incorrectly counted as late, even
though their receipts were already done.
- Locked POs with late receipts were also excluded from the counter, which was
an incorrect behavior.
Steps to reproduce:
-------------------------
1. Install the 'purchase_stock' module.
2. Open Purchase module.
3. On the Purchase Dashboard, click on the 'Not Acknowledged' or 'Late
Receipt' card.
4. Notice that POs whose receipts are already completed still appear in the
counters and some locked POs that are unacknowledged or have late receipts
are missing from the counters
Cause of the issue
-------------------------
- The domains for both Not Acknowledged and Late Receipt counters only relied on
the purchase order state without checking whether the receipts were done.
- As a result, POs with done receipts were still included in the counters, while
some locked POs were incorrectly excluded.
After this commit:
-----------------------
- Updated the search domains for both counters to properly exclude POs whose
receipts are done.
- The action_done method now triggers action_acknowledged, ensuring that any
unacknowledged POs with completed receipts are automatically marked as
acknowledged and excluded from the Not Acknowledged counter. Locked POs that
remain unacknowledged will still correctly appear in the counter.
- Now the POs with received products are no longer shown as late once their
receipts are completed and Locked POs with late receipts will now correctly
continue to appear in the counter.
- This ensures that the dashboard accurately reflects only pending
acknowledgments and genuinely late receipts, helping users track POs in
the correct state.
Task ID: 4874116
closes odoo/odoo#237597
X-original-commit: d3b614f8b906c26416afe4fbadc00cacdd1d644b
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Harshil Patel (hapt) <hapt@odoo.com>
commit 68ffef85a2f77d9ca951dc613fd5be1481c2a843
Author: pkgu-odoo <pkgu@odoo.com>
Date: Sat Nov 15 10:25:03 2025 +0000
[FIX] account: hide 'Export ZIP' on invoices that are not sent
**Steps to reproduce:**
* Install the *Accounting* module.
* Create a customer invoice.
* Post the invoice.
* Click the *gear* icon → **Print** → **Export ZIP**.
* Observe that the invoice opens a blank page.
**Issue:**
* Clicking **Export ZIP** on an unsent invoice opens a blank page.
**Cause:**
* The `account.move.send` model returns an empty dataset when the invoice is
not sent, leading to an empty export result.
**Fix:**
* Add a condition to display **Export ZIP** only when the invoice has
been sent.
opw-5245483
closes odoo/odoo#237299
X-original-commit: aed7f64a693f7ef7158a4186caae7aee177dc504
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
Signed-off-by: Pawan Kumar Gupta (pkgu) <pkgu@odoo.com>
commit 80a5a0b01dcc0e097627289b894899ff6c3d4990
Author: kdes-odoo <kdes@odoo.com>
Date: Tue Nov 25 09:46:26 2025 +0000
[FIX] web: enable signature widget for existing binary fields in Studio
Before this commit:
-------------------
When a user added an existing signature field to a view, Studio automatically
assigned the default binary widget.
The expected signature widget did not appear in the widget selection list.
As a result, users could not configure the field as a signature input.
Cause:
-----
Studio builds the dropdown of available widgets by computing a widgetKey based
on the field type.
Because the signature widget did not declare binary as a supported field type,
it was always filtered out for fields of type binary.
Thus Studio treated the field like any normal binary field and excluded the
signature option.
After this commit:
------------------
The signature widget is correctly exposed as a supported widget for fields of
type binary.
When adding an existing signature field to the view (with developer mode
enabled), Studio now shows signature in the widget list.
Why this fix is needed:
----------------------
Signature fields are stored as binary, but they require the dedicated signature
widget to render correctly.
By marking binary as a supported field type for the signature widget, Studio can
properly detect and offer the widget during field configuration.
Given that this widget is very domain-specific and not intended for general
binary fields, it was not added to
web_studio/static/src/client_action/view_editor/editors/sidebar_safe_fields.js
though this may be reconsidered
closes odoo/odoo#237481
X-original-commit: 92e37b55773013d87e223d82a8b76c574014de0c
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Kalpan P Desai (kdes) <kdes@odoo.com>
commit 5cb52209eee4b8f393a7138a10896378fccfa9ef
Author: Meet Jivani [MEJI] <meji@odoo.com>
Date: Tue Nov 25 05:05:54 2025 +0000
[FIX] point_of_sale: prevent tb when no payment line is selected in tipscreen
Steps:
- Enable Tips and "Add tip after payment" in restaurant.
- Open a session and add any product(s).
- Go to payment and add two card lines (first with full amount, second with 0).
- Click on "Close Tab".
Issue:
- After redirecting to the Tip Screen, a traceback appears.
Cause:
- Clicking "Close Tab" clears all 0-amount payment lines. This can leave no
selected payment line, but the Tip Screen still tries to access it.
Fix:
- Use the selected payment line if available, otherwise fallback to the first
payment line.
task-5095825
closes odoo/odoo#237355
X-original-commit: d224ecac78d2af4d7e85f25eace235cf1abd71dc
Signed-off-by: David Monnom (moda) <moda@odoo.com>
Signed-off-by: Meet Jivani (meji) <meji@odoo.com>
commit 8e5ef9199f6632b2fcad07ea33bc59f9780b7a8b
Author: Thierry Ducrest <thierry.ducrest@camptocamp.com>
Date: Wed Nov 26 17:20:47 2025 +0000
[PERF] stock: don't perform quant_tasks when unpacking empty packs
For an empty package the `quant_tasks` function will be executed without restriction of scope and can potentially slow the user request intensly.
And if there is no quants in the package the tasks are not necessary.
After the unpacking of the quants they are not in the package anymore.
Causing the call to quant_tasks to be done on an empty recordset.
closes odoo/odoo#236987
Forward-port-of: odoo/odoo#234370
Signed-off-by: Quentin Wolfs (quwo) <quwo@odoo.com>
commit 4c4ae38c9cb3921a37f969177b8559c1f8d5f5d4
Author: macs-odoo <macs@odoo.com>
Date: Thu Oct 16 17:41:25 2025 +0000
[FIX] analytic: Support updating analytic.project_plan sys param
The dynamic fields created for each analytic plan, besides the project plan do not update when the project plan system parameter changes.
1. Set the analytic.project_plan system parameter to a value other than 1
2. Enable Analytic Accounting setting under Accounting > Analytic
3. Create a sales order with a service product that creates a project.
4. Confirm sales order and receive a traceback:
ValueError: Invalid field account.analytic.line.x_plan1_id in leaf ('x_plan1_id', 'in', [23])
A field on account.analytic.line is created for every plan using the id of the plan to make the names unique, like x_plan{id}_id.
The plan that has the ID of the analytic.project_plan parameter does not get a dynamic field, it uses account_id.
If you change the system parameter for analytic.project_plan, the plan with the corresponding value will now use account_id, and the plan
that corresponds to the previous default value will have no corresponding field on account.analytic.line.
Extend the write method on ir.config_parameter so that when the value of the analytic.project_plan is changed the dynamic fields on
account.analytic.line are properly added and removed. This solution always creates a field for the previous value and
deletes a field for the new value so that no plan ever has two fields referencing it.
opw-ticket 5069381
closes odoo/odoo#237495
X-original-commit: 8b7b46b4abf3594e882b46c50e6efe5c654d6fc4
Signed-off-by: Mackenzie Smith (macs) <macs@odoo.com>
Signed-off-by: Paolo Gatti (pgi) <pgi@odoo.com>
commit 87c5f562e32ffb58359cf068124e03ead1a5859c
Author: Florian(flg) <flg@odoo.com>
Date: Wed Nov 5 11:45:59 2025 +0100
[IMP] account: Search on account uses description as well
The aim of this commit is using the description in
addition of the account name and account code as
a search field in the account search view.
This is made to help our users finding the right
account to select when they don't have any accounting
knowledge.
task-5226782
closes odoo/odoo#235767
Related: odoo/enterprise#99529
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
commit ba1957788ff47c23c96ab6f808633dbc16451fcd
Author: Florian(flg) <flg@odoo.com>
Date: Wed Nov 5 11:39:24 2025 +0100
[IMP] account: Hide account code for Invoicing users
The aim of this commit is removing the account code
from the account display name in case the current
user is in invoicing only.
task-5226782
Part-of: odoo/odoo#235767
Related: odoo/enterprise#99529
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
commit b71905f124f9cdd0b47ec931ccb5c875c13c2ae1
Author: Ayush Modi <aamo@odoo.com>
Date: Tue Nov 25 06:43:33 2025 +0000
[FIX] account: fix hide sections and notes in journal items tab
Steps to reproduce:
- Revert the commits
- Install 'account' module
- Undo revert commits and install 'l10n_pe_edi' module
This error occurs because the field name was changed in stable from
'journal_line_ids' to 'line_ids'. We cannot do this in a stable version, as
older databases still reference the old field name, and renaming it in stable
will cause errors.
Followup of: https://github.com/odoo/enterprise/pull/99875, https://github.com/odoo/odoo/pull/236457
sentry-7059309576, 7059890988
closes odoo/odoo#237566
X-original-commit: d41fb737116860d5dafa65f6ff3a1d66df129f37
Related: odoo/enterprise#100610
Signed-off-by: John Laterre (jol) <jol@odoo.com>
commit 1e05b409c974925af0a608652f9b2abed9a27e40
Author: Max Whale <mawh@odoo.com>
Date: Thu Nov 20 09:14:16 2025 +0000
[IMP] iot_drivers: websocket logging adjustments
Before this commit, we logged the full websocket messages received at
'debug' level, and the action device at 'info' level. Logging the whole
message causes the logs to be flooded with large base64 print data.
After this commit, log the message type and device both at 'info' level.
closes odoo/odoo#237568
X-original-commit: a83345f102b6c9f6b525f73a131b238e78acd8b8
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Signed-off-by: Max Whale (mawh) <mawh@odoo.com>
commit fb59a732724578137b2261108144053272b653d8
Author: krip-odoo <krip@odoo.com>
Date: Mon Nov 24 13:04:48 2025 +0530
[FIX] account: prevent wrong layout of invoice in pdf
Steps to produce:
- Install `Accounting` module.
- Open any invoice > add product > add section > add another product after
section.
- Do `not set any tax` on both products > go to 3 dots of section > click on
`Hide composition`.
- Print the invoice.
Isuue:
- The tax column displayed even if there is no tax.
Root cause:
- At [1], `display_taxes` is checked in first condition but not in
OR condition.
Solution:
- We first check `display_taxes` and then other conditions.
Before:
https://drive.google.com/file/d/1Wbl9WSaBPq4Tf6L5WQ-txj4JvSktiXDO/view?usp=sharing
After:
https://drive.google.com/file/d/1TjMfWgUyhh1s9f0P_kwlpRsKQk4OoHYp/view?usp=sharing
[1]: https://github.com/odoo/odoo/blob/90a4e374d49fd482257b52b8a8c12c09d07daa1d/addons/account/views/report_invoice.xml#L336
opw-5268098
closes odoo/odoo#237089
Signed-off-by: Sven Führ (svfu) <svfu@odoo.com>
commit 0039fc378862efd34bce9acd458f4796b41b9bd5
Author: Hesham Saleh <hsal@odoo.com>
Date: Wed Nov 26 13:47:55 2025 +0100
[FIX] l10n_sk: Fix tax groups accounts
This commit fixes the tax groups payable and receivable accounts set on 19% and 0%
groups from VAT base rate to VAT lower lower rate accounts.
opw-5264511
closes odoo/odoo#237569
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
commit 76230266305d5dd75da21d72cebada6909d6a076
Author: Julien Carion <juca@odoo.com>
Date: Wed Nov 19 14:02:58 2025 +0100
[FIX] web: remove unnecessary scrollbars in notebook
This commit removes extraneous scrollbars that could appear in notebook
headers or in HTML fields inside notebooks, depending on the content and
browser zoom level.
task-5283167
closes odoo/odoo#236496
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
commit 0449d89ea10b88e811b5e8fcb241afd3290b2a81
Author: Julien Carion <juca@odoo.com>
Date: Mon Nov 17 15:37:14 2025 +0100
[FIX] web: maintain consistent column widths in Kanban
This fixes an issue introduced in https://github.com/odoo/odoo/pull/204103/commits/48d6904b78ee6b067dcf49de5f1ef99c421260c3
with adaptive column sizing. Previously, content-heavy columns would
take more space than lighter columns, causing flickering during record
drag-and-drop.
Columns now retain adaptive sizing while ensuring all columns in the
Kanban share the same resulting width.
task-5266223
closes odoo/odoo#236069
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
commit 846317da7cd045337e55fa51b7fbfe20e96dfdab
Author: Julien Launois (jula) <jula@odoo.com>
Date: Tue Nov 25 18:38:09 2025 +0100
[FIX] website: wait for tab change on `clickOnText` in tours
__Before this commit:__
[The `homepage` tour][1] (including all tours calling
`registerThemeHomepageTour` in `design-themes`) fails in a
non-deterministic way. It is possible to reproduce the error by adding a
delay [at this line][2] in
`change_current_options_containers_listeners`.
__Cause:__
When the tour runs `clickOnText`, the "Style" tab automatically opens.
The next step is `goBackToBlocks` which directly switches back to the
"Blocks" tab. However if the switch to the "Style" tab takes a bit
longer than usual, `goBackToBlocks` will click on "Blocks" before and
the "Style" tab will opens after it. The following `insertSnippet` step
will then be stuck waiting indefinitely for the snippet block to appear.
__Fix:__
Wait for the "Style" tab to be active after `clickOnText` to make sure
that the call to `goBackToBlocks` actually switch to it.
[1]: https://github.com/odoo/odoo/blob/21d827bb0849208efb641951ceb71437f958c34e/addons/website/static/src/js/tours/homepage.js#L53
[2]: https://github.com/odoo/odoo/blob/21d827bb0849208efb641951ceb71437f958c34e/addons/html_builder/static/src/builder.js#L165
Runbot error: https://runbot.odoo.com/odoo/runbot.build.error/233472
closes odoo/odoo#237409
Signed-off-by: Francois Georis (fge) <fge@odoo.com>
commit d99aaa6691142cab5dfd8223047cc4829b34f9d7
Author: tsm-odoo <tsm@odoo.com>
Date: Wed Nov 26 13:39:47 2025 +0100
[FIX] im_livechat: ensure looking for help chat is unpinned once done
Before this commit, chats looking for help were sometimes kept in the
sidebar even after help was provided.
This occurs because when a chat is currently shown to the user, we
wait for the user to be done before unpinning it (next thread switch).
However, we use a flag to do so, which is used in the `livechat_status`
on update method.
Since `onUpdate` methods are shared accross class instances, they share
the same scope. So the `wasLookingForHelp` flag cannot be scoped to the
setup function.
closes odoo/odoo#237567
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
commit 742b7c7dc54a56c5069887b30d9eca8dff84833e
Author: Alex Kühn <aku@odoo.com>
Date: Wed Nov 19 15:57:48 2025 +0100
[FIX] mail: can drag-drop in composer with discuss call in PiP
Before this commit, when in a discuss call with Picture-in-Picture,
drag-drop of files in composer was not working on odoo tab.
Steps to reproduce:
- start a call from discuss app
- open call view in picture-in-picture
- drag a file and drop in the main tab of conversation with call
=> no dropzone visual and cannot drop file to composer
This happens because condition for dropzone was on meeting view being
open, which assumes this comes from fullscreen mode bu…

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: #237215
Forward-Port-Of: #235510