Thursday, April 25, 2024
34 changes · 17.0
Enhancements to existing features
This update ensures that mandatory analytic distribution requirements are properly enforced when reconciling bank statements. Previously, users could bypass these requirements during reconciliation, which could lead to incomplete financial records. The fix also resolves an issue where the reconciliation interface would become unresponsive if an error occurred during the process.
Original PR description
Mandatory Analytic Plans should be mandatory. This was not checked when reconciling a bank statement. This commit adds a check to ensure that the analytic distribution is correct when reconciling a bank statement. Task: 3864633
This improvement enhances the Latin American check payment module to support handling multiple checks within a single payment transaction. Users can now edit and manage multiple checks more efficiently when processing payments, streamlining the payment workflow for businesses operating in Latin American markets.
Original PR description
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
The internal note feature, previously limited to restaurant POS systems, is now available for all shop types. This improvement allows POS users to add internal notes to order lines in any shop configuration, making the feature more widely accessible and useful across different business models.
Original PR description
Allow pos users to have the "internal note" button available even in non-restaurant shops. Task-ID: 3878947 **Before:** Internal note button is only for restaurant. <img width="1800" alt="Screenshot 2024-04-22 at 15 56 44" src="https://github.com/odoo/odoo/assets/3245568/b923a1f5-e7fe-4a8a-b624-c0c31135c4fb"> **After:** <img width="1800" alt="Screenshot 2024-04-22 at 15 55 28" src="https://github.com/odoo/odoo/assets/3245568/fc82f296-7598-46b7-bbe0-0eb199872515">
Resolved issues and error corrections
The Belgian POS Blackbox module has been temporarily disabled and made uninstallable until certification requirements are completed. This is a temporary measure that will be reverted once the certification process is finished. Users will not be able to install this module until the certification is done.
Original PR description
We make this module uninstallable until the certification is done. This commit will be reverted later.
This fix resolves an issue where the edit history wasn't being properly cleared when users clicked the discard button on knowledge articles. Previously, users could undo (Ctrl+Z) after discarding changes and see the discarded content reappear in reverse order. The fix ensures history is only reset when discarding changes, not when simply navigating through the undo/redo history.
Original PR description
related community pr : https://github.com/odoo/odoo/pull/155511 Issue: ====== History steps aren't cleared when we click discard Steps to reproduce the issue: ============================= - Add anything to a knowledge article - Click discard - Click ctrl+Z - The block reappears but in reverse order Origin of the issue: ==================== This commit introduced the behavior: https://github.com/odoo/odoo/commit/0e22763a85ee2f4caf663185eb70d3d181b954b0 Solution: ========= We pass the information via the context of the record so we can set `shouldReset` as true when we click discard and as false when we just restore history. there is no easy way to pass the information directly using the props se we make use of the record which is common between `html_field` , `controller` and `topbar` task-3768456
Fixed a formatting issue in the customer statements report where text was not wrapping properly in the activity column, causing information to extend beyond the page boundaries. The fix removes unnecessary text-wrapping restrictions to ensure all content displays correctly when printing customer statements with multiple payments.
Original PR description
### Steps to reproduce 1. Activate "l10n_account_customer_statements" 3. Register payment for a large amount of invoices (6+) to the same customer 4. Tick the Group Payments box 5. Go to the customer's contact 6. Action / Print Customer Statements You should see that most of the information is outside the page ### Cause The whole table has the `text-nowrap` class. opw-3820027 Before:  After: 
This fix resolves an issue where the Brazil Avatax services module was causing test failures when installed without the EDI (Electronic Data Interchange) module. The service tax calculation function now properly handles cases where EDI is not installed, preventing errors and allowing the module to work correctly in non-EDI environments. Users who need full service tax computation features will need to install the EDI module separately.
Original PR description
_compute_l10n_br_is_service_transaction() was added as part of account.external.tax.mixin. It's supposed to be implemented for both account.move and sale.order. The sale.order override is part of l10n_br_edi_sale_services, which is only installed if EDI is installed. This causes issues with the "l10n single modules" runbot tests. When l10n_br_test_avatax_sale is tested it installs l10n_br_avatax and sale. l10n_br_avatax_services is auto-installed because of l10n_br_avatax. Because there's no sale.order override various tests will fail with NotImplementedError() [1]. Ideally there should have been a l10n_br_avatax_sale_services module that contained just this one override. In absence of that, we make the function set False to stop breaking the tests. Users who just want tax computation on services will need to install the EDI part manually. [1] https://runbot.odoo.com/runbot/build/61615058
This update corrects the visibility logic for the Share and Link buttons in the Documents module. Previously, these buttons would appear or disappear incorrectly depending on which documents were selected. Now the buttons display properly: the Link button only shows when appropriate for the selected documents, and the Share button correctly appears when at least one non-archived document is selected.
Original PR description
Bug === Create in this order - 1 normal document - 1 link document - 1 normal document Select the first and second documents, the link button is not visible. Select the second and third documents, the link button is visible and shouldn't be. Similarly, the share button should be visible if at least one document is not archived, and not if the first document is not active. Task-3874111 Forward-Port-Of: odoo/enterprise#61400 Forward-Port-Of: odoo/enterprise#61118
Fixed a bug in the Planning module where night shift employees were not being automatically assigned to open shifts due to rounding errors in workload calculations. The system now correctly rounds allocated hours to ensure shifts are properly assigned when an employee's availability matches the shift requirements.
Original PR description
To reproduce: ============= - create an employee having night shift from 21:30 to 06:00 configured as 21:30 -> 24:00 and 00:30 -> 06:00 (break of 30 minutes) - in planning create a role for this employee - create an open shift for that role from 21:30 to 06:00 - click auto plan -> shift is not assigned to the employee Problem: ======== when computing the rate of allocated hours for this shift we find out that it exceeds 100%, because the hour 24:00 is represented as 23:59:59.999999 which creates rounding issues. Solution: ========= round the allocated rate opw-3874283
This fix corrects how fleet service costs are recorded when bills are created in a currency different from the company's default. Previously, the system would incorrectly store the bill amount in the company's currency, causing cost discrepancies. Now it properly uses the correct debit value to ensure accurate fleet service cost tracking.
Original PR description
**Steps to reproduce:** 1- Install Accounting, Fleet modules 2- Create a bill in accounting with a different currency than the company's default, and add a line with a chosen vehicle_id. 3- Go to the chosen vehicle in Fleet module 4- Navigate to the service created for this bill **Current behavior before PR:** If we create a bill for a vehicle using a different currency than the company's default. The fleet service that will be created will be having the company's currency but the value will be the amount in the currency used in the bill **Desired behavior after PR is merged:** We now create the fleet service using the value in debit not the unit price or the price subtotal. opw-3734743 Forward-Port-Of: odoo/enterprise#57639
This fix resolves an issue where the survey access rule was being overridden when both the HR Appraisal and HR Recruitment modules were installed together. Previously, only the rule from the last installed module would apply. Now the rules are properly combined so both modules work correctly together.
Original PR description
The survey.survey_user_input_rule_survey_user_read rule is override in both hr_appraisal_survey and in hr_recruitment_survey. The problem arises when both modules are installed. If so, the domain is taken from the module that is installed the last. This should not be case, instead domain should be combined. task - 3597033 Forward-Port-Of: odoo/enterprise#60941
The Frontdesk module has been updated to properly declare its dependency on the SMS module. Previously, Frontdesk was using SMS features without explicitly stating this requirement, which could cause issues if someone tried to uninstall SMS. This fix ensures the system correctly recognizes that Frontdesk needs SMS to function properly.
Original PR description
This should have been done using a bridge module to allow uninstalling SMS but hey. Runbot-27909
Fixed an issue where running timers were not being counted when creating invoices for timesheet-based service products. Previously, users had to discard running timers when invoicing. Now, the system automatically stops all running timers and includes their time in the invoice calculation, streamlining the invoicing workflow.
Original PR description
Steps to reproduce: - Make a service product, with invoicing policy based on timesheet and project & task set for create on order. - Make an SO for that product - The SO will create the task and the project - Register timesheet linked with the task with 15 min - Start a timer - Create the invoice Issues: The timer is still running, with the only choice possible being to discard it. Solution: The behaviour wanted by the po is to stop all the timer and count them in the invoice. opw-3715694
Product images in the Point of Sale were appearing zoomed in and cropped incorrectly, especially for images with unusual aspect ratios. This fix restores the previous behavior where images are resized to fit properly within their container without unwanted cropping, improving the visual presentation of products.
Original PR description
The cover scss rule first stretches the image to fill the container completely, then cropped at the size of the container. This results in some poor display result if the image has a weird aspect ratio. This is a behaviour change from saas-16.3 where the image wasn't cropped and simply resized to fit inside the container. opw-3826349 saas-16.3:  saas-16.4:  fixed locally (16.4):  Forward-Port-Of: odoo/odoo#161038
This update removes a problematic field from the gamification goals sorting logic that was causing system warnings. The fix ensures that goals can be properly searched and sorted by completion status and performance metrics without triggering errors, improving the reliability of the gamification feature.
Original PR description
We are removing the ``completeness`` field from the order because it's a non-storable field. When we attempt to access this field, it triggers a logger warning check at line [1]. This commit will help you to implement a ``goals`` search by domain and order by ``ID`` and sorting by ``completeness`` and ``current`` value, with condition-based sorting for 'higher' or 'lower' requirements check at line[2]. [1] : https://github.com/odoo/odoo/pull/127353/commits/12e9749bcc1dc4f7b1a129933ae16840195bcae8#diff-7144f88ea32f36feb17ce1b8dda7dee1631f5ada34075414587df3948c6b3d1bL5317 [2] : https://github.com/odoo/odoo/blob/5c5b4d991423e0282d06a98e5677977d53dc0817/addons/gamification/models/gamification_challenge.py#L545-L548 sentry - 5162134321
This fix resolves an issue where Point of Sale orders would incorrectly revert to draft status when sync failures occurred, even after receipts were printed. Previously, validated orders that failed to sync with the server would lose their saved state and could not be recovered properly. Now, orders maintain their saved state during sync failures, ensuring that printed receipts are never lost or modified.
Original PR description
If an order was validated in PoS but encountered a sync error, the order would revert to a draft state and no receipt would be printed. However, if an order was validated in PoS without internet, the receipt could still be printed. When the internet connection was restored, the system would attempt to validate the unsynced order. If a server error occurred during this process, the system would try to revert the order to a draft state and fail. This behavior is not ideal as an order with a printed receipt should not be modified or changed. This commit ensures that in the event of a sync failure, the saved orders do not revert to a draft state. opw-3858994 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix corrects a bug in manufacturing orders where unlocking and adjusting the quantity of an overproduced order resulted in removing twice the expected materials from inventory. For example, when a 2-unit order was produced as 3 units and then adjusted to 3 units, the system was removing 6 components instead of 3. The fix ensures material consumption is calculated correctly by processing quantity changes at the proper system level.
Original PR description
Usecase to reproduce: - Create a MO for 2 unit (1 component per finished product) - Produce 3 units - Mark as done - Unlock and change the quantity to 3 units Expected behavior: 3 components removed from stock Current behavior: 6 components removed from stock It happens because the set_quantity_done create a new stock.move.line with excessive quantity. Then the write of qty_producing in mrp.production will write this quantity on all the `stock.move.line`. It results by moving number of sml * the new quantity producing Solution do the write of new quantity done on the `stock.move` level and let him manage the `stock.move.line` 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 Forward-Port-Of: odoo/odoo#161650
Fixed an issue preventing portal users from creating new opportunities when they don't have any existing ones. This restores functionality that was previously available, allowing users to initiate new business opportunities directly from the portal interface.
Original PR description
Issue ----- Users cannot create a new opportunity on the portal if they don't have any. Fix ----- Apply the same change in 17.0 than 58356928dd9cf07158bca4e8c1ce0dcf5177d0b9 did in following versions. **opw-3809571**
Fixed a bug where the replenishment wizard was ignoring the vendor selected by the user and creating purchase orders from the default vendor instead. The system now correctly tracks and uses the vendor chosen in the replenishment dialog, ensuring purchase orders are created from the intended supplier.
Original PR description
Steps to reproduce:
- Create a product with 2 vendors
- Click replenish on the product page and select the second vendor
- The PO is created for the first vendor
Bug:
the replenishment will create a move which will create/edit a PO the selected supplier is discarded
Fix:
set the partner on the procurement group to keep track of it
note:
'supplierinfo_name' no longer used, will be removed in master related test ("test_procure_not_default_partner") is now irrelevant
opw-3776680This fix resolves an issue where users on mobile devices could not properly select analytic accounts when configuring analytic distributions. Previously, clicking on the selection modal would close the widget instead of registering the selection. Now users can successfully configure analytic distributions on mobile devices.
Original PR description
Steps to reproduce: - Activate "Analytic Accounting" in Accounting settings - Switch to a mobile view - Go to any view where there is the analytic distribution widget (e.g. expense form) - Try to configure the analytic distribution Issue: When an analytic account is selected, it is not taken into account. Cause: In mobile view, a modal is opened with a kanban view to select the analytic account. Any click on this modal is closing the analytic distribution widget. opw-3734050 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Expenses were showing zero amounts on the accounting dashboard due to incorrect column references. This fix corrects the data retrieval logic and ensures that partially paid expenses are also displayed, giving users accurate visibility into amounts owed for employee expenses.
Original PR description
Steps to reproduce: - create-aprove-post an expense - Go to the accounting dashboard Issue: expenses' amount is 0 Cause: In `_count_results_and_sum_amounts`, since the expense.currency is the same as the company we don't get the correct result: https://github.com/odoo/odoo/blob/d29a622740f6c34d25c52add5367bfdf58bbaf49/addons/account/models/account_journal_dashboard.py#L641-L644 Solution: Get the right columns. We also change the domain to make sure that expenses partially paid are also displayed. Note: For the test we check that even partially paid expenses are displayed. In Master we want the residual amount to be displayed. In master: Use the amount_residual (discussed with po Laura) opw-3849036
This fix resolves a payment processing error that occurred when customers registered for paid events through the website checkout with an extra information step enabled. The issue prevented the order from being properly tracked in the session, causing payment validation to fail. This fix ensures the order is correctly recorded so customers can complete their event registration and payment without errors.
Original PR description
This commit fixes an issue where the `sale_last_order_id` was not being set in the session when the extra info step was added to the checkout process. This caused an error during the validation of event payment in `shop_payment_validate`. Steps to reproduce the issue: 1. Install `website_event_sale` and set up a payment provider. 2. Add the extra info step to the checkout in the website. 3. Register for a paid event from the website. 4. Proceed to pay the order, which would previously result in an error. opw-3864873 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves an issue where customers submitting empty product reviews would see an unexpected error dialog popup. Now, users will only see a helpful message prompting them to add either text or an attachment, providing a better user experience when submitting reviews.
Original PR description
**Current behavior:** Attempting to leave a review with no body text or attachment shows an error dialog popup. **Expected behavior:** We should just see the prompt appear above the text input area informing the user to provide either text or an attachment. No dialog window should popup. **Steps to reproduce:** 1. Go to an item in the web store and in the editor enable customer ratings 2. As a portal user go to that item and attempt to submit a review with no text nor attachment **Cause of the issue:** In the input validation for this text area we reject the pending promise if there is no body text and attachment without catching the potentially undefined return. **Fix:** Add a catch block to the block where we may have an undefined return. opw-3876444
This fix resolves a conflict in how survey access permissions are managed when both the recruitment and appraisal modules are installed together. Previously, only the last installed module's permissions would apply. Now the permissions are properly combined, and they're also correctly removed when a module is uninstalled, ensuring consistent and reliable access control.
Original PR description
The survey.survey_user_input_rule_survey_user_read rule is override in both hr_appraisal_survey and in hr_recruitment_survey. The problem arises when both modules are installed. If so, the domain is taken from the module that is installed the last. This should not be case, instead domain should be combined. On top of it, the domain is not corrected when the app is unistalled. This commit fixes that too task - 3597033 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 Forward-Port-Of: odoo/odoo#162238
This fix ensures that theme preview images are properly displayed in the theme selection page after upgrading a database to a new version. Previously, when databases were upgraded and new themes or theme screenshots were introduced, the images would not appear because the image update process wasn't being triggered during the upgrade. The fix now ensures this process runs automatically whenever the website module is updated.
Original PR description
In order for preview images to be shown in the theme selection page, the `update_theme_images` needs to be called. This was done in a `post_init_hook`, which is called e.g. when installing `website`.…
In order for preview images to be shown in the theme selection page, the `update_theme_images` needs to be called. This was done in a `post_init_hook`, which is called e.g. when installing `website`. This was also done in a `website` override of `ir.module.module.update_list()` which is called when updating a module interactively. Unfortunately, even though this override is defiend, at the time `update_list()` is called from `loading.py` when using `-u` on the command line, the modules are not loaded yet, and therefore the override is not applied. Because of this, when a database was upgraded between versions that introduce new themes or new screenshots for themes, `update_theme_images` was not called during the upgrade, and the new images were missing in the upgraded database. This commit solves this by calling `update_theme_images` from a `function` data record, so that it is run both on install and on update of `website`. Steps to reproduce: - Install website and a theme in 14.0. - Upgrade to 15.0. - Access the theme selection page. => Images were missing for some themes. task-2719425 Forward-Port-Of: odoo/odoo#162966 Forward-Port-Of: odoo/odoo#160452