Search
Navigate
Branch
Tuesday, January 9, 2024
29 changes
19 changes
New functionality added to Odoo
Adds a new TDS module to help manage TDS entries and create challans directly from TDS reports. This reduces manual work, improves accuracy, and helps finance teams process tax deductions more efficiently.
Original PR description
Implement TDS Module for TDS Entry and Challan Creation This commit introduces a TDS module that simplifies TDS entry management and automates challan creation from TDS reports. It streamlines the process, ensures accuracy, and saves time. task-3326777
Enhancements to existing features
Subscription quotations now rely on the standard sales process to keep followers aligned, reducing duplicate logic. When a quotation customer changes, the previous customer is no longer automatically removed from followers, helping preserve visibility for past stakeholders.
Original PR description
This change removes an override which is no longer necessary. Syncing followers is now fully handled in the sale module. Note that the behavior has slightly changed: we no longer unsubscribe the old customer. task-3478472 Community PR: https://github.com/odoo/odoo/pull/144142
Resolved issues and error corrections
Appraisal demo data now includes two scheduled meetings for employee appraisals, making sample appraisal workflows more complete and realistic. The update also fixes the visible status ribbon in the appraisal list view so users see the correct readiness state.
Original PR description
Before this commit, no meeting was created for an employee's appraisal; now two appraisal's meetings are created. task : 3537519
Miscellaneous changes
In sign when you're editing a template, you can change the role of a sign item by opening a popover. However, if you click on "search more", it will open a modal that doesn't overlap the popover due to a bigger zindex of the popover. This commit fixes this by adjusting the popover's zindex. TODO: clicking on a role in modal doesn't select it. task-3575711 Forward-Port-Of: odoo/enterprise#49900
Original PR description
In sign when you're editing a template, you can change the role of a sign item by opening a popover. However, if you click on "search more", it will open a modal that doesn't overlap the popover due to a bigger zindex of the popover. This commit fixes this by adjusting the popover's zindex. TODO: clicking on a role in modal doesn't select it. task-3575711 Forward-Port-Of: odoo/enterprise#49900
10 changes
Enhancements to existing features
The SIG (Intermediate Management Balances) financial report for French companies has been redesigned to improve readability and consistency with other financial reports. The changes reorganize how sections are displayed and adjust the visual hierarchy to make the report easier to understand and navigate.
Original PR description
In 16.3 and 16.4 we worked a lot on making the report more readable but the SIG report was forgotten during those changes. Commit: - https://github.com/odoo/enterprise/commit/d2d4f5e04042eb420f0f4c566269d1148baf84f7 - https://github.com/odoo/odoo/commit/56a7f7745c5df9b70e6fe5b78f401085ce46284c - https://github.com/odoo/enterprise/commit/538294661a5c0c748b55ad2d335448cd14700886 This commit will change the report to be more consistent with the other by changing the disposition of the section and changing the hierarchy level either by removing it and take advantage of the children_ids or changing to 0 to have the css highlight. task: 3669714
Appointment booking now saves attendee details in the browser after form confirmation, so people without an existing contact profile do not need to re-enter the same information. This makes rescheduling, canceling and rebooking appointments faster and reduces repeated data entry.
Original PR description
Purpose ======= Prevent the attendees without partner data from having to refill their info the next time they're booking an appointment. Specification ============= Saving their data in the local storage at form confirmation to autofill the form in case the appointment is canceled/rescheduled or another appointment is booked. Task-3594746
Users opening barcode scanning from the Barcode app main menu or operations views now see a manual barcode dialog first instead of the camera opening immediately. This lets them type a barcode when needed, still use the camera from the dialog, and receive a clear notification if camera access is unavailable.
Original PR description
Before this commit, clicking on the barcode image to scan opened the camera directly. Now it opens the manual barcode dialog where the user can enter the barcode manually or use the camera.
Users can now move eligible shared Knowledge articles directly into the shared section when those articles are shared with at least one external partner. This preserves partner access during the move, reducing friction when reorganizing shared content.
Original PR description
Purpose: - Previously, the shared section allowed dropping an article only if it was moved under another shared article or if the article being moved was already a shared root article. With this commit, dropping an article into the shared section is permitted as long as this article is shared with at least one partner (excluding the user initiating the move and internal permissions, but including inherited permissions). In the case where a partner had access to the moved article through access inheritance, a new member will be created for this article so that this partner keeps his read/write access on this article. Task-3603579
The appraisal list view now includes the date each appraisal was created. This makes it easier for HR users and managers to identify when appraisal records were opened and sort or review them with more context.
Original PR description
In this commit create date was added to the list view of the appraisal task-3581312
The subscription option in Sales settings has been repositioned to make the configuration page easier to navigate. This helps users find and manage subscription-related sales settings more quickly.
Original PR description
**Version:** - master **Improvement:** The position of the subscription in the res settings (Sale configurations) has been changed for improved usability. task-3546062
Project task progress and overlap warnings now use allocated hours instead of only start and end dates. This gives managers a clearer view of team workload across multiple projects and reduces false overload warnings, while still handling field service tasks with their specific scheduling rules.
Original PR description
Before this commit, the progress bar values were calculated based on the task's start and end dates. This method proved inefficient for task planning, as it didn't account for the possibility of a…
Before this commit, the progress bar values were calculated based on the
task's start and end dates. This method proved inefficient for task
planning, as it didn't account for the possibility of a user being
assigned to multiple projects concurrently. For example, if a user had
a 40-hour work week, divided between 10 hours on Project A, 15 hours on
Project B, 5 hours on Project C, and 10 hours on Project D, the
previous system would inaccurately indicate resource overload and
potential task conflict.
With this latest update, progress bar computations are now based on the
actual allocated hours, providing a more accurate reflection of task
distribution. Additionally, if a task's end date extends beyond the
Gantt view's boundaries, the progress bar values are adjusted to
represent only the visible portion of the task, which aligns with the
percentage of the task that is actually visible.
Moreover, overlapping warning are now computed based on allocated hours
as well. The condition for a conflict is that the combined allocated
hours are larger than the workable hours of the user the planned dates.
This modification does not apply the field service tasks :
Unlike other tasks, fsm tasks overlap in two scenarios:
1. When the combined allocated hours of an fsm task and
a normal task exceed the user's workable hours.
2. When two fsm tasks have overlapping planned dates.
Example:
- Task A (normal) conflicts with Task B (fsm) if their combined
hours > user's workable hours. Both have 1 conflict.
- Introduce Task C (fsm) with no allocated hours (no conflict
with Task A) but same time period as Task B.
Result => Task A has 1 conflict, Task B has 2 conflicts, Task C
has 1 conflict.
taskid:3349378Payroll dashboard warnings can now be configured to better match each company’s needs and installed payroll features. This helps payroll teams see more relevant guidance and reduces one-size-fits-all messages on the dashboard.
The obsolete setting for choosing a down payment product has been removed because it has not been used since Odoo 16.2. Down payments now rely on the standard accounting flow, reducing configuration clutter and avoiding confusion for sales and subscription users.
Original PR description
Since version 16.2, the Down Payments setting became obsolete. Dead field, never used. Odoo: https://github.com/odoo/odoo/pull/145887 Upgrade: https://github.com/odoo/upgrade/pull/5430 Task: 3618096
The appraisal app now presents readiness as a clearer status, with updated status colors and a new Ready filter. Employee avatars were removed from the appraisal view to simplify the interface and help users focus on appraisal progress.
Original PR description
The commit message summary is a concise and clear representation of the changes made in the commit. - Changed the color of the status. - Remove the employee avatar. - Converted the 'ready' banner into a state. - Added a filter 'Ready'. task - 3500932
Project task updates now avoid errors when there is no record to save, reducing interruptions for field service and project users. The revision history restore dialog flow was also adjusted so teams can add confirmation steps without losing visibility of the revision list.
### Steps to reproduce: - In payment provider setup a test Stripe and publish it. Important: make sure that in the Configuration tabs, **Manual Capturing** is checked. - Go to Subscriptions and set up recurrence (for example Monthly), Immediate payment (Payment Terms) and uses a test contact with a valid country and dummy email address. - Add a recurring product type. In “Other Info” tab make sure that signature and payment are set up. - Click on send by email. Grab the customer email from *
Original PR description
### Steps to reproduce: - In payment provider setup a test Stripe and publish it. Important: make sure that in the Configuration tabs, **Manual Capturing** is checked. - Go to Subscriptions and set…
### Steps to reproduce: - In payment provider setup a test Stripe and publish it. Important: make sure that in the Configuration tabs, **Manual Capturing** is checked. - Go to Subscriptions and set up recurrence (for example Monthly), Immediate payment (Payment Terms) and uses a test contact with a valid country and dummy email address. - Add a recurring product type. In “Other Info” tab make sure that signature and payment are set up. - Click on send by email. Grab the customer email from **mailcatcher** and open the “Sign & Pay Quotation” link in incognito mode. - In the customer portal view, go through the steps to sign and pay using Stripe test credentials and test credit card. - Once confirmed, go to the backend and grab the relevant Subscription. You should see that the subscription was set to “in progress” and that there is one authorized payment transaction. - Click on the “Capture Transaction” button → log message that transaction is confirmed. - Now trigger the “Sale Subscription: generate recurring invoices and payments” CRON manually. - Go back to the subscription form view (refresh) and you will see that a draft invoice was created but also a new stripe transaction was authorized. - That shouldn't happen, a new authorized stripe transaction was authorized shouldn't be created as the next invoicing date hasn't come yet! ### Investigation: - Manually captured payment providers should **NOT** be used with Subscriptions in the first place. ### Discussion: - The proposed solution filters out the manually captured payment providers from the payment modal so we don't go into the above flow. opw-3507478 Forward-Port-Of: odoo/enterprise#52778
This is a backport of https://github.com/odoo/enterprise/pull/53072 Commit that introduced the issue: https://github.com/odoo/odoo/commit/14fc7f3c923847f5e052888c2cfda0bf92316972 Issue: ====== Validating required additional fields doesn't work. Steps to reproduce the issue: ============================= - Install ecommerce - Install l10n_mx_edi_website_sale - Mark the mexican company as the company for the website - Activate automatic invoice - Log out - Go to shop and add any
Original PR description
This is a backport of https://github.com/odoo/enterprise/pull/53072 Commit that introduced the issue: https://github.com/odoo/odoo/commit/14fc7f3c923847f5e052888c2cfda0bf92316972 Issue: ======…
This is a backport of https://github.com/odoo/enterprise/pull/53072 Commit that introduced the issue: https://github.com/odoo/odoo/commit/14fc7f3c923847f5e052888c2cfda0bf92316972 Issue: ====== Validating required additional fields doesn't work. Steps to reproduce the issue: ============================= - Install ecommerce - Install l10n_mx_edi_website_sale - Mark the mexican company as the company for the website - Activate automatic invoice - Log out - Go to shop and add any item to cart and follow the steps until required addional informations - Clicking on next will disable the button and mark it as loading but nothing happens. Origin of the issue: ================================= - There was some fields missing to use `s_website_form` snippet since it uses action + (foce_action or model_name) to call post method on the path but we didn't provide any. Solution: ========= Override the public widge to not use the send method. opw-3635199 Forward-Port-Of: odoo/enterprise#53727 Forward-Port-Of: odoo/enterprise#53393
Impacted Version: - 16.0 and above This commit improve below features: - Add reference field to tax report - Add total excluding VAT amount to tax report - Filter completely reconciled reversed bill on purchase tax report task-3623502 Forward-Port-Of: odoo/enterprise#53798 Forward-Port-Of: odoo/enterprise#52496
Original PR description
Impacted Version: - 16.0 and above This commit improve below features: - Add reference field to tax report - Add total excluding VAT amount to tax report - Filter completely reconciled reversed bill on purchase tax report task-3623502 Forward-Port-Of: odoo/enterprise#53798 Forward-Port-Of: odoo/enterprise#52496
Since https://github.com/odoo/enterprise/pull/38427 locked orders remain in a sale state. Nothing prevent to invoice them when they are regular order. Subscription should be invoiceable too. Before this commit, the 'done' state and after https://github.com/odoo/enterprise/pull/38427 the locked orders are not invoiceable. It was done to prevent invoicing renewed contracts. This measure would make sure that only one subscription of the hierarchy could be invoiced. taskid: 3595378 Forward-Po
Original PR description
Since https://github.com/odoo/enterprise/pull/38427 locked orders remain in a sale state. Nothing prevent to invoice them when they are regular order. Subscription should be invoiceable too. Before this commit, the 'done' state and after https://github.com/odoo/enterprise/pull/38427 the locked orders are not invoiceable. It was done to prevent invoicing renewed contracts. This measure would make sure that only one subscription of the hierarchy could be invoiced. taskid: 3595378 Forward-Port-Of: odoo/enterprise#50654
[IMP] l10n_in_reports_gstr: add buy credits button -Added buy credits button in the view which gives ease to user to directly buy l10n_in_edi IAP credits [IMP] l10n_in_reports_gstr: added connection successful notification -Whenever a user is successfully connected with l10n_in_reports_gstr it will display the user a notification of successfully being connected with Indian GST Report Related PR - https://github.com/odoo/odoo/pull/120785 Forward-Port-Of: odoo/enterprise#40806
Original PR description
[IMP] l10n_in_reports_gstr: add buy credits button -Added buy credits button in the view which gives ease to user to directly buy l10n_in_edi IAP credits [IMP] l10n_in_reports_gstr: added connection successful notification -Whenever a user is successfully connected with l10n_in_reports_gstr it will display the user a notification of successfully being connected with Indian GST Report Related PR - https://github.com/odoo/odoo/pull/120785 Forward-Port-Of: odoo/enterprise#40806
Resolved issues and error corrections
Fixed an issue where branch companies couldn't see their parent company's accounts when setting up deferred entry options in the accounting module. Now branch companies can properly access and use parent company accounts for accounting configurations, improving the flexibility of multi-company accounting setups.
Original PR description
[FIX] account_accountant: include parent companies accounts Issue: When listing accounts options for deferred entries of a branch it doesn't show the the accounts of the parent company Steps to reproduce: 1. Install Accounting App 2. Go to settings 3. Go to Users&Companies 4. Go to Companies 5. Choose a company 6. Branches 7. Create a new branch 8. Go to accounting app 9. Go to settings 10. Change current company to be the new branch 11. Go to default accounts 12. list deferred entries options Solution: The domain on these fields was defining a criteria that the account's company should be the same as the current company while the current company can be a branch of another company, so we changed the criteria opw-3633186
This fix resolves an issue where utility products were not being properly loaded when opening a point of sale session in the Belgian blackbox module. A recent code change had inadvertently ignored the product loading rules, preventing these essential products from appearing. The fix ensures these utility products are now correctly available when staff start their POS sessions.
Original PR description
Since b90cae065001aa44fb05532950b78732217649a7, the domain from _loder_params_product_product is ignored. But the utility products that are supposed to be loaded are declared in that method. In this commit, we now override the _get_available_product_domain to make sure the utility products are loaded when opening a pos session.
This fix corrects a bug where appointment locations were incorrectly displayed as "Online" meetings on the customer-facing booking page. After this change, the "Online" status will only appear when no physical location has been assigned to an appointment type, ensuring customers see accurate meeting location information.
Original PR description
Steps to Reproduce ================== 1) Create a new appointment type. 2) Assign a location to it. 3) Access the front-end. - It is displayed as being online. Technical Details ================= Following this commit https://github.com/odoo/enterprise/commit/5ed8ea8e5fa65af700484aeab7745f127166d00a, the xpath in the file `appointment_templates_appointments.xml` within the `appointment_account_payment` module is causing it to fall within the if-else statement. To resolve this, change the class position from "else div" to "if div". After this PR ================= The "Online" status will only be shown if the location is not set. Task-3668128
This update fixes a problem that prevented users from accessing Customer Statements reports in Odoo Studio. The issue occurred when trying to view the report without applying filters. The fix simplifies how the system retrieves customer data, making the report more reliable and accessible to all users.
Original PR description
l10n_account_* = l10n_account_customer_statements Steps: - Install `web_studio` - Install `l10n_account_customer_statements` - Open Studio from anywhere - Go to Reports and remove default filter - Select `Customer Statements` report - Traceback `CustomerStatementReport:_get_report_values` function was using `data['context']['active_ids']` to get `res.partner` records. We can just use `_get_report_values`'s params `docids`
This update fixes three critical issues in the Barcode App: it now properly converts between barcode formats (EAN-13 to UPC-A), prevents scanning products from other companies, and correctly identifies products when using GS1 barcode standards. These fixes ensure that products are reliably found during scanning operations regardless of barcode format or company assignment.
Original PR description
This PR fixes 3 issues in `stock_barcode`: 1. Using the default barcode nomenclature, it's possible to convert EAN-13 to UPC-A and vice versa, but until now, it didn't work in the Barcode App; 2. In the Barcode App, it was possible to scan products who belong to another company thant the user's one; 3. While using the GS1 nomenclautre, it's possible some records barcode (like product's barcode or package's name) are interpreted as GS1 barcode because they match an AI rule. In case those parsed AI rule is not relevant and does nothing, we should also search records by their barcode to see if the barcode is simply a product or package. See commits for more information. task-3472884 Forward-Port-Of: odoo/enterprise#52780 Forward-Port-Of: odoo/enterprise#50715
This fix prevents empty project groups from appearing in timesheet list and filter views when there are many active projects. Previously, the system was incorrectly showing projects with zero timesheets due to how groups were being expanded across different view types. The fix ensures group expansion only applies to the grid view where it's needed, eliminating confusing empty entries for users.
Original PR description
### Steps to reproduce: Have more than 80 project active on your db, go to my timesheets/all timesheets (or activate the my project filter) views> list view > group by project > some of the group…
### Steps to reproduce: Have more than 80 project active on your db, go to my timesheets/all timesheets (or activate the my project filter) views> list view > group by project > some of the group project will show 0 timesheets linked even tho they do have timesheets ### Issue: the empty groups that have timesheets should not be displayed at all ### Cause: The _group_expand_project_ids supposed to be only for the grid view also triggers for the other views, the read_group of the listview has a base limit of 80 but with the group expand 100 groups are fetched by page so more "empty" project groups are fetched to fill the result ### Solution: Local solution to test thoroughly, renamed the 'group_expand' keys in the My timesheet/ All timesheets/ my project filter/ timesheet_view_grid_by_project_no_section by 'grid_group_expand' In the read_grid method we check if that 'grid_group_expand' is present in the context, if so it'll also add the 'group_expand' key in the context then do the read_grid custom expansion The _group_expand_project_ids and _group_expand_employee_ids now need to have this 'group_expand' in their context so basically they can now only be triggered if the read_grid method has been triggered before. This ensures us that this group expand can't happen alone in the list/kanban/... views **this solution should be reviewed since i wasn't able to trigger the _group_expand_project_ids when the grid_view is enabled, so it may be possible to completely deprecated the _group_expand_project_ids method (as well as the _group_expand_employee_ids)** Ticket-3450175 Forward-Port-Of: odoo/enterprise#53521 Forward-Port-Of: odoo/enterprise#51615
This fix corrects an issue in the Belgian payroll module where holiday pay was being incorrectly recovered during salary simulations. The change ensures that when employees use the salary simulation tool, holiday pay calculations are handled properly without unintended deductions. This improves the accuracy of payroll forecasts for Belgian companies.
Original PR description
Forward-Port-Of: odoo/enterprise#53627
This fix resolves a system crash that occurred when creating return orders for products with serial number tracking. The issue was caused by a recursive loop in the return processing logic that would cause the system to freeze. Users can now successfully process product returns without encountering errors.
Original PR description
Steps to reproduce the bug: - Create a storable product “P1”: - Tracking: SN - Update the qty: 1 unit, “SN1” - Create a SO with and validate it - Go to the delivery and validate it - Create a return and validate - Create a return of return Problem: error message: RecursionError: maximum recursion depth exceeded while calling a Python object The `_get_origin_moves` and `_get_destination_moves` functions add the list of origin or destination moves, but the functions themselves are called with that list, creating an infinite loop. opw-3659818
The system was displaying incorrect caller information during incoming calls due to phone number formatting mismatches between the database and the phone system. This fix removes the unreliable caller identification feature to prevent confusion, while also improving system performance. The feature will be reimplemented once a more reliable solution is found.
Original PR description
The search for a partner corresponding to the number of an incoming call doesn't work correctly and shows the wrong partner most of the time. This is really confusing; better to show nothing than something wrong and misleading.
Futhermore, since 3efd8e84865d8abdda89553c7fec761725a9cd58 where `sanitized_{mobile,phone}` were mistakenly removed, the phone numbers in the database and those sent by the PBX aren't formatted the same way, making it even less likely to get a relevant match.
As this also has a bad impact on performance, this commit removes the feature until we find an acceptable tradeoff.
Forward-Port-Of: odoo/enterprise#49169