Daily updates from Odoo
Monday, June 15, 2026
23 changes
4 changes
Enhancements to existing features
This update enhances the visual quality of Odoo invoices generated through the account_edi_ubl_cii module. The changes include a refined header and footer, a disclaimer indicating the document is not official, and branding to identify invoices as 'Generated by Odoo'.
Original PR description
The previous UI was a little bit raw. To improve the client experience, we made the following changes: - Modify an inherited internal layout to improve header and footer. - Add a pill that says "Generated by Odoo". - Add a sentence mentioning that it is not an official document. Task-6132980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260393
This update enhances the way quantities are handled in the Point of Sale system, specifically within the 'decrease quantity' popup. It now allows for formatting and parsing of quantities, providing greater flexibility and control, while also ensuring that constraints (like preventing negative quantities) can be enforced by other modules.
Original PR description
We now allow formatting and parsing quantity on an orderline when using the decrease quantity popup. This allows overriding from other modules to add contraints (e.g. `pos_blackbox_be` prevents from setting negative quantities). see odoo/enterprise#119702 task-5942777 Forward-Port-Of: odoo/odoo#269936 Forward-Port-Of: odoo/odoo#269487
This update improves the speed and efficiency of selecting timesheets by prioritizing recently used projects, tasks, and helpdesk tickets within the systray timer. The timer now learns from your activity, surfacing the records you've tracked time on most frequently, reducing the need for manual searches.
Original PR description
Before this PR --- The systray timer used the default search ordering, making users repeatedly search for projects, tasks, and helpdesk tickets they had recently tracked time on. After this PR --- The systray timer now ranks projects, tasks, and helpdesk tickets according to recent timesheet activity. Frequently used records are surfaced first while preserving the existing prefill behavior, making timer selection faster and requiring fewer manual searches. task - 6216535 Forward-Port-Of: odoo/enterprise#118299
This update now automatically logs the reasons why orders are skipped during synchronization with Lazada. Previously, users had to manually investigate order details to understand the cause. This enhanced logging provides clearer insights into synchronization issues, streamlining troubleshooting and improving order processing reliability.
Original PR description
Before this commit, the only way to know why an order was not synchronized was to inspect the order details and infer the reason from the code. This commit now logs those reasons. Forward-Port-Of: odoo/enterprise#120212
5 changes
Enhancements to existing features
This update significantly improves the speed of searching for partners within the Point of Sale module, especially when dealing with large customer databases. By optimizing the search process and removing unnecessary sorting, the system responds more quickly, leading to a better user experience. This change focuses on internal performance improvements.
Original PR description
Improve partner search response time on large databases (1M+ rows): - Implement smart field selection based on input type (phone, email, text). - Use prefix search (=ilike) for identifiers and exact match for barcodes. - Remove expensive sorting by complete_name in the backend. - Increase search limit to 500 to reduce network round-trips. task-id: 6143737 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265943 Forward-Port-Of: odoo/odoo#260347
This update improves the timesheet timer by prioritizing recently used projects, tasks, and helpdesk tickets. This reduces the time users spend searching for relevant records and streamlines the timesheet entry process. The change preserves existing prefill functionality for a seamless experience.
Original PR description
Before this PR --- The systray timer used the default search ordering, making users repeatedly search for projects, tasks, and helpdesk tickets they had recently tracked time on. After this PR --- The systray timer now ranks projects, tasks, and helpdesk tickets according to recent timesheet activity. Frequently used records are surfaced first while preserving the existing prefill behavior, making timer selection faster and requiring fewer manual searches. task - 6216535
This update enhances the Point of Sale system by allowing flexible formatting and parsing of orderline quantities within the decrease quantity popup. This change enables other modules to enforce quantity constraints, such as preventing negative values, improving overall order accuracy and data integrity.
Original PR description
We now allow formatting and parsing quantity on an orderline when using the decrease quantity popup. This allows overriding from other modules to add contraints (e.g. `pos_blackbox_be` prevents from setting negative quantities). see odoo/enterprise#119702 task-5942777 Forward-Port-Of: odoo/odoo#269487
This update enhances the visual quality of Odoo invoices generated through the account_edi_ubl_cii module. The changes include a refined header and footer, a clear disclaimer indicating the document is not official, and a "Generated by Odoo" pill for transparency. These improvements contribute to a better user experience.
Original PR description
The previous UI was a little bit raw. To improve the client experience, we made the following changes: - Modify an inherited internal layout to improve header and footer. - Add a pill that says "Generated by Odoo". - Add a sentence mentioning that it is not an official document. Task-6132980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260393
This update now automatically logs the reasons why orders fail to synchronize with Lazada. Previously, users had to manually investigate order details to understand synchronization issues. This enhanced logging provides clearer insights and helps our team quickly identify and resolve synchronization problems, improving order fulfillment accuracy.
Original PR description
Before this commit, the only way to know why an order was not synchronized was to inspect the order details and infer the reason from the code. This commit now logs those reasons. Forward-Port-Of: odoo/enterprise#120212
4 changes
Enhancements to existing features
This update enhances the synchronization of point-of-sale (POS) transactions with Fiskaly, our payment processing partner. It separates flows for retail and restaurant orders, ensuring more accurate and timely updates are sent, particularly during kitchen synchronization for restaurants. This improves the reliability of financial reporting.
Original PR description
In this commit: ------------------ - Maintain separate Fiskaly transaction flows for retail (short tx) and restaurant (long tx) orders as discussed with the Fiskaly team. - `Initialize order…
In this commit: ------------------ - Maintain separate Fiskaly transaction flows for retail (short tx) and restaurant (long tx) orders as discussed with the Fiskaly team. - `Initialize order transactions` with an empty payload when the `first product` is added. - Start `receipt transactions` with an empty payload when the `first payment line` is added. - For retail flows, no intermediate order updates are sent to Fiskaly before finalization. - For restaurant flows, create additional transaction updates during kitchen synchronization. Ensure already synchronized products are not resent, and only newly added or updated quantities are included in the payload. - `Finalize order and receipt transactions` with complete order lines and payment details when we validate the order. task: 6208963 Reference: <img width="1863" height="1285" alt="de_tss_flow" src="https://github.com/user-attachments/assets/9140788e-7948-4a08-9f11-27197b22ca8b" /> Forward-Port-Of: odoo/enterprise#119912 Forward-Port-Of: odoo/enterprise#117526
This update enhances the Point of Sale system by allowing more flexible formatting and parsing of order quantities within the decrease quantity popup. This change enables other modules to enforce quantity constraints, like preventing negative values, improving overall order accuracy and data integrity.
Original PR description
We now allow formatting and parsing quantity on an orderline when using the decrease quantity popup. This allows overriding from other modules to add contraints (e.g. `pos_blackbox_be` prevents from setting negative quantities). see odoo/enterprise#119702 task-5942777 Forward-Port-Of: odoo/odoo#269487
This update enhances the visual appearance of both customer receipts and preparation tickets within the Point of Sale system. Specifically, font styling has been improved and floor information is now displayed alongside table numbers on preparation tickets, providing clearer details for staff.
Original PR description
In this commit - --------------- Enhanced font styling for receipt and preparation ticket Added floor information next to table number on preparation ticket Task - 6125322 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260559
This update enhances the visual appearance of Odoo invoices generated through the account_edi_ubl_cii module. The changes include a refined header and footer, a confirmation message indicating the document was created by Odoo, and a disclaimer stating it's not an official document. These improvements contribute to a more professional and user-friendly experience for our clients.
Original PR description
The previous UI was a little bit raw. To improve the client experience, we made the following changes: - Modify an inherited internal layout to improve header and footer. - Add a pill that says "Generated by Odoo". - Add a sentence mentioning that it is not an official document. Task-6132980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260393
1 change
Enhancements to existing features
This update enhances the appearance of Odoo invoices generated through the account_edi_ubl_cii module. The changes include a refined header and footer, a "Generated by Odoo" indicator, and a disclaimer stating that the document is not official, resulting in a more polished and professional user experience.
Original PR description
The previous UI was a little bit raw. To improve the client experience, we made the following changes: - Modify an inherited internal layout to improve header and footer. - Add a pill that says "Generated by Odoo". - Add a sentence mentioning that it is not an official document. Task-6132980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#260393
7 changes
Enhancements to existing features
This update adjusts the Odoo Enterprise menu to place the Obox application at the end of the app list, just before the 'Apps' and 'Settings' sections. This change improves user discoverability of Obox within the application interface.
Original PR description
This commit changes the Obox menu sequence so that the app appears at the end of the apps list by default (just before Apps and Settings). task-6275407 Forward-Port-Of: odoo/enterprise#119337
This update introduces support for calculating and reporting the 13th month for employees in Belgium, aligning with local regulations. Employers now need to track and prorate this amount, which impacts payroll calculations and reporting, ensuring accurate tax deductions and payslip information. The system now handles the complexities of calculating this 13th month based on work hours and leave types.
Original PR description
At the end of the year, or when ending collaboration with an employee, the employer may have to compute (not pay) the gross amount of the 13th month that the employee is supposed to get, and send it…
At the end of the year, or when ending collaboration with an employee, the employer may have to compute (not pay) the gross amount of the 13th month that the employee is supposed to get, and send it to a Special Social HORECA Fund. Then, this fund will take care of the rest of the paperwork to deduct taxes from the 13th month and send a payslip to the employee. Since the employer does not pay the 13th month, but the Social Fund, the employer has to send an equivalent of *12%* of the amount of the gross salary submitted to the ONSS, each month, to the social fund. For workers, the percentage is applied on *108%* of the gross salary. Those values concerning the 13th month do not impact the employee's payslip, but still have to appear on it. So an "is_informative" field has been added to tell whether it should be displayed in this special section of the payslip. - If you're an employee, then your non-proratized 13th month (i.e.: its max value) is the wage of your last payslip (i.e.: `employee_id.wage`) - If you're a worker (*ouvrier*), then the 13th month's max value is `your hourly wage * average max number of hours per month` You then need to proratize the result in relation to the number of days that have really been prestated and assimilated. **NOTE:** - **prestated days** are days you have really worked - **assimilated days** are leaves that still count as a work days (e.g.: legal leaves) The sectorial documentation describes multiple proratization methods, but they are all equivalent to this basic formula: `(hours you have prested and assimilated / max number of hours you can prestate or assimilate) * max 13th month you can get` **These work entries are always assimilable:** - legal leaves - extra legal leaves - public holidays - small unemployment - compensatory rest - civic duties - public mandates - union obligations - strikes - temporary unemployment - unemployment force majeure **These work entries are assimilable with a limit of time per year:** - maternity leaves: 15 weeks - union education: 12 days - military service: 6 months - compelling reasons: 10 days - paternity leaves: 10 days - military reserve calls': 74 days **The first 12 months of partial incapacities following a total incapacity can be assimilated.** But, the partial incapacity must be of at least of 66%, by 66%, they mean at least 2/3 of the week should be a time off due to the incapacity. Since we don't really have a way to define that, as of now, partial incapacities are not assimilated. **Long sick leave periods can be assimilated at a rate of _50%_:** - The period must be uninterrupted and of at least 6 months - If it's smaller than 6 months, then we can see accross neighboring years if it continues, and if it is more than 6 months - If in the end it's more than 6 months, you can assimilate the period of the current year (max 6 months per year) - No period can be assimilated twice (e.g.: a period of two years cannot be assimilated in both years) **Short sick leave periods can be assimilated:** - Up to 7 uninterrupted days per year can be counted assimilated. But, if you have more than a defined threshold of sick leave days, then none are counted. - If you have at least a year of seniority, then the threshold becomes 6 months (i.e.: you still have your days if the number of days are below six months). Otherwise, the threshold is 7 days. In both cases, max 7 days can be assimilated per year. **Some days after the end of the contract up to the end of the year can be assimilated:** - All days if the personnel is retired - All days of early reitrement (aka "Prépension") assimilated at a rate of 20% - Max. 6 months for dead personnel Even though this 13th month is not directly paid by the employer, it still is a gross wage for the employee, so, the value of the 13th month should be included in the computation of the CSS (*special social cotisation*) [PARTENA's sectorial documentation](https://drive.google.com/file/d/1i8bj425ccEW0ZGvNSaQvEV6VIedmLYCS/view): task-5477296
This update enhances the work order Gantt view by now displaying completed work orders, providing a more accurate representation of past production progress. Cancelled work orders remain hidden to maintain a clean and focused planning board. This improves planning and reporting accuracy.
Original PR description
The work order Gantt view previously hid both completed and cancelled work orders, which made the planning board look empty for past dates. This update ensures that completed (done) work orders remain visible to provide a clearer picture of actual production progress, while cancelled work orders remain hidden to prevent visual clutter. This commit's changes: - Updated the action domain to filter out only 'cancel' states, allowing 'done' work orders to be displayed in the Gantt view. - Updated the workcenter and employee Gantt view definitions to include a 'decoration-secondary' rule for the 'done' state. - Added custom SCSS to visually fade completed work order pills using reduced opacity. - Replaced the "Mark as Done" button in the Gantt popover with explicit status messages for completed work orders. - Cleared default search filters from the dependency Gantt actions, while explicitly keeping the `show_workcenter_status` context. task-6169405
This update enhances the way sick and work accident leaves are processed for short-term contracts. The changes now consider contract duration and seniority levels to accurately determine the eligibility and calculation of these leaves, ensuring compliance and improved accuracy in payroll processing.
Original PR description
Refine sick/work accident leaves split based on contract duration and seniority. task-5480458
This update improves the accuracy of payroll calculations in Belgium by adding validation rules for reclassification schemes. Specifically, it prevents incorrect scheme selections based on notice period length and employee details, ensuring compliance and reducing potential errors. A helpful message has also been added to the outplacement field.
Original PR description
- Add a help message to the outplacement field explaining its purpose and services. - Prevent selecting the General scheme if the notice period is less than 30 weeks. - Prevent selecting the Specific scheme based on notice period length, employee age, company sector, and seniority. Task Id: 6267824
This update streamlines the process of sending payslips via email, making it much easier for HR to send PDFs to employees. The new 'Send by Email' button allows for bulk sending of validated payslips with a single click, eliminating the previous complex manual process. Additionally, the UI has been improved to prevent overlapping elements and remove unnecessary options.
Original PR description
[IMP] hr_payroll: ease UX for payslip sending via email
Send the emails for at least validated payslips is quite hard and takes time, it was in the cog and all employees must be selected. Instead I used a new Send by email button that sends the email to all employees in one click to the button
Firstly, if there are payslips without PDF's the Print Payslips button appears, if there is not, then send by email button appears.
"Mark as Paid" is made invisible
I also played with the max-width of the top-bar of the payrun (which includes statusbar, title etc) to prevent any kind of element overlaps.
task - 5979720This update corrects an issue where automatically adjusted quantities in rental sales were leading to incorrect invoicing. It ensures ordered and delivered quantities remain independent, aligning with the existing invoicing policy and preventing over-invoicing. The change also standardizes product display names across reports and portals for better customer clarity.
Original PR description
** For `sale_renting` ** With the introduction of product-less Sale Order Lines in the community version, we noticed that for manually delivered lines, the ordered quantity gets automatically…
** For `sale_renting` ** With the introduction of product-less Sale Order Lines in the community version, we noticed that for manually delivered lines, the ordered quantity gets automatically adjusted to match the delivered quantity. This behavior is unnecessary. The invoicing policy already determines which quantity should be invoiced. By forcing the ordered quantity to match the delivered quantity (especially when delivered > ordered), we end up consistently invoicing the higher value, which is not always correct. In practice, ordered and delivered quantities commonly differ, so they should remain independent. ** For `sale_commission` ** For commission and achievement reports, productless lines are aggregated under plans having no product restrictions ** For `sale_account_accountant` ** For accural entries non downpayment lines having no display_type are shown instead of restricting only lines having product. Removed product_invoice_policy field and used the `sale.order.line.invoice_policy` search compute field. Technical changes * From now on any SOL should contain name field value as `product.display_name+ "\n" + description` for consistancy with normal SOLs since we show only `line.name` in reports and portal so in case it should contain product name otherwise it could be confusing for customers to see just description. * Updated renting-specific extensions of `SaleOrderLineProductField` to also patch `SaleLabelTextField`, ensuring consistent behavior when product search is triggered directly from the description field. * Preserved existing renting configurator and combo behaviors while supporting the new searchable description field flow. * Removed the automatic synchronization between ordered and delivered quantities for manually delivered rental lines. * Adapt some tests to company specific Automatic Invoice setting field. task-6109825 See Also: - https://github.com/odoo/odoo/pull/259842 - https://github.com/odoo/upgrade/pull/9981
1 change
Enhancements to existing features
This update enhances the user experience of Odoo's account EDI UBL reports by refining the PDF template's design. Specifically, the header and footer have been improved, and a disclaimer has been added to clarify that the document is not an official one. These changes focus on presentation and clarity.
Original PR description
The previous UI was a little bit raw. To improve the client experience, we made the following changes: - Modify an inherited internal layout to improve header and footer. - Add a pill that says "Generated by Odoo". - Add a sentence mentioning that it is not an official document. Task-6132980 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
This update allows Odoo to correctly handle the new 20-digit format for China's digital e-fapiao invoices. Previously, Odoo only supported the older 8-digit format. This change ensures that Chinese vendors can accurately store and use their e-fapiao numbers without errors, improving invoice processing.
Original PR description
* https://hainan.chinatax.gov.cn/ssxc_3_23_1/12155283.html China's STA fully digitized e-fapiao uses a unique 20-digit invoice number, while legacy paper fapiao kept an 8-digit number. Accept both formats so CN vendor bills and invoices can store electronic fapiao numbers without validation errors. 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