Daily updates from Odoo
Thursday, December 12, 2024
32 changes · master
Enhancements to existing features
A new automated test checks that helpdesk tickets are converted to CRM opportunities or leads correctly based on a user's permissions. This helps reduce the risk of regressions in the support-to-sales handoff process.
Original PR description
This commit introduces a new test case that ensures the conversion of helpdesk tickets to opportunities in the CRM module is functioning as expected. Test Details: A new user is created, and conversion is attempted both before and after assigning the user to the relevant group (crm.group_use_lead). Assertions check for both "Convert to Opportunity" and "Convert to Lead" behavior depending on the user's group permissions. task: 4180279
The delivery pickup location tests were updated to avoid unnecessary email sending during automated checks. This keeps test runs stable and reduces maintenance effort without changing the customer-facing delivery flow.
Original PR description
Now that the salesperson is set on the cart after its confirmation, the test failed because it tried to send an email when the mail configuration was not properly configured. By relying on the standard test common from website_sale, we disable the mail sending, and can simplify the existing test setup. task-4270127
Missed call counts are now shown directly on the VoIP icon in the top bar instead of opening the softphone panel. This makes missed calls easier to notice while reducing interruptions to the user's workflow.
Original PR description
This commit will stop opening the softphone container for showing missed calls count in topbar instead the missed calls count will be shown in VoIP systray item icon badge. Task-3392951
Adds an XML export option to the German Intrastat report, helping businesses prepare the required declaration file for Germany's statistics portal. This reduces manual work and supports more consistent Intrastat reporting for German companies.
Original PR description
This commit add the export to xml button on the intrastat report for Germany. More information can be found here: - https://erhebungsportal.estatistik.de/Erhebungsportal/informationen/hilfe-zur-meldungsabgabe-3749 task-4194404
This work begins loading product expiry information into barcode-based stock operations. It should help warehouse teams handle lots and expiration dates more accurately when scanning products, though the change appears to be work in progress.
Timesheet approver information is now shown with a clearer label in tooltips, filters, and grouping options. Employees can also be grouped by their Timesheet Approver, making it easier for managers to review and organize timesheet responsibilities.
Original PR description
This commit renames the label of `timesheet_manager_id` field to have `Timesheets Approver` displayed in tooltip and custom filter/group by. It also adds a group by in `hr.employee` model to let the user to group by Timesheet Approver. task-4313650
Self-order kiosks can now process payments through connected IoT box payment devices. This makes kiosk ordering more complete for restaurants and stores by reducing manual payment handling and enabling a smoother customer checkout.
Original PR description
The self order kiosk previously didn't support payment via IoT box devices. This PR adds that functionality. task-4128846 Community PR: https://github.com/odoo/odoo/pull/190353
When payment for a subscription quotation triggers an invoice posting error, the system now records the error message on the invoice chatter. This helps internal users quickly understand configuration issues, such as invalid electronic invoicing settings, without needing backend investigation.
Original PR description
During the payment of the quotation having recurring service products, if any error occurs during the invoice posting due to an invalid edi configuration then the error message is posted in chatter of the invoice to let the internal user knows the error generated in backend. COM-PR :- https://github.com/odoo/odoo/pull/187517 task-4330659
Time-off timesheets are no longer tied to projects or tasks configured on a specific time-off type, making the feature work more reliably across multiple companies. This prevents users from unintentionally disabling timesheet generation or limiting it to the wrong company setup.
Original PR description
Before this commit: ------ By default, the current company is set on time off types. As such, the internal project of the current company is set. After this commit: -------- This commit improves the functionality related to generating timesheets within the project_timesheet_holidays module. Specifically, it removes the association of projects and tasks from the time-off type . Removed `timesheet_generate` field, as it is not used in any view. Reason: -------- if we set the company of the time off type to false, we either have: - no project -> meaning the user will disable the feature without realizing as the field is only visible in debug mode; - the internal project of the current company that remains set -> meaning the feature won't work for the other companies in which a time off request is created. task-3605962
Resolved issues and error corrections
This fix ensures placeholder text remains visible when users drag and drop fields such as name or email onto a document in the Sign app. It improves document setup by making field placement clearer and reducing confusion during signing template preparation.
Original PR description
Version: - Master Steps to reproduce: 1. Install the Sign module. 2. Upload a document. 3. Drag and drop the Name, email, etc field. Issue: - The placeholder is not visible when the field is dragged and dropped. Cause: - The placeholder alignment is incorrect. Solution: - Adjusted the margin height of placeholder to align it correctly. task-4347387
The Point of Sale pricer module now stores sample pricing data in the demo area instead of loading it as regular data. This prevents demo-only content from being included where it should not be, keeping production setups cleaner.
Original PR description
In the PR #66351 the demo data was unintentionally merged in the 'data' folder. This PR moves it to the correct 'demo' folder Related Upgrade PR: https://github.com/odoo/upgrade/pull/6831
This fixes an issue in the Indian QR code bill scanning feature where an outdated action reference could trigger warnings or unnecessary processing. The change helps ensure bill scanning behaves more smoothly and keeps translation files up to date.
Original PR description
In commit https://github.com/odoo/enterprise/commit/c60bf8eae152e25003cdeeeafc3b2f267fa483c3, `_l10n_in_get_notification_action` was removed, accidently it's all the references were not changed and an uneccesarry pre-call to `bill_action` was added In this commit we remove the pre-called action and fix the warning
This fixes an issue in the FedEx delivery integration where location request messages could fail because they tried to use translation handling that was not available in that request context. The change restores the previous behavior, helping FedEx pickup location lookups work reliably for online shoppers.
Original PR description
DUring the request to fexed, FEDEXLocationsRequest is not a model, so it does not have an environment. Revert to old code.
Demo data for the point-of-sale pricing feature is now stored in the proper demo area instead of being loaded as regular data. This prevents sample records from being installed where they should not appear, keeping production setups cleaner.
Original PR description
In the PR #66351 the demo data was unintentionally merged in the 'data' folder. This PR moves it to the correct 'demo' folder Associated Upgrade PR: https://github.com/odoo/upgrade/pull/6831
The Partner Ledger now clears the customer filter after users leave a customer statement and later reopen the report from the main accounting area. This prevents old customer selections from carrying over unintentionally, helping users see the expected full report without manually clearing filters.
Original PR description
This commit changes the way filters are loaded on the partner ledger report, particularly when clicking on the Customer Statement smart button from the customer view. **Before this commit:** When opening the report from the customer view, the partner filter was set to the selected customer, which is the desired behavior. However, after leaving the report and reloading it from the main accounting view, the partner filter remained applied, which was not intended. **After this commit:** Once you leave the report and reload it from the main view, the partner filter is reset. task-4274283
The Belgian SODA feature now depends on the full Accounting app instead of only Invoicing. This prevents access errors when users edit bank transactions or configure SODA, because the required accounting permissions are available.
Original PR description
Steps to reproduce: - Install account_accountant & l10n_be - l10n_be_soda is auto installed - Modify a bank transaction OR - Try to configure SODA from settings Access Error: The write method on account.move.line, and the SODA import wizard require `group_account_user` access. But this group is only activated with accounting. This module currently depends on Invoicing (account_accountant) but it should depend on Accounting (accountant). Furthermore, It doesn't make sense to import journal entries if accounting is not available. Issue reported by AVW
Code cleanup and technical improvements
Point of Sale components were adjusted so they can receive the right sales order data directly when used across PoS and Self Order flows. This keeps shared checkout and receipt features more consistent while separating customer display handling where pre-processed data is required.
Original PR description
*: l10n_cl_edi_pos, l10n_de_pos_cert, pos_avatax, pos_blackbox_be, pos_l10n_se, pos_urban_piper Components in the Point of Sale (PoS) context should always be able to receive related model objects as props. Usually, if a component is only used in PoS or Self Order, it can use services to get the needed object. However, if a component is used in both Self Order and PoS, it cannot use services to get the object because the service will be different in each context. Since Self Order and PoS both use the same models, we can pass the model object as props to the component. PoS context components should not be used in the customer display. Since the customer display is a separate context, it receives pre-processed data from PoS. Therefore, we need to create a new component for the customer display.
The field service task setup was simplified by relying on the shared project definition for partner phone information. This reduces duplication behind the scenes and helps keep related project and website project features consistent.
Original PR description
In this commit, we move the partner_phone field in the project module to avoid the duplicate field declaration in website_project. related-https://github.com/odoo/odoo/pull/188581/commits/d958d25629a6e8bc719cb312107ff75a903cf02a task-4357466
This update aligns enterprise mail-related code with the community version by renaming internal channel methods to make their intended private use clearer. It should not change day-to-day behavior for users, but helps keep the codebase consistent and easier to maintain.
Original PR description
Adapt the code based on code in community. odoo/odoo#189366
This change reorganizes automated tests for the Sales Timesheet Enterprise features, especially around leaderboard timer views. It helps maintain reliability of these timesheet experiences without changing day-to-day user functionality.
Original PR description
task-4354311
Miscellaneous changes
Following the change of account type in the community pr, some tests had to be modified. task: 4341375 Forward-Port-Of: odoo/enterprise#75435 Forward-Port-Of: odoo/enterprise#75114
Original PR description
Following the change of account type in the community pr, some tests had to be modified. task: 4341375 Forward-Port-Of: odoo/enterprise#75435 Forward-Port-Of: odoo/enterprise#75114
**Issue:** If a user changes a salary rule to the default Python Code for computation, an error occurs when trying to `Compute Sheet` on an employee's payslip.  **Expected:** The computation should be feasible. **Steps to reproduce:** - Activate Payroll app; - Move to `Configuration/Salary:Rules`; - Select any rule having its `Computation` `Amount Type` field not
Original PR description
**Issue:** If a user changes a salary rule to the default Python Code for computation, an error occurs when trying to `Compute Sheet` on an employee's payslip.  **Expected:** The computation should be feasible. **Steps to reproduce:** - Activate Payroll app; - Move to `Configuration/Salary:Rules`; - Select any rule having its `Computation` `Amount Type` field not set to `Python Code` (e.g. `Regular Pay > House Rent Allowance`);  - Change the `Amount Type` to `Python Code`;  - Create a new payslip entry for any employee and change the structure for the one you changed the rule in (e.g. `Regular Pay`); - Click `Compute Sheet`; **Cause:** The Python code displayed in the computation rule contains an uncommented comment line that. **Fix:** Comment the blocking line. opw-4377712 Forward-Port-Of: odoo/enterprise#75525
Steps to reproduce: - Install account_accountant & l10n_be - l10n_be_soda is auto installed - Modify a bank transaction OR - Try to configure SODA from settings Access Error: The write method on account.move.line, and the SODA import wizard require `group_account_user` access. But this group is only activated with accounting. This module depends on Invoicing (account_accountant) but it should depend on Accounting (accountant). Since this change is not possible for stable, we check fo
Original PR description
Steps to reproduce: - Install account_accountant & l10n_be - l10n_be_soda is auto installed - Modify a bank transaction OR - Try to configure SODA from settings Access Error: The write method on account.move.line, and the SODA import wizard require `group_account_user` access. But this group is only activated with accounting. This module depends on Invoicing (account_accountant) but it should depend on Accounting (accountant). Since this change is not possible for stable, we check for access to the SODA models (`group_account_user`) while the correct fix is applied in master 18.1 (https://github.com/odoo/enterprise/pull/75505) Issue reported by AVW Forward-Port-Of: odoo/enterprise#75480
`*` = [sale_subscription] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. After this commit: In the mobile and form view, checkbox fields with long labels are now properly aligned, with the checkbox and label text displayed. Task-4269578 Forward-Port-Of: odoo/enterprise#75424 Forward-Port-Of: odoo/enterprise#74561
Original PR description
`*` = [sale_subscription] Before this commit: In the mobile and form view, when a checkbox field had a long label, the checkbox would appear on top, with the label text displayed below. After this commit: In the mobile and form view, checkbox fields with long labels are now properly aligned, with the checkbox and label text displayed. Task-4269578 Forward-Port-Of: odoo/enterprise#75424 Forward-Port-Of: odoo/enterprise#74561
Steps to reproduce: 1. Go to Configuration > Email Links 2. click on New -> Blank page 3. click on a record -> Blank page Technical Reason: passed an empty form view and the id got overwritten because of the same name. After this commit: - form view will be open - 'documents.document' related aliases here Task-4265660 Forward-Port-Of: odoo/enterprise#73622
Original PR description
Steps to reproduce: 1. Go to Configuration > Email Links 2. click on New -> Blank page 3. click on a record -> Blank page Technical Reason: passed an empty form view and the id got overwritten because of the same name. After this commit: - form view will be open - 'documents.document' related aliases here Task-4265660 Forward-Port-Of: odoo/enterprise#73622
To comply with Mexican tax regulations (Article 29-A, section VII of the Fiscal Code and the CFDI guide, pg. 22), both the customs number and its emission date must be included in product descriptions for national sales. This commit adds the date(s) of the emission of the customs number(s) to every customer invoice line label task-4132754 Forward-Port-Of: odoo/enterprise#75325 Forward-Port-Of: odoo/enterprise#74475
Original PR description
To comply with Mexican tax regulations (Article 29-A, section VII of the Fiscal Code and the CFDI guide, pg. 22), both the customs number and its emission date must be included in product descriptions for national sales. This commit adds the date(s) of the emission of the customs number(s) to every customer invoice line label task-4132754 Forward-Port-Of: odoo/enterprise#75325 Forward-Port-Of: odoo/enterprise#74475
Before this commit, the trash button displayed in the wizard used when the user clicks on stop button in a task (when a timer is running on that task for that current user) has not the same height than the other buttons displayed in that wizard. This commit makes sure the button has the same height than the other buttons. task-4382070 Forward-Port-Of: odoo/enterprise#75226
Original PR description
Before this commit, the trash button displayed in the wizard used when the user clicks on stop button in a task (when a timer is running on that task for that current user) has not the same height than the other buttons displayed in that wizard. This commit makes sure the button has the same height than the other buttons. task-4382070 Forward-Port-Of: odoo/enterprise#75226
In rare cases there can be more than one tax on the same line with the same taxName and rate. These taxes are different e.g.: ``` Charleston Co Educational Capital Improvements Tax (Special) at 1% Charleston Co Tt (Special) at 1% ``` But `find_or_create_tax()` maps both of them to SC SPECIAL 1%. This doesn't cause issues for invoice_line_ids, those amounts are correct. But the journal items are not because there's only one tax journal item for this tax and its summary total gets over
Original PR description
In rare cases there can be more than one tax on the same line with the same taxName and rate. These taxes are different e.g.: ``` Charleston Co Educational Capital Improvements Tax (Special) at 1%…
In rare cases there can be more than one tax on the same line with the same taxName and rate. These taxes are different e.g.: ``` Charleston Co Educational Capital Improvements Tax (Special) at 1% Charleston Co Tt (Special) at 1% ``` But `find_or_create_tax()` maps both of them to SC SPECIAL 1%. This doesn't cause issues for invoice_line_ids, those amounts are correct. But the journal items are not because there's only one tax journal item for this tax and its summary total gets overwritten instead of added to. This leads to the total on the invoice not matching the sum of debits/credits in the journal items tab. Fix it by adding to the summary total instead of overwriting it. PS. An alternative solution is to create unique tax names by incorporating the jurisCode and possibly other relevant fields. This approach would enhance the accuracy of tax representation on invoices. However, historically, we have prioritized brevity over accuracy [1]. [1] https://github.com/odoo/enterprise/pull/68549 Forward-Port-Of: odoo/enterprise#75464
Issue: When printing PDF reports, long account names cause the report to overflow out of the page. Steps to reproduce: - Install the accounting app - Enable "Analytic Accounting" in the settings - Create one (or more) analytic account(s) with very long names - Open either "Balance Sheet" or "Profit and Loss" reporting - Do an "Analytic Group By" with the created account(s) - Print the PDF Cause: The default style in the associated scss file does not use wrapping. https://github.co
Original PR description
Issue: When printing PDF reports, long account names cause the report to overflow out of the page. Steps to reproduce: - Install the accounting app - Enable "Analytic Accounting" in the settings -…
Issue: When printing PDF reports, long account names cause the report to overflow out of the page. Steps to reproduce: - Install the accounting app - Enable "Analytic Accounting" in the settings - Create one (or more) analytic account(s) with very long names - Open either "Balance Sheet" or "Profit and Loss" reporting - Do an "Analytic Group By" with the created account(s) - Print the PDF Cause: The default style in the associated scss file does not use wrapping. https://github.com/odoo/enterprise/blob/bf6c64b8fd5591f271e9b0f18f40d205a64cd5bd/account_reports/static/src/scss/account_pdf_export_template.scss#L41 Solution: Override the default style by using the "o_overflow_name" class. This is the class already used for handling overflow in the tables' content lines. This gives a more readable result than just editing the "white-space" field (see below for comparison). The proposed solution gives the following result:  As opposed to just editing to "white-space: wrap;"  Ticket: opw-4277596 Forward-Port-Of: odoo/enterprise#74927 Forward-Port-Of: odoo/enterprise#73761
Forward-Port-Of: odoo/enterprise#74972
Original PR description
Forward-Port-Of: odoo/enterprise#74972
Versions -------- - 15.0+ Steps ----- 1. Have a task assigned to you; 2. ensure planned hours are empty; 3. plan the task partially outside working hours (e.g. 16:00 -> 21:00); 4. save. Issue ----- Planned hours are overwritten. Cause ----- Commit 52536bf8bb5 added logic to provide schedule-based start dates for tasks created in Gantt view, as well as other tasks, by overwriting the provided (default) date values. Solution -------- Check whether the provided date values
Original PR description
Versions -------- - 15.0+ Steps ----- 1. Have a task assigned to you; 2. ensure planned hours are empty; 3. plan the task partially outside working hours (e.g. 16:00 -> 21:00); 4. save. Issue ----- Planned hours are overwritten. Cause ----- Commit 52536bf8bb5 added logic to provide schedule-based start dates for tasks created in Gantt view, as well as other tasks, by overwriting the provided (default) date values. Solution -------- Check whether the provided date values are indeed defaults rather than hand-picked values. This can be done by seeing whether the time span between them is exactly 23:59:59, as the default is 00:00:00 -> 23:59:59 This way, tasks scheduled in batch or Gantt can still use schedule-based hours, while user-selected values from a daterange picker don't have to be written twice to select time slot that falls outside the assignee's schedule. opw-3947876 Forward-Port-Of: odoo/enterprise#75391 Forward-Port-Of: odoo/enterprise#65404
Following this commit : New food delivery aggregators have been introduced, including: - Jahez - SkipTheDishes - Rafeeq - Ninja task- 4369004 Forward-Port-Of: odoo/enterprise#75341
Original PR description
Following this commit : New food delivery aggregators have been introduced, including: - Jahez - SkipTheDishes - Rafeeq - Ninja task- 4369004 Forward-Port-Of: odoo/enterprise#75341