Friday, October 31, 2025
42 changes · master
Resolved issues and error corrections
Adding emojis to poll options now works without causing an error. This prevents interruptions when users create polls in discussions and keeps the polling experience reliable.
Original PR description
**Description of the issue this PR addresses:** Fix the traceback that occurs when adding emojis to a poll. **Steps to Reproduce:** - Start a poll - Try adding emojis to a poll option **Current behavior before PR:** Before this PR, the emoji picker element was correctly referenced in the component, but was not used properly inside the useEmojiPicker hook. As a result, the code attempted to access an undefined reference, causing an error when interacting with the picker. **Desired behavior after PR is merged:** This PR ensures that the correct reference is used within useEmojiPicker, resolving the issue. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Add to Cart button in the product options pop-up now appears in the selected website language. This improves the shopping experience for customers using non-English versions of the online store.
Original PR description
- t-out is used for variables, so static text inside it isn’t picked up for translation. - Replaced it with a direct <span> so the text is automatically translatable **Before Fix:** <img width="1185" height="915" alt="image" src="https://github.com/user-attachments/assets/dc035e6a-25d1-4b88-9b8f-c013a0aeb75b" /> **After Fix:** <img width="1185" height="915" alt="image" src="https://github.com/user-attachments/assets/80bd5e7b-c705-49a8-a785-86e32bc54daf" /> **Steps to reproduce before the fix:** Go to Website → change the website language to any non-English language. Add any product to the cart. A Product Configuration wizard (for options) will open. The “Add to Cart” button for options is not translated. 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#233715
Website editors can once again change the main heading on the blog landing page, such as “Our Latest Posts.” This restores expected editing behavior for blog pages and helps teams keep public content aligned with their messaging without workarounds.
Original PR description
*: html_builder, website Since [1] and [2] reverting it by mistake, the blog landing title was not editable anymore. Steps to reproduce: - Open /blog in the website editor. - Try to edit the "Our Latest Posts" heading. After this commit the heading becomes editable in the website editor. [1]: https://github.com/odoo/odoo/commit/ec49429d0d405948fcb93228e7350dfea585246f [2]: https://github.com/odoo/odoo/commit/f503f98915ab39efff80a5904494c879805bb057 Forward-Port-Of: odoo/odoo#233154
This fix makes attendance overtime calculations handle missing unusual-day information safely. It helps avoid unexpected errors in edge cases, improving reliability for HR attendance processing without changing normal user workflows.
Original PR description
add extra guard for access unusual_days dict using `.get(key, None)` instead of normal `dict[key]` Task: 5107868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228338
This fix keeps links created inside formatted text from breaking the surrounding styling. Users editing website or email content can type around link edges without accidentally adding plain, unformatted text.
Original PR description
Problem: If we add a link on a slice of formatted text we end up being able to type unformatted content at the link edges. Cause: After https://github.com/odoo/odoo/commit/3bcbd6f34facb9c88290dbd6496cc5103665a0a2 the `span` can be split and `feff`s are placed around the link, precisely between the link and the `span`. This allows writing unformatted content at the caret when placed between them. Solution: Ensure that the link is created inside the `span`. Also prevent the formatting applied by `.btn` when the link is inside a `span`. Steps to reproduce: 1. Add "abc". 2. Format all the text: set font size 48 (or whatever). 3. Select "b". 4. Create a link on "b" only. 5. Put caret before "a". 6. Press Arrow left. 7. Type any character. → The character is not formatted as the link content. task-5092298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232994 Forward-Port-Of: odoo/odoo#228353
Calendar week view now shows the correct start and end times for events that span multiple days. This prevents misleading 12pm or midnight times from appearing on intermediate days, making scheduling clearer for users.
Original PR description
When creating an event in week view spanning over multiple days, all parts of the event display 12pm as end date (except the last one) and 00am as the start date (except the first one). This fix allow calendar views to display the correct hour in week view when the event spans multiple days. task-4700158 Forward-Port-Of: odoo/odoo#233642 Forward-Port-Of: odoo/odoo#230624
Clearing the Horizon days field in Inventory Replenishment no longer causes an error. The system now treats an empty value as 0 days, keeping the replenishment view usable and preventing disruption for inventory users.
Original PR description
Currently, an error occurs when the Horizon days field was cleared in the Replenishment view by the user. **Step to Reproduce:** - Install the `purchase_stock` module. - Create a new product and set…
Currently, an error occurs when the Horizon days field was cleared in the Replenishment view by the user. **Step to Reproduce:** - Install the `purchase_stock` module. - Create a new product and set the Minimum Quantity in the reordering rule (e.g., 5). - Update the In Hand Quantity to a value greater than the minimum (e.g., 10). - Go to Inventory > Operations > Replenishment. - In the Horizon section on the left panel, clear the days field. **Cause:** When the Horizon days field is cleared, **NaN** value is assigned to the context as `global_horizon_days` at [1]. As a result, the `get_horizon_days()` method returns **None**, which later triggers an error at [2] when performing date computation. **Error:** `TypeError- unsupported operand type(s) for +: 'NoneType' and 'int'` **Fix:** This commit handles the issue by defaulting the Horizon days value to 0, when the input is empty. [1] - https://github.com/odoo/odoo/blob/e7aeef2fca0897e5240b087e2c3b95291ed6d568/addons/stock/static/src/views/search/stock_orderpoint_search_panel.js#L21-L24 [2] - https://github.com/odoo/odoo/blob/e7aeef2fca0897e5240b087e2c3b95291ed6d568/addons/stock/models/stock_orderpoint.py#L816 sentry-6936562315 Forward-Port-Of: odoo/odoo#232040
Creating a new user from a project task now creates their onboarding todo as a standalone todo, rather than accidentally turning it into a task in the current project. This prevents project task lists from being cluttered with onboarding items and keeps user setup steps in the right place.
Original PR description
Before this commit, when the user creates a new user from the user_ids field of a task, an onboarding todo will be created with the context given by Framework JS, which means, if the context contains `default_project_id` the onboarding todo will become a task inside the project instead of being a real todo (task with no project set). This commit makes sure the context is reset before creating the onboarding todo. task-5217306 Forward-Port-Of: odoo/odoo#233447
Uploading or previewing a PDF attachment with missing file data no longer triggers an error. This improves reliability in Discuss by handling invalid PDF files gracefully instead of interrupting the user experience.
Original PR description
Currently, an error occurs when trying to preview the first page of a PDF attachment in Discuss if the PDF has no raw data. **Steps to produce:** - Install the `mail` module. - Open `Discuss` and attach the PDF file without raw data [1]. **Error:** `TypeError: a bytes-like object is required, not 'bool'` **Root cause:** At [2], `to_pdf_stream` directly calls `io.BytesIO()`, when the attachment has no `raw data`, Python raises an `error`. **Fix:** This commit prevents errors when a user attaches a PDF file that has no raw data. [1]: https://drive.google.com/file/d/1onJYlCL_k51UwqKhc0kFaYFJynKuk4fT/view?usp=sharing [2]: https://github.com/odoo/odoo/blob/d42102cac8fff3967cb605a897bbb0e8690464ed/odoo/tools/pdf/__init__.py#L222 sentry-6963775400 Forward-Port-Of: odoo/odoo#233338
Archiving an employee with a departure description no longer triggers an error. The change keeps the departure note visible in the employee record chatter instead of using unsupported automatic tracking, helping HR users complete offboarding smoothly.
Original PR description
Issue: The tracking is not implemented for the html field, so when we archive an employee the tracking cannot work. Purpose of this PR: The tracking has been removed from the html field. The tracking is now replaced by a message in the chatter in the write method. Steps to Reproduce on Runbot: install hr archive employee set a `departure description` Notes: originally fixed by #140527 reintroduced by #223342 opw-5137695 Forward-Port-Of: odoo/odoo#229817
This fixes an issue where live chat operators with standard live chat permissions could not pin a customer's message after a chatbot handed the conversation over to them. The change prevents an unnecessary chatbot permission check during message pinning, keeping support workflows running smoothly.
Original PR description
To reproduce (on runbot): - S1: Connect as "admin", leave the "YourWebsite.com" then logout - S1: Connect as "demo" user - S2: As public user, go to /contactus and start a chat session - S2: On the chatbot interaction, choose "I have a pricing question" (this will forward to the operator) - S2: enter a message - S1: On the livechat session, try to pin the last user message Since 1ecddc3d79dd an `AccessError` is raised, as the "demo" user (which is only `LiveChat / User`) don't have access to the chatbot step anymore. As we're not in the interacting with the chatbot when pinning a message, simplify skip that part if there is no "chatbotx answner" context to prevent the `AccessError`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233617
Removing a decorative image shape in the website editor now restores the image to its original proportions when no custom crop was set. This prevents images from staying unexpectedly cropped or distorted, improving the editing experience for website users.
Original PR description
Steps to reproduce: - Enter website edit mode. - Drag and drop a snippet containing an image onto the page. - Click the image. - Apply a shape that enforces a 1/1 ratio with stretch disabled (e.g the first one). - Remove the shape with the close button. Before this commit, removing the shape kept data-aspect-ratio at 1/1, so the picture stayed cropped or distorted. After this commit, removing the shape clears the crop dataset when no manual crop values exist, restoring the original proportions. task-5170195 Forward-Port-Of: odoo/odoo#231865
Products opened through internal links can now be marked as favorites correctly. This fixes a small usability issue so users can save preferred products regardless of how they accessed the product page.
Original PR description
Steps to reproduce: - Access any product through an internal link that redirects to `product.product`. Problem: - Unable to favorite a products accessed through internal links that redirect to `product.product`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a Point of Sale issue where products tracked by lot could still receive a lot number even after the cashier canceled the selection while loading a sales order. Canceled choices are now respected, helping prevent incorrect product traceability on POS order lines.
Original PR description
Before this commit, when loading a sale order containing an order line tracked by lot, the system prompted the user to select a lot. However, even if the user canceled the selection, the lot was still added to the order line. After this commit, the lot will no longer be set if the user cancels the selection. opw-5162487 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233281
A leftover action that referenced a removed process was deleted from the self-order service. This prevents potential errors for customers using POS self-ordering and keeps the ordering flow stable.
Original PR description
Before this commit, there was still a call to the resetTableIdentifier, even though the function had been removed, which could cause errors. opw-5166737 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232521
This fixes an issue where website fuzzy search could use outdated information instead of the latest available content. The change helps visitors see more accurate search results after website data changes.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an upgrade issue that could occur if the default admin employee record had been removed. The HR data setup is adjusted so upgrades no longer fail in that case, helping keep payroll-related updates smoother.
Original PR description
The data file adds `structure_type_id` field to `employee_admin` [because](https://github.com/odoo/odoo/pull/217855) it is required in module `hr_payroll`. The original record for `employee_admin` became `forcecreate=0` but the override (in the same file) still will try to create it with no data if the users have removed the record. This fix moves the override to the module where it is needed, with forcecreate=0. Issue encountered during upgrades --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231234
Recruitment applicant matching now handles job positions with no measurable skill expectations without crashing. This keeps recruiters from seeing an error when evaluating applicants for positions where expected skill levels or degrees add up to zero.
Original PR description
**Traceback :** ``` File "/home/odoo/src/odoo/19.0/addons/hr_recruitment_skills/models/ hr_applicant.py", line 72, in _compute_matching_skill_ids matching_score = round(applicant_total / job_total *…
**Traceback :** ``` File "/home/odoo/src/odoo/19.0/addons/hr_recruitment_skills/models/ hr_applicant.py", line 72, in _compute_matching_skill_ids matching_score = round(applicant_total / job_total * 100) ZeroDivisionError: float division by zero ``` **Steps to Reproduce:** - Install recruitment app. - For any job position, select all expected skill level such that level_progress is 0 and no expected degree . **Description:** - While calculating matching score for applicants here https://github.com/odoo/odoo/blob/19.0/addons/hr_recruitment_skills/models/hr_applicant.py#L72 a ZeroDivisionError occurs if 'job_total' is zero. - This situation occured because in 19 version new feature to calculate applicants matching score was introduced in https://github.com/odoo/odoo/commit/164b55c324e63c45339088823e3d55dfe2147b61 and job_degree,applicant_degree, level_progress in skills for job and applicants were not present in older versions making job_total as 0 causing above traceback - This commit adds a safety check to ensure the division only occurs if 'job_total' is non-zero . and if job_total is 0 , there is no expectation required for this position which makes matching score 100 . Forward-Port-Of: odoo/odoo#230323
The website form builder now keeps at least one option in multiple-checkbox fields. This prevents users from ending up with an empty field where new options can no longer be added, improving reliability when editing forms.
Original PR description
Since `html_builder`, the last element of a multiple checkboxes form field can be removed, but it leads to a situation where no element can be added anymore to the field. To avoid this, this commit restores the former behavior which did forbid the removal of the last element. Steps to reproduce: - Drop a form snippet - Add a field - Set the field type to "Multiple checkboxes" - Remove all options => It was possible to remove the last option. task-4367641 Forward-Port-Of: odoo/odoo#232886 Forward-Port-Of: odoo/odoo#230827
This update corrects outdated internal resource names used by the website editor. It helps ensure accordion editing behavior continues to work as intended after earlier naming changes.
Original PR description
Since [1], the `force_editable_selector` resource has been renamed into `content_editable_selectors` and `force_not_editable_selector` into `content_not_editable_selectors`. However, resources introduced by [2] have not been converted by mistake. This commit fixes it. [1]: https://github.com/odoo/odoo/commit/13565e0330bbc44eeecbb5d2ecd3acd7b4cdded4 [2]: https://github.com/odoo/odoo/commit/627c1a5a3a113014d1d586a5179ebfe88549f809 task-5222853 Forward-Port-Of: odoo/odoo#233733
This fixes how Facebook video links are recognized when users embed them in the HTML editor. It helps ensure Facebook videos are handled correctly and avoids broken or misclassified embeds caused by URLs containing extra link parameters.
Original PR description
This PR improves the changes made in PR #215204.
When embedding facebook videos, the url looks like
`"//facebook.com/plugins/video.php?href=https://www.facebook.com/username/videos/{video_id}/"`
after embedding, so we need to check for "https:" and "http:"
with method `startsWith` instead of `includes`.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#231837This fixes a crash that could occur when users viewed results for a poll whose original start message was not loaded. Poll closing information now uses reliably available poll ownership details, helping users see poll results without interruption.
Original PR description
When a poll result of an unknown poll is displayed, an error occurs. It happens because the poll ended text relies on the poll start message author which is not sent when closing a poll. As a result, when the start message of the poll has not been loaded, the author is not available. This commit updates the poll ended UI to use the `create_uid` of the poll instead and by ensuring the relying partner is always sent. 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
Users can now disable the blurred background in mail call previews without causing the call preview to crash. This makes the calling experience more reliable when changing background settings quickly.
Original PR description
Before this PR, disabling blur background right after enabling it would crash because the notification service was not initialized in the `CallPreview` component. This PR adds the missing notification service to fix the crash. Task-5223992 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233894
A timesheet test now uses a fixed working-day date so it does not fail when automated checks run on a weekend. This helps keep validation results stable without changing how employees use timesheets.
Original PR description
Before this commit, `test_multi_create_timesheets_from_calendar` test fails during the weekend because the first timesheet created inside that test assumes it is created during working date but if the current date is a weekend it is not the case. This commit adds freeze_time on that test to make sure the current date is a working day. runbot-error-233318
This update fixes a small issue in the Mail module where internal child component references were not properly removed after those components disappeared. It helps prevent stale interface state and supports more reliable behavior in mail-related screens.
Original PR description
The `useForwardRefsToParent` hook forwards child refs to a parent component. To do so, it relies on `useEffect` and it cleanup. However, the cleanup function is not returned which prevent children that unmount from being removed. This commit fixes this typo. 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
The date and time picker now shows clearer hover and focus feedback, making it easier for users to see what they are selecting. Dark mode styling was also corrected so the calendar and time input remain readable and visually consistent.
Original PR description
The `DateTimePicker` lacks hover and focus states. In darkmode the calendar doesn't have the proper elevation background color and the input border on `TimePicker` is not visible. task-4900904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233650
This fix ensures that when a customer is selected after an online payment line is added in Point of Sale, the customer information is correctly saved once the payment is completed. This helps keep order records accurate and avoids missing customer details for online-paid POS transactions.
Original PR description
Before this commit, if a partner was selected after adding an online payment line, the partner was not synced after completing the online payment. opw-5098127 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233601 Forward-Port-Of: odoo/odoo#232455
Product images in card-style shop listings now display correctly on right-to-left websites such as Arabic. This prevents image corners from visually sticking out of their containers, improving the storefront appearance for RTL customers.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Enable Arabic (or any RTL language) for the website. 2. Navigate to the shop page. 3. Edit "Product Design" to be "Cards" list. Issue ----- The rights corners of the product images are not rounded, and are sticking out of the container, while the left corners are rounded, when they should be straight. Cause ----- The rounded corners of the image are applied the same way regardless of the direction of the whole page, while the rest of the elements, including the container for the image, are flipped. Solution -------- Add a CSS rule to handle specifically the RTL case. opw-5173879 Forward-Port-Of: odoo/odoo#233809
Gelato shipping addresses are now shortened automatically when they exceed Gelato's field limits. This helps prevent order processing failures caused by overly long address details while keeping the shipping workflow smooth.
Original PR description
Address fields are trimmed to fit the Gelato character limit for shipping address fields. opw-5207430 Forward-Port-Of: odoo/odoo#233050
Testing an import with a limited batch size no longer affects the subsequent real import. This prevents users from accidentally importing only the final batch of records after a successful test run.
Original PR description
Steps to reproduce ================== - Go to contacts - Click on the cog menu > Import records - Upload a csv file - Limit the batch limit to a value lower than the total number of records in the csv file - Click on the test button - Click on the Import button => Only the last batch is imported Cause of the issue ================== The start line is not reset after the test import, which can be confusing Solution ======== When the test import fully succeeds, we reset the start line opw-4916102 Forward-Port-Of: odoo/odoo#233879 Forward-Port-Of: odoo/odoo#230805
Users can now add reactions from the pinned messages panel without encountering an error. This improves reliability in Odoo Discuss by ensuring the reaction action works consistently across message views.
Original PR description
**Description of the issue this PR addresses:** Prevent traceback occurs on pinned panel **Steps to reproduce:** - Send any message to the channel - Add a reaction - Pin that message - Go to the pinned message panel - Try adding a reaction again **Current behavior before PR:** Before this PR, when a user tries to add a reaction from the pinned panel, it throws an error because `env.getCurrentThread` is not defined in that environment and is called unconditionally. **Desired behavior after PR is merged:** This PR ensures `env.getCurrentThread` is only accessed if it is defined, preventing the error in contexts where the thread environment is not available. task-[5153215](https://www.odoo.com/odoo/project/1519/tasks/5153215) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230924
The project sharing task view no longer shows an unnecessary slider option for portal users. This keeps the shared project experience cleaner and avoids exposing controls that are not intended for that audience.
Original PR description
Steps to reproduce: - Open any shared project from portal account. - Open any task Issue: - Visible slider with Show Sub Tasks option. Reason: - Unwantedly added ControlPanel into FormView of Project Sharing View. - Issue from https://github.com/odoo/odoo/pull/224203. Fix: - Remove the ControlPanel in Form View and extend web Control in xml to acheive the button. Forward-Port-Of: odoo/odoo#233939
This fix prevents Swiss payroll issue checks from failing when payslip adjustments are evaluated automatically. Users will now only see the restriction when they explicitly open the adjustment wizard, keeping payroll validation flows more reliable.
Original PR description
Tests failing in l10n_ch_hr_payroll_account because since the ajustment of payslips have been moved to the issues, the action_adjust_payslip is run at the compute of the issues which raises for Switzerland. Instead, we should raise in the default_get of the wizard if we click on the button. Task: 5223242
This update corrects a small reference mistake that could trigger an error when the Indian payroll feature looked for the wrong employee group. It helps payroll-related screens and processes run reliably without unexpected access group failures.
Original PR description
Before this commit an error would trigger caused by a small typo where instead of referencing the hr_payroll module it referencd the hr module which did not define that group. The first appearance is odoo/enterprise#90795. task-5129283 Forward-Port-Of: odoo/enterprise#96000
Dimona-related employee fields are now shown only for Belgian employees instead of appearing for everyone. This keeps employee records cleaner and ensures country-specific payroll information is displayed only where relevant.
Original PR description
Before this commit, the fields about dimona were shown for all employees, now these fields will be displayed only for belgian employees. task-5148931 Forward-Port-Of: odoo/enterprise#96703
Opening a field service task from the map view now works without triggering an error. The fix updates time formatting so it respects local settings while avoiding seconds, improving reliability for field service teams using the map.
Original PR description
Steps: -------- - Install industry_fsm - Go to FSM app > Map Issue: -------- When opening the FSM task from the map menu, a traceback occurs. Cause: ---------- The removal of `shortTimeFormat`, as shown in the this commit. https://github.com/odoo/odoo/commit/062b14097033afc19252cf3b8bb1fc541f8c868d#diff-39c1e6808cb2412961c390a24d5e6737f2fca1ef85ba2c40e501114311f596c2L67 Fix: ---- In this commit, the time object is built to be able to format the time without any seconds and take into account the time format defined in localization. task-5220054 Forward-Port-Of: odoo/enterprise#98369
This fix improves validation around weekly available hours when an employee is created today but their work assignment started in a previous month. It helps ensure attendance planning shows correct availability in week views for this scenario.
Original PR description
Modified the test case to check the flow for when we create employee for the date = today and set him an occupation starting in the past month. task-4985887 Forward-Port-Of: odoo/enterprise#92023
The payslip screen no longer shows an export button that led users to a missing page. This prevents confusion and avoids a dead-end error when reviewing payroll records in debug mode.
Original PR description
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the…
Steps to reproduce: ------------------------- 1. Install `hr_payroll` module 2. Enable debug mode and click on Become Superuser 3. Go to All Payslips and open any payslip record 4. Click on the Export Payslip button Observation: ------------------------- A 404 (Page Not Found) error appears when clicking the Export Payslip button Issue: ------------------------- The button triggers the route `/debug/payslip/<id>`, which was removed in the following commit https://github.com/odoo/enterprise/commit/57969bcaf876a13c36794adeb47e0da938e297ad#diff-0105b1a6a9e742e7eeaf7cc727745ebd3932177378d46332d4ca854f931b3359 The route was never reintroduced afterward, but the Export Payslip button remained in the view. As a result, clicking it leads to a 404 error Solution: ------------------------- 1. Temporarily bypass the `action_export_payslip` function. 2. Remove the Export Payslip button from the XML in the master forward port branch, as doing so does not impact any existing customizations relying on that button opw-5115946 Forward-Port-Of: odoo/enterprise#97361 Forward-Port-Of: odoo/enterprise#96359
The approval request print report now has cleaner formatting, with better label spacing and more consistent heading sizes. This makes printed or exported approval requests easier to read and more professional for users.
Original PR description
Steps to Reproduce: - Install approvals module. - Navigate to Approvals → My Approvals → My Requests → Print report. Issue: - The formatting of the report is not proper. Solution: - Fixed the report's QWeb template (approvals.report_aprroval_request_document). - changed col-2 to col-3 to give the labels more space and improve alignment with the field values - changed h5 to h6 for more consistent and appropriate font size throughout the document **before :** <img width="777" height="818" alt="image" src="https://github.com/user-attachments/assets/86cbaf50-191a-412b-9b8e-149442256819" /> **after :** <img width="829" height="623" alt="image" src="https://github.com/user-attachments/assets/da237a87-7a7b-45db-8347-d64e1e987469" /> Forward-Port-Of: odoo/enterprise#95609
This fixes an installation issue when the Mexican payroll module is installed by itself. The module now includes the required demo company data again, so its demo departments and related records can be created successfully.
Original PR description
In the pr #95221 the data from the demo company where no new fields were added was deleted. This decision was made to standardize the demo data in the smallest number of modules. However, the l10n_mx_hr_payroll module does not depend on any other l10n_mx module, as it does not need any of the information added by the other modules, but it does add information about departments and other items based on the company's demo data. This caused an error when installing this module alone, as it attempted to add this information to a company that did not exist. To fix this, the company information is also added as demo in this module, as it was before. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#98404
This update makes an appointment test more dependable by matching how customer booking details are handled in the real booking flow. It reduces false test failures without changing the customer-facing appointment experience.
Original PR description
The test 'test_customer_event_description' was failing inconsistently due to a discrepancy in how the event description is generated. The test previously relied on the base calendar model's logic,…
The test 'test_customer_event_description' was failing inconsistently due to a discrepancy in how the event description is generated. The test previously relied on the base calendar model's logic, which automatically creates a description by selecting the first partner associated with the event (excluding the organizer) based on default record ordering. This selected partner may not always be the actual person who booked the appointment. However, when a user books through the front-end, the controller uses specific logic to build the description, correctly identifying the booker and bypassing the model's default behavior. This difference caused the test to occasionally choose the wrong partner for the description, resulting in unpredictable failures. This commit aligns the test more closely with the actual booking behavior seen by users. It now explicitly prepares the event description using the designated booker's details and prevents the base model logic from interfering. This ensures the test is reliable and accurately validates the description content. A potential future improvement would involve refactoring the controller's description logic into the model layer for better testability, as the current test mimics the controller logic, which could diverge over time. Task-5207757 Forward-Port-Of: odoo/enterprise#98221
Users importing Indian e-invoice IRN JSON files can now complete the process even when they do not have access to certain company settings. This prevents an unnecessary permission error and helps invoice imports proceed smoothly for affected users.
Original PR description
When importing an IRN JSON as an invoice, users without sufficient access rights to `res.company` fields encountered an access error on `l10n_in_edi_production_env`. This commit uses `sudo()` to safely read the company’s EDI environment configuration without requiring extra permissions. Before this PR: Import failed with error: `You do not have enough rights to access the field 'l10n_in_edi_production_env' on Companies (res.company)` After this PR: Import proceeds successfully for users without `res.company` read rights. Forward-Port-Of: odoo/enterprise#98528