Daily updates from Odoo
Friday, January 23, 2026
33 changes · saas-18.3
Resolved issues and error corrections
This update resolves an issue where extra invoicing information related to electronic delivery (EDI) was hidden on the ecommerce platform. The fix ensures that this important data is now visible, streamlining the invoicing process for users. This improves compliance and accuracy in order processing.
Original PR description
The extra invoicing info step for EDI was unpublished and hidden on ecommerce. This commit fixes that. Task-5493138 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a bug that prevented the dashboard from accurately counting high-priority maintenance requests. The fix ensures that critical maintenance tasks are correctly identified and displayed, improving visibility and helping users prioritize maintenance effectively. This improves the reliability of the maintenance dashboard.
Original PR description
Issue before this commit: ========================= The high-priority maintenance request count (todo_request_count_high_priority) was not calculated correctly. Steps to Reproduce:…
Issue before this commit: ========================= The high-priority maintenance request count (todo_request_count_high_priority) was not calculated correctly. Steps to Reproduce: ========================= - Install the maintenance module. - Create a maintenance request and set the Priority to High (3-starred) in the form view. - Open the dashboard. - Observe that the high-priority request count is not displayed. - The count always remains 0, even when high-priority requests exist. Cause of the issue: ========================= In this [PR](https://github.com/odoo/odoo/pull/94866), the logic was mistakenly changed. The priority field is defined as a Selection field, but while computing the count, the comparison was done against an integer(3, not '3') instead of the actual string value. Since the stored value is '3' (string), the condition is always evaluated to False, resulting in a count of 0. With This Commit: ========================= Ensure that high-priority maintenance requests are correctly counted and displayed on the dashboard when they exist. This provides better visibility of critical requests and helps users prioritise maintenance work effectively. Forward-Port-Of: odoo/odoo#244987
This update ensures that new partners created during shared sign requests automatically use the signer's name instead of their email address. This provides a more accurate and user-friendly experience when managing signers within the system. Previously, the system defaulted to using email as the partner name, which could lead to confusion.
Original PR description
Version: - saas-18.2 Steps to reproduce: - Create a shared sign request. - Open the shared signing link and complete the signature process. - During signing, a new partner gets created for the signer if not already exists. Before: - When the user signs the shared sign request and a new partner is created, the partner name is not set and email is used as name. After: - Now, when a user signs a shared sign request and a new partner is created, the system automatically sets the partner name using the signer name. task-5776339 Forward-Port-Of: odoo/enterprise#104869
This update optimizes how Odoo sends notifications, specifically addressing performance bottlenecks under heavy server load. By using a faster JSON serialization library (orjson), the system processes notifications more efficiently, reducing delays and improving overall responsiveness. This results in a smoother user experience.
Original PR description
When the gevent server is under high load, the time required to acquire a cursor and fetch notifications increases. This causes notifications to accumulate, leading to larger payloads. Serializing these large payloads using the standard json library becomes a bottleneck. In a gevent environment, this monopolizes the event loop, delaying the processing of other greenlets. This commit introduces optional support for `orjson`. If installed, it is used to significantly speed up JSON encoding, freeing up the event loop. Using `orjson` increases the throughput by ~20% under high load. Forward-Port-Of: odoo/odoo#245072 Forward-Port-Of: odoo/odoo#241601
This update corrects a timezone discrepancy that was preventing invoices sent to ZATCA (Saudi Arabia's tax authority) from being processed correctly. The fix ensures the invoice time is accurately reflected in the Asia/Riyadh timezone, as required by ZATCA regulations. This resolves a potential issue with invoice processing and compliance.
Original PR description
The time information added to the date of the invoice post for ZATCA in iso format which adds +03:00. However ZATCA expects the time to be sent as is in Asia/Riyadh timezone. - Set up a ZATCA company and onboard a journal - To simulate the timezone issue, replace the hour value with 23h in the following line: vals['l10n_sa_confirmation_datetime'] = datetime.combine(move.invoice_date, fields.Datetime.now().time()). (use .replace(hour=23))) - Create, confirm, and send an invoice to ZATCA opw-5373067 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#244761 Forward-Port-Of: odoo/odoo#243961
This update removes a default payment method (`99 – Por Definir`) from invoices, sale orders, and POS orders within the MX localization module. This change corrects a fiscal inconsistency that occurred when using the 'PUE' payment policy, ensuring compliance and accurate reporting.
Original PR description
### Issue: The payment method `99 – Por Definir` was used as the default value for invoices, sale orders, and POS orders This leads to fiscal inconsistencies, especially when invoices use the `PUE`…
### Issue: The payment method `99 – Por Definir` was used as the default value for invoices, sale orders, and POS orders This leads to fiscal inconsistencies, especially when invoices use the `PUE` payment policy, where this payment method is invalid ### Cause: In the `_compute_l10n_mx_edi_payment_method_id` methods, the default value was always set to `Por Definir` ### Fix: After discussion with the PO (MIAL), the chosen solution is to archive the payment method `99 – Por Definir`and remove it as a default value All valid cases should already be handled explicitly, making it clear to the user that something is missing when the data is blank ### Steps to reproduce: - Install `l10n_mx_edi` and switch to the MX company - Create an invoice with today’s invoice date - The payment policy is set to PUE - Before the fix, the payment method is set to `Por Definir` For Sale Order and POS Order tests, it's the default value as soon as you create an order opw-5406038 Forward-Port-Of: odoo/enterprise#105058 Forward-Port-Of: odoo/enterprise#104164
This update fixes a display issue in the appointment calendar for Ukrainian and Polish users. Previously, month names were shown in the genitive case, which was incorrect. The fix ensures month names are displayed in the nominative case, aligning with standard calendar conventions and improving user experience.
Original PR description
In the appointment calendar, the "Month Year" (e.g. January 2026) is displayed at the top of the calendar selector as is standard for calendars. Unfortunately in some languages, the word month word…
In the appointment calendar, the "Month Year" (e.g. January 2026) is displayed at the top of the calendar selector as is standard for calendars. Unfortunately in some languages, the word month word used depends on grammatical situation. Steps to reproduce: - activate Ukrainian (or Polish) language - Preview (i.e. the website view) of any appointment - Change the preview into Ukrainian (or Polish) Expected result: Calendar month at top of calendar is shown in the nominative case: e.g. January 2026 = січень 2026 (in Ukrainian) Actual result: Calendar month is shown in the genitive case (e.g. "of January", as in "the 12th of January): e.g. January 2026 = січня 2026 (in Ukrainian) Fix is to switch from the "MMMM Y" format (i.e. month based on grammar context) to "LLLL Y" (i.e. stand alone month) which will use the correct month case. Ref: https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-month Note that for most languages this won't make a difference since there is usually only 1 way of writing a month. opw-5474705 picture diff (for January 2026): before fix: <img width="1168" height="468" alt="image" src="https://github.com/user-attachments/assets/36754439-e664-40f3-9c5b-7c9c76cd7cca" /> after fix: <img width="1215" height="492" alt="image" src="https://github.com/user-attachments/assets/82f0665e-fe70-4b9f-b1d4-f420b52db38f" /> Forward-Port-Of: odoo/enterprise#104942
This update resolves an issue preventing point-of-sale functionality within the l10n_ar_edi module for Arabic VAT. The fix ensures that sales transactions using the Arabic VAT accounting rules are correctly processed, improving the module's core functionality for businesses operating in Argentina.
Original PR description
Tarea: 62909 Forward-Port-Of: odoo/enterprise#105104
This update ensures that payment rounding is applied accurately when settling customer dues, regardless of the payment method used (cash or bank). Previously, rounding was incorrectly applied to bank payments, leading to inaccurate amounts. This change aligns rounding with the selected payment method, ensuring correct calculations for due settlements.
Original PR description
Steps to reproduce: ------------------- 1. Enable cash rounding, only for cash payment method - Rounding method doesn't matter, I tested with 0.05 nearest rounding 2. In PoS, make an order with the…
Steps to reproduce: ------------------- 1. Enable cash rounding, only for cash payment method - Rounding method doesn't matter, I tested with 0.05 nearest rounding 2. In PoS, make an order with the customer account, such that the total amount is not divisible by 0.05, i.e. when rounded, it's not the same amount. For instance, $5.27. 3. Close the session and reopen it, then select that customer, and click settle due 4. Select the Bank payment method, so a NON-Cash payment method. Notice that the amount is being rounded, even though we have only enable rounding for cash methods. If we take my example of step 2, the amount became $5.25 instead of $5.27. That is understandable when we settle with Cash, however, for Bank (non-cash), we should not round. The fix ------- Now when choosing a payment method to settle due, we also round the amount if needed, in `getTotalDueOfPartner`. Before, we always set the exact amount, regardless of the payment method and the rounding settings. We now also apply rounding on the payment screen based on the selected payment method. Previously, the change was always rounded whenever rounding was enabled, ignoring whether rounding was restricted to cash methods. This behavior made sense for normal orders—where change is typically given in cash—but not when settling a due amount, since the customer can pay using any method. During due settlement, the change represents the amount the customer must pay, so rounding must follow the rules of the chosen payment method. opw-5222985 Forward-Port-Of: odoo/enterprise#104632 Forward-Port-Of: odoo/enterprise#100278
This update fixes a potential issue where small cash differences in Point of Sale reports were incorrectly flagged due to currency rounding errors. The change ensures accurate reporting by accounting for these rounding discrepancies, preventing unintended removal of cash transactions. This improves the reliability of financial reporting within Point of Sale.
Original PR description
Before this commit, when calculating the cash difference in the report, the code did not account for currency rounding. This could lead to situations where a very small cash difference, due to rounding errors, was not recognized as zero, resulting in the unintended removal of cash moves. opw-5489958 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245251
This update addresses a technical issue preventing our system from correctly importing a standard Python library. The fix involves updating the `requests` library to a compatible version and importing the necessary exception class. This ensures continued smooth operation of our integrations with external services.
Original PR description
Installing `requests==2.25.1` and using the following line of code:
from requests.exceptions import JSONDecodeError
It raises the following error:
ImportError: cannot import name 'JSONDecodeError' from 'requests.exceptions' (python3.10/site-packages/requests/exceptions.py)
It was removed from the following commit in the `requests` package:
https://github.com/psf/requests/commit/db575eeedcfdb03bf31285afd3033e301df8b685
This change fixes this error importing the original exception from `json` package
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#245075This update removes a restriction that previously limited the use of journal accounts for reconciliation. Previously, certain accounts couldn't be marked as non-reconcilable if they were used as default debit or credit accounts within a journal. This change provides greater flexibility for accounting teams to manage their accounts effectively.
Original PR description
Previously, a constraint prevented accounts from being non-reconcilable if they were used as default debit/credit accounts involved in journals. This behavior is too restrictive. This commit removes the constraint. task-5254202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244398
This update resolves an issue where internal users without sales permissions would encounter errors when accessing their sales orders through the /my page. The change mirrors a previous fix, ensuring a smoother experience for all users within the Odoo system. This improves overall system stability and usability.
Original PR description
Avoid error when internal user (no sale permissions) see Orders at /my Similar to https://github.com/odoo/odoo/commit/5ebab949a06ec338cc28e912317a74bbfb3fe6ac @Tecnativa TT60025 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245039
This update corrects a technical issue related to the Greek language code in Odoo, ensuring accurate translations and functionality for Greek-speaking users. The team addressed a previously missed configuration, adding the correct language code (`el`) and fixing inconsistencies in translation files, improving the overall user experience for our Greek-speaking customers.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244830 Forward-Port-Of: odoo/odoo#244684
This update corrects a technical issue where newly released modules weren't properly included in our translation files (.weblate.json). This meant these modules were initially untranslatable. The changes add the necessary module definitions to the .weblate.json file, guaranteeing they will be available for translation and localization.
Original PR description
Modules added into stable without being properly added to .weblate.json file = never translatable. Forward-Port-Of: odoo/enterprise#104964 Forward-Port-Of: odoo/enterprise#104890
This update resolves an issue where full invoice payments with staggered payment terms incorrectly generated duplicate cash basis tax entries. The fix adjusts the calculation to accurately reflect the payment percentage, ensuring correct tax amounts are recorded in cash basis accounting. This improves the reliability of financial reporting.
Original PR description
**Steps to reproduce:** 1. Install the `Accounting` module. 2. Enable cash basis taxes in `Accounting → Configuration → Settings → Taxes → Cash Basis`. 3. Create a tax, set `Tax Exigibility` to…
**Steps to reproduce:** 1. Install the `Accounting` module. 2. Enable cash basis taxes in `Accounting → Configuration → Settings → Taxes → Cash Basis`. 3. Create a tax, set `Tax Exigibility` to `Based on Payment`, and assign a `Cash Basis Transition Account`. 4. Create an invoice with the cash basis tax and a payment term such as `30% now, balance in 60 days`. 5. Record a full payment on the invoice instead of just the first installment. 6. Review the generated cash basis journal entries. **Observed behavior:** * Cash basis entries are created for the full tax amount, not proportionally. * Paying the full invoice with payment terms causes duplicated tax entries. **Root cause:** The calculation of `amount_currency` in `_create_tax_cash_basis_moves` used `line.amount_residual_currency` directly. This ignored the actual payment percentage, leading to incorrect full tax amounts. **Solution:** Adjust the calculation to apply the payment percentage when deriving the tax amount. This ensures that cash basis entries correctly reflect the proportion of the payment instead of always using the full tax. opw-5061136
This update fixes an issue where payments were incorrectly grouped, resulting in only one payment being recorded for multiple invoices from different partners. The change ensures that payments are correctly associated with each batch of invoices, improving payment accuracy and reconciliation. Related tests have also been updated.
Original PR description
- Create a misc with 2 receivable lines with different partners - Pay it - You only get a single payment, for the first partner only => We grouped the lines per move, but we should only do that inside a same batch Also fixes some caba tests that were incomplete --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a discrepancy in payroll account testing, reflecting that payments are now processed through different business partners. The change reverts a previous adjustment to ensure accurate test results and maintain the integrity of payroll accounting. This ensures the system correctly accounts for all payment transactions.
Original PR description
This reverts commit 0d34a92a3afb7d488e4637f738a6e43688b58f4b. The tests were actually right, the payments are for different partners
This update allows users to modify stock quantity views through Studio, even without a unique identifier. Previously, a check prevented Studio fields from being used in the 'stock.quant' view. Now, Studio and customized views are correctly recognized, ensuring greater flexibility in managing stock data.
Original PR description
In versions prior to 18.3, the “stock.quant” view did not have an “xml_id”, which prevented it from being modified through Studio. However, starting from version 18.3 and specifically since this commit: https://github.com/odoo/enterprise/commit/f4a4d54d45392c2ba46a123d4951f8b4468c5cba it is now possible to modify views through Studio even if they don't have an xml_id. But in the 'stock.quant' view, we perform a check at creation time to ensure that the field is among the allowed fields. Fields coming from Studio or from a customized view should, however, be ignored by this check and allowed. opw-5107591
This update fixes a calculation error in the VAT sales reports for Vietnam (l10n_vn). The previous formula excluded the base amount for 8% VAT transactions, leading to inaccurate sales reporting. This change ensures the total taxable base is calculated correctly, improving the accuracy of financial data.
Original PR description
`VAT_SALES` report line aggregates total untaxed amount from its children lines. Previously, the formula for this line was missing `VAT_SALES_8.amount_untaxed`. As a result, the base amount for 8% VAT transactions was excluded from the total sales base calculation. This commit adds the missing tag to the `VAT_SALES` formula to ensure the total taxable base is calculated correctly. task-5836154 Forward-Port-Of: odoo/odoo#244915
This update resolves a bug where the color slider in the editor's custom color picker would reset to red when selecting a color from the top of the palette. The fix prevents unnecessary UI updates, ensuring the color picker functions correctly and reliably.
Original PR description
**Current behavior before PR:** In editor's custom gradient picker, if `#FFFFFF` is picked from the very top of picker area, the color slider is reset to color `red`. This happens because when moving picker pointer to the top of area, `selectedColor` prop is updated to `#FFFFFF`, which calls `onWillUpdateProps` callback. As result, `convertRgbToHsl` sets hue value 0 for `#FFFFFF`, setting color slider to red. **Desired behavior after PR is merged:** This commit ensures that in `onWillUpdateProps` callback, `setSelectedColor` should not get called if `newSelectedColor` is the same as `this.colorComponents.cssColor` to prevent updating UI twice while picking the color. task-5170041 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245056 Forward-Port-Of: odoo/odoo#236644
This update prevents visitors from seeing or accessing live chat commands like `/help` or `/leave`. Previously, these commands were visible, which wasn't ideal for user experience. This change ensures a cleaner and more intuitive experience for all users.
Original PR description
**Current behavior before PR:** channel commands like `/help ` or `/leave` are visible to visitors even it is not functional for them. **Desired behavior after PR is merged:** commands are now hidden from visitors. task-4552209 related: [PR](https://github.com/odoo/enterprise/pull/82963) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196737
This update hides potentially confusing live chat commands (like `/help`) from website visitors and guests. Previously, these commands were visible, even though they weren't functional for them. This change enhances the user experience and security of the Helpdesk module.
Original PR description
*= test_discuss_full_enterprise **Before PR:** channel commands like `/help ` or `/leave` and more are visible to visitors or guest even it is not functional for them. **After PR:** all commands are now hidden from visitors/guests. task-4548666 Forward-Port-Of: odoo/enterprise#82963
This update fixes a bug where journal entries could be posted even when referencing inactive analytic accounts. The fix adds a validation step during posting to ensure all referenced accounts are active, preventing incorrect financial postings. This improves data accuracy and reliability within the accounting system.
Original PR description
**Steps to produce:** - Install the `Accounting` module. - Enable analytic accounting in settings. - Create an analytic account (e.g., "test"). - Create a journal entry and assign the analytic…
**Steps to produce:** - Install the `Accounting` module. - Enable analytic accounting in settings. - Create an analytic account (e.g., "test"). - Create a journal entry and assign the analytic account in the analytic distribution. - Post the entry and export it(Make sure `journal items/account` and `journal items/analytic distribution` are also included). - `Archive` the analytic account. - Import the exported entry `OR` Duplicate the previous created entry. - Try to post the imported entry. **Issue:** - The entry is posted even if the analytic account used in the analytic distribution is inactive. **Root cause:** - The `analytic_distribution` field is stored as JSON. - At [1], the `_str_to_json` method only attempts `json.loads(value)`, and if parsing fails, it raises an error. **Solution:** - Add a validation when posting journal entries to ensure that all analytic accounts referenced in the analytic distribution are active. [1]: https://github.com/odoo/odoo/blob/13e8b462e74f144e085492857bfaa7b0d1f88f93/odoo/addons/base/models/ir_fields.py#L196-L202 opw-5350980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243534 Forward-Port-Of: odoo/odoo#239988
This update resolves an issue where invoices generated with the Solution Factible PAC in Mexico were being rejected due to incorrect exchange rate formatting. The fix ensures that all PACs, including Solution Factible, use the required 6 decimal places for exchange rates, preventing invoice rejection and ensuring compliance with Mexican tax regulations.
Original PR description
The PACs Quadrum and SwSapien both require the exchange rate to have 6 decimal places. This can cause some valid invoices to be rejected for large enough payment values. Pull request…
The PACs Quadrum and SwSapien both require the exchange rate to have 6 decimal places. This can cause some valid invoices to be rejected for large enough payment values. Pull request [83499](https://github.com/odoo/enterprise/pull/83499) added rounding precision for these PACs. Now, the remaining PAC (Solution Factible) appears to the same requirement. This commit ensures that the previous bug fix is applied to all PACs. [opw-5165200](https://www.odoo.com/odoo/project.task/5165200) ## Steps to reproduce: [Setup](https://drive.google.com/file/d/1BUkNG-Ezk-I47yvbNolOmlj0ne1iqDto/view?usp=sharing) 1. Navigate to Apps and install l10n_mx_edi. 2. Switch to any of the Mexican companies that appear. 3. Navigate to Accounting > Configuration > Currencies. 4. Click into the USD currency. 5. Change the current rate to be 20.101796407186 MXN per USD. (inverse_company_rate field). 6. Navigate to Accounting > Configuration > Settings, and set the PAC to Solution Factible. [Workflow](https://drive.google.com/file/d/11TFZ78QGDYdnD9R3CoJDAuFI-1_0dNyG/view?usp=sharing) 1. Navigate to Accounting > Customers > Invoices. 2. Select New to create a new invoice. 3. Add a mexican customer (such as XENON INDUSTRIAL ARTICLES). 4. Add the 45 day Payment terms. This should change the payment policy to PPD. 5. Change the currency to USD. 6. Add the product FURN_8220 (or any with the unspsc_code_id set). 7. Set the unit price of the product to 58968.29. 8. Confirm the invoice. 9. Select Send & Print, then ensure that the CFDI option is selected before clicking Send & Print again. 10. Select Register Payment, then Confirm Payment. 11. Select the Update Payments smart button. 12. Navigate to the CFDI tab; there will be a "Payment Send in Error" line. Forward-Port-Of: odoo/enterprise#104673 Forward-Port-Of: odoo/enterprise#102557
This update resolves a potential infinite loop issue that could occur when generating product attribute combinations, specifically with multi-checkbox attributes. The fix ensures that lines without values are excluded from the combination process, preventing redundant calculations and maintaining system stability. This improves the reliability of product configuration.
Original PR description
Before this commit, having a `product.template.attribute.line` with zero `product.template.attribute.value` records might cause an infinite loop if this **multi-checkbox** attribute wasn't in the end…
Before this commit, having a `product.template.attribute.line` with zero `product.template.attribute.value` records might cause an infinite loop if this **multi-checkbox** attribute wasn't in the end of the list.
Suppose the order was arbitrary and we are generating combinations for two lines (the order here is important):
- Line (A) -> [] (multi checkbox type)
- Line (B) -> [attr_1, attr_2]
- The possible combinations are {(attr_1), (attr_2)}.
After generating the second combination the following 2 procedures happen.
- The value_index_per_line[1] will be resetted to -1,
- The line_index will decrement from 1 to 0.
Now, since the first line doesn't have any values, it will be skipped and the line_index will be incremented to 1.
This results in the redundant generation of the same combination, triggering an infinite loop.
Since this method yields a recordset of `product.template.attribute.value` model and the **multi-checkbox** attribute doesn't have a value being passed to the method anyways, we can exclude the lines that doesn't have values for the algorthim not to be stuck in an infinite loop.
opw-5267179
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241557This update fixes a visual glitch in the time-off UI for Belgian employees. Previously, sickness relapse fields appeared unexpectedly after certain time-off approvals. The fix adjusts the layout to prevent this overlap and ensure a consistent user experience.
Original PR description
Bug production steps: Select employee works in Belgium company, go to timeoff and approve >= 1 months time off and select new timeoff after 1-2 days and there Sickness Relapse fields occur in the shifted UI. Bug cause: The field sickness_relapse added after attach file part, before there was label for the attach file part and it was occupying 2 columns, after removing column it occupies only 1 and the first part of the boolean sickness relapse fields come next to the attach file part. Bug solution: Make the colspan 2 for the attach file part, by that way the sickness_relapse will start from the below line. task - 5493425 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 update fixes a technical issue in the Delivery IoT module that caused tracebacks when processing multiple print job confirmations. The change ensures that print jobs are handled correctly, even when there are discrepancies between the front-end and back-end systems, and improves compatibility with certain IoT devices. This prevents errors and ensures reliable print job processing.
Original PR description
In `delivery_iot`, as reports are fetched in the chatter from the backend, we end up creating one print job in the front end but multiple print jobs can be sent with WebSocket in the backend. We then get a traceback when getting a second confirmation from a print job that has just been deleted from the job list. Additionally, we ensure compatibility with the stable IoT Box, that do not return a `print_id` or `iot_mac`. opw-5464957 Forward-Port-Of: odoo/enterprise#105230 Forward-Port-Of: odoo/enterprise#105194
This update resolves an issue where non-administrator users were receiving access errors when attempting to validate direct debit mandates. The fix restricts access to the payment provider model during validation, aligning with user permission controls for mandate creation. This ensures all users with the appropriate role can successfully validate mandates.
Original PR description
## Versions
saas-18.3+
## Issue
Non admin users get an access error when trying to validate a direct debit mandate.
## Steps to reproduce
As admin user:
- Navigate to "Users":
- Select Marc Demo:
- Under "Access Rights", in the "Accounting" section, set his "Accounting" role to "Invoicing & Banks";
As Marc Demo:
- Navigate to "Direct Debit Mandates":
- Create a new mandate for Deco Addict and its first IBAN record;
- Click on the "Validate" button.
## Cause
Issue introduced by the `action_validate_mandate` method override from b63eb2d6b91be28f4837309b5d972cc0b05846e0 Non admin users have no permissions on `payment.provider` while `_read_group` checks read rights on model via https://github.com/odoo/odoo/blob/ac084b1010faf49b63844ecc96284d567e59de2e/odoo/orm/models.py#L1632
## Fix
Allow `payment.provider` access only on mandate validation as only `account.group_validate_bank_account` users can create a new mandate.
opw-5255694This update resolves an issue preventing bookings from being scheduled for the last hour of the day. The fix corrects a technical error that was incorrectly flagging the end of the day as unavailable, now allowing appointments to be booked from 23:00 to 00:00. This ensures users can utilize the full range of available appointment times.
Original PR description
**Steps to reproduce:** - Go to Appointment app - Edit an appointment type - Ensure its availability is on resources - Set duration to 1 hour - Add a schedule slot ending in 00:00 - Save and go to…
**Steps to reproduce:** - Go to Appointment app - Edit an appointment type - Ensure its availability is on resources - Set duration to 1 hour - Add a schedule slot ending in 00:00 - Save and go to the website page of the appointment - Last slot is not showing (23:00-00:00) **Issue:** When computing the appointment slots of a resource using time range, the end of day is considered as an unavaibility resource slot with this interval in `_get_unavailable_intervals`: `i_start = 23:59:59.999999` `i_stop = 00:00` this conflicts with the given range (23:00-00:00) in `self._slot_availability_is_resource_available` It comes from `_attendance_intervals_batch`, as `float_to_time(24.0)` is converted to `time.max` (23:59:59.999999) by: `day_to = datetime.combine(day, float_to_time(attendance.hour_to))` This introduces the microsecond unavaibility at the end of the day, which blocks the booking. (it's working properly for availability on users appointments) **Fix:** Changed the condition so that 23:59:59.999999 is considered as equal to 00:00. opw-5163892 Forward-Port-Of: odoo/enterprise#100853
This update resolves an issue preventing grouping within the planning module's slot templates. The fix ensures that parameters are passed to the correct method, enabling proper data aggregation and reporting. This improves the functionality of the planning feature.
Original PR description
Before this commit, it was impossible to group by on any field in `planning.slot.template` model, because the parameters given to the parent method of `formatted_read_group` method were not given into the right order. This commit makes sure the order is respected. Forward-Port-Of: odoo/enterprise#105211
This update resolves minor visual issues in the website's image gallery template. Specifically, it corrects errors like missing styling and undefined class names, ensuring a consistent and properly formatted display of images for users. This improves the overall user experience and presentation of product images on the website.
Original PR description
This commit fixes a few minor issues in the new carousel items template introduced in [1]: items having an `"undefined"` class, and a missing margin style in the main snippet template. [1]: https://github.com/odoo/odoo/commit/9042b1cae7b630b20e0670788b7a4ed9e4c97609 linked-task-3414281 Forward-Port-Of: odoo/odoo#241785
This update fixes an issue where zero-percent taxes (NT/EXEMPT) were incorrectly filtered out of downpayment calculations in the Arabic localization. Previously, these taxes weren't being properly applied, leading to inaccurate financial reporting. This change ensures that all taxes, including zero-percent NT/EXEMPT amounts, are correctly included in downpayment calculations.
Original PR description
Taxes 0% NT and 0% EXEMPT should not be fixed taxes. This is causing issue in some cases such as downpayments, where those taxes needs to be present, but fixed taxes are filtered at the creation of the downpayment. opw-5815953 Forward-Port-Of: odoo/odoo#245361 Forward-Port-Of: odoo/odoo#245252