Monday, September 16, 2024
21 changes
1 change
Resolved issues and error corrections
Manufacturing orders that are already planned to start soon are now counted correctly in stock forecasts. This prevents reordering rules from adding too much quantity to existing manufacturing orders when sales orders are repeated.
Original PR description
Steps --- 1. install `mrp,sales_management` 2. Create a manufacture-routed product P with a manufacturing BOM: * Operation OP1, duration = 1 hr * some component 3. Create a reording rule for P with a…
Steps --- 1. install `mrp,sales_management` 2. Create a manufacture-routed product P with a manufacturing BOM: * Operation OP1, duration = 1 hr * some component 3. Create a reording rule for P with a manufacturing route: * min qty = 0 * max qty = 0 4. Create an SO for 15 > Confirm * (A MO for 15 P should have been generated) 6. duplicate the SO > Confirm * (The **same** MO is now for 30 P) 7. duplicate the SO > Confirm => The MO is for 75 P instead of 45 Cause --- When the reordering rule is triggered, we attempt create a procurement for the opposite of the forecast quantity of product P and add it to the MO. But the reordering rule's visibility days is 0 (default), so once the MO's expected finished date (now + qty * 1 hr) is tomorrow or more [1] we do not consider the quantity coming from the MO for the stock forecast. Therefore the procurement is for the sum of all the previous orders for P (ie 15 * 3 = 45), so the MO's quantity will be 30 + 45 = 75 instead of 30 + 15 = 45 [1] (cf commit 1) There is another bug this PR fixes where the date finished for MOs is not computed at creation time but only at write time, therefore, we need to be at least on the 3rd SO for the bug to appear. (The 2nd one writes to the MO) Fix --- When computing the quantity in progress for product P, take into account MOs such that `date_start <= end_of_orderpoint_forecast < date_finished` \+ [1] Do compute the finished date at creation when it isn't specified in the vals and do not specify it in the above flow. opw-4034475
11 changes
New functionality added to Odoo
A new India ENet batch payment module lets businesses generate CSV files for vendor payments. This helps streamline payment processing through supported bank formats, reducing manual preparation work and potential errors.
Original PR description
Introduced the India ENet Payment CSV Generator module for generating CSV files for vendor payments. taskid: 3825529 Related PR: https://github.com/odoo/odoo/pull/166304
9 changes
New functionality added to Odoo
This update adds support for Turkish Nilvera e-invoicing, a new localization feature for Turkey. It introduces two new modules that enable electronic invoice generation and submission through the Nilvera platform, allowing Turkish businesses to comply with local e-invoicing requirements.
Saudi Arabia payroll users can now generate a master Excel report from a dedicated Reporting menu. The report covers one or more months and lists each employee with the amounts earned, making payroll review and reporting easier.
Original PR description
Link to task: [#4177169](https://www.odoo.com/web#model=project.task&id=4177169) This will add a new Reporting menu for Saudi Arabia to generate a master report. - The master report is an Excel file that represents one or more month(s), listing each employee and the amount they earned. - Done in UAE : https://github.com/odoo/enterprise/pull/61917
A new dashboard has been added for email marketing automation, giving teams a clearer view of campaign performance and activity. This helps marketing users monitor results more easily and make faster, data-informed decisions.
Original PR description
…ting dashboard This commit adds a new module with the new email marketing dashboard. Task: 4179584
Enhancements to existing features
On mobile form views, record action buttons are moved into the cog menu instead of taking space in the main status area. This gives users more room to see and use the status or stage indicator, while keeping actions accessible from the control panel menu.
Original PR description
*: worksheet In a nutshell, since we now have a "CogMenu" in the ControlPanel which also contains different actions for the current record, this change reclaims the space taken by the "Actions" dropdown and moves those buttons to the said CogMenu, leaving more space to the status/stage widget. This commit adapts tests and xpath for the changes made in community. PS: the "isSmall" mock in worksheet was already wrong before this commit... task-3336242
Manufacturing stations can now show or hide the 'All Manufacturing Orders' and 'My Work Orders' options, giving teams better control over what appears on the shop floor. Barcode operations also gain on-demand quality checks, helping workers perform quality controls directly when needed.
Original PR description
Before this PR ================== 1. The current "Select Work Centers for this station" view does not include 'All MO' and 'My WO' in the list, so the user can't choose to display or hide these two options. 2. There was no quality check (on-demand quality check) in action of operations in barcode. After this PR ================= 1. The "Select Work Centers for this station" now includes 'All MO' and 'My WO' as options in the list of items. 2. Quality check (on-demand quality check) have been added to the action of operations in barcode. Community PR: https://github.com/odoo/odoo/pull/171532 TaskId: 3870483
The spreadsheet dashboards for accounting, CRM, helpdesk, payroll, referrals, rentals, and subscriptions have been redesigned. This gives business users a more modern and consistent reporting experience across multiple operational areas.
Original PR description
This commit updates the design of all our dashboards Task: 4179584
Several Odoo apps now use cleaner, more human-readable web addresses. This improves navigation clarity for users and keeps automated checks aligned with the updated link format.
Original PR description
*= account_reports, documents, l10n_mx_reports_closing, stock_barcode, stock_barcode_mrp, web_enterprise This commit modifies existing URLs to the new format so that the URL's become more human readable. Task-3820230
Accounting users can now open attachment PDFs from a popout button when the normal preview is hidden on smaller screens. The preview area has also been enlarged, making document review more comfortable across screen sizes.
Original PR description
When being on a small screen, the attachment preview is removed because of a media query. To solve that we added a new popout icon that is added when the windows size is smaller. When clicking on a line and then the popout icon, if the line has an attachment the pdf is open in an external view. Also changing the size of the preview viewer, it was a bit small. task: 4173641
The point of sale now shows the scale weighing screen on the customer-facing display during checkout. This helps customers see the exact weight being processed in real time, supporting EU compliance and reducing the chance of cashier input errors.
Original PR description
In compliance with EU legislation that mandates proper communication with scales, we have introduced a feature to display the weighting pop-up on the customer screen. This improvement ensures that customers can see the exact weight being processed, minimizing the risk of cashier errors. - Added functionality to display the weighting screen data on the customer-facing screen. - Enhanced user interface to support real-time weight display during transactions. Related: https://github.com/odoo/odoo/pull/176062 Task ID: 4091330
Odoo Studio exports are now faster and more reliable, with improved internal checks to better validate exported data. The customization actions in the Studio home menu are also easier to find because they have been moved out of a hidden dropdown and placed directly in the navigation bar.
Original PR description
**[IMP] test_web_studio: remove useless test helper** There is no need to assert records individually as there is already an assertXML method, which in the end asserts more information such as the…
**[IMP] test_web_studio: remove useless test helper**
There is no need to assert records individually as there is already an
assertXML method, which in the end asserts more information such as the
`noupdate="1"` attribute on some export, or the order of the records
which may be important in some cases. The previous `assertRecords`
method was not testing the records order.
**[FIX] {test_}web_studio: make export faster**
Improves the perf of the export feature by:
- checking has_website only once at the beginning of the archive
generation
- adding a cache to the _clean_dependencies algorithm
Fixes also the _get_xmlid function:
- before this commit it could leak through workers
**[IMP] web_studio: expand customizations dropdown**
- Before
The home menu customizer had a badly discoverable dropdown menu called
"Customizations" that contained mainly three actions: change
background, export, import
- After
The menu has been removed and the actions it contained had been moved
to the right of the navbar, next to the "Close" button.Code cleanup and technical improvements
This update reorganizes the SEPA payment file functionality into a more generic ISO 20022 foundation, making it easier to support additional country-specific payment formats such as Canadian EFT. It also improves the user experience by replacing blocking warnings with a banner and moving to a newer payment file standard while keeping the older option available if needed.
Original PR description
The Canadian EFT task (3472908) was the opportunity to refactor, clean up and adjust the account_sepa module, in order to ease its usability and maintainability. The goal is both to refactor and…
The Canadian EFT task (3472908) was the opportunity to refactor, clean up and adjust the account_sepa module, in order to ease its usability and maintainability. The goal is both to refactor and better the account_sepa module, which has needed a facelift for quite some time, and to ease the canadian task by making the sepa module more generic. We first added test in the SEPA module to ensure that this refactor would be as much as possible working the same after the refactor: see https://github.com/odoo/enterprise/pull/58250 Then : - renamed the module and the variable to be more correct regarding the nomenclature - General clean up, de-spaghettification, simplification and removal of dead code - Isolated the common and generic ISO20022 and created classes for each ISO20022 variants (aka pain version), avoiding as much repetition as possible - Modified the payment method and journals accordingly - Replaced blocking errors and warning pop-ups by a single banner, falling back on a more generic version of ISO if the criterias aren't met - Replaced pain.001.001.03 usage by its newer version (09), while keeping the 03 part so it can be reactivated from system settings if need be task-3813884
Resolved issues and error corrections
This update fixes a bug in the account synchronization feature where the system was attempting to compare a synchronization expiration date without first checking if the date value exists. The fix ensures the system validates that a date is present before performing the comparison, preventing errors during the synchronization process.
Original PR description
This commit is checking that we have a value before checking it with the today's date. no task id
This update fixes an issue in the Trial Balance Report where zero values were not being correctly identified when report columns were updated. The fix ensures that accounts with zero balances are properly recognized, improving the accuracy of financial reporting displays.
Original PR description
Before this commit, the is_zero attribute was not recomputed correctly when updating the columns. task: 4188758
A previous update to the subscription system removed invalid data entries while processing the data, which could cause errors. This fix separates the data cleanup into two distinct steps to ensure the process works safely and reliably without interruptions.
Original PR description
Commit https://github.com/odoo-dev/enterprise/commit/9c697cad459bedda4aa34d3b4b20a4a4f35c2169 removed these bad map keys while iterating over the actual dictionary- it is bad practice to change an iterable directly in this manner. This commit seperates the update and removal into distinct loops. opw-4061484
This fix resolves a crash that occurred when enabling the email alias feature for helpdesk teams without a team name. The system now properly checks if a team name exists before attempting to process the email alias, preventing the error and allowing users to manage email aliases without interruption.
Original PR description
Currently, an error occurs when enabling 'Email Alias' in the helpdesk team and helpdesk team name is not available. Step to produce: - Install the 'helpdesk' module. - Navigate to Helpdesk / Configuration / Helpdesk Teams. - Open any record remove a name and disable 'Email Alias'. - Then enable 'Email Alias'. ```AttributeError: 'bool' object has no attribute 'replace'``` An error occurs when the system tries to replace a helpdesk team name at [1] but it is not available. Link [1]: https://github.com/odoo/enterprise/blob/f9b1be600825651c9a893920d7532b9b95e3dc02/helpdesk/models/helpdesk_team.py#L574 To resolve the issue, add a condition that calls the '_alias_get_creation_values' method if the helpdesk team name is available. Sentry-5831429098
This fix resolves a system error that occurred when creating a helpdesk ticket if a team member had been deleted from the system. Previously, the system would crash with an error message when trying to assign a ticket to a team with no active members. Now the system handles this situation gracefully, allowing ticket creation to proceed without interruption.
Original PR description
When the customer creates a helpdesk ticket and the user of helpdesk team is deleted, a traceback will appear. Steps to reproduce the error: - Go to Settings > Users & Companies > Users > Create a…
When the customer creates a helpdesk ticket and
the user of helpdesk team is deleted, a traceback will appear.
Steps to reproduce the error:
- Go to Settings > Users & Companies > Users > Create a user
- Go to Helpdesk > Configuration > Helpdesk Teams > Open Team A
Select Assignment Method: Random > Select that user in the members > Save
- Delete that user
- Go to Helpdesk > All Tickets > Create a ticket > Select Team A
Traceback:
```
IndexError: list index out of range
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/web/models/models.py", line 866, in onchange
defaults = self.default_get(missing_names)
File "home/odoo/src/enterprise/saas-17.2/helpdesk/models/helpdesk_ticket.py", line 40, in default_get
result['user_id'] = team._determine_user_to_assign()[team.id].id
File "home/odoo/src/enterprise/saas-17.2/helpdesk/models/helpdesk_team.py", line 959, in _determine_user_to_assign
result[team.id] = self.env['res.users'].browse(member_ids[index])
```
https://github.com/odoo/enterprise/blob/947b6ab9447aa069fd5edd150c932d9a0884a3cb/helpdesk/models/helpdesk.py#L502 When the related user is deleted, "member_ids" will be an empty list.
so when it tries to access the index of "member_ids",
it will lead to the above traceback.
behavior after the commit:
It will ensure that at least one user is selected in "member_ids".
sentry-5630888721
Forward-Port-Of: odoo/enterprise#69990
Forward-Port-Of: odoo/enterprise#67240Images added to worksheets were not appearing when customers viewed them on the portal or after signing. This fix ensures images are properly embedded in worksheets so customers can see them without needing special access permissions. Now images display correctly for all users viewing shared worksheets.
Original PR description
To reproduce: ============= 1. Add an image field on a worksheet template 2. Create a new task 3. Add a picture on the worksheet 4. Send the report to the customer -> the image is not displayed on the protal -> after signing the report, the image is not displayed on the signed report Problem: ======== - the image added to the worksheet is a binary field, so when compiling the Qweb template, this field can be either a base64 string or a url to the image. https://github.com/odoo/odoo/blob/f0af31dbe36bc77d50ec36e88b49e1e521b809c1/addons/web/models/ir_qweb_fields.py#L68-L74 - in this case the field is url to the image, so when the customer opens the worksheet on portal, the image is not loaded as the customer does not have read access to the binary field representing the image. Solution: ========= - represent image binary fields as base64 strings in the Qweb template insted of urls to the image. opw-3944993 Forward-Port-Of: odoo/enterprise#67156
This fix resolves an issue where inactive records were not appearing in the Gantt view even when explicitly filtered. The system now correctly searches for and displays both active and inactive records when requested, ensuring users can view all relevant data in their project timelines.
Original PR description
Purpose ======= Fix the inactive records fetching in the gantt view. Specification ============= When fetching the records to display in the gantt view from their ids, we don't specify if the inactive records need to be included in the search. This is an issue as further down the execution flow, the '_where_calc' method by default excludes inactive records except if they are explicitly asked for. => This means that filtering on inactive records doesn't display any records. Fixing that by setting the 'active_test' key in the context to 'False' to be sure we search records with these ids both in active and inactive records. Related commit: 836909419893b522890776d3ec2f16476ae21108
This update corrects the order in which optional employer insurance payments are processed in Swiss payroll calculations. The fix ensures that optional insurance deductions are calculated before gross salary amounts, which is important for accurate payroll processing and compliance with Swiss employment regulations.
Original PR description
Sequences of optional employer insurance payments should come before gross