Daily updates from Odoo
Navigate
Branch
Friday, January 3, 2025
89 changes
21 changes
Enhancements to existing features
Point of Sale sessions now synchronize full record changes whenever a register updates information, helping keep orders and restaurant data consistent across devices. This improves reliability for multi-register or restaurant setups while avoiding deletion of local records on other registers.
Original PR description
Changes to the synchronization system to ensure full synchronization every time a PoS writes to a record. This synchronization will not unlink local records in other PoS.
Website form submissions that create tasks now link to an existing customer only when the submitted email matches a known partner. External submissions also add clearer internal messages, helping teams spot unverified or mismatched customer emails.
Original PR description
*_ = website_crm, website_project, website_hr_recruitment Reimplement Partner Assignment and Messaging for Website Form Tasks - Automatically assigns a partner to tasks if the form email matches an existing partner; otherwise, leaves the partner unset. - Adds a chatter message for external submissions and warns if the email doesn't match the customer's verified email. task-4295363 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fix ensures eCommerce product pages display the intended number of alternative product suggestions, even when one suggested product has many variants. Customers will see a fuller and more relevant set of alternatives instead of only one product appearing.
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
The Point of Sale order report now excludes cancelled orders by default. This helps users see more accurate sales reporting without cancelled transactions causing confusion.
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
This fixes an issue where the point of sale receipt ticket web address could be translated by mistake. Keeping this link unchanged ensures customers and staff can reliably open receipt tickets regardless of the interface language.
Original PR description
In the template, /pos/ticket is concatenated to the base_url. But because /pos/ticket is a normal string inside the template, it is translated. ticket-4447566
Sales orders linked to point-of-sale activity now ignore POS orders that are still in draft when calculating invoiced quantities. This prevents sales from appearing invoiced before the POS order is actually validated, improving accuracy for order tracking and billing.
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
Miscellaneous changes
This reverts commit ff3702651a30fd7a6ee3007988df953dda911e41 After which customer credit notes share the sequence with supplier credit notes. Steps to reproduce: - Open Vendor Bills journal and enable 'Use Documents?' - Create a Bill with document type '(46) Factura de Compra Electrónica' - Create the credit note - In the Wizard: select 'Full Refund', Document Type 61, Confirm - Document name will be 'N/C 000001' - Now create an invoice with document type '(33) Factura Electrónica'
Original PR description
This reverts commit ff3702651a30fd7a6ee3007988df953dda911e41 After which customer credit notes share the sequence with supplier credit notes. Steps to reproduce: - Open Vendor Bills journal and enable 'Use Documents?' - Create a Bill with document type '(46) Factura de Compra Electrónica' - Create the credit note - In the Wizard: select 'Full Refund', Document Type 61, Confirm - Document name will be 'N/C 000001' - Now create an invoice with document type '(33) Factura Electrónica' - Add a credit note for the invoice Issue: Credit note name will be 'N/C 000002' but sequences should be unique for move type opw-4268371 Forward-Port-Of: odoo/odoo#192285
Steps to reproduce: - insert a list of timesheets in a spreadsheet - reload the spreadsheet - right click on a list cell - click on "See record" => it's not the correct form view Task: 4444541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192222
Original PR description
Steps to reproduce: - insert a list of timesheets in a spreadsheet - reload the spreadsheet - right click on a list cell - click on "See record" => it's not the correct form view Task: 4444541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192222
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5.
Original PR description
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5. Save. 6. Observe that the class `o_modified_image_to_save` is not removed from the image. opw-4406195 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192009 Forward-Port-Of: odoo/odoo#191475
A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488
Original PR description
A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488 Forward-Port-Of: odoo/odoo#190430
And compress the arabic language Forward-Port-Of: odoo/odoo#192210
Original PR description
And compress the arabic language Forward-Port-Of: odoo/odoo#192210
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation. **Steps to reproduce the issue:** 1- Navigate to Settings > Technical > Actions > User-defined Defaults. 2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 . 3- Go to the Sales module. 4- Crea
Original PR description
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while…
**Issue:**
A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation.
**Steps to reproduce the issue:**
1- Navigate to Settings > Technical > Actions > User-defined Defaults.
2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 .
3- Go to the Sales module.
4- Create a new quotation.
A warning with the title "Warning for the change of your quotation's company" is displayed (see screenshot attached), despite the company not being changed.
The onchange('company_id') method is triggered by the user-defined default for the quotation template.
<img src="https://github.com/user-attachments/assets/5f046310-05b7-48ab-9781-1ba4a36f2beb" width=400 />
opw-4244961
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#184713Versions 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#191674 Forward-Port-Of: odoo/odoo#181244
Before this commit: the bg color of a table cell is set to a fixed value when selected After this commit: the selection will have a blue overlay color effect on the selected cells with bg color task-4398980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192039 Forward-Port-Of: odoo/odoo#191366
Original PR description
Before this commit: the bg color of a table cell is set to a fixed value when selected After this commit: the selection will have a blue overlay color effect on the selected cells with bg color task-4398980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192039 Forward-Port-Of: odoo/odoo#191366
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
Original PR description
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
**Current behavior before PR:** - In web studio, when text is selected and the page is scrolled, the toolbar does not stay aligned with the selected text. **Desired behavior after PR is merged:** - Now, when scrolling in web studio, the toolbar remains fixed to the initial selection. task-4317313 Forward-Port-Of: odoo/odoo#186925
Original PR description
**Current behavior before PR:** - In web studio, when text is selected and the page is scrolled, the toolbar does not stay aligned with the selected text. **Desired behavior after PR is merged:** - Now, when scrolling in web studio, the toolbar remains fixed to the initial selection. task-4317313 Forward-Port-Of: odoo/odoo#186925
Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
Original PR description
Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce the error: - Open resources > Open Assembly Line 1 > Remove Working Time - Create a MO > Add Work order > Select Assembly Line 1 in Work center > Confirm > ``Produce All`` or click ``Start`` button in work orders Traceback: ``` File "addons/mrp_account/models/mrp_production.py", line
Original PR description
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce…
When the user creates a manufacturing order with a work center
that does not have working hours and the user clicks on ``Produce All`` or
``Start`` button, a traceback will appear.
Steps to reproduce the error:
- Open resources > Open Assembly Line 1 > Remove Working Time
- Create a MO > Add Work order > Select Assembly Line 1 in Work center >
Confirm > ``Produce All`` or click ``Start`` button in work orders
Traceback:
```
File "addons/mrp_account/models/mrp_production.py", line 109, in button_mark_done
res = super().button_mark_done()
File "addons/mrp/models/mrp_production.py", line 2026, in button_mark_done
self.workorder_ids.button_finish()
File "addons/mrp/models/mrp_workorder.py", line 661, in button_finish
workorder.with_context(bypass_duration_calculation=True).write(vals)
File "addons/mrp/models/mrp_workorder.py", line 485, in write
return super(MrpWorkorder, self).write(values)
File "odoo/models.py", line 4760, in write
fields[0].determine_inverse(real_recs)
File "odoo/fields.py", line 1478, in determine_inverse
determine(self.inverse, records)
File "odoo/fields.py", line 109, in determine
return needle(*args)
File "addons/mrp/models/mrp_workorder.py", line 263, in _set_dates
wo.date_finished = wo._calculate_date_finished()
File "addons/mrp/models/mrp_workorder.py", line 421, in _calculate_date_finished
return workcenter.resource_calendar_id.plan_hours(
File "addons/resource/models/resource_calendar.py", line 691, in plan_hours
for start, stop, meta in get_intervals(dt, dt + delta)[resource_id]:
File "addons/resource/models/resource_calendar.py", line 446, in _work_intervals_batch
attendance_intervals = self._attendance_intervals_batch(start_dt, end_dt, resources, tz=tz or self.env.context.get("employee_timezone"))
File "addons/resource/models/resource_calendar.py", line 285, in _attendance_intervals_batch
self.ensure_one()
File "odoo/models.py", line 6191, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: resource.calendar()
```
https://github.com/odoo/odoo/blob/fa375ffa4467efe99d53a7546f4dcf0553f51190/addons/mrp/models/mrp_workorder.py#L403
Here, ``resource_calendar_id`` will be False,
Eventually, it will lead to the above traceback.
sentry-6041123993
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#187874Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreak
Original PR description
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element…
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreakable()` for handling elements with `anchor tags` and elements with `btn` class or role attribute is `button`. This PR solves the issue of tab duplication in Tab Snippet and few snippets in which there is already button and the said behavior is observed are : `Cover` , `Text - Image` , `Image - Text `, `Carousel `, `Donate Now ( Button )` where anchor tag and elements with 'btn' class or role attribute is 'button', in `Masonry` and `Carousel` snippet which adds button through `Add Element` option and also when we add a button using `/button` command in any snippets. task-4316648 Forward-Port-Of: odoo/odoo#191945 Forward-Port-Of: odoo/odoo#187014
Fixes an issue due to the phone number being formatted before the verification that it is actually set. The formatting will now support receiving no phone number, and it won't cause an issue as its existence is checked right after. Also avoid running the account_edi_proxy_client neutralize on malaysian users, as it simply set the type to test. The malaysian edi supports having both a test and production user set on the same db (only one is being use at any given time of course), so that neut
Original PR description
Fixes an issue due to the phone number being formatted before the verification that it is actually set. The formatting will now support receiving no phone number, and it won't cause an issue as its existence is checked right after. Also avoid running the account_edi_proxy_client neutralize on malaysian users, as it simply set the type to test. The malaysian edi supports having both a test and production user set on the same db (only one is being use at any given time of course), so that neutralize could result in having two test users, which is not allowed by the constrains. opw-4352823 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190685
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See a
Original PR description
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on…
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See all counters increase but the magic button's one. **Cause:** The employee_id is not set on the `GamificationBadgeUserWizard` during creation state so `values` never contain an employee_id if retrieved on `self`. **Fix:** Retrieve the user's employee id through the selected user entity. https://github.com/user-attachments/assets/a0076e85-cd66-421a-992f-2c89afb07ad8 opw-4366690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190097
14 changes
Resolved issues and error corrections
This fix ensures that spreadsheet list entries keep the right identifier after a spreadsheet is reloaded. Users clicking “See record” from an imported list cell are now taken to the correct form view, reducing navigation mistakes when working with lists such as timesheets.
Original PR description
Steps to reproduce: - insert a list of timesheets in a spreadsheet - reload the spreadsheet - right click on a list cell - click on "See record" => it's not the correct form view Task: 4444541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See a
Original PR description
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on…
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See all counters increase but the magic button's one. **Cause:** The employee_id is not set on the `GamificationBadgeUserWizard` during creation state so `values` never contain an employee_id if retrieved on `self`. **Fix:** Retrieve the user's employee id through the selected user entity. https://github.com/user-attachments/assets/a0076e85-cd66-421a-992f-2c89afb07ad8 opw-4366690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190097
Fixes an issue due to the phone number being formatted before the verification that it is actually set. The formatting will now support receiving no phone number, and it won't cause an issue as its existence is checked right after. Also avoid running the account_edi_proxy_client neutralize on malaysian users, as it simply set the type to test. The malaysian edi supports having both a test and production user set on the same db (only one is being use at any given time of course), so that neut
Original PR description
Fixes an issue due to the phone number being formatted before the verification that it is actually set. The formatting will now support receiving no phone number, and it won't cause an issue as its existence is checked right after. Also avoid running the account_edi_proxy_client neutralize on malaysian users, as it simply set the type to test. The malaysian edi supports having both a test and production user set on the same db (only one is being use at any given time of course), so that neutralize could result in having two test users, which is not allowed by the constrains. opw-4352823 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190685
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreak
Original PR description
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element…
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreakable()` for handling elements with `anchor tags` and elements with `btn` class or role attribute is `button`. This PR solves the issue of tab duplication in Tab Snippet and few snippets in which there is already button and the said behavior is observed are : `Cover` , `Text - Image` , `Image - Text `, `Carousel `, `Donate Now ( Button )` where anchor tag and elements with 'btn' class or role attribute is 'button', in `Masonry` and `Carousel` snippet which adds button through `Add Element` option and also when we add a button using `/button` command in any snippets. task-4316648 Forward-Port-Of: odoo/odoo#191945 Forward-Port-Of: odoo/odoo#187014
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce the error: - Open resources > Open Assembly Line 1 > Remove Working Time - Create a MO > Add Work order > Select Assembly Line 1 in Work center > Confirm > ``Produce All`` or click ``Start`` button in work orders Traceback: ``` File "addons/mrp_account/models/mrp_production.py", line
Original PR description
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce…
When the user creates a manufacturing order with a work center
that does not have working hours and the user clicks on ``Produce All`` or
``Start`` button, a traceback will appear.
Steps to reproduce the error:
- Open resources > Open Assembly Line 1 > Remove Working Time
- Create a MO > Add Work order > Select Assembly Line 1 in Work center >
Confirm > ``Produce All`` or click ``Start`` button in work orders
Traceback:
```
File "addons/mrp_account/models/mrp_production.py", line 109, in button_mark_done
res = super().button_mark_done()
File "addons/mrp/models/mrp_production.py", line 2026, in button_mark_done
self.workorder_ids.button_finish()
File "addons/mrp/models/mrp_workorder.py", line 661, in button_finish
workorder.with_context(bypass_duration_calculation=True).write(vals)
File "addons/mrp/models/mrp_workorder.py", line 485, in write
return super(MrpWorkorder, self).write(values)
File "odoo/models.py", line 4760, in write
fields[0].determine_inverse(real_recs)
File "odoo/fields.py", line 1478, in determine_inverse
determine(self.inverse, records)
File "odoo/fields.py", line 109, in determine
return needle(*args)
File "addons/mrp/models/mrp_workorder.py", line 263, in _set_dates
wo.date_finished = wo._calculate_date_finished()
File "addons/mrp/models/mrp_workorder.py", line 421, in _calculate_date_finished
return workcenter.resource_calendar_id.plan_hours(
File "addons/resource/models/resource_calendar.py", line 691, in plan_hours
for start, stop, meta in get_intervals(dt, dt + delta)[resource_id]:
File "addons/resource/models/resource_calendar.py", line 446, in _work_intervals_batch
attendance_intervals = self._attendance_intervals_batch(start_dt, end_dt, resources, tz=tz or self.env.context.get("employee_timezone"))
File "addons/resource/models/resource_calendar.py", line 285, in _attendance_intervals_batch
self.ensure_one()
File "odoo/models.py", line 6191, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: resource.calendar()
```
https://github.com/odoo/odoo/blob/fa375ffa4467efe99d53a7546f4dcf0553f51190/addons/mrp/models/mrp_workorder.py#L403
Here, ``resource_calendar_id`` will be False,
Eventually, it will lead to the above traceback.
sentry-6041123993
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#187874And compress the arabic language Forward-Port-Of: odoo/odoo#192210
Original PR description
And compress the arabic language Forward-Port-Of: odoo/odoo#192210
Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
Original PR description
Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
**Current behavior before PR:** - In web studio, when text is selected and the page is scrolled, the toolbar does not stay aligned with the selected text. **Desired behavior after PR is merged:** - Now, when scrolling in web studio, the toolbar remains fixed to the initial selection. task-4317313 Forward-Port-Of: odoo/odoo#186925
Original PR description
**Current behavior before PR:** - In web studio, when text is selected and the page is scrolled, the toolbar does not stay aligned with the selected text. **Desired behavior after PR is merged:** - Now, when scrolling in web studio, the toolbar remains fixed to the initial selection. task-4317313 Forward-Port-Of: odoo/odoo#186925
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
Original PR description
Current behavior before PR: - In mass mailing, when the link popover opens, clicking on a link that is available near the edge of the mailing template beside the sidebar would sometimes cause the popover to appear behind the sidebar. Desired behavior after PR is merged: - Clicking on a link near the edge of the mailing template now ensures that the link popover opens correctly within the body of the mailing template. task-4237091 Forward-Port-Of: odoo/odoo#187873
Before this commit: the bg color of a table cell is set to a fixed value when selected After this commit: the selection will have a blue overlay color effect on the selected cells with bg color task-4398980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192039 Forward-Port-Of: odoo/odoo#191366
Original PR description
Before this commit: the bg color of a table cell is set to a fixed value when selected After this commit: the selection will have a blue overlay color effect on the selected cells with bg color task-4398980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192039 Forward-Port-Of: odoo/odoo#191366
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation. **Steps to reproduce the issue:** 1- Navigate to Settings > Technical > Actions > User-defined Defaults. 2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 . 3- Go to the Sales module. 4- Crea
Original PR description
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while…
**Issue:**
A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation.
**Steps to reproduce the issue:**
1- Navigate to Settings > Technical > Actions > User-defined Defaults.
2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 .
3- Go to the Sales module.
4- Create a new quotation.
A warning with the title "Warning for the change of your quotation's company" is displayed (see screenshot attached), despite the company not being changed.
The onchange('company_id') method is triggered by the user-defined default for the quotation template.
<img src="https://github.com/user-attachments/assets/5f046310-05b7-48ab-9781-1ba4a36f2beb" width=400 />
opw-4244961
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#184713A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488
Original PR description
A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488 Forward-Port-Of: odoo/odoo#190430
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5.
Original PR description
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5. Save. 6. Observe that the class `o_modified_image_to_save` is not removed from the image. opw-4406195 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192009 Forward-Port-Of: odoo/odoo#191475
This reverts commit ff3702651a30fd7a6ee3007988df953dda911e41 After which customer credit notes share the sequence with supplier credit notes. Steps to reproduce: - Open Vendor Bills journal and enable 'Use Documents?' - Create a Bill with document type '(46) Factura de Compra Electrónica' - Create the credit note - In the Wizard: select 'Full Refund', Document Type 61, Confirm - Document name will be 'N/C 000001' - Now create an invoice with document type '(33) Factura Electrónica'
Original PR description
This reverts commit ff3702651a30fd7a6ee3007988df953dda911e41 After which customer credit notes share the sequence with supplier credit notes. Steps to reproduce: - Open Vendor Bills journal and enable 'Use Documents?' - Create a Bill with document type '(46) Factura de Compra Electrónica' - Create the credit note - In the Wizard: select 'Full Refund', Document Type 61, Confirm - Document name will be 'N/C 000001' - Now create an invoice with document type '(33) Factura Electrónica' - Add a credit note for the invoice Issue: Credit note name will be 'N/C 000002' but sequences should be unique for move type opw-4268371 Forward-Port-Of: odoo/odoo#192285
19 changes
Enhancements to existing features
Indian payroll payment advice now includes an effective-from date and the company bank account in the creation wizard and generated reports. This gives payroll teams clearer payment documentation in PDF and spreadsheet outputs, including two added spreadsheet columns.
Original PR description
In this PR, Effective from date is added in the create payment advice wizard, which will be displayed in the advice pdf The company bank account is added to the report wizard which will show in both pdf and xlxs The XLXS report has two new columns Task-4218769
Signing request emails now display more cleanly on smaller screens, with centered text and company logos for a better recipient experience. Refusal messages are also handled better, preventing long reasons from overflowing and making them easier to read.
Original PR description
[ADD] sign: improvement in the responsiveness in the sign request template and correcting an issue with overflow on refused template - Sign request template: adding centering of the text for mobile view - Sign request accepted/refused: centering the text, - Sign request refused: fixing an issue with the text overflowing when the refused reason is long - Removing the document name from the header and centering the company logo task-id: 4423436
This update adjusts checkout-related views and address handling so they stay compatible with recent changes in the underlying website sales flow. It helps Colombian e-invoicing customers manage multiple portal addresses and keeps UPS delivery options displaying correctly during checkout.
Original PR description
adapt xpath as per made chnage in parent view task-3628329
Users can now correct OCR-detected bank statement balances directly from the imported document view by selecting a balance field and clicking the right amount. This extends an existing bill-correction workflow to bank statements, helping reduce data entry errors and speed up reconciliation.
Original PR description
After a bank statement has been OCRed, we allow the user to make corrections by simply clicking one of the balance fields and then clicking the correct amount by clicking on the boxes overlay of the imported file. This is a feature that was introduced first for bills, and is now made available to bank statements as well. A new mixin has been written to factorize as much as possible between the two models. task-id 4260464
Code cleanup and technical improvements
The Swedish point-of-sale localization module has been renamed to follow Odoo's standard naming conventions. This is an internal housekeeping change that helps keep the product structure consistent and easier to maintain, with no expected change to business functionality.
Original PR description
In this commit: === Renamed the module from pos_l10n_se to l10n_se_pos for consistency with naming conventions. task-4107545 Related: https://github.com/odoo/odoo/pull/184229 Related: https://github.com/odoo/upgrade/pull/6634
Miscellaneous changes
### Steps to reproduce the issue: 1. Activate Mexican Localization and use Mexican Company 2. Create an Invoice and set CFDI to public to True 3. In list view, select Invoice 4. In Actions, Create Global Invoice and Confirm 5. Log as User without Admin Rights 6. Select Invoice 7. Receive access error: > Sorry, [user] doesn't have 'read' access to: > - Attachment (ir.attachment) ### Explanation: When creating a Global Invoice, `ir.attachment` is created as well and link
Original PR description
### Steps to reproduce the issue: 1. Activate Mexican Localization and use Mexican Company 2. Create an Invoice and set CFDI to public to True 3. In list view, select Invoice 4. In Actions, Create…
### Steps to reproduce the issue: 1. Activate Mexican Localization and use Mexican Company 2. Create an Invoice and set CFDI to public to True 3. In list view, select Invoice 4. In Actions, Create Global Invoice and Confirm 5. Log as User without Admin Rights 6. Select Invoice 7. Receive access error: > Sorry, [user] doesn't have 'read' access to: > - Attachment (ir.attachment) ### Explanation: When creating a Global Invoice, `ir.attachment` is created as well and linked to the Global Invoice `l10n_mx_edi.document`, but if the link from document to attachment is complete, the opposite is not the case. `ir.attachment.res_id` has a value of 0, and, when checking access rights for `ir.attachment`, we will use the `_search` method in which one of three conditions, two of them having a `res_id` check, must be fulfilled for `ir.attachment` to be considered available to the user. https://github.com/odoo/odoo/blob/afdfbc4041f167ba6d6ff6c17b8432eb531df6b1/odoo/addons/base/models/ir_attachment.py#L561-L570 A user that did not Create Global Invoice and without `base.group_system` in their `groups_id` fulfills none of those conditions. ### Fix reasoning: The issue lies more within `res_id` not being `l10n_mx_edi.document.id` rather than a flaw in `_search`. This change should only apply when creating a Global Invoice. When sending an Invoice to the CFDI through the regular `action_send_and_print` process, `ir.attachment` is linked to `account.move` instead. opw-4365535 Forward-Port-Of: odoo/enterprise#76369 Forward-Port-Of: odoo/enterprise#75031
changing position of engine block and salary block in vehicle models view task-4351672 Forward-Port-Of: odoo/enterprise#74597
Original PR description
changing position of engine block and salary block in vehicle models view task-4351672 Forward-Port-Of: odoo/enterprise#74597
In this commit, we remove the step concerning the external button (which is visible when editing the input or hovering over it). Depending on the speed at which we check the trigger, the step passes (or not). For it to pass every time, we would have to hover over the input and check that the external button is present. This step was added when we removed the extra_trigger from the tours API. In any case, it seems doubtful that the tour tests that this trigger is in the DOM. We can therefore remo
Original PR description
In this commit, we remove the step concerning the external button (which is visible when editing the input or hovering over it). Depending on the speed at which we check the trigger, the step passes (or not). For it to pass every time, we would have to hover over the input and check that the external button is present. This step was added when we removed the extra_trigger from the tours API. In any case, it seems doubtful that the tour tests that this trigger is in the DOM. We can therefore remove this step. Forward-Port-Of: odoo/enterprise#76385
When enabling push notifications on their website, the system injects a widget that is responsible for (1) obtaining the user's permission to receive popup notifications, (2) loading the Firebase dependencies, and (3) initializing the Firebase app to handle push notifications. Currently, the Firebase dependencies are loaded from the Google CDN. Occasionally, these dependencies may fail to load, which can occur if the remote server is unreachable or if the user has installed a privacy-oriented
Original PR description
When enabling push notifications on their website, the system injects a widget that is responsible for (1) obtaining the user's permission to receive popup notifications, (2) loading the Firebase dependencies, and (3) initializing the Firebase app to handle push notifications. Currently, the Firebase dependencies are loaded from the Google CDN. Occasionally, these dependencies may fail to load, which can occur if the remote server is unreachable or if the user has installed a privacy-oriented addon that blocks requests to Google. When the dependencies fail to load, the widget responsible for push notifications crashes, and an intrusive error dialog appears. To avoid showing an error dialog on page load, we will silence the error and disable the push notification feature if the browser fails to load the Firebase dependencies. task-4247811 Forward-Port-Of: odoo/enterprise#76388
The community counterpart of this PR hides the composer more actions button when none are availanle. This PR adapt a whatsapp test that was relying on the old behavior. task-4433082 community: https://github.com/odoo/odoo/pull/191831 Forward-Port-Of: odoo/enterprise#76259
Original PR description
The community counterpart of this PR hides the composer more actions button when none are availanle. This PR adapt a whatsapp test that was relying on the old behavior. task-4433082 community: https://github.com/odoo/odoo/pull/191831 Forward-Port-Of: odoo/enterprise#76259
Enterprise counter-part. task-4354325 Forward-Port-Of: odoo/enterprise#75914
Original PR description
Enterprise counter-part. task-4354325 Forward-Port-Of: odoo/enterprise#75914
in hr.employee form inside the payroll page the group `Belgian Payroll` was always visible if the `l10n_be_hr_payroll` is installed regradless the active company - add `invisible="company_country_code != 'BE'"` to the group to be only visible when `BE` company is selected Task: 4434600 Forward-Port-Of: odoo/enterprise#76239
Original PR description
in hr.employee form inside the payroll page the group `Belgian Payroll` was always visible if the `l10n_be_hr_payroll` is installed regradless the active company - add `invisible="company_country_code != 'BE'"` to the group to be only visible when `BE` company is selected Task: 4434600 Forward-Port-Of: odoo/enterprise#76239
Steps --------- 1. Debug mode 2. Go to Accounting 3. Configuration > Management > Accounting Reports 4. Open "Partner Ledger" 5. In the Options tab, set the "Prefix Groups Threshold to 3" 6. Create 3 different partners, each having their name starting with a '\~' 7. Create an invoice for each of the partners created in previous steps 8. Open the partner ledger -> Traceback Problem --------- When there are more lines in the report than the prefix group value, the partners are groupe
Original PR description
Steps --------- 1. Debug mode 2. Go to Accounting 3. Configuration > Management > Accounting Reports 4. Open "Partner Ledger" 5. In the Options tab, set the "Prefix Groups Threshold to 3" 6. Create 3…
Steps
---------
1. Debug mode
2. Go to Accounting
3. Configuration > Management > Accounting Reports
4. Open "Partner Ledger"
5. In the Options tab, set the "Prefix Groups Threshold to 3"
6. Create 3 different partners, each having their name starting with a '\~'
7. Create an invoice for each of the partners created in previous steps
8. Open the partner ledger -> Traceback
Problem
---------
When there are more lines in the report than the prefix group value, the partners are grouped by names: P -> PA -> PAR, etc.
However, some partners could have a '\~' in their names making the groupby line_id \~account.report\~14|{"groupby_prefix_group": "\~"}\~\~. The line ID being split using the | and \~ characters, it causes some issues.
Solution
---------
Since the line ID format is fixed: markup\~model\~id|markup\~model\~id|... We can split from the back and hard limit the split to 2 to make sure we always have (markup, model and ID) no matter the content of the markup.
task-4420258
Forward-Port-Of: odoo/enterprise#76293**Problem**: Similar to the issue addressed in [this commit](https://github.com/odoo/odoo/pull/191311/commits/9b159179a8d0ad85300bf31d3e1d67d7f1324b14), the `knowledge` module patches `HtmlField` and parses its content. Without this fix, self-closing tags are improperly handled when the `knowledge` module is installed. **Solution**: Apply the same fix to convert self-closing tags into open and closed tags to ensure proper handling in the `knowledge` module. opw-4394833 Forward-Port-Of:
Original PR description
**Problem**: Similar to the issue addressed in [this commit](https://github.com/odoo/odoo/pull/191311/commits/9b159179a8d0ad85300bf31d3e1d67d7f1324b14), the `knowledge` module patches `HtmlField` and parses its content. Without this fix, self-closing tags are improperly handled when the `knowledge` module is installed. **Solution**: Apply the same fix to convert self-closing tags into open and closed tags to ensure proper handling in the `knowledge` module. opw-4394833 Forward-Port-Of: odoo/enterprise#76154 Forward-Port-Of: odoo/enterprise#75959
Previously, when a customer was selected or input was entered, the onboarding tour failed to proceed to the next step. With this fix, the tour will correctly advance when the user provides input. Without demo data, the database does not have Deco, so I used admin. task-4372470 Forward-Port-Of: odoo/enterprise#76148 Forward-Port-Of: odoo/enterprise#75100
Original PR description
Previously, when a customer was selected or input was entered, the onboarding tour failed to proceed to the next step. With this fix, the tour will correctly advance when the user provides input. Without demo data, the database does not have Deco, so I used admin. task-4372470 Forward-Port-Of: odoo/enterprise#76148 Forward-Port-Of: odoo/enterprise#75100
the setup of test class TestRoSaftReportAssets is no longer passing since 2024-12-31 because of an old unnecessary freeze_time. This commit also fixes a second issue related to the sale of the asset. The value was wrongly computed, and should be a fixed amount in order to make the test robust. runbot issue: 111360 Forward-Port-Of: odoo/enterprise#76398
Original PR description
the setup of test class TestRoSaftReportAssets is no longer passing since 2024-12-31 because of an old unnecessary freeze_time. This commit also fixes a second issue related to the sale of the asset. The value was wrongly computed, and should be a fixed amount in order to make the test robust. runbot issue: 111360 Forward-Port-Of: odoo/enterprise#76398
To retrieve the radio button corresponding to the currently-selected status in the statusbar, selector is currently relying on the attribute `aria-label`, but such attribute is incorrect and will be removed. Better relying on the attribute `aria-checked`, which indicates if the radio button is actually checked. Forward-Port-Of: odoo/enterprise#76391 Forward-Port-Of: odoo/enterprise#72063
Original PR description
To retrieve the radio button corresponding to the currently-selected status in the statusbar, selector is currently relying on the attribute `aria-label`, but such attribute is incorrect and will be removed. Better relying on the attribute `aria-checked`, which indicates if the radio button is actually checked. Forward-Port-Of: odoo/enterprise#76391 Forward-Port-Of: odoo/enterprise#72063
Before this commit: - After placing an online food delivery order, the Review Order popup appears on the screen. However, clicking on it does not work. After this commit: - The Review Order button now redirects you to the latest order. task-4442905 Forward-Port-Of: odoo/enterprise#76359
Original PR description
Before this commit: - After placing an online food delivery order, the Review Order popup appears on the screen. However, clicking on it does not work. After this commit: - The Review Order button now redirects you to the latest order. task-4442905 Forward-Port-Of: odoo/enterprise#76359
Contrary to the last feedback, we should not add those additional quotes. It was the space that was missing. task-4131986 opw-4406161 Forward-Port-Of: odoo/enterprise#75811
Original PR description
Contrary to the last feedback, we should not add those additional quotes. It was the space that was missing. task-4131986 opw-4406161 Forward-Port-Of: odoo/enterprise#75811
33 changes
New functionality added to Odoo
This change adds custom add-on files and a third-party web theme package to the Odoo 18 branch. It may introduce new interface capabilities or visual changes, but the business purpose and user impact are not clearly described in the pull request details.
Original PR description
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
Enhancements to existing features
Combo products can no longer be accidentally set up inside other combo products. This strengthens product setup validation and helps prevent unsupported configurations that could cause issues later.
Original PR description
By design, nested combos aren't supported (i.e. products of type `combo` can't be used as combo items). However, since we used a python constraint to enforce this, it was still possible to change the type of a product to `combo` after using it as a combo item. To prevent this, we changed the python constraint to an SQL constraint.
This update speeds up automated CRM lead reveal processing by making it much quicker to check whether a revealed lead already exists. It reduces database workload dramatically on very large lead databases, helping scheduled CRM automation run faster and more reliably.
Original PR description
## Description
ir_cron_crm_reveal_lead (executed by OdooBot)
⤷ _process_lead_generation
⤷ _perform_reveal_service
⤷ _create_lead_from_response
⤷ `already_created_lead = self.env['crm.lead'].search([
('reveal_id', '=', result['clearbit_id'])])`
⤷ `Seq.Scan` on `crm.lead`
Also `search(...)` -> `search_count(..., limit=1)` as it's just an existence check, searching for all instances is not necessary.
## Benchmark
On a database with over 8-digits count of `crm.lead`:
| | Before | After |
|---------------|--------|----------|
| Timings (hot) | 6.4 s | 0.041 ms |
| Buffers usage | 2.6 GB | 32KB |
## Reference
task-3977976
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis change improves performance when connecting events with CRM leads. It helps Odoo find event-related leads more quickly, which can reduce delays for databases with many CRM records.
Original PR description
## Description Integration between `event.event` <-> `crm.lead` heavily depends on the fkey `crm.lead.event_id`. There are multitude of `search`/ `read_group` just based on it. Adding an index to avoid guaranteed `Seq.Scan` on `crm.lead`, as it's a table that tends to grow large on average. ## Reference task-3977976 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Indian localization now updates the legal note used on fiscal positions so the required Rule 46 CGST wording appears on invoices. This helps businesses using Indian GST invoicing stay aligned with local compliance requirements.
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
Point of Sale sessions now avoid canceling orders that are scheduled for later when the session is closed. This helps businesses keep future orders intact and reduces the risk of losing planned sales during daily closing operations.
Original PR description
In this commit: === - Added the `get_session_orders` method to handle session orders. - Updated session closure logic to exclude scheduled orders from being canceled, ensuring better management of such orders. task-4361079 Related: https://github.com/odoo/enterprise/pull/74555 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of sale orders in Kenya can now be submitted directly to eTIMS when they are posted, without first creating and processing an invoice. eTIMS response details appear on receipts and order records, failed submissions can be retried, and related stock movements are sent automatically.
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
UrbanPiper connection errors are now handled more clearly, helping users understand and resolve request failures instead of seeing technical tracebacks. The setup flow also checks fiscal position configuration to prevent avoidable configuration issues.
Original PR description
Before this commit: ====================== - HTTP errors were not handled for UrbanPiper requests. - Calling `response.json()` raise a traceback After this commit: ====================== - Enhanced error handling using `raise_for_status()` to notify users of any errors. - Added a check for `fiscal_position` during configuration. task-4447233
The Point of Sale UrbanPiper integration now supports key US and UK launch requirements, including flexible store hours, scheduled orders, delivery details on receipts, and clearer Uber Eats order identifiers. These updates improve order tracking, customer communication, and regional platform compatibility before rollout.
Original PR description
**: enhancements, ubereats This commit introduces several enhancements to the Point of Sale UrbanPiper module to meet the specific requirements for the US and UK regions. In this commit: === - Added…
**: enhancements, ubereats This commit introduces several enhancements to the Point of Sale UrbanPiper module to meet the specific requirements for the US and UK regions. In this commit: === - Added store timing configuration for `pos.config` to enable flexible operational hours. - Implemented handling of the option toggle. - Added the access code in order information for Uber Eats to streamline order identification. - Included delivery address on the receipt. - Added a delivery identifier in the POS order backend view. - Introduced functionality to handle scheduled (future) orders. - Include the order number in the invoice as it is essential for accurately locating and referencing order details. - Implemented functionality for self-delivery orders, allowing shop/restaurant to update the order status as dispatched and completed to ensure accurate tracking and status updates. - Implemented functionality to send updates for the external order reference, ensuring seamless synchronization and accurate tracking across systems. - For the US & UK region, addressed an issue with UrbanPiper requiring the entire product catalog. Added logic to differentiate between regions and ensure the entire product catalog is sent when necessary. For the US and UK regions, these features are mandatory before going live. Implementing them in 18.0 ensures that the module meets regional requirements, avoids delays in deployment, and maintains compatibility with existing stable releases. task-4361079 Related: https://github.com/odoo/odoo/pull/188563
Invoices generated through UrbanPiper now include the related order number. This makes it easier for staff and customers to identify, locate, and reference the correct order details.
Original PR description
Following this commit : ===== - Include the order number in the invoice as it is essential for accurately locating and referencing order details. task - 4056101
Resolved issues and error corrections
This fixes a French accounting setup issue where bank identifier codes containing spaces could prevent database updates from completing. The system now converts those spaces to underscores, allowing affected migrations or upgrades to run successfully.
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-prThis fixes an internal issue in Odoo Discuss where unnecessary environment data was kept in memory by JavaScript model classes. Removing it helps make memory leak debugging easier and can reduce avoidable memory usage without changing user-facing behavior.
Original PR description
They were added on Model classes to make them easily available in case business code was putting static method code in the models, and accessing the env is very handy e.g. to invoke service calls. This approach was dismissed, because static methods do not work well with the relational approach. However, the storing of env in models has been mistakenly kept, which makes debugging memleak harder because Models keeping env means they keep services in memory. This commit removes the unused env stored on JS model classes.
Uploading an attachment from a folder's chatter no longer accidentally renames the folder. This prevents confusion and keeps folder organization intact when users add documents through the chatter.
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
This fixes an internal test issue in the New Zealand EFT payment module where expected dates could be incorrect. The change helps keep automated checks reliable without changing customer-facing behavior.
Original PR description
Fix a small issue with the test where the batch is created before the freeze time, causing the batch date & name to be wrong.
Fixes the Ecuador ATS report so reimbursement purchases use the correct identification and receipt codes required by the government's DIMM validation software. This helps businesses submit compliant tax reports and avoid validation errors.
Original PR description
- When the type of identification of vendor is 'RUC' the code should be 01 because is purchase - The "tipoComprobante" tag has to be '41' instead '01' according the schema of DIMM (government's software to validate ATS report)
Shop floor workers can now view videos added to quality point notes when opening instruction popups. This ensures visual guidance included in manufacturing quality checks is available where operators need it, reducing confusion and missed instructions.
Original PR description
With Odoo 18, it is possible to add videos in the 'Note' field of a quality point of a BOM, since it is an HTML field. This fix makes sure that the video is correctly shown in the shopfloor when clicking on the instruction line to open the popup. opw-4337263
This update makes an automated sales test wait for the page to be fully ready before continuing. It helps prevent false test failures, supporting more stable quality checks without changing the customer-facing sales flow.
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.
This change removes an unstable automated test step in the rental sales module. It helps prevent false test failures caused by timing differences, making validation of rental sales changes more dependable without affecting user-facing behavior.
Original PR description
In this commit, we remove the step concerning the external button (which is visible when editing the input or hovering over it). Depending on the speed at which we check the trigger, the step passes (or not). For it to pass every time, we would have to hover over the input and check that the external button is present. This step was added when we removed the extra_trigger from the tours API. In any case, it seems doubtful that the tour tests that this trigger is in the DOM. We can therefore remove this step.
Code cleanup and technical improvements
The web tour test suite has been split into clearer files based on what each group of tests covers. This is an internal cleanup that makes future maintenance easier without changing how users experience Odoo.
Original PR description
In this commit, we separate the unit tests that are all grouped in the tour_service file into files that are more explicit about what is being tested. We group everything related to the tour automatic feature into a separate file and we do the same for everything related to tour interactive. 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
Miscellaneous changes
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5.
Original PR description
**Problem**: When in `codeview`, calling `saveModifiedImagesPromise` creates the attachments and updates the DOM but does not update the `codeview`. As a result, the non-urgent save (`this.updateValue()`) uses outdated content from the `codeview`. **Solution**: Ensure that the `codeview` content is updated after saving attachments to reflect the latest changes. **Steps to reproduce**: 1. Add an Image-Text snippet. 2. Save the snippet. 3. Resize the image. 4. Switch to code view. 5. Save. 6. Observe that the class `o_modified_image_to_save` is not removed from the image. opw-4406195 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192009 Forward-Port-Of: odoo/odoo#191475
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation. **Steps to reproduce the issue:** 1- Navigate to Settings > Technical > Actions > User-defined Defaults. 2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 . 3- Go to the Sales module. 4- Crea
Original PR description
**Issue:** A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while…
**Issue:**
A warning popup appears incorrectly when a user-defined default is set for the "Quotation Template (Sales Order)" field. This warning is only relevant when the company is changed while creating a quotation.
**Steps to reproduce the issue:**
1- Navigate to Settings > Technical > Actions > User-defined Defaults.
2- Create a new User-defined Default for the field "Quotation Template (Sales Order)" with a default value (in JSON format) of 1 .
3- Go to the Sales module.
4- Create a new quotation.
A warning with the title "Warning for the change of your quotation's company" is displayed (see screenshot attached), despite the company not being changed.
The onchange('company_id') method is triggered by the user-defined default for the quotation template.
<img src="https://github.com/user-attachments/assets/5f046310-05b7-48ab-9781-1ba4a36f2beb" width=400 />
opw-4244961
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#184713Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
Original PR description
Update core code could be updated from "Update" page and IoT Handlers from "Log Levels" page. Now, all update tools are moved to update page. Backport of: odoo/odoo#190338 Task: 4395958 Forward-Port-Of: odoo/odoo#191886
A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488
Original PR description
A temporary issue may occur when the attachment of an expense report is deleted. Steps to reproduce: - Create an expense and add an attachment. - Create the report. - On the report, delete the attachment. - Try to click on the expense line. An error "TypeError: Cannot read properties of undefined (reading 'checksum')" is raised. The problem is resolved as soon as the page is reloaded. This fix ensures the case is handled when one clicks before the page is reloaded. opw-4355488 Forward-Port-Of: odoo/odoo#190430
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce the error: - Open resources > Open Assembly Line 1 > Remove Working Time - Create a MO > Add Work order > Select Assembly Line 1 in Work center > Confirm > ``Produce All`` or click ``Start`` button in work orders Traceback: ``` File "addons/mrp_account/models/mrp_production.py", line
Original PR description
When the user creates a manufacturing order with a work center that does not have working hours and the user clicks on ``Produce All`` or ``Start`` button, a traceback will appear. Steps to reproduce…
When the user creates a manufacturing order with a work center
that does not have working hours and the user clicks on ``Produce All`` or
``Start`` button, a traceback will appear.
Steps to reproduce the error:
- Open resources > Open Assembly Line 1 > Remove Working Time
- Create a MO > Add Work order > Select Assembly Line 1 in Work center >
Confirm > ``Produce All`` or click ``Start`` button in work orders
Traceback:
```
File "addons/mrp_account/models/mrp_production.py", line 109, in button_mark_done
res = super().button_mark_done()
File "addons/mrp/models/mrp_production.py", line 2026, in button_mark_done
self.workorder_ids.button_finish()
File "addons/mrp/models/mrp_workorder.py", line 661, in button_finish
workorder.with_context(bypass_duration_calculation=True).write(vals)
File "addons/mrp/models/mrp_workorder.py", line 485, in write
return super(MrpWorkorder, self).write(values)
File "odoo/models.py", line 4760, in write
fields[0].determine_inverse(real_recs)
File "odoo/fields.py", line 1478, in determine_inverse
determine(self.inverse, records)
File "odoo/fields.py", line 109, in determine
return needle(*args)
File "addons/mrp/models/mrp_workorder.py", line 263, in _set_dates
wo.date_finished = wo._calculate_date_finished()
File "addons/mrp/models/mrp_workorder.py", line 421, in _calculate_date_finished
return workcenter.resource_calendar_id.plan_hours(
File "addons/resource/models/resource_calendar.py", line 691, in plan_hours
for start, stop, meta in get_intervals(dt, dt + delta)[resource_id]:
File "addons/resource/models/resource_calendar.py", line 446, in _work_intervals_batch
attendance_intervals = self._attendance_intervals_batch(start_dt, end_dt, resources, tz=tz or self.env.context.get("employee_timezone"))
File "addons/resource/models/resource_calendar.py", line 285, in _attendance_intervals_batch
self.ensure_one()
File "odoo/models.py", line 6191, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: resource.calendar()
```
https://github.com/odoo/odoo/blob/fa375ffa4467efe99d53a7546f4dcf0553f51190/addons/mrp/models/mrp_workorder.py#L403
Here, ``resource_calendar_id`` will be False,
Eventually, it will lead to the above traceback.
sentry-6041123993
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#187874And compress the arabic language Forward-Port-Of: odoo/odoo#192210
Original PR description
And compress the arabic language Forward-Port-Of: odoo/odoo#192210
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreak
Original PR description
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element…
Steps To Reproduce: -> Go to Edit mode. -> Drag & Drop Tabs Snippet. -> Click in middle of tab's text and press "Enter". -> Tab is split and and new Tab is created. Issue Reason: As tab's element fails `isUnbreakable()` check for `Keydown`(Enter) event which makes it possible to split the element. And issue is not specific to Tab snippet but in other snippets where `anchor tag` and elements with `btn` class or role attribute is `button`. Solution: By modifying checks in `isUnbreakable()` for handling elements with `anchor tags` and elements with `btn` class or role attribute is `button`. This PR solves the issue of tab duplication in Tab Snippet and few snippets in which there is already button and the said behavior is observed are : `Cover` , `Text - Image` , `Image - Text `, `Carousel `, `Donate Now ( Button )` where anchor tag and elements with 'btn' class or role attribute is 'button', in `Masonry` and `Carousel` snippet which adds button through `Add Element` option and also when we add a button using `/button` command in any snippets. task-4316648 Forward-Port-Of: odoo/odoo#191945 Forward-Port-Of: odoo/odoo#187014
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See a
Original PR description
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on…
**Issue:** Badges granted to employees don't display the link to access employee card. https://github.com/user-attachments/assets/d8de916d-4f24-4ebb-b312-4e17d4c79bbb **Expected:** Magic button on badges cards should lead to the rewarded employee if any. **Steps to reproduce:** - Activate Employees and Gamification apps; - Configure an employee; - Configure a badge to grant through `Employees / Configuration / Challenges / Badges`; - Grant the badge and select the employee; - See all counters increase but the magic button's one. **Cause:** The employee_id is not set on the `GamificationBadgeUserWizard` during creation state so `values` never contain an employee_id if retrieved on `self`. **Fix:** Retrieve the user's employee id through the selected user entity. https://github.com/user-attachments/assets/a0076e85-cd66-421a-992f-2c89afb07ad8 opw-4366690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190097
### Steps to reproduce the issue: - Employee > open your favorite employee > HR Settings tab - Add a Badge Id say: 111 - Go to the shopfloor > extends the employee panel on the left - Scan the badge of your employee #### Expected behavior: The corresponding employee is added to the employee panel on the left and is set as the session owner. If you had clicked on the `+ Add operator` button before the scan, the dialog should be closed. #### Current behavior: TypeError: Cannot re
Original PR description
### Steps to reproduce the issue: - Employee > open your favorite employee > HR Settings tab - Add a Badge Id say: 111 - Go to the shopfloor > extends the employee panel on the left - Scan the badge…
### Steps to reproduce the issue: - Employee > open your favorite employee > HR Settings tab - Add a Badge Id say: 111 - Go to the shopfloor > extends the employee panel on the left - Scan the badge of your employee #### Expected behavior: The corresponding employee is added to the employee panel on the left and is set as the session owner. If you had clicked on the `+ Add operator` button before the scan, the dialog should be closed. #### Current behavior: TypeError: Cannot read properties of undefined (reading 'isShown') at `MrpDisplay._onBarcodeScanned` ### Cause of the issue: Once the scanned barcode is parsed and match a given employee in the `_onBarcodeScanned`, this call checks that a `SelectionPopup` is shown (representing the search dialog) and if so close it: https://github.com/odoo/enterprise/blob/e6bb5d2dcd1042ae6269487056babceca34b8655/mrp_workorder/static/src/mrp_display/mrp_display.js#L170-L177 Then, the session owner is set to the scanned employee. However, the `SelectionPopup` has been removed in saas-17.3 by Commit 209b0840df4d3de184dcba6cbc09539ec191a43a: https://github.com/odoo/enterprise/pull/56927/commits/209b0840df4d3de184dcba6cbc09539ec191a43a#diff-119404910b34efb326dbe84735b8ca63c16391841da9a7a85e5f61f790b25bd6L26-L31 and has been replaced by a regular dialog of the dialogService. It should therefore be closed in a similar way to how its done in the `selectEmployee` of the `useConnectedEmployee`: https://github.com/odoo/enterprise/blob/e6bb5d2dcd1042ae6269487056babceca34b8655/mrp_workorder/static/src/mrp_display/hooks/employee_hooks.js#L76 opw-4405585 --- Forward-Port-Of: odoo/enterprise#75820
Steps to reproduce ================== - Install account_accountant,l10n_ch_reports - Use the CH company - Create a new chart of account 12345 "Current Account Abcdgraph Labs 12345 Pvt Ltd" - Create a new customer "Abcdefghijklm Abcdefghijklm 1234" - Create and post a new journal entry for journal 12345 - Go to the General Ledger - Print the ledger => The right side of the page is cut off Cause of the issue ================== The column containing account is too wide and the t
Original PR description
Steps to reproduce ================== - Install account_accountant,l10n_ch_reports - Use the CH company - Create a new chart of account 12345 "Current Account Abcdgraph Labs 12345 Pvt Ltd" - Create a new customer "Abcdefghijklm Abcdefghijklm 1234" - Create and post a new journal entry for journal 12345 - Go to the General Ledger - Print the ledger => The right side of the page is cut off Cause of the issue ================== The column containing account is too wide and the table overflows the body opw-4286133 Forward-Port-Of: odoo/enterprise#76061
When enabling push notifications on their website, the system injects a widget that is responsible for (1) obtaining the user's permission to receive popup notifications, (2) loading the Firebase dependencies, and (3) initializing the Firebase app to handle push notifications. Currently, the Firebase dependencies are loaded from the Google CDN. Occasionally, these dependencies may fail to load, which can occur if the remote server is unreachable or if the user has installed a privacy-oriented
Original PR description
When enabling push notifications on their website, the system injects a widget that is responsible for (1) obtaining the user's permission to receive popup notifications, (2) loading the Firebase dependencies, and (3) initializing the Firebase app to handle push notifications. Currently, the Firebase dependencies are loaded from the Google CDN. Occasionally, these dependencies may fail to load, which can occur if the remote server is unreachable or if the user has installed a privacy-oriented addon that blocks requests to Google. When the dependencies fail to load, the widget responsible for push notifications crashes, and an intrusive error dialog appears. To avoid showing an error dialog on page load, we will silence the error and disable the push notification feature if the browser fails to load the Firebase dependencies. task-4247811 Forward-Port-Of: odoo/enterprise#76388
the setup of test class TestRoSaftReportAssets is no longer passing since 2024-12-31 because of an old unnecessary freeze_time. This commit also fixes a second issue related to the sale of the asset. The value was wrongly computed, and should be a fixed amount in order to make the test robust. runbot issue: 111360 Forward-Port-Of: odoo/enterprise#76398
Original PR description
the setup of test class TestRoSaftReportAssets is no longer passing since 2024-12-31 because of an old unnecessary freeze_time. This commit also fixes a second issue related to the sale of the asset. The value was wrongly computed, and should be a fixed amount in order to make the test robust. runbot issue: 111360 Forward-Port-Of: odoo/enterprise#76398
Issue: ==================== - A traceback occurred when attempting to print the session report from the reporting menu. - The issue was caused by unused code related to pro forma orders left over from the refactoring in version 17.0. Fix: ==================== - Removed the unused code related to pro forma orders. - Ensured the session report can be printed without errors. Task-4438550 Forward-Port-Of: odoo/enterprise#76302 Forward-Port-Of: odoo/enterprise#76285
Original PR description
Issue: ==================== - A traceback occurred when attempting to print the session report from the reporting menu. - The issue was caused by unused code related to pro forma orders left over from the refactoring in version 17.0. Fix: ==================== - Removed the unused code related to pro forma orders. - Ensured the session report can be printed without errors. Task-4438550 Forward-Port-Of: odoo/enterprise#76302 Forward-Port-Of: odoo/enterprise#76285
Contrary to the last feedback, we should not add those additional quotes. It was the space that was missing. task-4131986 opw-4406161 Forward-Port-Of: odoo/enterprise#75811
Original PR description
Contrary to the last feedback, we should not add those additional quotes. It was the space that was missing. task-4131986 opw-4406161 Forward-Port-Of: odoo/enterprise#75811
2 changes
Resolved issues and error corrections
This update corrects a formatting error in the Datev export reports for German-speaking customers. The previous issue was due to a missing space, not extra quotes, which has now been resolved. This ensures accurate data transmission to Datev.
Original PR description
Contrary to the last feedback, we should not add those additional quotes. It was the space that was missing. task-4131986 opw-4406161 Forward-Port-Of: odoo/enterprise#75811
This update fixes an issue where resetting a payslip to draft didn't correctly update the status of associated expense sheets, preventing further editing. Now, when a payslip is cancelled, the expense sheets are reset to 'approved' and related account adjustments are reversed, ensuring accurate expense tracking. This improves data consistency and simplifies expense management workflows.
Original PR description
If you generate a payslip with some expenses into it and set the payslip as "Done", the state of the Expense will be set to 'Done' too. If you set the payslip back to draft, it won't be possible to create draft entry again cause the linked expense state didn't reset back to 'approved'. Instead, it remained as 'Done'. To fix the issue, when the payslip is cancelled (before it is set back to draft), set the state of all linked expenses back to 'approved' and reverse all the account moves that were created when the expenses state was set to 'Done'. task-4045573