Tuesday, January 7, 2025
73 changes · saas-18.1
Enhancements to existing features
When a user leaves or unpins a chat channel, the related chat window now closes automatically. This keeps the messaging workspace cleaner and avoids confusion from inactive chat windows remaining open.
Original PR description
Before this commit, leaving or unpin a channel kept the chat window open. This commit forces the closing of the chat window when either action is made. task-4452932
Users will now only see the real-time connection lost alert if the disconnection lasts more than 15 seconds. This reduces unnecessary alerts for brief or unstable network interruptions, making the experience less disruptive.
Original PR description
Before this PR, the "real-time connection lost" alert was displayed right after the disconnection was detected. This PR adds a 15s delay to avoid spamming the alert on unstable connexion. Task-4453176
The update removes an unnecessary notification when a chat conversation is unpinned. This makes the messaging and live chat experience less distracting while keeping conversation management unchanged.
Original PR description
task-4452840 Related to odoo/enterprise#76559
Live chat sessions are now ordered by when they were created, with the newest sessions appearing first in the kanban view. This helps teams see recent conversations more quickly and prioritize current customer interactions.
Original PR description
This commit changes the order of livechat sessions in the kanban view to sort them descending by their `create_date`. task-4452928
WhatsApp conversations no longer show a notification when a conversation is unpinned. This reduces unnecessary messages in the interface and keeps the user experience cleaner.
Original PR description
task-4452840 Related to odoo/odoo#192540
Resolved issues and error corrections
This update fixes an internal Accounting test failure that occurred when demo data was not installed. It helps keep automated validation reliable so future Accounting changes can be checked without false build failures.
Original PR description
runbot build error: 111129 Introduced by: 3fd42cfb29a06eab747c541568c1b472b8c7a0ad --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
On Virtual IoT Boxes, a landscape report was still printed in portrait. We added the argument required to handle landscape printing. opw-4081884 Forward-Port-Of: odoo/odoo#192634
Original PR description
On Virtual IoT Boxes, a landscape report was still printed in portrait. We added the argument required to handle landscape printing. opw-4081884 Forward-Port-Of: odoo/odoo#192634
The display hardware driver now includes the missing logging setup needed when certain errors occur. This prevents an avoidable crash in that error-handling path, improving reliability for IoT display devices.
Original PR description
DisplayDriver was missing the logger definition, resulting in a crash when a specific exception occured.
The mail composer action menu now uses consistent icon spacing, so action labels line up neatly. This makes the menu easier to scan and gives users a more polished experience when adding items from the composer.
Original PR description
Composer has "+" icon on left with extra actions. Clicking on it shows the item with icon and label. Before this commit, the icon width was inconsistent between items, so label were not aligned. This commit puts `.fa-fw` so all icons are fixed, thus labels are aligned. Before <img width="382" alt="Screenshot 2025-01-06 at 16 58 16" src="https://github.com/user-attachments/assets/0ea5cac1-0f72-40e9-b20b-f4e4d61a4ac6" /> After <img width="383" alt="Screenshot 2025-01-06 at 16 45 12" src="https://github.com/user-attachments/assets/7d078fcb-ce8f-465e-91c3-d72b537f5809" />
This fixes the Ecuadorian invoicing setup so users can change the order of SRI payment methods as intended. It helps administrators maintain the correct payment method sequence without manual workarounds.
Original PR description
Users cannot use the sequence widget to reorder payment methods Steps to reproduce: - Go to Invoicing / Configuration / Ecuadorian SRI / Payment Methods SRI - Try to reorder the payment methods Issue: payment methods cannot be reordered opw-4446472
This fix ensures WhatsApp discussion channels correctly include the current user in their default information. It helps prevent missing or inconsistent channel details when users open or interact with WhatsApp conversations.
Original PR description
Enterprise counter-part. task-4432728
The Sign document view now correctly shows the upload and sign button when users need it. This fixes a visibility issue caused by incorrect page context, reducing confusion and helping users complete signing workflows without extra steps.
Original PR description
Before this PR, the upload button was hidden in the document view due to an incorrectly set context. After this PR, the context is properly set, and the condition to hide the button is updated to apply only in the activity view.
This fixes incorrect saved quantities for manufacturing components edited from the shop floor screen. Operators will now see consumed components marked correctly and tracked component quantities displayed accurately, reducing confusion during production.
Original PR description
To reproduce: - Create a BOM for product P with: 1x component A (untracked) consumed in operation OP1 1x component B (lot tracked) consumed in operation OP1 operation OP1 - Create an MO for product P x 1 - Open shop floor, open component A move, set qty to 5 and save - Open shop floor, open component B move, set qty to 3 and save Current behaviour: - compo A move not striked through - compo B move shows 4/1 units Expected behaviour: - compo A move striked through - compo B move shows 3/1 units
STEPS ----------- 1. Install Contact and 'base_vat' 2. Create a new Indonasian contact with VAT as ID1234567890123456 3. Save -> Connot save whilst the VAT is correct PROBLEM ----------- VAT could be 15 (old numbers) or 16 digits. If there are 15 digits long, the 10th digit is a luhn checksum. In some cases, the 15 digits can be transformed into a 16-digit by adding a 0 in front. In such case, we can verify the luhn checksum like for the 15 digits by removing the 0. However, for newl
Original PR description
STEPS ----------- 1. Install Contact and 'base_vat' 2. Create a new Indonasian contact with VAT as ID1234567890123456 3. Save -> Connot save whilst the VAT is correct PROBLEM ----------- VAT could be 15 (old numbers) or 16 digits. If there are 15 digits long, the 10th digit is a luhn checksum. In some cases, the 15 digits can be transformed into a 16-digit by adding a 0 in front. In such case, we can verify the luhn checksum like for the 15 digits by removing the 0. However, for newly created VAT 16-digits VAT number, there is no checksum. SOLUTION ----------- Allow 16-digit VAT that only contains numbers and does not start with a 0. opw-4402514 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192543
In previous versions, when dealing with multiple time-off requests, only time-off types that do not require allocations were listed for selection. This behavior has been restored by restricting the `holiday_status_id` field to show only non-allocation time-off types in the multi-request wizard. opw-4370090 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191128
Original PR description
In previous versions, when dealing with multiple time-off requests, only time-off types that do not require allocations were listed for selection. This behavior has been restored by restricting the `holiday_status_id` field to show only non-allocation time-off types in the multi-request wizard. opw-4370090 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191128
In 862ede43e5910ae6954f3574f45c213e5d3a1886 the added test depended on being in year 2024, so it failed in eg. 2025. With this change we don't harcode the invoice name in assert data. runbot-error-111390 opw-4050777 Forward-Port-Of: odoo/odoo#192597 Forward-Port-Of: odoo/odoo#192192
Original PR description
In 862ede43e5910ae6954f3574f45c213e5d3a1886 the added test depended on being in year 2024, so it failed in eg. 2025. With this change we don't harcode the invoice name in assert data. runbot-error-111390 opw-4050777 Forward-Port-Of: odoo/odoo#192597 Forward-Port-Of: odoo/odoo#192192
Before this commit, adding lot tracked products would result in an error because the picking type was not loaded in self ordering. opw-4439558 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192351
Original PR description
Before this commit, adding lot tracked products would result in an error because the picking type was not loaded in self ordering. opw-4439558 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192351
Draft pos order where considered as paid when counting the invoiced qty of a sale linked to a pos order. Steps to reproduce: ------------------- * Create a sale order with any product * Open PoS and settle the order but do not validate it * Click on "Backend" button so that the order is synchronized * Go back on the sale > Observation: The invoiced quantity is 1 Why the fix: ------------ We should not consider draft pos orders when counting the invoiced qty as they are not yet vali
Original PR description
Draft pos order where considered as paid when counting the invoiced qty of a sale linked to a pos order. Steps to reproduce: ------------------- * Create a sale order with any product * Open PoS and settle the order but do not validate it * Click on "Backend" button so that the order is synchronized * Go back on the sale > Observation: The invoiced quantity is 1 Why the fix: ------------ We should not consider draft pos orders when counting the invoiced qty as they are not yet validated. opw-4201267 Forward-Port-Of: odoo/odoo#192292 Forward-Port-Of: odoo/odoo#192160
Versions -------- - 18.0+ Steps ----- 1. Have a product template. 2. Press the "Add Media" button in the "Sale" tab of the product form. 3. Try to add a video by pasting the URL. 4. Pressing "Add" displays multiple error messages, one on top of each other. Issue ----- Impossible to add a video as extra media for a product. Cause ----- The `video_url` field is not loaded by the Kanban view, which is used by the `X2ManyMediaViewer` to display the `product.image`. Therefore, updating the `video_
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have a product template. 2. Press the "Add Media" button in the "Sale" tab of the product form. 3. Try to add a video by pasting the URL. 4. Pressing "Add" displays multiple error messages, one on top of each other. Issue ----- Impossible to add a video as extra media for a product. Cause ----- The `video_url` field is not loaded by the Kanban view, which is used by the `X2ManyMediaViewer` to display the `product.image`. Therefore, updating the `video_url` caused a series of “ field not found” bugs. Solution -------- Add the `video_url` to the Kanban view of the `product.image` model. opw-4391126 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191531
This error occurs when uploading a ``factur-x.xml`` file that lacks currency information or when the ``factur-x.xml`` file we generate does not include any currency. Steps to reproduce: --- - Install ``account_edi_ubl_cii`` module - Invoicing > Customers > Invoices - Click ``Upload`` button and upload [file](https://drive.google.com/drive/u/0/folders/1TrG7xBUdwdq04KueZi0WdxHxm_g0vfW_) Traceback: --- NotNullViolation: null value in column "currency_id" of relation "account_move_line"
Original PR description
This error occurs when uploading a ``factur-x.xml`` file that lacks currency information or when the ``factur-x.xml`` file we generate does not include any currency. Steps to reproduce: --- - Install…
This error occurs when uploading a ``factur-x.xml`` file that lacks currency information or when the ``factur-x.xml`` file we generate does not include any currency. Steps to reproduce: --- - Install ``account_edi_ubl_cii`` module - Invoicing > Customers > Invoices - Click ``Upload`` button and upload [file](https://drive.google.com/drive/u/0/folders/1TrG7xBUdwdq04KueZi0WdxHxm_g0vfW_) Traceback: --- NotNullViolation: null value in column "currency_id" of relation "account_move_line" violates not-null constraint DETAIL: Failing row contains (50, 50, 9, 1, 125, 100, 205, null, 56, null, null, null, null, null, null, null, null, null, null, null, 2, 2, null, null, null, NEWS9141525, null, product, null, null, null, null, null, 0.00, 0.00, 0.00, 0.0, null, null, null, 1.00, 109.72, null, null, 0.00000000000000000000000000000000000000000000000000000000000000..., null, null, null, null, null, 2025-01-02 01:03:08.880424, 2025-01-02 01:03:08.880424, null, null, null, null, null, null, null, null, null). This commit resolves the issue by adding the default company currency when no currency is found in the file. sentry-6056586239 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192459
This commit fixes an issue where BIC codes containing spaces caused errors when creating ```ir_model_data``` names. Spaces in the BIC code are now replaced with underscores to comply with the ```ir_model_data_name_nospaces``` constraint. ``` Traceback (most recent call last): File "/home/odoo/src/odoo/18.0/odoo/service/server.py", line 1306, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "<decorator-gen-13>", line 2, in new File "/home/odo
Original PR description
This commit fixes an issue where BIC codes containing spaces caused errors when creating ```ir_model_data``` names. Spaces in the BIC code are now replaced with underscores to comply with the…
This commit fixes an issue where BIC codes containing spaces caused errors when creating ```ir_model_data``` names. Spaces in the BIC code are now replaced with underscores to comply with the ```ir_model_data_name_nospaces``` constraint.
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/18.0/odoo/service/server.py", line 1306, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-13>", line 2, in new
File "/home/odoo/src/odoo/18.0/odoo/tools/func.py", line 97, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 127, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 476, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 364, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/18.0/odoo/modules/loading.py", line 181, in load_module_graph
migrations.migrate_module(package, 'pre')
File "/home/odoo/src/odoo/18.0/odoo/modules/migration.py", line 254, in migrate_module
mod.migrate(self.cr, installed_version)
File "/home/odoo/src/odoo/18.0/addons/l10n_fr_account/migrations/2.2/pre-migrate-add-bank-xmlid.py", line 2, in migrate
cr.execute(
File "/home/odoo/src/odoo/18.0/odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
psycopg2.errors.CheckViolation: new row for relation "ir_model_data" violates check constraint "ir_model_data_name_nospaces"
DETAIL: Failing row contains (615259, null, 2024-12-27 12:27:08.464508, 2024-12-27 12:27:08.464508, null, t, bank_fr_bous frpp xxx, l10n_fr_account, res.bank, 28, null).
```
- UPG -2401824
- OPW - 4413544
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#191970In async mode, trigger both the Mail Scheduler and the Email Queue Manager. Rationale ========= By default, the Email Queue Manager is run once an hour. In case of the event registration confirmation, it can lead to a lag between the confirmation and the email received. However, end users tend to expect a confirmation email incoming within a few minutes. By triggering the email queue, it leads to a behavior which is closer to the synchronous configuration. Forward-Port-Of: odoo/o
Original PR description
In async mode, trigger both the Mail Scheduler and the Email Queue Manager. Rationale ========= By default, the Email Queue Manager is run once an hour. In case of the event registration confirmation, it can lead to a lag between the confirmation and the email received. However, end users tend to expect a confirmation email incoming within a few minutes. By triggering the email queue, it leads to a behavior which is closer to the synchronous configuration. Forward-Port-Of: odoo/odoo#191875
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the
Original PR description
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div`…
**Problem**: When deleting columns in the editor, if the start and end points of the selection are inside the columns, the `range.extractContents` method extracts the content but leaves behind `div` elements for the first and last columns (or sometimes only one of them). This occurs because the columns are partially selected (content but not container). **Solution**: To ensure `range.extractContents` removes the columns completely, extend the selection to encompass the entire content of the `o_text_columns` element when the selection starts at the first leaf and ends at the last leaf within the columns. **Steps to reproduce**: 1. Open the editor. 2. Create columns (any number). 3. Select all content (e.g., with `Ctrl+A`). 4. Press `Backspace` to delete the content. 5. Observe that the DOM still contains `o_text_columns` and `row` elements, even though the content appears deleted. opw-4350486 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192006 Forward-Port-Of: odoo/odoo#189978
Changing a product template's image with the `can_image_1024_be_zoomed` field present in the view produces a crash on save. **STEPS TO REPRODUCE** 1. Open a product form view 2. Using studio, add the `can_image_1024_be_zoomed` field 3. Change the image and save The product will be updated, but this error will be thrown: ``` binascii.Error: Incorrect padding ``` **CAUSE** https://github.com/odoo/odoo/blob/a74684777c27e26639b75b0668bb15afadb78c4f/addons/product/models/product_tem
Original PR description
Changing a product template's image with the `can_image_1024_be_zoomed` field present in the view produces a crash on save. **STEPS TO REPRODUCE** 1. Open a product form view 2. Using studio, add the…
Changing a product template's image with the `can_image_1024_be_zoomed` field present in the view produces a crash on save. **STEPS TO REPRODUCE** 1. Open a product form view 2. Using studio, add the `can_image_1024_be_zoomed` field 3. Change the image and save The product will be updated, but this error will be thrown: ``` binascii.Error: Incorrect padding ``` **CAUSE** https://github.com/odoo/odoo/blob/a74684777c27e26639b75b0668bb15afadb78c4f/addons/product/models/product_template.py#L186-L188 In the `RecordSet`'s context, `bin_size=True`, so accessing `image_<size>` returns a size instead of a binary. `_compute_can_image_1024_be_zoomed` calls `tools.is_image_size_above` with this binary size, while the method expects the full base64 encoded image. Ultimately, this causes `base64.b64decode` to crash with the above error. **FIX** Update the `RecordSet`'s context to `bin_size=False`. Accessing `image_<size>` from the `RecordSet` will then return the full binary instead of the size. **NOTES** In versions <17.0, read and write were done in separate network calls causing the recompute to happen during the flush of the write, which doesn't have `bin_size=True` in the context. Because the field is stored, the read will not cause a recompute and thus avoids any error. In >=17.0, because the read occurs before the flush, and the write has invalidated the field, the recompute will occur with the context of the read (`bin_size=True`), causing the issue. opw-4413647 Forward-Port-Of: odoo/odoo#192409 Forward-Port-Of: odoo/odoo#192047
In Panama, the Tax ID is the Registro Único de Contribuyentes (RUC) and not the Número de Identificación Fiscal (NIF). This is a double fix: 1. Update the `vat_label` to use "RUC" instead of "Tax ID", but this will only be available for new created DBs (because of noupdate) 2. Update the translation of Tax ID for Panama which only requires to update the translations to have the correct translation of Tax ID. opw-4388758 Forward-Port-Of: odoo/odoo#192514
Original PR description
In Panama, the Tax ID is the Registro Único de Contribuyentes (RUC) and not the Número de Identificación Fiscal (NIF). This is a double fix: 1. Update the `vat_label` to use "RUC" instead of "Tax ID", but this will only be available for new created DBs (because of noupdate) 2. Update the translation of Tax ID for Panama which only requires to update the translations to have the correct translation of Tax ID. opw-4388758 Forward-Port-Of: odoo/odoo#192514
Description of the issue/feature this PR addresses: - for model 'pos.pack.operation.lot', `id` is the [identifier](https://github.com/odoo/odoo/blob/18.0/addons/point_of_sale/static/src/app/models/data_service_options.js#L21) but `setPackLotLines` method [uses](https://github.com/odoo/odoo/blob/saas-17.4/addons/point_of_sale/static/src/app/models/pos_order_line.js#L144) `uuid`, making operation weird and faulty. - As `eg: lotline.uuid => undefined` - This pr attempts to fix the issue lin
Original PR description
Description of the issue/feature this PR addresses: - for model 'pos.pack.operation.lot', `id` is the…
Description of the issue/feature this PR addresses:
- for model 'pos.pack.operation.lot', `id` is the [identifier](https://github.com/odoo/odoo/blob/18.0/addons/point_of_sale/static/src/app/models/data_service_options.js#L21) but `setPackLotLines` method [uses](https://github.com/odoo/odoo/blob/saas-17.4/addons/point_of_sale/static/src/app/models/pos_order_line.js#L144) `uuid`, making operation weird and faulty.
- As `eg: lotline.uuid => undefined`
- This pr attempts to fix the issue linked with modifying orderlines with sn/lots
Steps to reproduce considering [this diff](https://github.com/odoo/odoo/pull/187796/files#diff-3bfb78fa74ffa64630e11266674f185a18e3c97587590b4b55da6388cb8ba487R148) :
- Open POS.
- Add a products which is tracked by sn and add two sn

- removing the last sn, will remove all sn from orderline

Note: this pr would make more sense if [this pr](https://github.com/odoo/odoo/pull/187796) is backporterd to saas-17.4,
as there is an oversight in replacing all `uuid` references to `id` the mentioned commit. [see](https://github.com/odoo/odoo/pull/187796/files#diff-3bfb78fa74ffa64630e11266674f185a18e3c97587590b4b55da6388cb8ba487R148)
Also, root issue was in saas-17.4, while a fix was made in v18.0
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#192469
Forward-Port-Of: odoo/odoo#188203Steps to reproduce: - Set default Warehouse in the profile. - From Project topbar open either "From WH" or "To WH". - Create a new stock picking Issue: - The stock picking type is not set by default Reason: - Non existence of supplied values. Solution: - Supply default picking type if user has a default warehouse. task-4207753 Forward-Port-Of: odoo/odoo#190014
Original PR description
Steps to reproduce: - Set default Warehouse in the profile. - From Project topbar open either "From WH" or "To WH". - Create a new stock picking Issue: - The stock picking type is not set by default Reason: - Non existence of supplied values. Solution: - Supply default picking type if user has a default warehouse. task-4207753 Forward-Port-Of: odoo/odoo#190014
Steps to reproduce: - Configure a kiosk to have multiple languages - Observe that the language can be changed in the kiosk UI as expected - Install the website module, and configure the website's languages to not include one of the kiosk languages - For example, kiosk has EN and FR, website just has EN - Observe that the language can no longer be changed in the kiosk opw-4403828 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-O
Original PR description
Steps to reproduce: - Configure a kiosk to have multiple languages - Observe that the language can be changed in the kiosk UI as expected - Install the website module, and configure the website's languages to not include one of the kiosk languages - For example, kiosk has EN and FR, website just has EN - Observe that the language can no longer be changed in the kiosk opw-4403828 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191817 Forward-Port-Of: odoo/odoo#191137
Steps to reproduce (a bit technical): 1. Navigate to the "Contacts" kanban view. 2. Open the Network tab in the browser's developer tools. 3. Click on the first contact activities and "Schedule a new activity". 4. Notice a call to `get_views` in the Network tab. 5. Click on a different contact activities, and "Schedule a new activity". 6. Notice a new call to `get_views` in the Network tab. Expected: The view is already cached, so the webclient should not attempt to load it. Exp
Original PR description
Steps to reproduce (a bit technical): 1. Navigate to the "Contacts" kanban view. 2. Open the Network tab in the browser's developer tools. 3. Click on the first contact activities and "Schedule a new…
Steps to reproduce (a bit technical): 1. Navigate to the "Contacts" kanban view. 2. Open the Network tab in the browser's developer tools. 3. Click on the first contact activities and "Schedule a new activity". 4. Notice a call to `get_views` in the Network tab. 5. Click on a different contact activities, and "Schedule a new activity". 6. Notice a new call to `get_views` in the Network tab. Expected: The view is already cached, so the webclient should not attempt to load it. Explanation: This is likely a regression since f983703d, when the embedded actions were introduced. Now, the `embeddedParentResId` is part of the views cache key, and so we get much fewer cache hits. For most views, there isn't really an `embeddedActionId` set, and yet the `embeddedParentResId` was always set. The later is only used in combination with `embeddedActionId`, so it causes a lot of avoidable cache misses. The solution is to simply set the `embeddedParentResId` only if there's an `embeddedActionId`. Closes odoo/odoo#192261 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192531
Before this commit, when creating a new analytic account in any plan from the project form, the default company of the account was set to the current company of the user. The problem that arises is when the project has no company, and the account is set to a company. Which creates inconsistency between the project and the account. After this commit, we set the company of the created account to the company of the project by default. task-4438410 version-18.0 --- I confirm I have signed
Original PR description
Before this commit, when creating a new analytic account in any plan from the project form, the default company of the account was set to the current company of the user. The problem that arises is when the project has no company, and the account is set to a company. Which creates inconsistency between the project and the account. After this commit, we set the company of the created account to the company of the project by default. task-4438410 version-18.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192021
**Issue:** When converting a PDF file into a PDF/A compliant file, the result may generate the following error message when parsing it by a PDF/A-3 validator: `The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 ` **Cause:** A previous fix has moved the four bytes in a conditional operation, but the `%` character has been forgotten. opw-4353108
Original PR description
**Issue:** When converting a PDF file into a PDF/A compliant file, the result may generate the following error message when parsing it by a PDF/A-3 validator: `The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 ` **Cause:** A previous fix has moved the four bytes in a conditional operation, but the `%` character has been forgotten. opw-4353108 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191326
Before this commit, there was a misalignment issue with the buttons in the cards due to varying text lengths in the description. This caused the buttons to appear at different vertical positions, disrupting visual consistency. Now, the layout ensures that all buttons are aligned at the bottom of the cards regardless of the description length, and also the desc is a bit more readable with improved line spacing. | Before | After | |--------|--------| |  |  | task-4357026 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192011
On small displays, starting a new website livechat with an operator that has an `user_livechat_username` crashes when rendering the username. Steps to reproduce ----- 1. Select User Menu Icon > My Profile / Preferences > enter an Online Chat Name 2. On a mobile device or small window, open the livechat on the website 3. Send any new message 4. The following traceback occurs ``` Caused by: TypeError: Cannot read properties of undefined (reading 'channel_type') at get authorName ``
Original PR description
On small displays, starting a new website livechat with an operator that has an `user_livechat_username` crashes when rendering the username.
Steps to reproduce
-----
1. Select User Menu Icon > My Profile / Preferences > enter an Online Chat Name
2. On a mobile device or small window, open the livechat on the website
3. Send any new message
4. The following traceback occurs
```
Caused by: TypeError: Cannot read properties of undefined (reading 'channel_type')
at get authorName
```
Cause
-----
On small displays, `thread` for the default operator message becomes undefined when it is reassigned to the new thread. This causes an error in `get authorName()` when the undefined `thread` is accessed directly to detemine the displayed username.
Solution
-----
Add an optional chain (?) when accessing `this.message.thread` to handle the possible nullish value.
opw-4446208
Forward-Port-Of: odoo/odoo#192605Purpose of this PR: Enhance the UI styling to address issues caused by the absence of the `o_livechat_no_rating` and `o_livechat_operator_avatar` classes,might removed by other PR's. before:  after:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: o
Original PR description
Purpose of this PR: Enhance the UI styling to address issues caused by the absence of the `o_livechat_no_rating` and `o_livechat_operator_avatar` classes,might removed by other PR's. before:  after:  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188754
In macro.js, we check at each mutation of the DOM if the trigger is present as soon as there has been no more mutation in the {checkDelay} milliseconds. By default, this {checkDelay} is at 300ms in the tourAutomatic class. In this commit, this default value is descreased to 200ms for performance reasons. Forward-Port-Of: odoo/odoo#190863
Original PR description
In macro.js, we check at each mutation of the DOM if the trigger is
present as soon as there has been no more mutation in the {checkDelay}
milliseconds. By default, this {checkDelay} is at 300ms in the
tourAutomatic class. In this commit, this default value is descreased
to 200ms for performance reasons.
Forward-Port-Of: odoo/odoo#190863Steps to reproduce: - Create an employe with an oman bank account number - Create a payslip for this employe - Create a payment report Issue: when trying to create a payment report in the payroll app for an employee with an oman bank account number, when creating the payment report an error :"Invalid IBAN for the following employees: .." will raise. Fix: This issue can be fixed by adding the 'om' in the variable _map_iban_template. This ensure that the mapping will be done co
Original PR description
Steps to reproduce: - Create an employe with an oman bank account number - Create a payslip for this employe - Create a payment report Issue: when trying to create a payment report in the payroll app for an employee with an oman bank account number, when creating the payment report an error :"Invalid IBAN for the following employees: .." will raise. Fix: This issue can be fixed by adding the 'om' in the variable _map_iban_template. This ensure that the mapping will be done correctly and the error will not be raised anymore. opw-4312502 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187757
Problem --------- Currently, powerpoints attachments received by a mail alias are deleted. We want to allow them. Solution --------- Add the relevant mimetypes to the white list. no-task no-opw --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192221
Original PR description
Problem --------- Currently, powerpoints attachments received by a mail alias are deleted. We want to allow them. Solution --------- Add the relevant mimetypes to the white list. no-task no-opw --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192221
In this commit, we fix the project tour. In the kanban view, we click on the first subtask_list_row but it is not yet (still) the newer subtask. We can therefore click on the first element even though it is not yet created. The DOM re-renders ... and the dropdown menu disappears. By specifying (:contains()) that we want to click on the newer subtask, we wait for it to be created, for it to be rendered and then we click on it. Description of the issue/feature this PR addresses: Current beh
Original PR description
In this commit, we fix the project tour. In the kanban view, we click on the first subtask_list_row but it is not yet (still) the newer subtask. We can therefore click on the first element even though it is not yet created. The DOM re-renders ... and the dropdown menu disappears. By specifying (:contains()) that we want to click on the newer subtask, we wait for it to be created, for it to be rendered and then we click on it. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192491
When you chain several uses of changeDescriptionContentAndSave() in a tour, you don't necessarily wait for the editor to be actually saved before continuing. So, it always works for the first use but not for the following ones if the tour engine goes too "fast". So this fix add a step in which we make sure that the form is actually saved before continuing. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: ---
Original PR description
When you chain several uses of changeDescriptionContentAndSave() in a tour, you don't necessarily wait for the editor to be actually saved before continuing. So, it always works for the first use but not for the following ones if the tour engine goes too "fast". So this fix add a step in which we make sure that the form is actually saved before continuing. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192490
Steps to reproduce: - Install hr_timesheet (with demo data) - Navigate to portal > timesheet - Group by project Issue: When only the hr_timesheet module is installed and timesheets are grouped in the portal view, the column alignment is broken due to an incorrect colspan. Cause: When groupby is applied, the colspan is manually set to 4, causing misalignment between the header and row columns. Fix: This commit sets the last column's colspan to 2 when grouping is applied to fix th
Original PR description
Steps to reproduce: - Install hr_timesheet (with demo data) - Navigate to portal > timesheet - Group by project Issue: When only the hr_timesheet module is installed and timesheets are grouped in the portal view, the column alignment is broken due to an incorrect colspan. Cause: When groupby is applied, the colspan is manually set to 4, causing misalignment between the header and row columns. Fix: This commit sets the last column's colspan to 2 when grouping is applied to fix the alignment issue. task-4294780 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192201 Forward-Port-Of: odoo/odoo#186532
Issue: In Czech Republic, the rate of the 15% tax has changed to 12%. The new rate has already been handled in l10n_cz, but the OSS mapping still uses the old rate. opw-4310264 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192458
Original PR description
Issue: In Czech Republic, the rate of the 15% tax has changed to 12%. The new rate has already been handled in l10n_cz, but the OSS mapping still uses the old rate. opw-4310264 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192458
Steps: - Open the POS. - Add a product with serial number tracking to the order line. - Create a new order. - Add the same product to the new order Issue: - it is possible to select the same serial number that was previously used in another order. Fix: - Hide serial numbers that are being used in active orders Task - 3944652 Forward-Port-Of: odoo/odoo#187176
Original PR description
Steps: - Open the POS. - Add a product with serial number tracking to the order line. - Create a new order. - Add the same product to the new order Issue: - it is possible to select the same serial number that was previously used in another order. Fix: - Hide serial numbers that are being used in active orders Task - 3944652 Forward-Port-Of: odoo/odoo#187176
with this pr: update legal not on fiscal position. As per Rule 46 of the CGST Act, it needs to be written on the invoice. task-4440627 Forward-Port-Of: odoo/odoo#192093
Original PR description
with this pr: update legal not on fiscal position. As per Rule 46 of the CGST Act, it needs to be written on the invoice. task-4440627 Forward-Port-Of: odoo/odoo#192093
Description of the issue this PR addresses: Current behavior before PR: Ctrl+clicking on a styled link is ineffective since the target is the styled element. Desired behavior after PR is merged: Ensure the target is the closest anchor tag. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192441
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Ctrl+clicking on a styled link is ineffective since the target is the styled element. Desired behavior after PR is merged: Ensure the target is the closest anchor tag. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192441
The context variable is missing in current thread when using the shell command. see d19478eb03d2 Description of the issue this PR addresses: Use the `odoo shell -d dbname` command ``` Current behavior before PR: Traceback (most recent call last): File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 87, in __new__ return cls.registries[db_name] ~~~~~~~~~~~~~~^^^^^^^^^ File "/home/bfontaine/Bureau/local/venv17/lib/python3.11/site-packages/decor
Original PR description
The context variable is missing in current thread when using the shell command. see d19478eb03d2 Description of the issue this PR addresses: Use the `odoo shell -d dbname` command ``` Current…
The context variable is missing in current thread when using the shell command.
see d19478eb03d2
Description of the issue this PR addresses:
Use the `odoo shell -d dbname` command
```
Current behavior before PR:
Traceback (most recent call last):
File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 87, in __new__
return cls.registries[db_name]
~~~~~~~~~~~~~~^^^^^^^^^
File "/home/bfontaine/Bureau/local/venv17/lib/python3.11/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
~~~~~~^^^^^
KeyError: 'db_test'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 110, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/bfontaine/Bureau/odoo17/addons/phyto_base/loader.py", line 13, in load_modules
report = odoo.registry()._assertion_report
^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/__init__.py", line 105, in registry
database_name = threading.current_thread().dbname
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: '_MainThread' object has no attribute 'dbname'
Traceback (most recent call last):
File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 87, in __new__
return cls.registries[db_name]
~~~~~~~~~~~~~~^^^^^^^^^
File "/home/bfontaine/Bureau/local/venv17/lib/python3.11/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
~~~~~~^^^^^
KeyError: 'db_test'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/bfontaine/.local/bin/odoo17", line 246, in <module>
main()
File "/home/bfontaine/.local/bin/odoo17", line 242, in main
run()
File "/home/bfontaine/.local/bin/odoo17", line 233, in run
odoo.cli.main()
File "/home/bfontaine/Bureau/odoo/17.0/odoo/cli/command.py", line 66, in main
o.run(args)
File "/home/bfontaine/Bureau/odoo/17.0/odoo/cli/shell.py", line 123, in run
self.shell(config['db_name'])
File "/home/bfontaine/Bureau/odoo/17.0/odoo/cli/shell.py", line 109, in shell
registry = odoo.registry(dbname)
^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/__init__.py", line 106, in registry
return modules.registry.Registry(database_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 89, in __new__
return cls.new(db_name)
^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/local/venv17/lib/python3.11/site-packages/decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/modules/registry.py", line 110, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/bfontaine/Bureau/odoo17/addons/phyto_base/loader.py", line 13, in load_modules
report = odoo.registry()._assertion_report
^^^^^^^^^^^^^^^
File "/home/bfontaine/Bureau/odoo/17.0/odoo/__init__.py", line 105, in registry
database_name = threading.current_thread().dbname
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: '_MainThread' object has no attribute 'dbname'. Did you mean: '_name'?
```
Desired behavior after PR is merged:
shell command works
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#192066
Forward-Port-Of: odoo/odoo#192038Since the arch is not mandatory and the `_combine` method would [assume it is a data node](https://github.com/odoo/odoo/pull/182766), the `_check_xml` for child views should allow an empty arch in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189450
Original PR description
Since the arch is not mandatory and the `_combine` method would [assume it is a data node](https://github.com/odoo/odoo/pull/182766), the `_check_xml` for child views should allow an empty arch in the same way. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189450
Typo in state name (Somalia -> Somali). https://en.wikipedia.org/wiki/Somali_Region task-4453644 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192510
Original PR description
Typo in state name (Somalia -> Somali). https://en.wikipedia.org/wiki/Somali_Region task-4453644 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192510
Apply sudo to avoid an access error when importing records (e.g. partners). Example use case: - Uninstall `base_install_request` - A user without the Administrator > Settings permission - Go to Contacts and click on Import records - When uploading the file the access error occurs @Tecnativa TT51841 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189180 Forward-Port-Of: odoo/odoo#188634
Original PR description
Apply sudo to avoid an access error when importing records (e.g. partners). Example use case: - Uninstall `base_install_request` - A user without the Administrator > Settings permission - Go to Contacts and click on Import records - When uploading the file the access error occurs @Tecnativa TT51841 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189180 Forward-Port-Of: odoo/odoo#188634
Cancelled order should be ignored by default in the POS order report. Steps to reproduce: ------------------- * Open PoS create an order and go back to the backedn * Open the PoS again and close the PoS, it will cancel the order > Observation: Open PoS order report, it will include the cancelled order, that can be missleading. Why the fix: ------------ We add a new default filter that apply a domain to exclude the cancelled order from the report. opw-4257734 Forward-Port-Of: odo
Original PR description
Cancelled order should be ignored by default in the POS order report. Steps to reproduce: ------------------- * Open PoS create an order and go back to the backedn * Open the PoS again and close the PoS, it will cancel the order > Observation: Open PoS order report, it will include the cancelled order, that can be missleading. Why the fix: ------------ We add a new default filter that apply a domain to exclude the cancelled order from the report. opw-4257734 Forward-Port-Of: odoo/odoo#192377
Since [1], when an extra menu is displayed due to the top menu exceeding its maximum width, the active class is no longer applied correctly. This issue was introduced during the conversion from jQuery to vanilla JavaScript. Steps to reproduce: - Enter the Website in edit mode. - Navigate to Site > Menu Editor. - Add several menu items until the menu exceeds its maximum width. - Ensure that one of the items in the extra menu redirects to "Contact Us". - Click on the "Contact Us" menu it
Original PR description
Since [1], when an extra menu is displayed due to the top menu exceeding its maximum width, the active class is no longer applied correctly. This issue was introduced during the conversion from jQuery to vanilla JavaScript. Steps to reproduce: - Enter the Website in edit mode. - Navigate to Site > Menu Editor. - Add several menu items until the menu exceeds its maximum width. - Ensure that one of the items in the extra menu redirects to "Contact Us". - Click on the "Contact Us" menu item. - Open the dropdown menu (via the "+" icon) and observe that the "Contact Us" entry is not highlighted. This commit resolves the problem. [1]: https://github.com/odoo/odoo/commit/0de634965a0dec4470b30154f3722a1e83b0e866 task-4428845 opw-4383641 Forward-Port-Of: odoo/odoo#192327 Forward-Port-Of: odoo/odoo#191548
Versions -------- - saas-17.4+ Steps ----- 1. Have a published product "A" with 16+ variants; 2. have a published product "B" with alternative product "A"; 3. add more alternative products whose names are greater than "A"; 4. open product "B" in eCommerce. >[!Important] > Products with a reference value (e.g. "[FURN_2100]") get sorted before "A", so be sure to exclude those to reproduce the issue. Issue ----- Only product "A" gets displayed. Cause ----- The dynamic filter
Original PR description
Versions -------- - saas-17.4+ Steps ----- 1. Have a published product "A" with 16+ variants; 2. have a published product "B" with alternative product "A"; 3. add more alternative products whose…
Versions -------- - saas-17.4+ Steps ----- 1. Have a published product "A" with 16+ variants; 2. have a published product "B" with alternative product "A"; 3. add more alternative products whose names are greater than "A"; 4. open product "B" in eCommerce. >[!Important] > Products with a reference value (e.g. "[FURN_2100]") get sorted before "A", so be sure to exclude those to reproduce the issue. Issue ----- Only product "A" gets displayed. Cause ----- The dynamic filter for alternative products applies the default limit of 16 to the variant count. This was not an issue in earlier versions, as alternative products displayed variants instead of templates. Solution -------- In the `_prepare_values` method, set the `hide_variants` context value even if `self.filter_id` is falsy, making it accessible for dynamic filters as well. In the `_get_products_*` methods, check this context value. If present, limit each product template to a single variant before calling `search`. opw-4318624 Forward-Port-Of: odoo/odoo#192421 Forward-Port-Of: odoo/odoo#189040
Steps to reproduce: - wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42) - reload the spreadsheet - before the pivot is loaded (throttle the network in the dev tools): right click the cell - click on "See records" menu item => boom Task: 3847477 X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172826 Forwa
Original PR description
Steps to reproduce:
- wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42)
- reload the spreadsheet
- before the pivot is loaded (throttle the network in the dev tools): right click the cell
- click on "See records" menu item => boom
Task: 3847477
X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#172826
Forward-Port-Of: odoo/odoo#162568Currently, when using pricelists, if you change the price of a product inside the session, it will show a discount value on the receipt. Steps to reproduce: ------------------- * Activate advanced pricelist * Modify the shop's default pricelist * Discount policy: Show public price & discounts * Add a rule: 10% discount on all products with min qty of 10 * Open shop session * Add any product qty 1 * Manually change price to a higher amount * Pay the order > Observation: On the re
Original PR description
Currently, when using pricelists, if you change the price of a product inside the session, it will show a discount value on the receipt. Steps to reproduce: ------------------- * Activate advanced pricelist * Modify the shop's default pricelist * Discount policy: Show public price & discounts * Add a rule: 10% discount on all products with min qty of 10 * Open shop session * Add any product qty 1 * Manually change price to a higher amount * Pay the order > Observation: On the receipt we can see a negative discount value. Why the fix: ------------ Changing the price of a product through the price button in the session should never be considered as a discount. Lines for which the product price was manually set should not be counted toward overall discount (positive or negative). opw-4366651 Forward-Port-Of: odoo/odoo#191384 Forward-Port-Of: odoo/odoo#190785
This commit fixes a bug where the control panel would display layout buttons in dialog even though they would already be present inside the dialog footer. task-4381250 Forward-Port-Of: odoo/odoo#190463
Original PR description
This commit fixes a bug where the control panel would display layout buttons in dialog even though they would already be present inside the dialog footer. task-4381250 Forward-Port-Of: odoo/odoo#190463
Versions 16.0+ Description of the issue/feature this PR addresses: The issue occurs when selecting a partner in an invoice, the sales team is not correctly computed. The problem arises because the default_team_id is not passed as a parameter to the context when the partner is selected, which works correctly in sales orders but fails in invoices. Current behavior before PR: When modifying the partner_id in an invoice, the sales team is not recomputed, leading to incorrect or missing
Original PR description
Versions 16.0+ Description of the issue/feature this PR addresses: The issue occurs when selecting a partner in an invoice, the sales team is not correctly computed. The problem arises because the…
Versions 16.0+ Description of the issue/feature this PR addresses: The issue occurs when selecting a partner in an invoice, the sales team is not correctly computed. The problem arises because the default_team_id is not passed as a parameter to the context when the partner is selected, which works correctly in sales orders but fails in invoices. Current behavior before PR: When modifying the partner_id in an invoice, the sales team is not recomputed, leading to incorrect or missing sales team assignment. Desired behavior after PR is merged: After this PR is merged, modifying the partner_id on an invoice will correctly recompute the sales team by passing the default_team_id in the context, ensuring consistent behavior between invoices and sales orders. I will now provide a short video demonstrating the error. This issue is replicable if none of the sales teams have any members assigned. https://drive.google.com/file/d/15mUpXvdlVpGZXW976PK7EVYH6X4sm2CJ/view?usp=sharing PR of v16 https://github.com/odoo/odoo/pull/180961 Forward-Port-Of: odoo/odoo#192242 Forward-Port-Of: odoo/odoo#181244
When the scale precision is half or quarter, the number of grid columns is this.columnCount * this.model.metaData.scale.cellPart + 1 and not this.columnCount + 1 as was assumed in aggregatePills. This led to a bad computation of aggregates in columns sufficiently far on the right of the gantt view in precision half or quarter. Note that this error was not detected before because many gantt views do not use that precisions or split groups anyway (via shouldMergeGroups). Forward-Port-Of: odoo/en
Original PR description
When the scale precision is half or quarter, the number of grid columns is this.columnCount * this.model.metaData.scale.cellPart + 1 and not this.columnCount + 1 as was assumed in aggregatePills. This led to a bad computation of aggregates in columns sufficiently far on the right of the gantt view in precision half or quarter. Note that this error was not detected before because many gantt views do not use that precisions or split groups anyway (via shouldMergeGroups). Forward-Port-Of: odoo/enterprise#76610
When a customer creates a global invoice, a traceback will appear. Steps to reproduce the error: - Install ``l10n_mx_edi`` module > Switch to Mexican company - Create an invoice without customer and product > Save - Go back to List view of invoices - Select that invoice > Actions > Create Global Invoice Traceback: ``` File "home/odoo/src/enterprise/18.0/l10n_mx_edi/wizard/l10n_mx_edi_global_invoice_create.py", line 23, in default_get invoices = source_invoices._l10n_mx_edi_check
Original PR description
When a customer creates a global invoice, a traceback will appear. Steps to reproduce the error: - Install ``l10n_mx_edi`` module > Switch to Mexican company - Create an invoice without customer and…
When a customer creates a global invoice, a traceback will appear.
Steps to reproduce the error:
- Install ``l10n_mx_edi`` module > Switch to Mexican company
- Create an invoice without customer and product > Save
- Go back to List view of invoices
- Select that invoice > Actions > Create Global Invoice
Traceback:
```
File "home/odoo/src/enterprise/18.0/l10n_mx_edi/wizard/l10n_mx_edi_global_invoice_create.py", line 23, in default_get
invoices = source_invoices._l10n_mx_edi_check_invoices_for_global_invoice()
File "home/odoo/src/enterprise/18.0/l10n_mx_edi/models/account_move.py", line 306, in _l10n_mx_edi_check_invoices_for_global_invoice
invoices_str = ", ".join(failed_invoices.mapped('name'))
TypeError: sequence item 0: expected str instance, bool found
```
https://github.com/odoo/enterprise/blob/01f749f40fc4b5f9708696dc42eab7125e790b28/l10n_mx_edi/models/account_move.py#L306 When a customer creates a new invoice, ``name`` will be False,
When the customer tries to create global invoice,
So it will lead to the above traceback.
sentry-6197401330
Forward-Port-Of: odoo/enterprise#76515The dialog content and button is off on mobile and the dialog should promote better the sign app. This commit fixes the design to improve the promotion and better render the content on both mobile and desktop. - No more sign up button -> close button redirect to /app/sign if user is not connected - Close button is always secondary - Reviewed wording and design task-4434783  Forward-Port-Of:
Original PR description
The dialog content and button is off on mobile and the dialog should promote better the sign app. This commit fixes the design to improve the promotion and better render the content on both mobile and desktop. - No more sign up button -> close button redirect to /app/sign if user is not connected - Close button is always secondary - Reviewed wording and design task-4434783  Forward-Port-Of: odoo/enterprise#76265
Steps to reproduce: 1. Go to a folder and open its chatter 2. Use the attachment button to upload a document 3. It renames the existing folder with the uploading attachment. Technical Reason: The issue occurs because, starting from version 18.0, folders are treated as documents but have an empty 'attachment_id'. Without distinguishing folders from other documents, the logic incorrectly assigns 'attachment_id' to folders when uploading documents. Adding a condition to exclude folders (doc
Original PR description
Steps to reproduce: 1. Go to a folder and open its chatter 2. Use the attachment button to upload a document 3. It renames the existing folder with the uploading attachment. Technical Reason: The issue occurs because, starting from version 18.0, folders are treated as documents but have an empty 'attachment_id'. Without distinguishing folders from other documents, the logic incorrectly assigns 'attachment_id' to folders when uploading documents. Adding a condition to exclude folders (document.type != 'folder') ensures folder metadata remains unaffected. After this commit: folder name will not be affected by uploading the attachment from chatter. Task-4368920 Forward-Port-Of: odoo/enterprise#75098
Steps to reproduce: - Activate debug mode - Go to Accounting/Configuration/Accounting Reports/Depreciation Schedule - Deactivate the journals filter - open the depreciation schedule -> Traceback because it can't iterate on None Type object opw-4364589 Forward-Port-Of: odoo/enterprise#76514
Original PR description
Steps to reproduce: - Activate debug mode - Go to Accounting/Configuration/Accounting Reports/Depreciation Schedule - Deactivate the journals filter - open the depreciation schedule -> Traceback because it can't iterate on None Type object opw-4364589 Forward-Port-Of: odoo/enterprise#76514
Before this commit, spans with no attribute and no special style were unwrapped by the OdooEditor, meaning the span itself disappeared, leaving its content in the parent element. This behavior breaks translations, as the whole span is used as a key to match translations After this commit, those spans are not removed. opw-3746922 opw-4318712 [++] Forward-Port-Of: odoo/enterprise#76317 Forward-Port-Of: odoo/enterprise#75962
Original PR description
Before this commit, spans with no attribute and no special style were unwrapped by the OdooEditor, meaning the span itself disappeared, leaving its content in the parent element. This behavior breaks translations, as the whole span is used as a key to match translations After this commit, those spans are not removed. opw-3746922 opw-4318712 [++] Forward-Port-Of: odoo/enterprise#76317 Forward-Port-Of: odoo/enterprise#75962
In this commit, we fix 4 tours by being more precise on the triggers and/or adding intermediate steps to ensure the proper conduct of the tour. We take advantage of this commit to linter the tour files. Forward-Port-Of: odoo/enterprise#75732
Original PR description
In this commit, we fix 4 tours by being more precise on the triggers and/or adding intermediate steps to ensure the proper conduct of the tour. We take advantage of this commit to linter the tour files. Forward-Port-Of: odoo/enterprise#75732
Some 2024 years were encoded in test files. Forward-Port-Of: odoo/enterprise#76393
Original PR description
Some 2024 years were encoded in test files. Forward-Port-Of: odoo/enterprise#76393
Before this commit, one tour searched in a dropdown and clicked on an item representing a field of a model, without waiting for the dropdown to update. Because tours' behavior change rapidly in an effort to strengthen them, this undeterminism was not detected before. runbot-error-111417 runbot-error-111192 Forward-Port-Of: odoo/enterprise#76539
Original PR description
Before this commit, one tour searched in a dropdown and clicked on an item representing a field of a model, without waiting for the dropdown to update. Because tours' behavior change rapidly in an effort to strengthen them, this undeterminism was not detected before. runbot-error-111417 runbot-error-111192 Forward-Port-Of: odoo/enterprise#76539
Purpose ======= Rename Share Availabilities's Dropdown Menus as following: - Select Dates → Propose Slots - Any Time → Share Calendar Rename Appointment Categories Values as following: - Custom → Specific Slots - Recurring → Regular - Any Time → Shared Calendar Add a 'Share' button on Appointment Type Kanban View, that opens a Custom Link modal to share a appointment link -> Remove 'More Options' button in 'Share Availabilities' form view, as it will covered via a generic bu
Original PR description
Purpose ======= Rename Share Availabilities's Dropdown Menus as following: - Select Dates → Propose Slots - Any Time → Share Calendar Rename Appointment Categories Values as following: - Custom → Specific Slots - Recurring → Regular - Any Time → Shared Calendar Add a 'Share' button on Appointment Type Kanban View, that opens a Custom Link modal to share a appointment link -> Remove 'More Options' button in 'Share Availabilities' form view, as it will covered via a generic button. Task-4221267 Forward-Port-Of: odoo/enterprise#71461
Steps to reproduce: 1. Install accounting app 2. Install l10n_nl 3. Select the nl company 4. From settings, under "Default Accounts", the "Dutch VAT Rounding {Profit|Loss} Account" are readonly. Fix: Adding `readonly=False` to the `l10n_nl_rounding_difference_loss_account_id` and `l10n_nl_rounding_difference_profit_account_id` fields. opw-4380635 Forward-Port-Of: odoo/enterprise#76010
Original PR description
Steps to reproduce:
1. Install accounting app
2. Install l10n_nl
3. Select the nl company
4. From settings, under "Default Accounts", the "Dutch VAT Rounding {Profit|Loss} Account" are readonly.
Fix:
Adding `readonly=False` to the `l10n_nl_rounding_difference_loss_account_id` and `l10n_nl_rounding_difference_profit_account_id` fields.
opw-4380635
Forward-Port-Of: odoo/enterprise#76010This commit add a new way to deal with eTIms in the pos application. Before this commit, the only way of sending sales to etims was to generate the invoice while creating the pos order, then deal with the invoice later on. Now, everything is automated in the pos order directly, that means when the user post a pos order, she's directly send to etims and all the information returned are displayed on the receipt and the order view. In case the eTims process got an error, the user can still se
Original PR description
This commit add a new way to deal with eTIms in the pos application. Before this commit, the only way of sending sales to etims was to generate the invoice while creating the pos order, then deal with the invoice later on. Now, everything is automated in the pos order directly, that means when the user post a pos order, she's directly send to etims and all the information returned are displayed on the receipt and the order view. In case the eTims process got an error, the user can still send the order to eTims from the pos_order view. Stock moves are also send at the same time thanks to the l10n_ke_edi_oscu_stock module. task-3876855 Forward-Port-Of: odoo/enterprise#76247
Following 044da127dc977f124c3d0d105dbe3712113f14fb, the populate tool was refactored and doesn't use specific scripts by modules anymore. It seems the populate scripts for the whatsapp module cd7dfa8828cb6b2fb4aa5c35564210e7f4f876da were introduced around the same time the refactoring of the populate itself. Forward-Port-Of: odoo/enterprise#76484
Original PR description
Following 044da127dc977f124c3d0d105dbe3712113f14fb, the populate tool was refactored and doesn't use specific scripts by modules anymore. It seems the populate scripts for the whatsapp module cd7dfa8828cb6b2fb4aa5c35564210e7f4f876da were introduced around the same time the refactoring of the populate itself. Forward-Port-Of: odoo/enterprise#76484
After importing a website, it was not possible to drag and drop new blocks. You could still edit them but not add new ones. Fixed it by changing the way the snippets are added into the view. Forward-Port-Of: odoo/enterprise#75849
Original PR description
After importing a website, it was not possible to drag and drop new blocks. You could still edit them but not add new ones. Fixed it by changing the way the snippets are added into the view. Forward-Port-Of: odoo/enterprise#75849
Base users do not have access to the model `spreadsheet.revision` which is directly affected in a collaborative context. The usual flow consists to give access to the revisions once we check the access rights on the related spreadsheet. The code that handled the restoration of previous versions did not follow this flow and base users would face access errors. Task-4397512 Forward-Port-Of: odoo/enterprise#75474
Original PR description
Base users do not have access to the model `spreadsheet.revision` which is directly affected in a collaborative context. The usual flow consists to give access to the revisions once we check the access rights on the related spreadsheet. The code that handled the restoration of previous versions did not follow this flow and base users would face access errors. Task-4397512 Forward-Port-Of: odoo/enterprise#75474
Fix division by 0 and some UI Forward-Port-Of: odoo/enterprise#75916
Original PR description
Fix division by 0 and some UI Forward-Port-Of: odoo/enterprise#75916
Add missing english labels for the `l10n_mx_nationality` and `l10n_mx_type_of_operation`fields.  task-no Forward-Port-Of: odoo/enterprise#76055 Forward-Port-Of: odoo/enterprise#76038
Original PR description
Add missing english labels for the `l10n_mx_nationality` and `l10n_mx_type_of_operation`fields.  task-no Forward-Port-Of: odoo/enterprise#76055 Forward-Port-Of: odoo/enterprise#76038
In this commit, we add few steps that wait communication shadow root is in DOM before to continue the tour to avoid rerendering just before clicking on items. Forward-Port-Of: odoo/enterprise#76429
Original PR description
In this commit, we add few steps that wait communication shadow root is in DOM before to continue the tour to avoid rerendering just before clicking on items. Forward-Port-Of: odoo/enterprise#76429