Tuesday, April 30, 2024
34 changes
8 changes
Enhancements to existing features
Appointments that are assigned to users can now let customers pick a time first, then show which staff members are available for that slot. This makes booking easier when the appointment time matters more than choosing a specific person upfront.
Original PR description
This PR enables the 'time_resource' option for appointments based on users, allowing users to select the time first and then showing available users based on the selected time. Task-3729624
Product lifecycle and shop floor processes now capture manufacturing changes more accurately, including components, by-products, operations, and quality checks. Teams get clearer change history, better synchronization, editable version details, and smoother suggestion handling through notes instead of activities.
Original PR description
Adapt models to better reflect BoM changes: - component & by product - operation & quality step and improve the synchronization mecanism to better identify changes. Replace activities by notes for Suggestions. Fix some UI points. See odoo/odoo#137231 See odoo/upgrade#5225 task: 3059466
Time-related field labels have been standardized across service applications, including helpdesk, planning, project forecasting, field service reports, and customer portals. This makes screens and reports easier to understand and reduces confusion when users compare time information across different workflows.
Original PR description
In this commit we have made improvement in the time labels task-3330297
Documents now use a simpler standard list view by default in the activity view. This removes unnecessary document-specific panels and drag-and-drop behavior in that context, making the activity workflow cleaner and reducing the need for special fixes.
Original PR description
This commit adds a basic list view for documents.document model with no js_class attribute and with a higher priority to make it usable by default in the activity view. This avoid getting a fully customized list view with the document inspector and drag and drop utilities. This allows to revert various fixes, now not necessary anymore. Task ID-3837270
Users can now cancel signature requests directly from the signing interface, making it clearer how to opt out of reminders or decline a request. Refused and ignored requests are now handled consistently as canceled, simplifying follow-up and request tracking.
Original PR description
Although we make it possible to opt-out of automated reminders via a link in the email, this is not super visible and we should also make this possible in the sign UI. To simplify some flows, we can merge this with the 'refusal' flow and with the 'ignore' flow. Indeed, if one decides to ignore a sign request it means they have no intent to sign - might as well cancel it. Essentially, this commit merges refused and ignored states to canceled in the backend. On top of that we also add a cancel button on the kanban view of sign request and on the control panel in the sign request client action. task-3675303
Point of Sale-related modules can now receive and use additional server-calculated information on records without needing a predefined field. This makes country-specific invoicing, compliance, and payment flows easier to support while reducing duplicated client-side calculations.
Original PR description
*: All pos related modules
This commit allows to access arbitrary data in related models. This is
useful for data that are computed on the server side and that are not
recomputed on the client side.
Before this commit, it was only possible to access data that are linked
to a field in the model.
Now custom data coming from the server can be added to any record with
the prefix `_` in the key. For example, if the server sends the
following data for `pos.order`:
Classic fields:
```
{
id: 1,
name: 'Order 1',
partner_id: 1,
partner_name: 'Partner 1',
}
```
Custom fields:
```
{
id: 1,
name: 'Order 1',
partner_id: 1,
partner_name: 'Partner 1',
_custom_field: 'Custom value',
}
```
Comunity PR: https://github.com/odoo/odoo/pull/160169Barcode users can now scan a lot or serial number directly from the main barcode screen when tracking is enabled. This makes it faster to look up item details without navigating into another workflow, though duplicate lot or serial numbers will show the first matching product found.
Original PR description
In this commit , when tracking is active - it will show text 'Scan a Lot/SN to know its details.' on barcode main screen. - when scanning the lot/sns it will show details of it . - if there is a case where same lot/serial exists for different product then it will show details of the first found. task_id = 3601021
Resolved issues and error corrections
Manufacturing users who do not have PLM access can now create Bills of Materials with lines without being blocked by a permissions issue. This helps manufacturing managers complete setup work without needing extra PLM permissions.
Original PR description
Currently, creation of BoMs with lines triggers a search of MrpEco records. This breaks BoM creation for non-PLM users (e.g. MRP managers). This commit fixes the issue by using `sudo().search()`.
17 changes
Enhancements to existing features
When warehouse staff exit a barcode picking before completing it, the system now automatically splits incomplete items to preserve what was already picked versus what still needs to be picked. This prevents confusion about remaining quantities and ensures accurate inventory tracking for both picking operations and manufacturing orders.
Original PR description
Backport of odoo/enterprise#59212 [OPW-3797344](https://www.odoo.com/web#id=3797344&cids=1&menu_id=4720&action=333&active_id=966&model=project.task&view_type=form) Original commit message:…
Backport of odoo/enterprise#59212 [OPW-3797344](https://www.odoo.com/web#id=3797344&cids=1&menu_id=4720&action=333&active_id=966&model=project.task&view_type=form) Original commit message: ======================== When the user quits a unfinished picking, the reservation on the move lines are lost. To avoid that, uncompleted moves will be split in such case. For example: - Assume we have a move of 0/15; - The user picks 4 qty (4/15) then exit the picking: => Before this commit, we're left with only one `stock.move.line` with 4 qty and already picked (not knowing what its reservation was since this information is on the `stock.move` and not on the `stock.move.line`.) => After this commit, the line's move will be split and we'll be left with two `stock.move` and thus `stock.move.line`: - One with 4 qty, already picked (4/4); - One with 11 qty, waiting to be picked (0/11); So, the user will always know what the remaining qty they still have to pick. Same is true for manufacturing orders since they use `stock.move` and `stock.move.line` too. task-3821067
This update moves currency rate requests for Banxico (Mexican bank) to Odoo's cloud infrastructure, where daily currency rates are now cached. This improves system performance by reducing repeated requests and ensures more reliable currency data updates for businesses operating in Mexico.
Original PR description
This commit moves the call for the Banxico currency update to the IAP server, where we can create a daily cache of currency rates. Part of: task-3749574 Forward-Port-Of: odoo/enterprise#61595 Forward-Port-Of: odoo/enterprise#58685
This update enhances the Bulgarian tax report by adding missing sections D and E, which are required for complete tax reporting compliance. Additionally, line 43 has been modified to allow direct editing instead of automatic calculation, giving users more flexibility in tax report preparation.
Original PR description
- Adds missing section D and E to the tax report. - Change line 43 to editable instead of aggregation. Forward-Port-Of: odoo/enterprise#61557 Forward-Port-Of: odoo/enterprise#57367
This update removes extra padding from the website header on mobile devices, ensuring it aligns properly with the page content. Previously, the mobile header had unnecessary spacing that made it misaligned compared to the desktop view and the content below it. This improvement creates a more polished and consistent user experience across all devices.
Original PR description
Description of the issue/feature this PR addresses: In the mobile view, the header has extra padding, for this reason it is not perfectly aligned with the content of the page. Current behavior before PR: The header is not aligned with the content | Desktop | Mobile | |--------|--------| |  |  | Desired behavior after PR is merged: The header is aligned with the content like desktop view https://github.com/odoo/odoo/assets/35231827/32fbe3f1-3ba8-443f-856d-26b03a0cbe13 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Customer invoices now display both the payment reference and the company's bank account (IBAN) information. This improvement provides customers with complete payment details in one place, making it easier for them to process payments accurately without needing to look up banking information separately.
Original PR description
On a customer invoice, the sentence "Please use the following communication for your payment : +++000/0000/10205+++" was changed to "Please use the following communication for your payment : +++000/0000/10205+++ on this account : BE81 3101 2528 8724" Customer invoices only had payment reference. Bank account (iban) was also needed on the invoice. task-3794432 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163912 Forward-Port-Of: odoo/odoo#157503
Resolved issues and error corrections
This fix ensures that when creating a new invoice, the payment method automatically inherits from the customer's configured payment method instead of defaulting to "Por definir" (undefined). This improves workflow efficiency by eliminating the need to manually set the payment method for each invoice when the customer already has a preferred payment method configured.
Original PR description
- When creating a new invoice the payment method is "Por definir" by default, so it is necessary to check the l10n_mx_edi_payment_method_id of the customer used in the invoice before checking the…
- When creating a new invoice the payment method is "Por definir" by default, so it is necessary to check the l10n_mx_edi_payment_method_id of the customer used in the invoice before checking the l10n_mx_edi_payment_method_id of the invoice and replacing it if the customer has this value assigned or use the corresponding payment method. Description of the issue/feature this PR addresses: 1. Configure the Payment way and the Usage in the partner.  2. Create a new invoice and select the partner configured in number 1.  The payment way doesn't change, it is "Por definir" by default. Desired behavior after PR is merged: After this is merged the invoice payment method will be the same as assigned in the partner. 
A previous update incorrectly applied line grouping to all intrastat reports. This fix restricts the grouping feature to Belgian intrastat reports only, where it's needed. Users can now control this grouping behavior through report filters, with the setting defaulting to off for most countries and on for Belgium.
Original PR description
In this commit [1], we changed the way we display intrastat report lines by grouping them. We did it for all the intrastat report, it was wrong. Actually, we should only do it for the belgian report. The aim of this commit is adding a key in options to know if lines should be grouped or not. By default the option is set to False except for the Belgian report. Since version 16.4, users can change the value by using the filter. task-3892823 [1]: https://github.com/odoo/enterprise/commit/217594fe8ba00329b3eb5c68e3eca3b556127cde Forward-Port-Of: odoo/enterprise#61455
Fixed an issue where the sign template editing popover would remain open even after clicking away or leaving the app. The fix ensures the popover closes appropriately when clicking outside of it, while still staying open when you're actively working with role settings in a modal dialog.
Original PR description
Before this commit: when editing a sign template and opening the sign item popover, it remained open when clicking away even when leaving the sign app. This commit addresses this issue by refining the `closeOnClickAway` to close the popover only if the click is not within an active modal, ensuring that the popover stays open when the role modal is displayed. Task: 3861496 _______________________________________________________________ Bug was introduced in this PR: https://github.com/odoo/enterprise/pull/49900 in attempt to keep the popover open when updating the sign item role. Forward-Port-Of: odoo/enterprise#60613
This fix resolves an issue where unit prices would revert to default values when editing purchase orders on mobile devices. The problem occurred because a required discount field was missing from the mobile view, causing the system to recalculate prices incorrectly. The fix adds the discount field to the mobile view and displays it when applicable, ensuring price changes persist correctly.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have `purchase` and `sale_timesheet` installed; 2. go to purchase; 3. make browser window narrow enough to trigger mobile view; 4. create an RFQ; 5. add…
Versions -------- - 17.0+ Steps ----- 1. Have `purchase` and `sale_timesheet` installed; 2. go to purchase; 3. make browser window narrow enough to trigger mobile view; 4. create an RFQ; 5. add product; 6. change the unit price. Issue ----- The unit price changes back to default. Cause ----- When changing the `price_unit` field, the `_compute_amount` method gets triggered, which depends on the `discount` field. As this field wasn't present in the mobile view, its compute method was called, which is the same method that computes `price_unit`. Normally this method skips recomputing `price_unit` if it was modified, but because `sale_timesheet` makes `uom.group_user` an implied ID of `base.group_user`, it can now access the `product_uom` field, and assumes a change from `_origin` as there is no `_orgin.product_uom` to compare it to if the PO hasn't been saved yet. Solution -------- Add the `discount` field to the mobile kanban view. Also display the discount on mobile if its value is non-zero. opw-3767765
This fix resolves an error that occurred when saving a product with a project property in the HR Timesheet module. The issue happened because the system was not properly handling cases where context information was missing during the save process. Users can now successfully create and save products with project properties without encountering errors.
Original PR description
**Steps** - Install hr_timesheet. - Create a new product. - Add a property to the product, type many2one, model Project. - Chose any project. - Save the product. ** Traceback error ** **Issue** When the product is saved, the product.template model is flushed and the context keys are all set to None. https://github.com/odoo/odoo/blob/3c7db87ade7e99eafb44228bd038fa39429fdabc/odoo/models.py#L6352 Which causes a problem when computing the display_name of project.project **Fix** Handle the case where context=None. opw-3885370
Fixed an issue preventing customers from paying with Razorpay wallet in India. The payment system now allows customers to select their preferred payment method from all available options when using wallet, ensuring transactions are properly recorded in the system. This resolves errors that occurred when attempting wallet payments.
Original PR description
Steps: - Install and configure Razorpay provider. - Install sales app. - Enable wallet india PM. - Create quote and try to pay it via wallet india. Issue: - User error when trying to pay via wallet…
Steps: - Install and configure Razorpay provider. - Install sales app. - Enable wallet india PM. - Create quote and try to pay it via wallet india. Issue: - User error when trying to pay via wallet india. Cause: - `orders` API does not take `wallet_india` as method key of payload also I tried other like `wallet` and `wallets` but they are not also working even though Razorpay response with method `wallet` when we pay via wallets so `wallet` is right value but `orders` API does not count it as one. Fix: - Do not pass any method in payload when user select `wallet` and open Razorpay form with all PM so user can pay via whichever method they want and if selected method exist in the odoo then set that PM to transaction. For master: - Add `Pay later` payment method so we can store all transaction with proper payment method in odoo. - Change code of wallet PM from `wallets_india` to `wallet` so when razorpay fix code issue it'll work automatically without any issues and we don't need to pass mapping to get proper PM via `_get_from_code`. opw-3867594
This fix resolves an error that occurred when users tried to add Spanish electronic invoicing certificates to their company settings. Previously, the system would crash with an error when attempting to save certificate information. The fix enables proper handling of Spanish certificates for electronic invoicing compliance.
Original PR description
Description of the issue/feature this PR addresses: Using an spanish certificate in res.company (field -> l10n_es_edi_facturae_certificate_id) returns error none field. Current behavior before PR:…
Description of the issue/feature this PR addresses: Using an spanish certificate in res.company (field -> l10n_es_edi_facturae_certificate_id) returns error none field.
Current behavior before PR: When trying to save the changes you get the error:
`RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/odoo/17.0/odoo/http.py", line 1765, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/home/odoo/src/odoo/17.0/odoo/service/model.py", line 133, in retrying
result = func()
File "/home/odoo/src/odoo/17.0/odoo/http.py", line 1792, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/src/odoo/17.0/odoo/http.py", line 1996, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/src/odoo/17.0/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/src/odoo/17.0/odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/src/odoo/17.0/addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/17.0/addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/odoo/17.0/addons/web/models/models.py", line 73, in web_save
self = self.create(vals)
File "<decorator-gen-364>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 414, in _model_create_multi
return create(self, [arg])
File "/home/odoo/src/odoo/17.0/addons/l10n_es_edi_facturae/models/l10n_es_edi_facturae_certificate.py", line 54, in create
if fields.datetime.now() > certif.not_valid_after:
AttributeError: 'NoneType' object has no attribute 'not_valid_after'`
Desired behavior after PR is merged: Save the certificate.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fix corrects an issue where refunded invoices were incorrectly being added to the total amount when re-invoicing a sales order. Previously, when a credit note was created for a partial invoice and the remaining amount was re-invoiced, the down payment amount was being added instead of subtracted, resulting in incorrect invoice totals. This fix ensures refunded invoices are properly excluded from calculations.
Original PR description
Steps to reproduce: 1) Create a quotation and confirm it 2) Invoice a first down payment (fixed amount) and validate it 3) Invoice the rest of the SO amount and validate it 4) Create a credit note for the last invoice created (at step 3)) 5) From the SO, re-invoice the rest of the SO amount Issue: the amount of the downpayment is added to the total, not subtracted opw-3817440 Forward-Port-Of: odoo/odoo#161350
This fix resolves an issue where users were incorrectly redirected to an error page when saving SEO optimization settings on course pages. The update ensures users remain on the same course page after saving, improving the user experience and preventing confusing navigation errors.
Original PR description
**Description of the issue/feature this PR addresses:** This PR address the issue of redirecting to courses page with /invite_error when trying to update the optimize seo. **Current behavior before PR:** Previously, when editing Optimize SEO and clicking "Save," it redirected to /invite_error in Courses instead of remaining on the same URL after saving, which was caused due to not receiving seoName. **Desired behavior after PR is merged:** Now after saving, we stay on the same course URL without being redirected to /invite_error. This fix includes checking if the seoContext doesn't have a seoName , in which case we redirect to seoNameDefault to prevent redirection to /invite_error on the Courses page. **Task**-3688285 Forward-Port-Of: odoo/odoo#161029
This fix resolves an issue where table row and column editing controls were not displaying properly in the To-Do application. The controls were being hidden due to overflow restrictions. The fix adjusts the padding in the editor area to ensure these controls are fully visible when users hover over table cells, improving the table editing experience.
Original PR description
Commit that introduced the issue: https://github.com/odoo/odoo/commit/c98c58301da82ad896e296b9bbbdf6bbb0bc2a8e Issue: ====== The row and column table ui elements doesn't show correctly. Steps to…
Commit that introduced the issue: https://github.com/odoo/odoo/commit/c98c58301da82ad896e296b9bbbdf6bbb0bc2a8e Issue: ====== The row and column table ui elements doesn't show correctly. Steps to reproduce the issue: ============================= - Go to to-do - add a table on top the editable - Hover on the top left cell - The row and col ui boxes doesn't show correctl Origin of the issue: ==================== Since we forced the mentioned commit that `overflow-x` should be hidden, then the ui elements which overflows the visible area of the html field will be hdden too that's why only a small part of them appear. Solution: ========= To conserve the same ui and not add extra padding , we add padding to the `note-editable` to make it possible to display the ui elements fully (needs 16px) and decrease the padding of the padding of the formView sheet. Before: ======  After: =====  task-3861784 Forward-Port-Of: odoo/odoo#162029
This fix resolves an issue where newly created contacts were not showing their assigned pricelist information until after saving and reopening the record. The problem was particularly noticeable in version 17.0 where the system creates and reads records in a single operation. The fix ensures pricelist data displays correctly immediately when creating a new contact.
Original PR description
To reproduce the problem: - Enable pricelist feature - Create a new Contact > no pricelist shown (all versions affected) - Save > still no pricelist shown (>= 17.0 versions affected) - Exit and go back to the Contact: the pricelist is set The _compute_product_pricelist() doesn't work properly for new record, then we create a new contact, pricelist is empty (until the save for version < 17.0, until save/exit/return on the record for version >= 17.0). In 17.0, we introduced web_save, which makes create() and read() in the same request. This is why the version >= 17.0 is more problematic and more confusing for the user. Prior to 17.0, it was not great either, but was never considered a bug (some effort has been made in https://github.com/odoo/odoo/pull/153326/files). So this fix targets versions >= 17.0. Fix the issue by taking care of new ids in the _get_partner_pricelist_multi() method. Also, add a Form test case for every possible case. opw-3872299
This fix resolves an issue where calendar reminders were being duplicated for recurring daily events. The system was incorrectly creating multiple reminder notifications for the same event due to a logic error in how it determined when the next reminder should be sent. Users will now receive only one reminder per event occurrence instead of duplicate notifications.
Original PR description
Before this commit, alarms were always being set up when there was no 'next_date' specified, creating an undeterministic behavior since inside the 'get_next_alarm_date' function we check if the 'call_at' attribute from the trigger happens before 'now'. If this condition is false, i.e. if there is already an alarm set up for the future, we were returning a falsy value for the next alarm date and setting up the alarm anyway (using the current date inside '_setup_alarms', since the context was None), thus generating a new alarm with the wrong call date. After this commit, we make an extra check for recurrences in the 'get_next_alarm_date' function in order to get the correct next date for the next alarm from the next recurrent event. Additionally, if there is no next date to be called in the in the future, we skip the 'send_reminder' function which was wrongly creating another alarm using 'now' as time. Issue-from: odoo/odoo#147914 Forward-Port-Of: odoo/odoo#161941