Daily updates from Odoo
Navigate
Branch
Friday, December 20, 2024
75 changes
15 changes
Resolved issues and error corrections
Point of Sale now includes lot and serial number information for products stored in sub-locations. This helps staff select the correct tracked products during sales and reduces stock visibility issues.
Original PR description
Also display lot/serial numbers products that are located in sub-locations. opw: 4415220 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
This fixes a small issue in the Discuss/mail area where a chat channel might not open as intended when the system explicitly asks it to. It helps ensure users are taken directly to the relevant conversation instead of seeing it folded or hidden.
Original PR description
Following 17fa8a4531df0cd7281962211797ba60df06f775, `force_open` was introduced as a parameter to the function, but the condition to set the folding state references `open` (python's default function to open a file), not `force_open` (the parameter), probably a typo. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Steps to reproduce: - Try to add a parent to the base plan "Projects" Issue: Unclear error message Cause: This is a master data and the constraint raised an unclear message "Invalid Operation This column contains module data and cannot be removed!" https://github.com/odoo/odoo/blob/1621f12e90b5903d1132875db7b0d94fa68bc642/odoo/addons/base/models/ir_model.py#L857-L859 Solution: We specify a more user-friendly message during the onchange opw-4327913 Forward-Port-Of: odoo/odoo
Original PR description
Steps to reproduce: - Try to add a parent to the base plan "Projects" Issue: Unclear error message Cause: This is a master data and the constraint raised an unclear message "Invalid Operation This column contains module data and cannot be removed!" https://github.com/odoo/odoo/blob/1621f12e90b5903d1132875db7b0d94fa68bc642/odoo/addons/base/models/ir_model.py#L857-L859 Solution: We specify a more user-friendly message during the onchange opw-4327913 Forward-Port-Of: odoo/odoo#188778
Currently, a connection error shows when the ReadTimeout error occurs when calling the JSON-RPC endpoint in IAP. This commit will show users a timeout error when a "ReadTimeout" error is found in the JSON response in the RPC call. sentry-6059323528 Forward-Port-Of: odoo/odoo#190841
Original PR description
Currently, a connection error shows when the ReadTimeout error occurs when calling the JSON-RPC endpoint in IAP. This commit will show users a timeout error when a "ReadTimeout" error is found in the JSON response in the RPC call. sentry-6059323528 Forward-Port-Of: odoo/odoo#190841
[FIX] l10n_fr: add tax move lines in tax report In the l10n_fr tax report, the wrong `account_move_line` entries are used in the journal item list view of the tax report in section `TD-VAT Due`. As a result, the balance debit/credit displayed under the `TD-VAT Due` is not the same as the balance in the journal items list view. - Create a customer invoice with a price 1000 and a tax 20% Goods. - Create a vendor bill with a price 100 and a tax 20% Goods. - Open the tax report, under the TD -
Original PR description
[FIX] l10n_fr: add tax move lines in tax report In the l10n_fr tax report, the wrong `account_move_line` entries are used in the journal item list view of the tax report in section `TD-VAT Due`. As a…
[FIX] l10n_fr: add tax move lines in tax report In the l10n_fr tax report, the wrong `account_move_line` entries are used in the journal item list view of the tax report in section `TD-VAT Due`. As a result, the balance debit/credit displayed under the `TD-VAT Due` is not the same as the balance in the journal items list view. - Create a customer invoice with a price 1000 and a tax 20% Goods. - Create a vendor bill with a price 100 and a tax 20% Goods. - Open the tax report, under the TD - VAT Due, the balance is 180. - Click on the amount in TD - VAT Due, the debit is 20 but the credit is 1000 (should be 200). The formula for `TD-VAT Due` is defined as `box_16.balance - box_23.balance`. - `box_16` is the sum of box_xx.balance which are defined by `account_tag`. - The balances of these boxes were computed using the base `account_tag`, which calculates the correct amount but causes `_expand_aggregations` in `account_report_expression` to generate a list view based on base move lines instead of the corresponding tax lines. This can be seen the label field of the lines, which are not the tax label. `box_16` needs to be computed using `box_xx_taxe` instead of `box_xx_base` to ensure the correct tax lines are included. For box 08, 09, 9B, 10, 11, T1, T2, T3, T4, T5, T6, P1, P2, I1, I2, I3, I4, I5, I6 we replace balance to balance_from_tags (which uses box_xx_taxe) For box 13, 14, 15, T7, 5B we keep balance (which already uses box_xx_taxe) opw-4335396 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188640
This commit prevents dropping an "inner content" block into an image field. Steps to reproduce: - Go to the "/shop" page. - Click on one of the products to go to its product page. - Enter edit mode. - Bug: It is possible to drop any "inner content" block into the "product" image field. This commit also fixes the following bug: - Go to the homepage in edit mode. - Drag and drop a "text-image" block onto the page. - Drag and drop a "badge" (or any other "inner content" block) un
Original PR description
This commit prevents dropping an "inner content" block into an image field. Steps to reproduce: - Go to the "/shop" page. - Click on one of the products to go to its product page. - Enter edit mode. - Bug: It is possible to drop any "inner content" block into the "product" image field. This commit also fixes the following bug: - Go to the homepage in edit mode. - Drag and drop a "text-image" block onto the page. - Drag and drop a "badge" (or any other "inner content" block) under the image. This is possible, and it's the intended behavior. - Click on the image and add a link to it. - Bug: Try dragging and dropping a "badge" under the image again, it is no longer possible. [opw-4273436](https://www.odoo.com/web#id=4273436&cids=1&menu_id=4720&action=333&active_id=1695&model=project.task&view_type=form) Forward-Port-Of: odoo/odoo#191200 Forward-Port-Of: odoo/odoo#190732
This commit will add the basic package of the bahrain localisation. - Accounts - Taxes - Fiscal positions - States - Tax reports task: 3927915 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186027
Original PR description
This commit will add the basic package of the bahrain localisation. - Accounts - Taxes - Fiscal positions - States - Tax reports task: 3927915 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186027
To allow compatibility between all db versions and new IoT Box images, we need to ensure that `path_file` method returns the path starting from `/home/pi` instead of the path of the service user (which is `/home/odoo` in newer images). Forward-Port-Of: odoo/odoo#191149 Forward-Port-Of: odoo/odoo#190963
Original PR description
To allow compatibility between all db versions and new IoT Box images, we need to ensure that `path_file` method returns the path starting from `/home/pi` instead of the path of the service user (which is `/home/odoo` in newer images). Forward-Port-Of: odoo/odoo#191149 Forward-Port-Of: odoo/odoo#190963
### Steps to reproduce: - Install "l10n_ch" and switch to "CH company" - Create a new invoice with a Swiss partner and confirm - Click "Send & Print" and select "Send by Post", confirm - Go in Setting > technical > Email > Snailmail Letters and find your invoice - Download the PDF document - The QR code and several other information are missing ### Cause: The snailmail module is setting specific paper format (base.paperformat_euro) when generating the PDF. https://github.com/odoo/o
Original PR description
### Steps to reproduce: - Install "l10n_ch" and switch to "CH company" - Create a new invoice with a Swiss partner and confirm - Click "Send & Print" and select "Send by Post", confirm - Go in Setting > technical > Email > Snailmail Letters and find your invoice - Download the PDF document - The QR code and several other information are missing ### Cause: The snailmail module is setting specific paper format (base.paperformat_euro) when generating the PDF. https://github.com/odoo/odoo/blob/ce92dedea0fd3cdc73da6366c20b8052bb04f7e9/addons/snailmail/models/ir_actions_report.py#L17-L24 But the Swiss reports have their own formats to display the QR code correctly. So the generated PDF have its QR code on another page that is lost when merging the PDF for the header and the one with the QR code. ### Solution: Force the paper format for the two "IrActionReports" responsible for the page with the Qr-code. opw-4399150 Forward-Port-Of: odoo/odoo#190881
When using MultiRecordSelector with domain, the domain will not automatically apply to SelectCreateDialog. See odoo/enterprise#68484 closes odoo/odoo#176850 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#191125
Original PR description
When using MultiRecordSelector with domain, the domain will not automatically apply to SelectCreateDialog. See odoo/enterprise#68484 closes odoo/odoo#176850 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#191125
We have a constraint enforcing the presence of a zip code on both the sender and the receiver of the invoice but we can't trace the origin of this constraint. It seems to not exists anymore in the doc or the schematrons. We therefore remove it as it cause unnecessary frictions when invoicing. task-no (feedback from our prod + tsb) Forward-Port-Of: odoo/odoo#191129
Original PR description
We have a constraint enforcing the presence of a zip code on both the sender and the receiver of the invoice but we can't trace the origin of this constraint. It seems to not exists anymore in the doc or the schematrons. We therefore remove it as it cause unnecessary frictions when invoicing. task-no (feedback from our prod + tsb) Forward-Port-Of: odoo/odoo#191129
Because of odoo/odoo@dd1dfbc1f2075c8f4b414fc6fe5287f6e0bf76c3 the test suite crashed when studio was not installed because the route has_group was called with no virtual endpoint. After this commit, this is fixed runbot-error-110790 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#191299
Original PR description
Because of odoo/odoo@dd1dfbc1f2075c8f4b414fc6fe5287f6e0bf76c3 the test suite crashed when studio was not installed because the route has_group was called with no virtual endpoint. After this commit, this is fixed runbot-error-110790 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#191299
The aim of this commit is updating the COA and the account groups for the new legislation in France. task-4040854 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190908 Forward-Port-Of: odoo/odoo#190065
Original PR description
The aim of this commit is updating the COA and the account groups for the new legislation in France. task-4040854 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190908 Forward-Port-Of: odoo/odoo#190065
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#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#188634
**Current behavior before PR:** The `probability` field, defined as a float, had values in demo data assigned as strings. This caused errors during domain evaluation. **Desired behavior after PR is merged:** This update ensures the `probability` field in demo data uses values compatible with its float type. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191098
Original PR description
**Current behavior before PR:** The `probability` field, defined as a float, had values in demo data assigned as strings. This caused errors during domain evaluation. **Desired behavior after PR is merged:** This update ensures the `probability` field in demo data uses values compatible with its float type. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191098
33 changes
New functionality added to Odoo
Businesses can now include WhatsApp messages as part of customer payment follow-up levels and manual reminders. This gives teams another direct communication channel for overdue invoices, while also improving WhatsApp template links so they correctly point back to the company database.
Original PR description
Added the option to send WhatsApp message to make follow-up. task-4241442
Enhancements to existing features
Intrastat reports can now include services as well as goods, helping businesses meet service declaration requirements such as Belgian F01DGS and F02CMS. Users can filter reports by goods or services, assign service codes on products, and export the new service reporting formats where applicable.
Original PR description
Currently, the Intrastat report is restricted to products whose product type is different than services. Though, statistics report can also be required on Services, such as Declarations F01DGS & F02CMS (Manual : https://www.nbb.be/doc/dq/e_pdf_bb/f01dgs-f02cms_manual_en.pdf) This commit intend to improve the Intrastat report to also include services. Since commodities and services share a lot of similarities, we didn't create a new report but rather added a filter inside the current Intrastat report. It also adds a new column for the service categories and all the service codes. On the product, the string of the commodity code changes if the product is a commodity or a service (and become Service Code in that case) Initial PR : https://github.com/odoo/enterprise/pull/54942 task-2835786
This update makes company information consistently available across several business apps, helping features behave correctly in multi-company environments. It also streamlines how company switching information is handled by relying on the existing company service instead of session data.
Original PR description
This commit adapts the code to have companies always in the config. This with respect to a change in community (https://github.com/odoo/odoo/pull/190218)
The Mexican electronic invoicing flow now keeps the payment policy as a saved choice on customers, sales orders, invoices, and proforma documents. This improves consistency for reinvoicing, subscriptions, and related sales flows, reducing manual corrections and document errors.
Original PR description
Previously, the payment policy was a computed non-stored field. This causes some issues when reinvoicing, on subscriptions and other specific flows such as making Proforma. To fix these problems we: 1. Make the payment policy a stored selectable field. 2. Add the field on sale order (populates invoices). 3. Add the field on partner (populates sale order/invoices). 4. Add filters. 5. Add the field in Proforma. task-4245032
The Knowledge article index has been visually updated to match the style of embedded clipboard elements. This creates a more consistent and polished reading experience for users working with Knowledge articles.
Original PR description
This commit updates the look of the article index in a knowledge article. This embedded component now uses the same style as the embedded clipboard. Task-4314480
Gantt popovers can now reuse familiar Kanban card layouts, making schedule details clearer and more consistent across apps. This improves the user experience in planning-style views while preserving existing custom popover content when configured.
Original PR description
A new attribute "kanban_view_id" is introduced. If set, the kanban card template of the specified kanban view is used to render the body of the gantt popovers. If not set, the kanban view (if any) in the gantt view config (e.g. the kanban view in the curent action) will be used. If no kanban view is found, a default view based on display_name, date_start, and date_stop (from the gantt arch) will be generated and used. Note that this happens only if no content for the popover body has been specified in a template "gantt-popover" in the gantt arch. In that case the popover body is constructed using that template. Kanban view used or not, customization of the popover footer can still be done via the mechanism introduced in https://github.com/odoo/enterprise/pull/54292. Note that we cannot use the footer tag in the kanban card to do that since it has a different usage. Task ID: 4350860
The partner/contact form has been adjusted to match recent accounting layout changes and improve related actions such as customer statements and follow-up contact visuals. It also removes use of partner titles, helping simplify contact data management across affected business flows.
Original PR description
This commit will do multiple things: - Changing the image of the followup contact form - Adapting xpath since accounting entries group has been removed in the community pr - Adapting xpath since banks group has become a general group - Customer Statement stat button change - Removing for res.partner.title and all the use of the model task: 4306429
The Sign module interface has been refined to make everyday actions clearer and faster for users. Settings labels are more consistent, the template view is easier to use, selection options can be edited directly, and demo data helps users understand selection fields more easily.
Original PR description
### Purpose This PR improves the usability and user experience of the Sign module by addressing inconsistencies, refining UI elements, and adding functionality for better interaction with selection…
### Purpose This PR improves the usability and user experience of the Sign module by addressing inconsistencies, refining UI elements, and adding functionality for better interaction with selection fields. --- ### Before this PR - Labels in the Settings section had inconsistent punctuation. - The Validate button name did not seem meaningful name in the items popover - The Kanban view lacked refinement in terms of visuals and usability. - The selection sign item popover used a basic Many2Many field for tag selection, with limited customization and no option to edit existing tags. - Demo data for selection fields were absent. --- ### After this PR - All labels in the Settings have been updated to remove '.' for consistency. - The Validate button in the item popover has been renamed to save. - The kanban view has been visually and functionally improved to enhance usability. - The selection popover now uses a custom Many2ManyTagsField that allows editing tags directly in the UI. Users can switch to edit mode via an Edit button, make changes, and save or undo them seamlessly. Updates are synchronized with the backend in real time. - Demo data has been added for the selection field, providing ease of use. --- task- 3911221
This update removes an outdated internal coding pattern across several Odoo Enterprise apps. It should not change day-to-day user workflows, but it helps keep the platform easier to maintain and evolve over time.
Original PR description
odoo/odoo#182709 task-4155860
Field service stock actions now open in a Kanban-style view on small devices instead of a list. This makes task selection easier and more practical for mobile users working in the field.
Original PR description
Currently, the list view opens on small devices, which is not ideal. In this commit, we have added a mobile view mode in the action. Now, when a user picks an action, the default Kanban view will open instead of the list view. task-4255387
Salespeople can now use route planning directly from the CRM map view when organizing customer visits. This makes it easier to plan efficient visit schedules and reduce time spent arranging travel between leads.
Original PR description
Allows salesperson to use the routing feature when planning their visits. Task-4247829
Budget items now limit account choices to accounts used in Profit and Loss reporting. This helps keep financial budgets aligned with the reports they depend on and reduces the chance of selecting inappropriate accounts.
Original PR description
This commit adds a domain to the `account_id` field from the account report budget item object (`account.report.budget.item`). The allowed accounts to be set on this field must be those from the Profit & Loss report, since the financial budget feature relies on it. task-id: 4314709
The Sign app can now auto-fill signing fields using data from any linked business record, not only the current contact. This reduces manual entry and makes signing templates more useful across different business processes.
Original PR description
Before this commit, the auto-complete feature only worked on the current partner. This commit ensure auto-completion is possible with any kind of model. If the sign.request is linked to that model, the field will auto complete his value. taskid: 4267478
Subscription reporting now records an effective date on each log entry so revenue calculations can distinguish invoiced activity from future or pending changes. This helps business teams filter out subscription changes that have not been invoiced yet, improving the accuracy of MRR reporting.
Original PR description
Before this commit, all logs were used to compute MRR. As a result it was not possible to filter out logs not invoiced yet. taskid: 4391586
Spreadsheet users can now create geographic map charts to visualize values by country and sort pivot data directly from any pivot column. Auto-complete suggestions for pivots and lists are also clearer because they show names alongside IDs, making spreadsheet work faster and easier to understand.
Original PR description
See https://github.com/odoo/odoo/pull/191109
This update removes an outdated testing mock used by the Documents app as part of ongoing code modernization. It has no expected impact on day-to-day users, but helps keep the product easier to maintain and improve over time.
Original PR description
This commit removes the `res.users` mock model patch, as it depends on the legacy mail mock model. The change is part of ongoing efforts to deprecate outdated mock models and modernize the codebase. Part of Task-3818666 Related Com PR: https://github.com/odoo/odoo/pull/191140
Code cleanup and technical improvements
This update reorganizes internal point-of-sale IoT and preparation display code to make it easier for developers to read and maintain. It should not change day-to-day user workflows, but it helps reduce future maintenance effort and risk.
Original PR description
Try to use models instead of services when possible. This will make the code more readable and easier to maintain.
Miscellaneous changes
In ES localization Tax Report 349 is an informative tax return report for intra-Community operations. Currently, the tax report will show amounts from credit notes in the invoices section, instead of the refunds section Steps to reproduce: - Have an ES Company setup - Create and confirm credit note with: - EU partner - Type for mod 349: A - Go to Accounting > Reporting > Tax Report - Select Report: Tax Report (Mod 349) (ES) Issue: Credit Notes appear in the invoices section inst
Original PR description
In ES localization Tax Report 349 is an informative tax return report for intra-Community operations. Currently, the tax report will show amounts from credit notes in the invoices section, instead of the refunds section Steps to reproduce: - Have an ES Company setup - Create and confirm credit note with: - EU partner - Type for mod 349: A - Go to Accounting > Reporting > Tax Report - Select Report: Tax Report (Mod 349) (ES) Issue: Credit Notes appear in the invoices section instead of the refunds section opw-4358330 Forward-Port-Of: odoo/enterprise#75808 Forward-Port-Of: odoo/enterprise#75266
After this commit : ==== - Replace manual calculation with predefined method to enhance reliability and maintainability. task-4405397 Forward-Port-Of: odoo/enterprise#75620
Original PR description
After this commit : ==== - Replace manual calculation with predefined method to enhance reliability and maintainability. task-4405397 Forward-Port-Of: odoo/enterprise#75620
task-4403259 community: https://github.com/odoo/odoo/pull/190509 Forward-Port-Of: odoo/enterprise#75675
Original PR description
task-4403259 community: https://github.com/odoo/odoo/pull/190509 Forward-Port-Of: odoo/enterprise#75675
There is no need for two information panels, it causes redundancy at best or confusion when looking for a particular info. The purpose of this specification is to refactor this for * better clarity: one panel to show everything relevant * better UX: no need to open a dialog to view the details Technical challenges came from the needs to 1. Support this in stable => workaround to include data for additional fields even if the view is not updated. 2. Support the container folder (whe
Original PR description
There is no need for two information panels, it causes redundancy at best or confusion when looking for a particular info. The purpose of this specification is to refactor this for * better clarity: one panel to show everything relevant * better UX: no need to open a dialog to view the details Technical challenges came from the needs to 1. Support this in stable => workaround to include data for additional fields even if the view is not updated. 2. Support the container folder (when no record is selected), which is not a record loaded by the kanban/list view. See other commits for included fixes Task-4266789 Forward-Port-Of: odoo/enterprise#75696
Before this commit, other plans were not computed according to dates. As a result, it ws difficult to see when two plans were conflicting for one user. Forward-Port-Of: odoo/enterprise#75838
Original PR description
Before this commit, other plans were not computed according to dates. As a result, it ws difficult to see when two plans were conflicting for one user. Forward-Port-Of: odoo/enterprise#75838
`quality_iot` listens continuously for measure updates. It also provides a "take measure" button for devices that don't send automatically their measure. On caliper devices, measures are sent continuously, so methods to read value once were not implemented, resulting in a error if we tried to call them. To avoid displaying an error popup, we implemented those actions on caliper drivers. opw-4332476 Forward-Port-Of: odoo/enterprise#75847
Original PR description
`quality_iot` listens continuously for measure updates. It also provides a "take measure" button for devices that don't send automatically their measure. On caliper devices, measures are sent continuously, so methods to read value once were not implemented, resulting in a error if we tried to call them. To avoid displaying an error popup, we implemented those actions on caliper drivers. opw-4332476 Forward-Port-Of: odoo/enterprise#75847
The format of the payment report was iso20022 but it should be sepa_ct. Task: 4392276 Forward-Port-Of: odoo/enterprise#75442
Original PR description
The format of the payment report was iso20022 but it should be sepa_ct. Task: 4392276 Forward-Port-Of: odoo/enterprise#75442
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those fields values and therefore the XML could not be processed since it was expected an integer and it got a boolean. After this fix, if a country does not have VAT information, the field will be process as 0 and the XML will be created, so the invoice will be confirmed. We already had this approach in t
Original PR description
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those…
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those fields values and therefore the XML could not be processed since it was expected an integer and it got a boolean. After this fix, if a country does not have VAT information, the field will be process as 0 and the XML will be created, so the invoice will be confirmed. We already had this approach in the past, inside the method wsfex_get_cae_request, but it was lost in a refactor made on the module. So what I did was just to recover that approach. https://github.com/odoo/enterprise/commit/33ea78a5bb34e657c16bcbb704eeb71897ae642d#diff-2459e118c605cf039bb94c62561285ad753b6a27c571f10a25547ee9b01aa318L741. Steps to reproduce the error: - Create a test contact based on Uruguay. - Go to Contacts/Configuration/Localization/Countries and delete all VAT information from Uruguay (Natural Person VAT, Legal Entity VAT, Other VAT) . - Create an invoice for the test client created before, add a product and all needed fields and try to confirm the invoice. - An error will pop up, saying that the server was unable to read request because of an error in the XML document. Forward-Port-Of: odoo/enterprise#75501
PoS was displaying a dependency error when trying open the printer selection popup to print a daily sale report. opw-4171163 Forward-Port-Of: odoo/enterprise#75809
Original PR description
PoS was displaying a dependency error when trying open the printer selection popup to print a daily sale report. opw-4171163 Forward-Port-Of: odoo/enterprise#75809
## Issue: When we create a batch from a payment by selecting it and clicking on "Create Batch", even if the payment is already in a batch or validated, it is possible to add it to a new batch, which can lead to issues when validating the batch. ## Steps to reproduce: - Create a payment (posted but not sent) SEPA transfer. - Select this payment and create batch payment. - validate the batch - Open payments list again, and select that same payment, then create a batch payment from the se
Original PR description
## Issue: When we create a batch from a payment by selecting it and clicking on "Create Batch", even if the payment is already in a batch or validated, it is possible to add it to a new batch, which…
## Issue: When we create a batch from a payment by selecting it and clicking on "Create Batch", even if the payment is already in a batch or validated, it is possible to add it to a new batch, which can lead to issues when validating the batch. ## Steps to reproduce: - Create a payment (posted but not sent) SEPA transfer. - Select this payment and create batch payment. - validate the batch - Open payments list again, and select that same payment, then create a batch payment from the selection. - a new batch payment will be created. - If you open the batch payments list you'll notice 2 batches: 1. the original batch now has no payments inside it so the "re-generate Export File" button won't show up. 2. the second batch now contains the payment, but we can't re-generate the export file because it shows an error: The batch could not be validated, Some payments have already been sent. Solution: - before creating a batch with payments or adding payments to a batch we check if the payments we are adding are already in a batch. - also in the constrain method `_check_payments_constrains` we added a check to validate wether the payment we're adding is already validated. OPW-3976563 Forward-Port-Of: odoo/enterprise#74984 Forward-Port-Of: odoo/enterprise#67315
Giving l10n_ae_annual_leave_days_taken and l10n_ae_annual_leave_days_total a group value, as it is not supposed to be public. [link to build errors](https://runbot.odoo.com/web#id=97976&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) Forward-Port-Of: odoo/enterprise#75122
Original PR description
Giving l10n_ae_annual_leave_days_taken and l10n_ae_annual_leave_days_total a group value, as it is not supposed to be public. [link to build errors](https://runbot.odoo.com/web#id=97976&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) Forward-Port-Of: odoo/enterprise#75122
Before this commit, the following traceback could be encountered when changing the curency of a confirmed order (after removing the constraint in sale): ``` File "/home/arj/PycharmProjects/worktree/18.0/enterprise/sale_subscription/models/sale_order_log.py", line 95, in _create_log return self._create_currency_transfer_log(order, initial_values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/arj/PycharmProjects/worktree/18.0/enterprise/sale_subscrip
Original PR description
Before this commit, the following traceback could be encountered when changing the curency of a confirmed order (after removing the constraint in sale):
```
File "/home/arj/PycharmProjects/worktree/18.0/enterprise/sale_subscription/models/sale_order_log.py", line 95, in _create_log
return self._create_currency_transfer_log(order, initial_values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/arj/PycharmProjects/worktree/18.0/enterprise/sale_subscription/models/sale_order_log.py", line 183, in _create_currency_transfer_log
old_mrr_new_currency = initial_values['currency_id'].currency_id._convert(old_mrr,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'res.currency' object has no attribute 'currency_id'
```
Forward-Port-Of: odoo/enterprise#75885Forward-Port-Of: odoo/enterprise#75570
Original PR description
Forward-Port-Of: odoo/enterprise#75570
Users only need the computation of the document type field for customer invoices. As a result, this fix restricts the assignment of document types to customer invoices, while preserving the standard functionality for all other document types. task-4299210 This is a fix for #73945 Forward-Port-Of: odoo/enterprise#75335
Original PR description
Users only need the computation of the document type field for customer invoices. As a result, this fix restricts the assignment of document types to customer invoices, while preserving the standard functionality for all other document types. task-4299210 This is a fix for #73945 Forward-Port-Of: odoo/enterprise#75335
Currently a traceback is occurring when there is no working time (calendar_id) in resource, while creating a planning slot. To reproduce this issue: 1) Install planning 2) Open any planning slot in Gantt view and redirect to resource from the slot 3) Remove the Working Time of that resource 4) Now try to create a new planning slot for that resource from Gantt view Error:- ``` ValueError: Expected singleton: resource.calendar() ``` Here, `calendar_id` is not required in the r
Original PR description
Currently a traceback is occurring when there is no working time (calendar_id) in resource, while creating a planning slot. To reproduce this issue: 1) Install planning 2) Open any planning slot in…
Currently a traceback is occurring when there is no working time (calendar_id) in resource, while creating a planning slot. To reproduce this issue: 1) Install planning 2) Open any planning slot in Gantt view and redirect to resource from the slot 3) Remove the Working Time of that resource 4) Now try to create a new planning slot for that resource from Gantt view Error:- ``` ValueError: Expected singleton: resource.calendar() ``` Here, `calendar_id` is not required in the resource. So, when the user removes the calendar_id from the resource and tries to create a new planning slot, it leads to the above traceback. In the below line, we try to get calendar_d from the resource if it is available. https://github.com/odoo/enterprise/blob/7847510dc6ad8dec73f01470714aacb0c3510769/planning/models/planning.py#L611-L612 We can resolve this issue by taking calendar_id from the company as it is required. If it fails to get the value from the resource. sentry-6150920391 Forward-Port-Of: odoo/enterprise#75713
Description of the issue this commit addresses: The community commit linked to this one changed the rates of luxembourgian taxes used in the oss fiscal positions. Because of that, some tests are failing. --- Desired behavior after this commit is merged: Said tests are not failing anymore. --- Community PR: https://github.com/odoo/odoo/pull/189444 task-[4369658](https://www.odoo.com/odoo/project/967/tasks/4369658) Forward-Port-Of: odoo/enterprise#75799 Forward-Port-Of: odoo/en
Original PR description
Description of the issue this commit addresses: The community commit linked to this one changed the rates of luxembourgian taxes used in the oss fiscal positions. Because of that, some tests are failing. --- Desired behavior after this commit is merged: Said tests are not failing anymore. --- Community PR: https://github.com/odoo/odoo/pull/189444 task-[4369658](https://www.odoo.com/odoo/project/967/tasks/4369658) Forward-Port-Of: odoo/enterprise#75799 Forward-Port-Of: odoo/enterprise#75650
18 changes
New functionality added to Odoo
Adds Ecuador electronic delivery guide support for stock operations, including XML generation, authorization workflow, reporting, email templates, and related validation. This helps businesses comply with local delivery documentation requirements and manage delivery guide errors or cancellations directly in Odoo.
Original PR description
I refactored `_l10n_ec_send_xml_to_authorize`. This is just an idea to illustrate https://github.com/odoo/enterprise/pull/68468#discussion_r1852085123.
Enhancements to existing features
The vehicle model view now places the engine and salary information blocks in a more suitable order. This makes the Belgian payroll fleet screen easier to read and helps users find related vehicle details more naturally.
Original PR description
changing position of engine block and salary block in vehicle models view task-4351672
Sales commission reports can now be filtered by manager, making it easier for teams to review performance and commissions for specific reporting lines. This helps managers and business users focus on the relevant people without manually sorting broader reports.
The sales commission area now handles edge cases more reliably, including preventing errors when calculations would divide by zero. The user interface was also refined, making commission reporting and plan information easier to review.
Original PR description
Fix division by 0 and some UI
Resolved issues and error corrections
This fix updates internal automated checks so they first select the correct company folder before looking for test documents. It helps keep document spreadsheet workflows stable after pagination changes limited which folders appear by default.
Original PR description
Changes from the PR(ENT)https://github.com/odoo/enterprise/pull/73443 break some tours in documents_spreadsheet (create empty sheet, clone xlsx, create template and save multipage). They all fail to find the Test folder's Kanban record in the Kanban view. PR#73443 limits the number of records per page. Tours open 'Documents' on 'Home' and 'Test folder' belongs to 'COMPANY'. When there is a large number of records, 'Test folder' is not displayed in the Kanban view. So one adds a prior step to select COMPANY before checking for the Test folder's Kanban record. task-4394473 see https://github.com/odoo/enterprise/pull/73443 see runbot error 109604
Point of Sale orders are no longer incorrectly removed when the Urban Piper module is installed but not configured. This helps businesses keep order data available in the POS cache even if the integration is not actively set up.
Original PR description
When the pos_urban_piper module is installed but not configured in the PoS settings, the orders were being filtered out incorrectly. opw-4423378
Online food delivery order calculations now use Odoo's standard calculation method instead of custom manual logic. This reduces the risk of incorrect totals for UrbanPiper, Swiggy, and Zomato orders and makes future maintenance easier.
Original PR description
After this commit : ==== - Replace manual calculation with predefined method to enhance reliability and maintainability. task-4405397
Miscellaneous changes
Steps to reproduce: - In the rental module, set a product as storable and uncheck 'Out-of-Stock: Continue Selling.' - Create a discount program for product purchase with 'Get Free Product' reward. - Add enough rental products to an order on the website to trigger the discount. Issue: - Traceback error: TypeError: < not supported between instances of datetime.datetime and bool. Cause: - The reward_line has reservation_begin = False, which results in a dictionary containing a False v
Original PR description
Steps to reproduce: - In the rental module, set a product as storable and uncheck 'Out-of-Stock: Continue Selling.' - Create a discount program for product purchase with 'Get Free Product' reward. - Add enough rental products to an order on the website to trigger the discount. Issue: - Traceback error: TypeError: < not supported between instances of datetime.datetime and bool. Cause: - The reward_line has reservation_begin = False, which results in a dictionary containing a False value alongside other datetime objects. Fix: - Filter the lines to ensure the loop iterates only over rental lines. opw-4360396 Forward-Port-Of: odoo/enterprise#75950 Forward-Port-Of: odoo/enterprise#75894
On a previous commit: https://github.com/odoo/enterprise/commit/8e2957c238e28b8a952c0e354c46e39b1fdd03a6 We changed the condition on the VATNumber node on oss report, but actually it was a mistake and in some cases, this change broke some xml exports on other customer db. But, after more investigation, we decided to remove the fixedEstablishment node from the xml export, as we don't have any use cases where this node is required for now. no task Forward-Port-Of: odoo/enterprise#75964 Forw
Original PR description
On a previous commit: https://github.com/odoo/enterprise/commit/8e2957c238e28b8a952c0e354c46e39b1fdd03a6 We changed the condition on the VATNumber node on oss report, but actually it was a mistake and in some cases, this change broke some xml exports on other customer db. But, after more investigation, we decided to remove the fixedEstablishment node from the xml export, as we don't have any use cases where this node is required for now. no task Forward-Port-Of: odoo/enterprise#75964 Forward-Port-Of: odoo/enterprise#75705
There are new requirements for the ph check format: - No '*' allowed anymore - In amount in words: • no thousand comma separator • no 'And' between hundreds and tens https://www.metrobank.com.ph/articles/new-check-format-advisory This commit fixes also an issue with the cents format in the amount in words ('X/100' instead of 'X0/100') opw-4376550 Forward-Port-Of: odoo/enterprise#75647
Original PR description
There are new requirements for the ph check format:
- No '*' allowed anymore
- In amount in words:
• no thousand comma separator
• no 'And' between hundreds and tens
https://www.metrobank.com.ph/articles/new-check-format-advisory
This commit fixes also an issue with the cents format in the amount in
words ('X/100' instead of 'X0/100')
opw-4376550
Forward-Port-Of: odoo/enterprise#75647Due to a typo in the directory name the warnings.xml file got duplicated and one of them is now unnecesary. linked pr: #67187 Forward-Port-Of: odoo/enterprise#75833
Original PR description
Due to a typo in the directory name the warnings.xml file got duplicated and one of them is now unnecesary. linked pr: #67187 Forward-Port-Of: odoo/enterprise#75833
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4) From the "Recurring Prices" tab, create 2 different pricing rules, for different variants (like one for size S, and one for size M) 5) From the "Sales" tab, set an "Optional Product" 6) On the website's product page, keep the default variant and click "Add to cart", the modal "Configure your p
Original PR description
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4)…
Steps to reproduce the issue: 1) Open the create new product page 2) From the "General Information" tab, set the "Product Type" to "Goods", and set a "Sales Price" 3) Check the "Subscriptions" 4) From the "Recurring Prices" tab, create 2 different pricing rules, for different variants (like one for size S, and one for size M) 5) From the "Sales" tab, set an "Optional Product" 6) On the website's product page, keep the default variant and click "Add to cart", the modal "Configure your product" will open 7) Close the modal by clicking "X" or "Esc" 8) Choose another variant that results in a different price (from the prices configured in step 4) 9) Click "Add to cart" again -> Notice that the product's price is no longer the expected recurring price, but it's the "Sales Price" configured in step 2. Reason: When opening the modal, we query the `data-subscription-plan-id` attribute from the DOM using JQuery's `data` method. However, this latter is not meant to querying data attributes from DOM. Its usage is to actually store data associated with the JQuery objects it's associated with. It worked the first time when we opened the modal, as the first call for it will try to initialize the internal store, if empty, with the value of the appropriate `data-*` attribute from DOM, but any subsequent updates to the underlying `data-*` attribute won't be seen by a new call to this function. Fix: Use `attr` instead of `data`, as the former reads directly from the DOM, every time it's invoked. Refs: https://api.jquery.com/data/ https://api.jquery.com/data/#data-html5 https://api.jquery.com/attr/ opw-4369487 Forward-Port-Of: odoo/enterprise#75896
Versions: ---------- - 17.0 Steps to Reproduce ------------ - Create a product and add the template of the field service project. - Create a sale order. - Open the project updates. - We do not see the SO and SOL buttons. Issue ------------ - SO and SOL smart button was removed on project updates in this commit https://github.com/odoo/enterprise/commit/7a82c52fb007ad0f827dd5d124f80d6195bff919 Fix ---------- - We are adding the SO and SOL buttons back. - So the user can at
Original PR description
Versions: ---------- - 17.0 Steps to Reproduce ------------ - Create a product and add the template of the field service project. - Create a sale order. - Open the project updates. - We do not see the SO and SOL buttons. Issue ------------ - SO and SOL smart button was removed on project updates in this commit https://github.com/odoo/enterprise/commit/7a82c52fb007ad0f827dd5d124f80d6195bff919 Fix ---------- - We are adding the SO and SOL buttons back. - So the user can at least see the linked data. task-3887972 Forward-Port-Of: odoo/enterprise#75587 Forward-Port-Of: odoo/enterprise#67793
In ES localization Tax Report 349 is an informative tax return report for intra-Community operations. Currently, the tax report will show amounts from credit notes in the invoices section, instead of the refunds section Steps to reproduce: - Have an ES Company setup - Create and confirm credit note with: - EU partner - Type for mod 349: A - Go to Accounting > Reporting > Tax Report - Select Report: Tax Report (Mod 349) (ES) Issue: Credit Notes appear in the invoices section inst
Original PR description
In ES localization Tax Report 349 is an informative tax return report for intra-Community operations. Currently, the tax report will show amounts from credit notes in the invoices section, instead of the refunds section Steps to reproduce: - Have an ES Company setup - Create and confirm credit note with: - EU partner - Type for mod 349: A - Go to Accounting > Reporting > Tax Report - Select Report: Tax Report (Mod 349) (ES) Issue: Credit Notes appear in the invoices section instead of the refunds section opw-4358330 Forward-Port-Of: odoo/enterprise#75808 Forward-Port-Of: odoo/enterprise#75266
Some were out of date See community PR for details about email template changes
Original PR description
Some were out of date See community PR for details about email template changes
`quality_iot` listens continuously for measure updates. It also provides a "take measure" button for devices that don't send automatically their measure. On caliper devices, measures are sent continuously, so methods to read value once were not implemented, resulting in a error if we tried to call them. To avoid displaying an error popup, we implemented those actions on caliper drivers. opw-4332476 Forward-Port-Of: odoo/enterprise#75847
Original PR description
`quality_iot` listens continuously for measure updates. It also provides a "take measure" button for devices that don't send automatically their measure. On caliper devices, measures are sent continuously, so methods to read value once were not implemented, resulting in a error if we tried to call them. To avoid displaying an error popup, we implemented those actions on caliper drivers. opw-4332476 Forward-Port-Of: odoo/enterprise#75847
PoS was displaying a dependency error when trying open the printer selection popup to print a daily sale report. opw-4171163 Forward-Port-Of: odoo/enterprise#75809
Original PR description
PoS was displaying a dependency error when trying open the printer selection popup to print a daily sale report. opw-4171163 Forward-Port-Of: odoo/enterprise#75809
This commit resolves an issue where users encounter a serialization error when attempting to retrieve accounts. The currency_id is now correctly passed and managed to prevent the "currency object is not serializable" error. no task id Forward-Port-Of: odoo/enterprise#75908
Original PR description
This commit resolves an issue where users encounter a serialization error when attempting to retrieve accounts. The currency_id is now correctly passed and managed to prevent the "currency object is not serializable" error. no task id Forward-Port-Of: odoo/enterprise#75908
9 changes
Enhancements to existing features
This update enhances the speed of quality checks within the MRP system. By adding an index to a key database field, the system now responds more quickly when processing stock movements, leading to faster operations and improved efficiency.
Original PR description
Add missing index on move_line_id to speedup checking the check_ids of a stock_move_line. See community PR for more info https://github.com/odoo/odoo/pull/190479
This update adapts the IMB (Intermediate Management Balances) reports in the French language version of Odoo to align with the company's new Chart of Accounts (COA). This ensures accurate and consistent reporting for financial analysis and decision-making within the French market.
Original PR description
The aim of this commit is adapting the IMB (Soldes Intermédiaires de Gestion) to the new COA. task-4040854 Forward-Port-Of: odoo/enterprise#75373
Resolved issues and error corrections
This update fixes a minor issue in the Approvals workflow tour. The previous method of selecting status options relied on an outdated attribute, which is now removed. The fix ensures the tour correctly identifies and interacts with the status selection buttons, providing a smoother user experience.
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#72063
This update resolves an issue where the "Request Cancel" button on payments for Mexican companies (l10n_mx) was not working correctly. The fix ensures the correct cancellation process is initiated, allowing users to properly request the cancellation of CFDI payments as required by Mexican regulations. This improves compliance and reduces potential errors.
Original PR description
### Steps to reproduce:
- Install "l10n_mx" and switch to a Mexican company
- Create an invoice with a Mexican partner and confirm
- Create a Payment
- In the invoice form view, go to the "CFDI" page
- Click "Update CFDI"
- The payment appears, click on "Show"
- The button "Request Cancel" does nothing
### Cause:
the method `button_request_cancel` on move is called from the payment model but does not return anything:
```
def button_request_cancel(self):
self.move_id.button_request_cancel()
```
But the `button_request_cancel` from `l10n_mx_edi` is returning a wizard that is never caught.
### Solution:
When clicking the "Request cancel" button, the method `action_request_cancel` is called instead of `action_cancel` which will dispatch the request depending on the type of move being cancelled.
opw-4332483This update resolves an issue preventing non-administrator users from accessing attachments linked to Global Invoices in the Mexican CFDI localization. The fix ensures the correct link between the Global Invoice document and its attachment, allowing authorized users to view the necessary invoice information. This improves usability for users generating and managing Mexican CFDI invoices.
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
This update resolves a bug where the OdooEditor was incorrectly removing spans without attributes, disrupting translation matching. By preventing this removal, the system now correctly uses span keys for accurate translations, ensuring consistent localization across the platform. This improves the quality and reliability of reports for international users.
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 [++]
This update corrects a recent change that was causing issues with XML exports for customer data. We've removed a redundant data field ('FixedEstablishment') from the reports, as it's no longer needed. This ensures consistent and accurate report generation.
Original PR description
On a previous commit: https://github.com/odoo/enterprise/commit/8e2957c238e28b8a952c0e354c46e39b1fdd03a6 We changed the condition on the VATNumber node on oss report, but actually it was a mistake and in some cases, this change broke some xml exports on other customer db. But, after more investigation, we decided to remove the fixedEstablishment node from the xml export, as we don't have any use cases where this node is required for now. no task Forward-Port-Of: odoo/enterprise#75705
This update resolves an issue where product prices in the l10n_ke_edi_oscu module were not including the correct decimal precision, leading to potential errors in VAT reporting for Kenyan businesses. The fix ensures accurate price calculations, improving the reliability of financial data within Odoo Enterprise. This impacts the accuracy of sales and inventory reporting related to products subject to Kenyan VAT.
A bug causing errors when applying discounts to rental orders has been resolved. The fix ensures the system correctly handles rental products and discount programs, preventing a traceback error related to incorrect data types. This improves the reliability of rental order discounts.
Original PR description
Steps to reproduce: - In the rental module, set a product as storable and uncheck 'Out-of-Stock: Continue Selling.' - Create a discount program for product purchase with 'Get Free Product' reward. - Add enough rental products to an order on the website to trigger the discount. Issue: - Traceback error: TypeError: < not supported between instances of datetime.datetime and bool. Cause: - The reward_line has reservation_begin = False, which results in a dictionary containing a False value alongside other datetime objects. Fix: - Filter the lines to ensure the loop iterates only over rental lines. opw-4360396