Daily updates from Odoo
Thursday, November 27, 2025
13 changes
1 change
Enhancements to existing features
This pull request enhances the website builder's user interface with several improvements, including a more intuitive way to expand row options, fixes for dark mode inconsistencies, and new controls for managing background images and videos. These changes improve the overall user experience and ensure consistent styling across different themes.
Original PR description
This pull request adds remove buttons for background images and videos, fixes several dark mode issues in the editor, and includes a few small UI improvements throughout the website builder. task-5104004
2 changes
Enhancements to existing features
This update automatically notifies users when invoices are canceled due to DGI rejections, ensuring someone is responsible for correcting and resending receipts. It also addresses a previous inconsistency where rejected invoices could unexpectedly change state, now allowing users to manually update the DGI status via a new button.
Original PR description
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify…
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify relevant users when an electronic invoice (CFE) is rejected by the DGI and, as a result, canceled in the system. The goal is to ensure that there is always someone responsible who is informed to correct and resend the receipt. - Added logs in the terminal to make the debug easier in case we want to identify rejected invoices. **Particular case of an invoice that had been rejected by DGI but the user somehow fixes it and then DGI accepts it:** - Added logic to verify both DGI state and Invoice state and adjust it accordingly when updating invoice DGI status. - Make 'Update DGI status' button always visible to be able to adjust invoices states. **== Context of the Problem ==** Previously, when Odoo detected that a CFE had been rejected by the DGI, the system proceeded to cancel the invoice automatically. However, this process was carried out silently, without generating any notification. This could mean that if no user or salesperson was actively monitoring the status of the receipts, the cancellation would go unnoticed, resulting in invoices that were never corrected or reissued. For the case of a previously rejected and then accepted invoice, we always thought that 'Rejected' state in DGI was a definite state and could not suffer any change. But recently it has been a case that this state changed, creating inconsistencies in Odoo invoices states as they appear as cancelled. With these changes, the user can adjust the invoices state by clicking 'Update DGI status' button. **== Automatic Notification Logic ==** With the new functionality, every time an invoice is automatically canceled due to a DGI rejection, the system posts a message in the document chatter to report the situation. The logic for determining who is notified is as follows: _Scenario 1: Invoice with Internal Followers_ - If the canceled invoice has at least one internal follower (an Odoo user), the system will perform the following actions: - It will post a message in the invoice chatter. - It will tag (@) all internal followers to notify them directly. _Scenario 2: Invoice without Internal Followers_ - If the invoice does not have any internal followers, the system will search for a more general but relevant audience to ensure that the notification is addressed: - It will post a message in the invoice chat. - It will tag (@) all users who belong to the “Accounting Manager” permission group (technical name: group_account_manager). Task ODOO: #[1362](https://latam-localizations.odoo.com/web?debug=1#id=1362&cids=1&menu_id=88&action=131&active_id=16&model=project.task&view_type=form) Task ADHOC: #[54799](https://www.adhoc.inc/odoo//project.task/54799) Forward-Port-Of: odoo/enterprise#98210 Forward-Port-Of: odoo/enterprise#94502
This update simplifies UBL invoice generation by automatically using the latest helpers for BIS3 and related formats. Previously, these helpers were only used for BIS3, but now they're enabled by default, ensuring consistent and reliable UBL invoice creation across various accounting systems. This change improves data accuracy and streamlines the process for generating UBL invoices.
Original PR description
Since commit 52e984037 we have enabled the new helpers by default for generating BIS3 UBLs. But we didn't enable them in the UBL formats that depend on BIS3 (NLCIUS, XRechnung, Chorus Pro etc). That was to first fix any issues in BIS3 in case the new helpers had broken something. Since the new helpers seem to be working fine for BIS3, we are now making them the default for all the formats that depend on BIS3 as well. We also add comments in the old helper methods to indicate that they are no longer used by default for BIS3 and its extensions. task-none Forward-Port-Of: odoo/odoo#237198 Forward-Port-Of: odoo/odoo#229231
9 changes
Enhancements to existing features
This update revamps the project budget section on the dashboard, providing a clearer view of forecasted, actual, and difference amounts for expenses, revenue, and combined totals. Highlighting the difference amounts with color improves usability and helps project managers quickly identify budget variances.
Original PR description
The budget section of the project dashboard now displays budget types: ``` ╔═══════════════════════╦══════════╦════════╦════════════╗ ║ ║ Forecast ║ Actual ║ Difference ║…
The budget section of the project dashboard now displays budget types: ``` ╔═══════════════════════╦══════════╦════════╦════════════╗ ║ ║ Forecast ║ Actual ║ Difference ║ ╠═══════════════════════╩══════════╩════════╩════════════╣ ║ Expense ║ ╠═══════════════════════╦══════════╦════════╦════════════╣ ║ Office Setup ║ $3,500 ║ $1,200 ║ $2,300 ║ ╠═══════════════════════╬══════════╬════════╬════════════╣ ║ Total Expense ║ $3,500 ║ $1,200 ║ $2,300 ║ ╠═══════════════════════╩══════════╩════════╩════════════╣ ║ Revenue ║ ╠═══════════════════════╦══════════╦════════╦════════════╣ ║ Client Project Alpha ║ $1,000 ║ $6,800 ║ $700 ║ ╠═══════════════════════╬══════════╬════════╬════════════╣ ║ Website Redesign ║ $2,300 ║ $2,000 ║ $300 ║ ╠═══════════════════════╬══════════╬════════╬════════════╣ ║ Total Revenue ║ $2,400 ║ $8,800 ║ $1,000 ║ ╠═══════════════════════╩══════════╩════════╩════════════╣ ║ Both ║ ╠═══════════════════════╦══════════╦════════╦════════════╣ ║ Subscription Services ║ $2,200 ║ $1,900 ║ $300 ║ ╠═══════════════════════╬══════════╬════════╬════════════╣ ║ Total Both ║ $2,200 ║ $1,900 ║ $300 ║ ╚═══════════════════════╩══════════╩════════╩════════════╝ ``` The difference amount is also highlighted with an appropriate color based on its budget type, improving clarity and usability. task-4497632
This pull request adds comprehensive Hoot tests for the UrbanPiper integration, ensuring the functionality works as expected. Additionally, minor fixes were implemented to improve stability and data handling, specifically related to receipt printing and timer display accuracy.
Original PR description
## 1. Hoot test
in this commit:
- add HOOT tests for components, model, screen, and service
- added test for methods in `order_info_popup` and `order_display`
- include tests for `pos_order`, `ticket_screen`, and `pos_store`
- add utility to generate UrbanPiper-filled order
## 2. minor fixes
in this commit:
- kept serialized data for receipt printing
- ensure timer does not display negative values
- correct variable usage in ticket screen to fetch proper props for display order
- revamp `getTime` method to use l10n time format
task: 5048312
Forward-Port-Of: odoo/enterprise#100524
Forward-Port-Of: odoo/enterprise#93780This update improves payroll calculations for Dutch employees by accurately incorporating income tax and social security premiums. This ensures compliance with Dutch regulations and provides employees with correct payslip information, improving accuracy and reducing potential payroll errors.
Original PR description
Compute accurate payslips for the Netherlands task-4306973
This update simplifies the Argentine VAT Book PDF report by removing the standard header and footer. This change aligns the report format with legal requirements in Argentina, ensuring compliance with official ledger book standards for VAT Book documentation.
Original PR description
**l10n_ar_reports:** This PR adds a new option in the cog menu of the generic report to print the VAT Book PDF without a header or footer. **account_reports:** Currently, there is no option to exclude the header from the PDF. This PR introduces a new `extra_context` parameter in the `export_to_pdf` method, allowing additional context to be passed and used as a condition when generating reports. task-5221428
This update adds new menus – Activity Types and Activity Plans – within the Appraisal configuration, streamlining the setup process for managing appraisals. This change enhances usability and ensures consistency across the HR modules, simplifying user workflows.
Original PR description
To improve usability and ease configuration in the Appraisal app, this commit adds two new submenus under the Appraisal configuration menu: **Activity Types** and **Activity Plans**. This change improves consistency across HR modules and simplifies setup for users managing appraisal-related activities. Task-5223262
This update allows users to directly create a Sales Order from a paid appointment booking within the Odoo backend. Previously, users could only create the appointment without linking it to a sales order. The new feature provides a streamlined process with visual cues and a wizard for limited customization before order creation.
Original PR description
*:appointment_account_payment NEED ==== Before this change, users could not make a manual link between meetings and a sale order, as is the case when booking a paid appointment. This means that when…
*:appointment_account_payment NEED ==== Before this change, users could not make a manual link between meetings and a sale order, as is the case when booking a paid appointment. This means that when in the back-end, the user can create a meeting for a paid appointment but cannot link it to a SO(L). SOLUTION ======== In order to centralize the management of appointments, in terms of quick overview and creation, we want the user to still be able to create new appointments from the gantt view, even in this use case. Therefore, we do not implement a product configurator, like we did in Event for instance. Instead, we simply give a visual feedback, being a top left triangle on the gantt pill, when the meeting is linked to a paid appointment, but not to any SO(L), meaning a payment may be due. Then, on the form view of the calendar event, we add a button to create a SO (when no SOL is linked, at least one partner beside the organizer is set, and other conditions are met, see show_so_creation_button) This button opens a new wizard, that allows some limited customization before creating the SO: the user can choose between attendees (beside the organizer's) and also toggle a confirmation of the SO on creation. The appointment and the total reserved capacity are also reminded there. Finally, the user can either create the SO or create and open it, in order to inspect (and eventually modify) the created record. Task-5012248
This update adjusts the maximum number of attendees allowed per appointment booking to 20. Previously, the limit was lower, which could restrict the capacity of certain bookings. This change improves the usability of the appointment scheduling feature for businesses.
Original PR description
Change the default value of allowed max capacity to 20. Task-5022849
This update enhances the LWF Summary report by adding company identification and correct date formatting, ensuring accurate and traceable reporting. The report now correctly aligns with Indian payroll workflows and restricts access to non-Indian companies, improving data integrity and user experience.
Original PR description
Before: - The Labour Welfare Fund Summary report header only displayed the main title. - Company information was missing, making reports less identifiable. - Labour Identification Number was not…
Before: - The Labour Welfare Fund Summary report header only displayed the main title. - Company information was missing, making reports less identifiable. - Labour Identification Number was not included in the report output. - Gratuity Calculation Report" was listed after "Labour Welfare Fund Report". - Updated sequences so Gratuity appears before Labour Welfare. - The LWF report displayed raw dates, resulting in inconsistent date formatting. - The report wizard opened even when the active company was not Indian. - LWF data was generated only from paid payslips, blocking use-cases where payslips were only validated. After: - Added company name below the report title for clearer identification. - Displayed the Labour Identification Number in the header section. - Updated sequences so Gratuity appears before Labour Welfare. - Dates in the report header are now properly formatted as dd/mm/yyyy. - The wizard checks the user’s active company and blocks access unless it belongs to India. - LWF lines now include payslips in both validated and paid states, ensuring timely report generation Impact: - Enhances clarity and traceability of the LWF Summary report. - Ensures users can easily identify which company and LIN the report belongs to. - Provides accurate report output, prevents usage in non-IN companies, and aligns data generation with actual payroll workflow. Task: 5000307
This update integrates previously separate benefit calculations into the core salary rules for Hong Kong payroll. This change ensures more accurate and compliant payroll processing by aligning benefit payments with overall salary structures. It improves the system's ability to handle complex HK payroll regulations.
Original PR description
this commit converts benefits into salary rules. task-5122333
1 change
Enhancements to existing features
This update simplifies the link editing process by consolidating actions into a single, wider popover. The redesign removes a copy button and streamlines the user interface for easier link creation and management. These changes enhance the overall user experience and improve consistency within the Odoo website builder.
Original PR description
The link popover previously had multiple buttons, making the link editing experience less intuitive. This commit unifies actions into a single wider popover and refactors some logic to improve…
The link popover previously had multiple buttons, making the link editing experience less intuitive. This commit unifies actions into a single wider popover and refactors some logic to improve consistency. ## UI/UX changes: - Replaced three buttons (copy, edit, remove) with one "Edit" button, which opens the link editing view. | Before | After | | ------------- | ------------- | |  |  | - Widened the popover for better readability. - Removed the copy link feature. <br/> ## Changes in link editing view: - Moved the "remove link" button in this view. <kbd></kbd> - Updated URL input placeholder to: "Enter URL, /page, or #anchor". - Auto-focus the URL input when creating a link for selected text. - Auto-focus the label input when creating new links or editing existing links. task-[4862671](https://www.odoo.com/odoo/project/974/tasks/4862671) Co-authored-by: adch-odoo \<adch@odoo.com\> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr