Daily updates from Odoo
Tuesday, March 4, 2025
14 changes
7 changes
Enhancements to existing features
Spreadsheet revision history now keeps the original author when a spreadsheet is copied from version history. This prevents copied spreadsheets from incorrectly showing the person who made the copy as the author of past revisions, improving auditability and trust in version records.
Original PR description
Before this commit, the `spreadsheet.revision` model relied on `create_uid` to track the author of a revision. However, when copying a spreadsheet through the version history, the revisions were duplicated, and `create_uid` was overridden with the user initiating the copy, leading to a loss of the original author information. To address this, an `author` field is added to `spreadsheet.revision` to store the original author's reference, ensuring it remains intact even when the spreadsheet is duplicated. task-[4510201](https://www.odoo.com/odoo/project/2328/tasks/4510201)
Payroll users can now populate Individual Accounts reports without automatically generating PDFs for every eligible employee. They can choose specific employees or generate/post all relevant PDFs from the available report actions, giving teams more control and reducing unnecessary document creation.
Original PR description
Problem ---------- When you click on populate in "Individual Accounts" report, it trigger the pdf generation automatically for all eligible employees Objective ---------- We want to let the user decide if he wants to generate all the pdfs or if he wants to select which of them should be generated. Solution ---------- - The populate button not trigger the generate pdf action. - In Employee declaration view, the "Generate PDF(s)" button is always visible. - If the user select some of the employees, the button will trigger the pdf generation only for them. Else, if the user does not select anyone, all pdfs are generated. task-4161348
Recruitment teams now use a clearer signature request flow for applicants, with the applicant's email filled in by default instead of the current user's email. Users can also send signature requests to multiple applicants from the list view, reducing manual work and avoiding duplicate wizard options.
Original PR description
Problem ---------- - In an application form view, There are 2 Signature Request wizard accessible from the cogwheel menu. We have to use only the wizard from sign. And not our custom one in…
Problem ---------- - In an application form view, There are 2 Signature Request wizard accessible from the cogwheel menu. We have to use only the wizard from sign. And not our custom one in hr_recruitment_sign. - Change this sign wizard to replace the user mail with the applicant mail. - In case of selection of multiple application in list view. We have to be able to send signature request to all of them with a new wizard in the action cogwheel menu. This wizard must be the same as the sign request for employee one. Objective ---------- - Remove our sign request wizard in the cogwheel menu of applicant form view. - Adapt the sign wizard to display the applicant email by default. - Add the multiple sign request wizard in the cogwheel menu of list view. Solution ---------- For the multiple sign request : I use the previous customized wizard in hr_recruitment_sign (replaced by the sign one). Just adapt it to be usable with multiple records. So now the "signature request" action available in the cogmenu is display only in list view for multiple sign requests. Finally, for the sign request wizard in form view. To make it custom for the hr_applicant model. I needed to adapt and override the context of the cogmenu item to add the default signer and the active model. And adapt and override the sign_send_request to change the default signer. task-4260572
Point of Sale administrators can now enable the new Tyro payment integration directly from the settings screen. This makes it easier to install and activate Tyro support without extra technical steps.
Original PR description
A new `pos_tyro` module was added in #79432. This commit adds a checkbox in the PoS settings to install this new module.
Appointment events are being simplified so each booking can link directly to its resource instead of relying on separate booking lines. This should make resource changes and calendar/grouped view editing easier for teams managing appointments.
Original PR description
Prior to this, each event had an o2m relation with booking lines. This made validation easy but also makes some tasks such as modifying the resources used and editing grouped views more cumbersome. We remove the booking lines and replace them with a direct m2o relation between events and appointment resources. task-338900
The Studio app’s automated tests for key editing and approval areas were moved to a newer testing framework. This helps maintain product quality and makes future updates to Studio safer and easier for the development team.
Deleting recurring shifts now consistently shows a confirmation dialog in list, kanban, and calendar views, matching the existing behavior in the form view. This helps users choose how to handle recurring shifts and reduces the risk of accidentally deleting the wrong planning entries.
Original PR description
[IMP] planning: improve recurring shifts deletion Before this commit: - Deleting recurring shifts from the form view would display a dialog with options for handling the deletion of recurring shifts. However, this behavior was inconsistent in the list, kanban and calendar views, where deleting a recurring shift would delete the shift without showing any dialog. After this commit: - List view: when some shifts are recurring, the modal is displayed - Kanban and Calendar view: when the shift is recurring, the modal is displayed. task-4149099
7 changes
Enhancements to existing features
Belgian states have been added to Odoo’s standard country data, improving address and localization accuracy for Belgian records. A related tax test was adjusted so existing validation continues to work with the new Belgian state data.
Original PR description
Add belgian states to the states data list. Done as part of task-4522433
Adds automated checks to ensure accounting security access is granted only in the intended situations and that journal checks no longer raise errors. This helps protect the reliability of secured accounting entry features without changing day-to-day user workflows.
Original PR description
In odoo/odoo#196748, the secured group usability was changed to only grant access to the new features relating to securing entries if moves from a journal without "Hash on Post" are secured. In odoo/odoo#197226, an issue with the first commit was addressed, in which an error was raised when checking if a journal had unhashed entries. This commit adds tests to validate that the group-granting behavior occurs correctly, and that there are no errors raised when checking a journal for unhashed entries. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Invoices now automatically use the salesperson assigned to the customer when one is set, rather than defaulting to the person creating the invoice. This helps keep sales ownership consistent from customer records through invoicing and improves reporting accuracy.
Original PR description
For `sale.order`, the salesperson (`user_id`) on the order is set to the partner's salesperson (`user_id` on `res.partner`) if set. Currently, `account.move` sets the salesperson (`invoice_user_id`) to the user creating the invoice. With this commit, `invoice_user_id` is set to the partner's salesperson if exists. task-4374265
Bill details fetched from Indian e-invoices are now handled more reliably, including portal attachment limits, reverse charge taxes, and taxes missing from the local setup. Temporary portal errors are also retried automatically, reducing manual follow-up and improving accounting completeness.
Original PR description
This PR introduces the following improvements: - **Attachment Name Update**: Restricts the attachment name to 45 characters to comply with e-invoice portal limitations. - **Handling Missing Taxes**: Includes journal items for taxes not found in the system to ensure proper accounting. - **Enhanced Tax Matching**: Updates the tax-finding mechanism to include RCM taxes when the bill transaction's `RegRev` parameter is marked as `Y`, in addition to regular taxes. - **Error handling**: Handle `EINV30109` error code to schedule a retry cron after 10 minutes and log a message.
The Indian payroll yearly salary by employee report now uses a clearer date format, shows the employee registration number as the employee code, and improves table presentation. These changes make the report easier to read and more consistent for payroll and HR teams.
Original PR description
-change the date format to dd/mm/yyyy -employee code should be employee registration number of the employee -title should be bold -borderline should be same on both table task-4452670
Point of Sale now supports configurable limits for how many products and customers are loaded. This helps businesses tune POS performance and data availability based on their store size and operational needs.
Original PR description
- Introduced `ir.config_parameter` settings for product and customer limits in POS. - Refactored partner loading to use configurable customer limit. community PR: https://github.com/odoo/odoo/pull/199923 task-id: 4610131
Accounting report XLSX exports now include a separate currency code column next to foreign-currency amounts. This makes exported reports clearer and helps users identify the currency behind each amount after symbols are lost in spreadsheets.
Original PR description
Issue: When we export a report to xlsx containing some amounts in foreign currency, those amounts are exported as values in the file, and loose any kind of currency symbols. It then becomes impossible to know what currency they were expressed in. Solution: When a column has an expression label with the 'currency' word inside, adds a new column right next to it, with the currency 3 letters code as value. This is done in the accounting reports framework and so is used on all reports using a custom engine. task-4011008