Daily updates from Odoo
Friday, December 19, 2025
82 changes
15 changes
Resolved issues and error corrections
This update fixes an issue where contacts without names or email addresses in Odoo's chatter interface were displaying as 'Unnamed'. Now, when a contact lacks this information, the system will automatically show their display name instead, providing a more user-friendly experience. This ensures all recipients are clearly identified within conversations.
Original PR description
Steps to reproduce =============== 1. Create a contact of type invoice address without name and email. 2. Go to any app with chatter. 3. Add this user to the recipient ----> Only the blue tick will be visible (recipient name will be empty) After this commit, we will use the display_name as a fallback to show in the chatter. Forward-Port-Of: odoo/odoo#229832 Forward-Port-Of: odoo/odoo#213545
This update simplifies the TDS (Tax Deducted at Source) warning system. Now, the system alerts users to collect a vendor's PAN (Permanent Account Number) whenever it's missing, rather than based on the TDS rate. This ensures users are consistently prompted to gather the necessary information for compliance.
Original PR description
Simplified the condition to show warning whenever the partner’s PAN is missing in the TDS entry wizard, instead of checking for lower TDS rate. The warning’s purpose is only to alert users to collect PAN from vendors, so rate based check was removed. task-5245353 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240471 Forward-Port-Of: odoo/odoo#235436
This update fixes an issue where Chilean invoices generated as PDFs incorrectly displayed unit prices with decimal points. The change ensures that unit prices align with Chilean localization rules by removing decimal formatting, resulting in a more accurate and professional invoice presentation.
Original PR description
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a…
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a **price_unit with decimals** (e.g., *99.56*). * Confirm the invoice. * Download and open the generated PDF from the invoice form. **Observed behavior:** * The **unit price** rendered in the PDF is displayed as a rounded decimal value (e.g., *100.00*), even though *Chilean* localization does **not** use decimal representation for unit prices. **Cause:** * The QWeb template uses `t-options` to format float values with **two-decimal precision**, forcing decimals to appear in the PDF. **Fix:** * Reduce the formatting precision in the PDF template so that **no decimal points** are displayed, matching Chilean localization rules. **Before Fix** <img width="783" height="319" alt="image" src="https://github.com/user-attachments/assets/e5ea5a38-a77a-4d64-9aae-672940734ea4" /> **After Fix** <img width="794" height="316" alt="image" src="https://github.com/user-attachments/assets/c47d2f0a-b4ea-428e-bf57-23584c34bf5c" /> --- opw-5234563 Forward-Port-Of: odoo/odoo#238059
This update ensures that user presence status is consistently updated after periods of inactivity. Previously, updates were missed if the user hadn't been away during the last status check. This improvement guarantees accurate user presence information for all users.
Original PR description
Before this commit, the user's presence might not be updated after returning from inactivity. This occurs because the status service only sends an update if the user was away during the previous update. However, this condition doesn't account for cases where the update was never sent. Forward-Port-Of: odoo/odoo#239458 Forward-Port-Of: odoo/odoo#239202
This update resolves a technical problem that could cause errors when processing invoices with multiple CAF (Contribution Authority File) documents. The fix ensures the system correctly identifies and uses the lowest starting number for CAFs, preventing database errors and ensuring accurate invoice processing. This improves stability and reliability for users.
Original PR description
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting…
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting number. This worked except in the case where there are multiple CAFs that are currently marked active in a document type. As it tries to access `caf.start_nb` it hits an ensure_one() which throws a traceback whenever you open most account.moves on the DB. Steps to reproduce: - Modify the CAF for Doc Type 33 (Electronic Invoices) to have a smaller range than 1 - 999,999 (1 - 5) - Create Two new CAF files also for Doc Type 33 that start after this value (6 - 10 and 11 - 15 for example). - Mark the original to be spent via cancelling it and try to open an invoice. It will find both of the new CAFs and try to get the start_nb of the recordset. In discussion with the PO, when we have multiple CAFs, we should pick by the lowest start number as it will allow for any gaps that might exist be filled. opw-5414350 Forward-Port-Of: odoo/enterprise#102385
This update fixes an issue where the out-of-stock message on product pages was appearing as a single, overflowing line. The change ensures line breaks are preserved, allowing the message to wrap correctly and display properly within the product badge, improving the user experience. This resolves a visual inconsistency and enhances the clarity of product availability information.
Original PR description
- Before saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.3/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L8) message was rendered as…
- Before saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.3/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L8) message was rendered as plain text without any layout-specific classes, allowing the message to wrap naturally. **Reference of version saas-18.3** <img width="1920" height="768" alt="2025-12-16_18-53" src="https://github.com/user-attachments/assets/d7670fa4-6808-40d7-9bad-768d0637f366" /> - From saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.4/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L13-L16) message is rendered using `t-out`, which outputs plain text and collapses line breaks, causing the message to appear on a single line and overflow when used with `d-inline-flex`. See screenshots in the PR description (Before fix). <img width="1920" height="672" alt="2025-12-16_14-28" src="https://github.com/user-attachments/assets/927080cd-f2b0-45cd-ae0a-2917699c05f6" /> - Updated the layout to replace `d-inline-flex` with `d-flex` and apply `text-break` on the message container so long and dynamic texts wrap correctly inside the badge. See screenshots in the PR description (After fix). <img width="1918" height="682" alt="2025-12-16_14-31" src="https://github.com/user-attachments/assets/2cafdc61-e494-468a-9d41-08ab3c83b041" /> opw-5274850 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 resolves an issue where German Sale Order reports were missing the 'Position' column and had broken formatting. The fix corrects a calculation error in the report template, ensuring that each sale order line is numbered correctly and the report displays properly.
Original PR description
Before this commit, when printing a Sale Order using the German localization, the "Position" column in the PDF report was empty. Additionally, the table formatting was broken due to this missing data. This issue occurred because the index variable used to calculate the line number in the report template (QWeb) was incorrect. This commit fixes the index logic in the report template. Now, the "Position" column correctly displays sequential numbers (1, 2, etc.), and the table formatting renders correctly. ticket-5225647 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 potential parsing error in the HTML editor by ensuring it correctly identifies block-level elements, even when they are hidden using `display: none`. Previously, hidden elements could cause parsing failures. This change improves the overall stability and reliability of the HTML editor when dealing with complex QWeb templates.
Original PR description
Problem: When nodes have `display: none` (for example a QWeb `t-else` node with a false condition), `isBlock` incorrectly fails when checking them. Solution: If a node has `display: none`, fall back to checking its `tagName` against `blockTagNames`. This ensures consistent behavior regardless of the node visibility. Steps to reproduce: - Open “Appointment: Attendee Invitation”. - Add a list item to the list in the content. - Save. - A QWeb parsing error occurs. opw-5268806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239482
This update fixes a bug where forum post images set to specific sizes (50% or 25%) weren't being saved correctly. The system was stripping inline styles, preventing the intended image resizing. This change disables the use of inline styles for image sizing in forum posts, ensuring images are displayed as intended.
Original PR description
Problem: When creating a new forum post with an image set to "50%" or "25%" size, the post is saved with the original image size instead of the selected one. Cause: The `Post.content` field has `strip_style=True`, which removes any inline `style` attributes before saving. Since image size ratios were applied using `style="width: 50%"`, the width information was lost. Solution: Disable image size options that depend on inline `style` attributes, as they cannot be preserved when saving forum posts. Steps to reproduce: 1. Go to Forum. 2. Create a new post. 3. Add an image and set its size to 50% or 25%. 4. Save the post — the image appears with its original size. opw-5173917 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240442 Forward-Port-Of: odoo/odoo#234354
This update fixes a visual issue where animation options within select and button group controls appeared cramped when placed on the same row. The change ensures that select text remains fully visible and button labels are displayed completely, improving the user experience and overall appearance of these controls.
Original PR description
Fix animation options layout when a select and a button group share the same row. Ensure the select text remains visible and the buttons show their full labels (e.g. for "onScroll"). | Before | After | | ------------- | ------------- | | <img width="290" height="39" alt="image" src="https://github.com/user-attachments/assets/4fb367fe-77f0-4038-ac2c-c0d856aeba8f" /> | <img width="288" height="40" alt="image" src="https://github.com/user-attachments/assets/99402e23-4144-42bf-81b1-7ddec0c35cfe" /> | | Before | After | | ------------- | ------------- | | <img width="290" height="36" alt="image" src="https://github.com/user-attachments/assets/39f1a6d0-3ba5-4c80-b452-5c5ba03cee2d" /> | <img width="289" height="39" alt="image" src="https://github.com/user-attachments/assets/482f84cc-7600-4510-91d7-1d6ad9d63937" /> | task-5353509
This update fixes a technical issue in the Point of Sale module that caused orders to be unnecessarily resynced and sent to the blackbox multiple times. The change prevents marking orders as 'dirty' after a write operation, resolving a synchronization loop. This improves system performance and data consistency.
Original PR description
Backport of what have be none in this PR: https://github.com/odoo/odoo/pull/231719
- Before this commit, after doing `await this.data.write("pos.order", [order.id], { nb_print: order.nb_print });` the order was marked as dirty. This was causing issue for the next `sync_from_ui` causing this order to be resynced and then send twice to the blackbox.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update corrects a technical issue where sales orders were being sent to the blackbox service multiple times. The fix ensures that sales data is only transmitted once, improving data accuracy and reducing unnecessary processing load. This is a routine maintenance fix.
Original PR description
This fix ensure we don't send twice the same NS (normal sale) to the blackbox. We only push the order to the blackbox if it does not contain a signature yet.
This update adds a new test helper within the spreadsheet module, streamlining the process of adding rows during testing. This enhancement ensures more robust and reliable testing of the spreadsheet functionality, ultimately improving the quality of the Odoo application. This aligns with our commitment to rigorous testing practices.
Original PR description
This commit adds a test helper to add a row. See enterprise PR 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#238730 Forward-Port-Of: odoo/odoo#238293
This update resolves a bug where inserting rows into a Quote calculator spreadsheet caused field syncs to disappear. The fix ensures that field syncs remain active even after adding new rows, maintaining data consistency within the spreadsheet. This improves the reliability of the Quote calculator for users.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101367 Forward-Port-Of: odoo/enterprise#101066
This update resolves an issue causing dynamic website snippets to flicker between visible and hidden states. The fix ensures snippets are initially invisible and only display content when available, restoring the intended behavior. This improves the overall website appearance and user experience.
Original PR description
Steps to reproduce [18.2+]: 1. Add a dynamic snippet to a website page (e.g., Events). 2. Unpublish all event records. 3. The snippet first appears with a visible header, which then disappears. [A]-…
Steps to reproduce [18.2+]: 1. Add a dynamic snippet to a website page (e.g., Events). 2. Unpublish all event records. 3. The snippet first appears with a visible header, which then disappears. [A]- Starting from [1], the `o_dynamic_empty` class was introduced to handle the dynamic snippets visibility, and an upgrade script (see [3]) set this class by default on them. Later in 18.0 (after [2]), the class was changed to `s_dynamic_empty` in the XML template, while on the JS side, the class used to toggle snippet visibility was `o_dynamic_snippet_empty`. This class was also added to snippets on destroy (before saving). [B]- As a result, a dynamic snippet may end up with: - `o_dynamic_empty` & `o_dynamic_snippet_empty`: for old (before 18.0) but edited snippets. - `o_dynamic_empty`: for old snippets never updated in edit mode on 18.0. - `s_dynamic_empty` & `o_dynamic_snippet_empty`: for new snippets created in 18.0. Remark: the `s_dynamic_empty` class was introduced by mistake and does not have any associated CSS Since only `o_dynamic_snippet_empty` has `display: none` in CSS, the interaction flow became inconsistent (starting from 18.2): snippets were initially visible, then hidden if no content was found... which caused the flickering behavior described above. And because of [B], old snippets with the `o_dynamic_empty` class will be visible by default in 18.0. This commit restores the intended (and original) behavior: - A dynamic snippet should be invisible by default, - Then the interaction decides (based on actual content) whether the snippet should be displayed. [1]: https://github.com/odoo/odoo/commit/63def9c87305dd7773e0592a28fe19d0b63c0878 [2]: https://github.com/odoo/odoo/commit/76cf201e1fc356ad00b27bcdec408c54949df33b [3]: https://github.com/odoo/upgrade/commit/af5821d9aeb75d09653fc33f14e98fae5f5ba906 opw-5354523 Forward-Port-Of: odoo/odoo#240036 Forward-Port-Of: odoo/odoo#238305
13 changes
Resolved issues and error corrections
This update simplifies the TDS warning displayed in the vendor payment process. It now automatically alerts users if a vendor’s PAN (tax identification number) is missing, ensuring compliance with Indian tax regulations. This change focuses solely on prompting users to collect vendor PAN information, rather than relying on TDS rate checks.
Original PR description
Simplified the condition to show warning whenever the partner’s PAN is missing in the TDS entry wizard, instead of checking for lower TDS rate. The warning’s purpose is only to alert users to collect PAN from vendors, so rate based check was removed. task-5245353 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240471 Forward-Port-Of: odoo/odoo#235436
This update fixes an issue where Chilean invoices generated as PDFs incorrectly displayed unit prices with decimal points. The change ensures that unit prices in Chilean invoices match local regulations by removing unnecessary decimal formatting, improving invoice accuracy and compliance.
Original PR description
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a…
**Steps to reproduce:** * Install the *l10n_cl* module with demo data. * Switch the environment to the **CL** company. * Create a customer invoice containing at least one invoice line. Enter a **price_unit with decimals** (e.g., *99.56*). * Confirm the invoice. * Download and open the generated PDF from the invoice form. **Observed behavior:** * The **unit price** rendered in the PDF is displayed as a rounded decimal value (e.g., *100.00*), even though *Chilean* localization does **not** use decimal representation for unit prices. **Cause:** * The QWeb template uses `t-options` to format float values with **two-decimal precision**, forcing decimals to appear in the PDF. **Fix:** * Reduce the formatting precision in the PDF template so that **no decimal points** are displayed, matching Chilean localization rules. **Before Fix** <img width="783" height="319" alt="image" src="https://github.com/user-attachments/assets/e5ea5a38-a77a-4d64-9aae-672940734ea4" /> **After Fix** <img width="794" height="316" alt="image" src="https://github.com/user-attachments/assets/c47d2f0a-b4ea-428e-bf57-23584c34bf5c" /> --- opw-5234563 Forward-Port-Of: odoo/odoo#238059
This update fixes an issue where the number of reconciliation entries displayed on the dashboard was incorrect. The system was filtering out draft journal entries, which could be reconciled. Now, all entries, including draft ones, are accurately counted, ensuring users see the correct number of reconciliations available.
Original PR description
Steps to reproduce: - go to daschboard > N to reconcile - validate the first entry - back to dashboard you will N-1 to reconcile - Reset to to draft the journal entry associated with the reconciliation - Reset the bank reconciliation Issue Back to the dashboard you will see N-1 to reconcile but when clicking on it you will have 8 entries to reconcile Cause: We filter out non posted entries. In Odoo, draft entrie can be reconciled. opw-5102016 Forward-Port-Of: odoo/odoo#229267
This update resolves an issue where users' presence status wasn't reliably updated after returning from inactivity. The fix ensures that the status service consistently sends updates, regardless of whether the user was previously inactive, improving the accuracy of user presence information within Odoo.
Original PR description
Before this commit, the user's presence might not be updated after returning from inactivity. This occurs because the status service only sends an update if the user was away during the previous update. However, this condition doesn't account for cases where the update was never sent. Forward-Port-Of: odoo/odoo#239458 Forward-Port-Of: odoo/odoo#239202
This update resolves a technical problem that could cause errors when opening invoices with multiple active CAF (Contribution Authority File) documents. The fix ensures the system correctly identifies and uses the CAF with the lowest starting number, allowing for proper document processing and preventing database errors. This improves stability and reliability for invoice handling.
Original PR description
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting…
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting number. This worked except in the case where there are multiple CAFs that are currently marked active in a document type. As it tries to access `caf.start_nb` it hits an ensure_one() which throws a traceback whenever you open most account.moves on the DB. Steps to reproduce: - Modify the CAF for Doc Type 33 (Electronic Invoices) to have a smaller range than 1 - 999,999 (1 - 5) - Create Two new CAF files also for Doc Type 33 that start after this value (6 - 10 and 11 - 15 for example). - Mark the original to be spent via cancelling it and try to open an invoice. It will find both of the new CAFs and try to get the start_nb of the recordset. In discussion with the PO, when we have multiple CAFs, we should pick by the lowest start number as it will allow for any gaps that might exist be filled. opw-5414350 Forward-Port-Of: odoo/enterprise#102385
This update fixes a potential issue where printing from the Odoo system could fail on Windows. By adding a simple error catch, the system now handles printing errors more gracefully, preventing disruptions for users. This ensures a more stable and reliable printing experience.
Original PR description
This commit adds the try/except block around print_raw method of the virtual iot box to allow catching exceptions when printing on Windows Forward-Port-Of: odoo/odoo#238633
This update fixes an issue where downpayment lines weren't correctly categorized in financial reports. The system now consistently assigns a standard classification code ('022') to downpayment lines, ensuring accurate reporting and compliance. This change improves the reliability of financial data for our MyEDi customers.
Original PR description
Ensure downpayment lines are assigned a fixed classification code ("022"), while other lines retain their product-based classification.
Task-5356913
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240346
Forward-Port-Of: odoo/odoo#239831This update fixes a bug in the HTML editor that prevented it from correctly identifying certain QWeb nodes when they were hidden using the 'display: none' style. The change ensures consistent parsing behavior, regardless of an element's visibility, resolving a potential parsing error.
Original PR description
Problem: When nodes have `display: none` (for example a QWeb `t-else` node with a false condition), `isBlock` incorrectly fails when checking them. Solution: If a node has `display: none`, fall back to checking its `tagName` against `blockTagNames`. This ensures consistent behavior regardless of the node visibility. Steps to reproduce: - Open “Appointment: Attendee Invitation”. - Add a list item to the list in the content. - Save. - A QWeb parsing error occurs. opw-5268806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239482
This update adds a new test helper within the Odoo spreadsheet module. This enhancement simplifies the process of adding rows during testing, ensuring more robust and reliable test coverage for spreadsheet functionality. This change improves the overall quality and stability of the spreadsheet feature.
Original PR description
This commit adds a test helper to add a row. See enterprise PR 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#238293
This update resolves a bug where field syncs would disappear after inserting a new row in a Quote calculator spreadsheet. The fix ensures that field syncs are correctly maintained when rows are added, preventing data inconsistencies. This improves the reliability of spreadsheet-based sales calculations.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101241 Forward-Port-Of: odoo/enterprise#101066
This update fixes a bug where forum post images set to specific sizes (50% or 25%) weren't being saved correctly. The system was stripping out inline styles, preventing the desired image size from being applied. This change ensures forum images are saved and displayed at the intended size.
Original PR description
Problem: When creating a new forum post with an image set to "50%" or "25%" size, the post is saved with the original image size instead of the selected one. Cause: The `Post.content` field has `strip_style=True`, which removes any inline `style` attributes before saving. Since image size ratios were applied using `style="width: 50%"`, the width information was lost. Solution: Disable image size options that depend on inline `style` attributes, as they cannot be preserved when saving forum posts. Steps to reproduce: 1. Go to Forum. 2. Create a new post. 3. Add an image and set its size to 50% or 25%. 4. Save the post — the image appears with its original size. opw-5173917 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240442 Forward-Port-Of: odoo/odoo#234354
This update corrects a minor issue in how Odoo generates sequence dates, specifically related to ISO week numbering. The fix ensures that sequence dates consistently match the format used in comparison strings, preventing test failures and maintaining data accuracy. This improves the reliability of date-based processes within the system.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Run `test_ir_sequence_iso_directives` in January or February. Issue ----- Test fails due to the sequence generated having a leading zero on the ISO week number, whereas the comparison string doesn't. Cause ----- We get the week number from the comparison string from the `isocalendar` method as a simple `int`, hence we it doesn't automatically get formatted with a leading zero. Solution -------- In the comparison string, ensure the `isoy` and `isoweek` parts are always formatted with 2 width, adding a leading zero when needed. runbot-234592
This update enhances how other Odoo modules can customize activity actions, allowing them to inject specific behaviors like loading custom views or actions. By separating the action execution step, developers can now easily extend the system without duplicating existing logic, leading to a more flexible and adaptable Odoo environment.
Original PR description
The `openActivityGroup` method in `ActivityMenu` currently handles both the preparation of filters (domains, contexts) and the actual execution of the action. This coupling prevents other modules from intercepting the action execution to inject specific behaviors—such as loading a specific server-side action or specialized views—without completely overriding the method and duplicating the filter logic. This commit extracts the final execution step into a new method `executeActivityAction`. This allows extending modules (e.g., `documents`) to customize the action load (e.g., to ensure specific JavaScript hooks are initialized) while relying on the base implementation for domain and context generation. Task-5187045 Forward-Port-Of: odoo/odoo#240110 Forward-Port-Of: odoo/odoo#238377
2 changes
Resolved issues and error corrections
A recent test failure has been resolved to ensure accurate accounting for employee work orders. The issue stemmed from a miscount of analytic lines created during a test setup, triggered by a specific configuration of employee calendar data. This fix corrects the underlying logic to prevent the inaccurate record count.
Original PR description
fixing runbot error https://runbot.odoo.com/odoo/runbot.build.error/234639 on test test_mrp_analytic_account_employee_from_widget introduced by this PR https://github.com/odoo/enterprise/pull/85517
**cause of the error:**
Because there is a resource.calendar.leave without calendar_id,
without resource_id and at a date after today :
during the setupclass, when the employee is created,
_create_future_public_holidays_timesheets() creates an account.analytic.line.
So at the end of the test ,
self.env["account.analytic.line"].search([('employee_id', '=', self.employee1.id)])
returns 2 records instead of 1.
runbot-234639
Forward-Port-Of: odoo/enterprise#102338
Forward-Port-Of: odoo/enterprise#102282This update corrects a technical issue in the accounting system that was leading to inaccurate deferred revenue entries. The change ensures the system correctly utilizes deferred type accounting, improving the reliability of financial reporting. This resolves a potential discrepancy in revenue recognition.
Original PR description
In c3bd8e44546df21c51914a560a28a739f55cca21, a forward-port of 0a6bc3710ee1bfdf10bfd3da7d6e24fd190432e6, the `deferred_expense_amount_computation_method` was always used instead of relying on the deferred type opw-none Forward-Port-Of: odoo/enterprise#102517
23 changes
Resolved issues and error corrections
This update disables Intervat functionality within the l10n_be demo company data. This change prevents Intervat from being automatically set during testing with Runbots, ensuring more consistent and reliable demo environments. It's a minor improvement to the demo setup.
Original PR description
This commit set the `l10n_be_intervat_mode` to `disabled` in the l10n_be demo company. The reason why we are doing this it to avoid having intervat set by default on runbots. task-5404719 Forward-Port-Of: odoo/enterprise#101929
This update fixes a misleading warning message displayed in the eCommerce shop when users try to add subscription products without a defined plan. The change ensures users receive a clear 'no valid combination' warning, improving the shopping experience and preventing confusion. This resolves a usability issue for subscription offerings.
Original PR description
Version: - saas-18.4 Steps to reproduce: - Install website_sale_subscription - Create a subscription product without a plan - Open product on eCommerce Issue: - When viewing a subscription product…
Version: - saas-18.4 Steps to reproduce: - Install website_sale_subscription - Create a subscription product without a plan - Open product on eCommerce Issue: - When viewing a subscription product without a subscription plan in the eCommerce shop, the system incorrectly shows the warning "This subscription is not compatible with the one already in your cart. Please order them separately or empty your cart." - This happens even if the cart is completely empty. - The method _is_add_to_cart_possible doesn’t find any valid combination to add to the cart, and because the product is marked as recurring, it always triggers the wrong message. Solution: - Add a condition to check if current product have any recurring price set if not then it will show the correct warning that 'This product has no valid combination.' Impact: - Users see clear and correct warnings on products without a subscription plan. task-5255749 Forward-Port-Of: odoo/enterprise#102251 Forward-Port-Of: odoo/enterprise#100929
This update corrects a bug where inaccessible folders were incorrectly included in document search results. Previously, searching for folders within a company structure would incorrectly display folders that were not accessible to the user. This fix ensures that only accessible folders are shown, improving data accuracy and user experience. Performance testing confirmed this as the optimal solution.
Original PR description
`user_folder_id` and `folder_id`'s `child_of` were not taking into account that the path could be broken if inaccessible folders are between accessible documents. E.g., the DB structure COMPANY └── Folder A └── Folder B (inaccessible to User A) └── Folder C Would appear to user A as COMPANY └── Folder A SHARED └── Folder C such that "Folder C" should not be found when searching `child_of` "Folder A" or "In Company". Note that more creativity would be necessary to fix this before 19.0 as the stored `folder_id` field could not be `_search`ed. Task-5231269 Forward-Port-Of: odoo/enterprise#99040
This update fixes an issue where a new offer page would reset to a blank state after a refresh. The change ensures that the correct employee context is maintained when refreshing the offer details, providing a consistent and accurate view for users. This improves the user experience and data integrity.
Original PR description
Steps to Reproduce ================== - Go to Employees - Choose an employee with no offers - Click on the "Offers - new" smart button (a form view will open with the correct employee name at the bottom) - Refresh the offer's page without saving (the employee field is emptied and the required Applicant field appears) Issue ================== The generate offer action that is triggered through the smart button returns a one-time action dictionary with the context. But that context is lost when we refresh the offer page as it's not saved anywhere. Fix ================== Replace the action dictionary with an action record for creating a new offer to ensure the context is maintained upon page refresh. Task-ID: 5059490 Forward-Port-Of: odoo/enterprise#102260
This update now automatically includes the XML file generated for Guatemalan e-invoices alongside the PDF when sending invoices to customers. Previously, only the PDF was sent. This change provides customers with both required files in one email, enhancing transparency and convenience.
Original PR description
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and…
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and sent to the SAT through Infile, is not attached to that email. Even though the SAT and Infile deliver the XML to the customer, it is more convenient and transparent if Odoo includes it directly in the outgoing invoice template email, so the customer receives both files in one place. Before this commit:- - Only PDF version is attached by default in customer email for e-invoices. - Name of edi document is prefixed with `Demo` if company is in demo environment (check parent company's environment in case of child company) (e.g. DEMO_certificate_INV_2025_00001.xml) and prefixed with `SAT` if company is in testing or production environment(e.g. SAT_certificate_INV_2025_00001.xml). After this commit:- - XML version is also attached by default along with PDF in customer email for e-invoices. - Name of edi document is always prefixed with `SAT`. task-5224521 Forward-Port-Of: odoo/enterprise#102322 Forward-Port-Of: odoo/enterprise#98978
This update enhances the visual appearance of the stock accounting module by updating company icons and improving the styling of buttons. This change provides a more polished and professional user experience for managing company-specific stock settings within Odoo Enterprise.
Original PR description
Forward-Port-Of: odoo/enterprise#99095
This update corrects a display issue in the Field Service module where task templates were incorrectly shown alongside real tasks. The fix ensures that only actual tasks are listed, improving the clarity and usability of the 'All Tasks' view. This resolves a potential confusion point for users.
Original PR description
Steps to Reproduce
- Navigate to Field Service > All Tasks.
- Observe that task templates are visible with tasks.
Issue
- Task templates are visible in the Field Service > All Tasks view, which is incorrect. Only real tasks should be listed.
Cause
- The domain in the view definition only filtered tasks by `is_fsm = True` and ` project_id != False`, but it did not exclude template tasks and sub-tasks of task templates.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain so that only actual tasks are displayed in the Field Service > All Tasks view.
task-5079337
Forward-Port-Of: odoo/enterprise#102409
Forward-Port-Of: odoo/enterprise#94472This update corrects a test failure related to VAT number validation for Thailand. After implementing stricter VAT number checks, a test case failed because the previously used VAT number didn't meet the new format requirements. This ensures the Thailand reports function correctly and accurately.
Original PR description
Following the implementation of proper validation for VAT numbers for Thailand, this now fails as the one set in the test doesn't follow the proper format. Community PR: odoo/odoo#239616 Total credits to @vin-odoo Forward-Port-Of: odoo/enterprise#102404 Forward-Port-Of: odoo/enterprise#101905
This update corrects a bug in the web_studio module that was causing errors when users made minor changes to PDF reports. The fix ensures that insignificant edits don't trigger unnecessary diffs and errors, improving report editing stability. This prevents users from encountering 'Document is empty' errors when saving.
Original PR description
Example of steps: - Install sale_management and web_studio - Try to edit PDF Quote report - add /4 columns somewhere above the table - try to save - Error: Document is empty In this case, for some reason `html_editor` edits the external_report by changing the order of attributes on a node, which causes a diff, but not relevant for studio and won't produce any xpath operations. This commit handles this case by initializing the Studio view to `<data/>`. opw-5351588 Forward-Port-Of: odoo/enterprise#102416
This update corrects a warning message that appeared when scheduling work entries with start and end dates combined with durations. The change ensures that the system accurately prevents overlapping work entries, maintaining data integrity. This resolves a potential issue with scheduling conflicts.
Original PR description
Problem ---------- This warning message doesn't make sens with the transformation of work entries date_start/stop in date+duration. No overlap is possible. task-5349515 Forward-Port-Of: odoo/enterprise#100163
This update resolves an issue where the ISO 20022 XML generation consistently used two decimal places for currency amounts, leading to errors for currencies like JPY. The fix dynamically sets the decimal places based on the currency, ensuring accurate data formatting and preventing potential errors.
Original PR description
Issue: Generating the xml file for iso20022 always generates the amount with two decimals which is hard coded and can cause error for currencies without decimals for example JPY. Fix: The fix is to have the currency decimal number dynamically set through the currency decimal places field. task: 5242204 Forward-Port-Of: odoo/enterprise#101368
This update fixes an issue where XML reports were incorrectly including a slash ('/') when there was no comment provided. The change ensures that empty comment sections in XML reports are properly left blank, improving report accuracy and consistency. This resolves a minor formatting problem.
Original PR description
Since 17.0, we added a / when there was no comment in the comment section of the xml. This is wrong and should be left empty. opw-5242381 Forward-Port-Of: odoo/enterprise#102174 Forward-Port-Of: odoo/enterprise#100033
This update prevents HR users from receiving unnecessary reminder emails. Previously, reminders were triggered by time-off requests or public holidays, even if the user didn't need to submit a timesheet. Now, reminders are only sent for active timesheet entries requiring user input, streamlining the process and reducing email clutter.
Original PR description
**Steps to reproduce:** - Install timesheet_grid_holidays - Create a user with no timesheet access - Create a leave and approve it as a manager - Set up employee reminders in timesheet settings - Run the timesheet reminder scheduled action **Issue:** HR users without timesheet app access or who haven’t submitted timesheets in the past 3 months were still receiving reminder emails. **Cause:** When a time-off is approved or a public holiday is recorded, it generates timesheet entries, which causes reminder emails to be sent incorrectly. **Fix:** Filter out time-off and public holiday entries when sending reminders. Now, reminders are only sent for actual timesheets that require user input. task-5085790 Forward-Port-Of: odoo/enterprise#102342 Forward-Port-Of: odoo/enterprise#95450
This update enhances the display of security class names on the transaction form, resolving an issue with inconsistent styling. The change utilizes a new Odoo markup system (odoomark) for more reliable and accurate presentation, improving the user experience and ensuring consistent security information is shown.
Original PR description
This commit refactors the way security classes are displayed on the transaction form view drpodown menu. It uses the new odoomark markup \v instead of hacky css to achieve proper styling to security classes display names. odoomark new markup PR: https://github.com/odoo/odoo/pull/239431 task-5418874
This update fixes a technical issue where the AI action feature would generate tracebacks when the prompt field was left blank. The fix skips parsing the prompt when empty, ensuring smoother AI action execution. Additionally, the AI system now anticipates scenarios where it needs information, preventing it from requesting further user input.
Original PR description
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the…
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the field selector plugin, which means that it requires parsing before it's sent to the LLM. There was no check during parsing whether the field is empty or not and thus a traceback would occur during processing. In this commit we added a check for whether the prompt field is empty or not and if it is, we skip parsing altogether. We still call the LLM but without the final-prompt. The pre-prompt with contextual information is still sent thus the LLM can still perform the action if it's simple enough. Also, if the AI server action prompt is ambiguous and the LLM "feels" like it needs additional input to complete its task, it might respond with an additional query to the user instead of calling one of its available tools. Thus, in this commit, we add an explicit instruction to the AI Server action pre-prompt which should convey to the LLM that it will not be able to get any additional input from the user and it should assume that any important information for performing its task will be hardcoded in its available tools. Task-5379758 Forward-Port-Of: odoo/enterprise#102441
This update fixes an issue where job offer emails didn't include the employee's name in the subject line. Now, emails will include the employee's name, making them more personalized and easier to identify. This improves communication and clarity for both HR and the new hire.
Original PR description
**Steps to reproduce:** - Go to Employees app and select any employee - Press "Offers" smart button - Create a new job offer and send it by email **Issue:** The employee name is not populated in the email subject. Task: 5407028
This update allows employees to modify their own overtime attendance records by enabling them to act as their own approvers. Previously, permission issues prevented them from making these changes, leading to inaccurate records. This fix ensures employees can accurately update their attendance information.
Original PR description
Employees set as themselves as approvers couldn't modify their attendances due to permission issues with other models. task-5427553 Forward-Port-Of: odoo/enterprise#102415
This update resolves an issue where payroll modules (l10n_xx_hr_*) were unnecessarily dependent on country information. Removing country dependencies from related modules like l10n_us and l10n_fr ensures a cleaner and more efficient system. This change improves the stability and maintainability of the payroll functionality.
Original PR description
This commit ensures that the dependencies of l10n_xx_hr_* modules don't include countries in the manifest. Countries were removed from l10n_us_hr_payroll, l10n_us_hr_payroll_adp, and l10n_fr_hr_payroll_account since l10n_us and l10n_fr have countries declared in their manifests. task-5408245
This update adjusts the automated tests to align with recent changes to how product prices are managed within Odoo. Specifically, the removal of a previous pricing method has been addressed, ensuring the tests accurately reflect the current system. This ensures consistent and reliable pricing calculations.
Original PR description
**Purpose:** Adapt the tests to reflect the changes made to the product.product price field and the removal of its inverse method. Task-5207469
This update adjusts where the recording policy settings are stored within the Odoo system. Previously, these settings were located within the VoIP module itself; now, they're correctly placed in the dedicated voip.config file. This change ensures consistent and accurate recording behavior for VoIP calls.
Original PR description
After https://github.com/odoo/enterprise/commit/8705dfc626fabf9a1ef469a07f8ef85cf838c88d, recordingPolicy is now in voip.config instead of voip
This update corrects a test related to exporting accounting data for Swedish businesses. The accounts have been properly separated to align with Swedish fiscal regulations, ensuring accurate reporting. This change improves the reliability of the export process for our Swedish customers.
Original PR description
The accounts have been separated between goods and services for the fiscal positions to work. Fix the test of an export of Sweden accounting task-5365658 Forward-Port-Of: odoo/enterprise#101722
This update resolves a bug where field syncs would disappear after inserting a new row in a Quote calculator spreadsheet. The fix ensures that field syncs are correctly maintained when rows are added, preventing data inconsistencies. This improves the reliability of spreadsheet-based sales calculations.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101367 Forward-Port-Of: odoo/enterprise#101066
This update fixes an error in the VAT return reporting process for Belgium. Previously, the system incorrectly set a flag to True, even for periods outside the year-end. This change ensures the flag is only set to True when appropriate, improving the accuracy of VAT reports and preventing potential reporting issues.
Original PR description
When the client_nihil field was hidden from the wizard, its computation always set it to True. This was wrong : this field can only be True in the XML when in the last period of the year, so when should_display_client_nihil is True as well. In every other cases, it needs to be False. opw-5184056 Forward-Port-Of: odoo/enterprise#102454
9 changes
Resolved issues and error corrections
This update resolves an issue where document previews were not updating correctly after renaming documents. Previously, the preview displayed the old attachment name even after a successful rename. This change ensures that document previews always reflect the latest, correctly renamed document name, improving data consistency and user experience.
Original PR description
BUG 1: --------- **steps to reproduce**: 1. Install documents 2. Open any document 3. Go to Action > Rename 4. Rename the document 5. Preview it and read the name showed there **issue**: When…
BUG 1:
---------
**steps to reproduce**:
1. Install documents
2. Open any document
3. Go to Action > Rename
4. Rename the document
5. Preview it and read the name showed there
**issue**:
When previewing the document, it still shows the old attachment name.
**observation**:
When renaming a document, only the document name was updated. The attachment name remained unchanged, which caused inconsistencies:
1. In the All Records section, the document name is displayed correctly. https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/views/documents_document_views.xml#L130
2. But in the Preview, the old attachment name was still shown, as it is taken from the attachment:
https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/static/src/views/hooks.js#L373-L383
**solution**:
Use the document name when previewing it
BUG 2:
---------
**steps to reproduce**:
1. Install Documents.
2. Open any document.
3. Rename it via the chatter.
4. Try renaming it again via the details panel.
**issue**:
After renaming a document twice through the details panel, the preview still displayed the old document name.
**cause**:
On the first rename, the [insert](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/core/document_service.js#L96-L129)) method creates a new [store.Document](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/views/hooks.js#L367-L393) record with the updated attachment name. However, The write method (used by chatter) skips reloading the record and linked attachment data on the second rename.
Unlike the Rename button, which uses web_save (and triggers a record reload via web_read), the chatter directly calls write without refreshing the attachment.
**Solution**:
Ensure the preview uses the document name from the document record, keeping it consistent after multiple renames via the details panel.
**Example:** Try to rename a "Invoice.pdf" document to "Invoice_rename.pdf"
<details>
<summary>Click here to see the results:</summary>
Before:
<img src="https://github.com/user-attachments/assets/563b7fb9-709c-4651-8492-032a7f353730"/>
After:
<img src="https://github.com/user-attachments/assets/6fc6bdfe-dd1e-4f3c-aaf7-821c44fd135d"/>
</details>
opw-5065433
Forward-Port-Of: odoo/enterprise#101453
Forward-Port-Of: odoo/enterprise#95111This update allows administrators to now modify and permanently save the default size settings for sign item types within Odoo Enterprise. Previously, these sizes were fixed, limiting flexibility. This change ensures sign items can be configured to meet specific requirements without affecting new creations.
Original PR description
The default size of sign item types could not be modified. It can now be updated and stored persistently, without impacting the default size computation for newly created items. task-5420386
This update resolves an error that occurred when generating tax reports for companies not based in Belgium. The fix prevents the system from attempting to parse invalid VAT numbers, which previously caused a technical issue. This ensures accurate tax report generation for all company types.
Original PR description
**Steps to reproduce:** 1. Go to Companies and set a non-BE VAT on the current company, e.g., `US12345678` 2. Go to Accounting → Configuration → Fiscal Positions. 3. Create a new Fiscal Position and set the country to Belgium. 4. Enter a valid Foreign Tax ID, e.g.,` BE0477472701`, and save. 5. Create the taxes. **Issue:** A traceback is raised: `ValueError: invalid literal for int() with base 10: 'US12345678'` **Cause:** This happens because `_be_company_vat_communication` attempts to parse the company's VAT number even when the company does not belong to BE, resulting in invalid VAT formats such as "USxxxxxxx". **Solution:** Return an empty structured communication unless: - the VAT is valid, and - the detected country code is BE, and - the fiscal country is Belgium. This prevents parsing foreign or invalid VATs and avoids the traceback during foreign tax generation. **opw-5368016**
This update resolves an issue where employees acting as their own approvers couldn't modify their overtime requests. The fix adds necessary permissions to access work entries, allowing employees to correctly approve or reject their own time entries.
Original PR description
Employees set as themselves as approvers couldn't modify their attendances due to permission issues with other models. task-5427553
This update fixes a technical issue where payroll CFDIs generated in Mexico were missing crucial relationship information in their XML format. The change ensures that all payroll CFDIs accurately reflect the origin relationships (like substitutions and reimbursements), meeting regulatory requirements and preventing potential errors.
Original PR description
The module already computes and exposes `cfdi_relationado_data` during the CFDI generation process, but the corresponding XML node was never rendered in the CFDI template. As a result, payroll CFDIs with origin relationships (e.g. substitution, related UUIDs, reimbursements) were silently omitting the required `<CfdiRelacionados>` structure. This patch injects the missing XML section into the v4.0 template, iterating over each relation type and UUID, ensuring that the CFDI properly reflects the relationship metadata already computed by the model. Fixes the inconsistency between backend logic and XML output.
A test tour for GS1 barcode scanning was intermittently failing due to a timing issue during data updates. This fix ensures consistent behavior by applying a mutex to the barcode scanning process, preventing data inconsistencies and making the test reliable. The update also includes improvements to the tour trigger and helper methods for greater precision.
Original PR description
Runbot build error: [232683](https://runbot.odoo.com/odoo/runbot.build.error/232683)
This update fixes an error in the VAT return reporting process for Belgium. Previously, the system incorrectly set a flag to True, even for periods that weren't the end of the year. This change ensures accurate reporting by setting the flag to False for non-end-of-year periods, improving the reliability of VAT calculations.
Original PR description
When the client_nihil field was hidden from the wizard, its computation always set it to True. This was wrong : this field can only be True in the XML when in the last period of the year, so when should_display_client_nihil is True as well. In every other cases, it needs to be False. opw-5184056
This update fixes an issue where the hours view would overlap with the progress bar display in the Gantt view when work entries were activated in sparse mode. This enhancement ensures a cleaner and more accurate visual representation of work progress, improving usability for users.
Original PR description
When the work entry is activated in sparse mode prevent the hours view from overlapping. task-5410789
This update resolves an issue where field syncs in the Quote calculator spreadsheet would disappear after inserting a new row. The fix ensures that field syncs are correctly maintained when rows are added, preventing data inconsistencies and improving spreadsheet functionality. This ensures accurate data synchronization for sales quotes.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101367 Forward-Port-Of: odoo/enterprise#101066
13 changes
Resolved issues and error corrections
This update resolves a test failure within the Odoo Enterprise system. The issue stemmed from a configuration error related to employee accounting records, specifically concerning future holiday calculations. The fix ensures accurate record creation during testing, preventing the test from failing.
Original PR description
fixing runbot error https://runbot.odoo.com/odoo/runbot.build.error/234639 on test test_mrp_analytic_account_employee_from_widget introduced by this PR https://github.com/odoo/enterprise/pull/85517
**cause of the error:**
Because there is a resource.calendar.leave without calendar_id,
without resource_id and at a date after today :
during the setupclass, when the employee is created,
_create_future_public_holidays_timesheets() creates an account.analytic.line.
So at the end of the test ,
self.env["account.analytic.line"].search([('employee_id', '=', self.employee1.id)])
returns 2 records instead of 1.
runbot-234639
Forward-Port-Of: odoo/enterprise#102282This update resolves an issue where overdue invoices were printed twice in follow-up PDF reports. Previously, manual follow-up emails generated PDFs with the invoice listed redundantly. This change ensures invoices appear only once, improving the clarity and accuracy of these reports for users.
Original PR description
Issue: In a manual follow-up printed as PDF, overdue invoices appear twice. Step to reproduce: - Have an overdue invoice - go to the Partner > accounting, - Send manual follow-up - In the wizard select Print and "Attach Invoices" Current behavior: The PDF display the reminder, the invoice, the report and the invoice again. Expected behavior: Invoice should appear only once in the follow-up PDF. Solution: When manually sending the follow-up, the wizard attaches the invoices to the follow-up. Therefore, they were added a second time at the end of the document in `_get_followup_attachments`. opw-5368870
This update resolves an issue where users without the 'Expenses Administrator' group couldn't digitize receipts attached to expenses. The fix removes this restriction, allowing all users to digitize receipts, improving the user experience and streamlining expense reporting. This change is a minor bug fix.
Original PR description
When a regular user tries to digitize the receipt attached to an expense, the `UserError(_("You don't have the rights to bypass the validation process of this expense."))` is raised. It seems that currently, the user needs to be in the Expenses Administrator group (`group_hr_expense_manager`) to digitize the receipt, which doesn't seem correct.
The fix is proposed here: https://github.com/odoo/odoo/pull/240401. In this PR, I only added a test, which requires the PR on odoo core to be merged first.This update resolves an issue where the Shopee Buyer ID, used for integration with the Shopee marketplace, could exceed the maximum value for an integer. By changing the data type to ‘Char’, this prevents errors and ensures accurate data storage. This improves the stability and reliability of the Shopee integration.
Original PR description
Shopee Buyer ID’ retrieved from the marketplace can, in some cases, exceed the maximum value of the Integer data type. It has been updated to use the Char data type to prevent the ‘out of range for type integer’ error.
This update streamlines the HTML Editor's testing process by separating individual test calls. Previously, tests shared timeouts, leading to unreliable results. Additionally, unnecessary helper functions for tag creation have been removed, simplifying the codebase and improving clarity. This change enhances test stability and maintainability.
Original PR description
Description of the issue/feature this PR addresses: I. Grouping multiple testEditor in a single test is bad practice because the timeout of it is then shared between the different testEditor calls rather than each having their own separate timers. This PR splits the calls of each testEditor to its own test. II. This PR removes helper functions used to create different types of tags. Instead of simplifying the code, these helpers introduced unnecessary complexity and confusion. task-5375867 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents the system from attempting to check the Git repository when an IoT box isn't connected to a database. This improves efficiency and reduces potential issues related to disconnected devices, ensuring smoother operation.
Original PR description
This PR ignores the call to check_git_branch if no database is connected to the iot box. Forward-Port-Of: odoo/odoo#240610
This update fixes a potential issue where printing on Windows could cause the Odoo system to fail. By adding a safety net to catch printing errors, the system is now more stable and reliable for users on Windows.
Original PR description
This commit adds the try/except block around print_raw method of the virtual iot box to allow catching exceptions when printing on Windows Forward-Port-Of: odoo/odoo#238633
This update corrects a minor issue in the Peppol registration process. Previously, the EAS field automatically received focus, which was confusing for users. This change removes the ability to focus the EAS field, ensuring the system correctly pre-selects it and streamlines the registration workflow.
Original PR description
During registration on Peppol, the eas field is focused first, which makes no sense as it's supposed to be correctly preselected, and users aren't supposed to touch it So this commit makes it non-focusable 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
A bug was preventing users from completing sign requests after a user was deleted. This fix addresses a problem where the system incorrectly handled missing user information when retrieving sign request items. By safely handling cases where user IDs are missing, the system now reliably allows users to complete sign requests without errors.
Original PR description
Currently an error occurs when a user tries to click `Valid & Send Compeleted Document` as follows below: - Install the `sign` module with demo data - Log in as the `demo` user and send 2 sign requests to the `admin` user - Now log in as the `admin` user and delete the `demo`user - Go to the sing and open sign request that was sent by the `demo` user - Complete the sign and click on `Valid & Send Compeleted Document` This issue occurred while retrieving the suggested sign request items. The code was accessing the `create_uid` of those items, but because the user had been deleted, `create_uid` was set to False instead of containing a valid user ID and user name. This commit fixes the above issue by handling cases where `item['create_uid']` is False. When `item['create_uid']` is False, the code now safely returns `False` instead of attempting to access its index. sentry-7116433081
This update corrects a technical issue in the Odoo Enterprise accounting system. Previously, a specific calculation method was always used for deferred revenue, leading to inaccurate accounting entries. This fix ensures the system correctly utilizes the deferred revenue type, improving the reliability of financial reporting.
Original PR description
In c3bd8e44546df21c51914a560a28a739f55cca21, a forward-port of 0a6bc3710ee1bfdf10bfd3da7d6e24fd190432e6, the `deferred_expense_amount_computation_method` was always used instead of relying on the deferred type opw-none
This update fixes a minor usability issue where clicking 'Jump to Present' on the desktop would cause the composer to lose focus. Now, the composer automatically regains focus after this action, streamlining the user experience and allowing for immediate typing.
Original PR description
**Current behavior before PR:** clicking "Jump to Present" caused the composer to lose focus, forcing users to manually focus the input before typing. **Desired behavior after PR is merged:** The composer automatically regains focus on desktop after clicking "Jump to Present". task-[5035977](https://www.odoo.com/odoo/project/1519/tasks/5035977) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that prevented administrators from accessing employee details within the Point of Sale (PoS) frontend. The fix simply disables a feature that was causing errors, streamlining the user experience. Employee information is intended to be managed from the backend, ensuring data integrity.
Original PR description
Steps to reproduce ------------------ 1. Enable "Log in with Employees" 2. Login with any employee and make an order 3. Switch to the admin, "Mitchell Admin" usually 4. Go to the paid orders (we are still in PoS UI not in the backend), and select the order paid in step 2. 5. Click on "Details", the order form will appear, click on the "Cashier" name A traceback will appear, saying 'Cannot find key "hr_employee_form" in the "views" registry'. The fix ------- We simply disable the employee_id field; it will not try to open the employee form anymore. That is much simpler than adding all the required hr assets to the PoS frontend. Employee details are meant to be seen and navigated from the backend. opw-5252486
This update fixes a potential issue where payroll calculations could incorrectly show employees owing money to the state. The change ensures that taxable income defaults to zero when state deductions exceed gross income, preventing inaccurate payslip reporting. This improves payroll accuracy and compliance.
Original PR description
This commit simply defaults the computed taxable income amount to 0 in case the state deductions are greater than their gross income. Otherwise our payslips would imply that these employees are owed money by the state opw-5137280
7 changes
Resolved issues and error corrections
This update resolves an issue where the IoT box was incorrectly attempting to check out the correct Git branch when no database connection was present. This change improves stability and efficiency by avoiding unnecessary Git operations, ensuring the IoT box functions reliably.
Original PR description
This PR ignores the call to check_git_branch if no database is connected to the iot box.
This pull request resolves a bug related to FRGI testing within the Odoo spreadsheet module. The fix ensures accurate results are displayed during FRGI testing processes, improving data reliability. This update addresses a previously reported issue impacting spreadsheet functionality.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where users could inadvertently create invalid fields within SQL view models, like the 'sale_report'. Previously, manual creation of these fields caused disruptions to workflows. This change prevents the creation of these fields through Studio, ensuring data integrity and stability.
Original PR description
Prevent creating fields on SQL views ### Impacted versions: 17.0 and later ### Steps to reproduce: Create a new field on sale_report Open sales -> reporting -> sales -> measures ### Current behavior: When you try to create fields with Studio on models based on SQL views such as sale_report you will get a user error. However it's still possible to create these fields manually, which consequently will break some flows and it doesn't make sense to add fields Task: [5394158](https://www.odoo.com/odoo/project/49/tasks/5394158)
This update resolves a bug where the 'convert to task' option repeatedly appeared for converted Todos, causing confusion. The fix hides this option when a project is assigned, streamlining the task conversion process and improving user experience. This ensures consistent behavior when managing tasks within Odoo.
Original PR description
Steps to reproduce: - Create a Todo and convert into task using cog Menu option. - Todo is converted to task and is displayed. - Through breadcrumb go back to Todo - Try to convert it again Issue: - The converted todo is again converted (change of project etc) Fix: - Hiding the convert cog menu when a project is set. task-5075327
This update fixes a layout issue that occurred when tax group names were too long, causing the tax totals component to display incorrectly. The change adds text wrapping to the tax group labels, ensuring the interface remains readable and the display is consistent, even with lengthy tax descriptions.
Original PR description
When tax group names or tax-related content are too long, they break the layout of the tax totals component, causing display issues and making the interface difficult to read. This change adds the Bootstrap `text-wrap` class to the tax group label to enable text wrapping, ensuring that long content is properly contained within the table cell and the layout remains intact. The `text-wrap` utility class applies `word-wrap: break-word` and `word-break: break-word`, which allows long text to wrap to multiple lines instead of overflowing and breaking the table layout. Before: <img width="1920" height="868" alt="image" src="https://github.com/user-attachments/assets/cdf770ca-a586-487e-9283-45463ef4dc0e" /> After <img width="1920" height="793" alt="image" src="https://github.com/user-attachments/assets/24b9781c-d209-4a69-824c-13a59a8c9bc7" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where user activity wasn't accurately tracked, causing the presence status to incorrectly remain 'away'. By enabling event capturing, the system now reliably detects user clicks and updates the presence status to 'online' as expected. This ensures accurate user activity monitoring.
Original PR description
Before this PR, Elements that stopped event propagation (e.g., using event.stopPropagation()) prevented the global click listener from firing. As a result, user activity wasn't detected, and the presence status stayed "away" instead of switching back to "online". This PR fixes the issue by enabling event capturing on the global click listener (useCapture: true). With capture mode, the listener receives the event during the capture phase before any element can stop propagation. Bug:  task-[4892229](https://www.odoo.com/odoo/project/1519/tasks/4892229)
This update fixes a frustrating user experience where inline code snippets were difficult to remove from the Odoo web editor, particularly within lists. The change ensures that the code style disappears automatically when the last character of the code is deleted, streamlining the editing process and improving usability.
Original PR description
Text formatted as inline `<code>` (between backticks) is very difficult to remove in some situations, typically at the beginning of a list entry. This commit solves this by removing the code style when its last character is removed. Steps to reproduce: - Create a list - Type some inline code - Put the cursor in the middle - Press Enter - Type some text after the inline code on the second line - Try to remove the inline code from the second line using backspace => The line is removed before the code style disappears task-5375140