Wednesday, February 19, 2025
37 changes
1 change
Resolved issues and error corrections
This update fixes an issue in Point of Sale where users could not scroll through the customer list on mobile devices. It also ensures customer search and loading more customers work reliably on mobile, making checkout and customer selection smoother for staff using phones or tablets.
Original PR description
Fix: - This commit fix an issue where we were not able to scroll on mobile in the partner list. - Also it now trigger correclty the `onScroll` event on mobile. Since the scrollable DOM element is different on desktop and mobile devices, we need to define correctly the `scrollTarget` depending on `isSmall` or not. Test: - Introduce a frontend test to ensure customer search and infinite scroll work as expected. enterprise PR: https://github.com/odoo/enterprise/pull/79089 task-id: 4550203 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
3 changes
Resolved issues and error corrections
This fix prevents WhatsApp message button links from being accidentally altered in a way that could create incorrect destinations. It also improves validation so buttons load in the right order and generate the correct link details.
Original PR description
Incorrect dynamic button behaviour is fixed. Dynamic web buttons have fixed base, only last part can be modified, therefore making base part readonly is essential, otherwise meta appends any modified base url to originally submitted base url. Additionally, test is added to make sure that buttons are loaded correctly, according to their sequence number and also base and short_url calculation is correct. task-3908799
The Spanish Modelo 390 BOE export has been updated for the 2024 requirements and now correctly generates files from the report wizard. It also adjusts required identity fields so self-employed individuals and companies can complete the export using the appropriate information.
Original PR description
This commit updates the BOE mod390 export for 2024 and set some fields as not mandatory that should not be as you are either a self-employed (and then you use the natural person fields), or you are a company and the other fields are needed. Task: 4453629 Fwd port of https://github.com/odoo/enterprise/commit/fd14c05bcf238d2da7de825d1a6c751381c153b7 Odoo PR: https://github.com/odoo/odoo/pull/196578
This update corrects how VoIP stores and reads landline and mobile phone numbers after recent field name changes. It helps ensure the softphone shows the right contact numbers and avoids errors when viewing correspondence details.
Original PR description
This commit fixes the naming of the `landlineNumber` field. Previously, this field was referred to as the `phone` field. This commit changes its name to `phoneNumber`. Also, we had a `mobile` field that was removed in this PR: https://github.com/odoo/odoo/pull/189739 and it resulted in a bug in the `mobileNumber` getter in `correspondence_details.js` as it was retrieving a `phoneNumber` attribute from the `partner` model. In contrast, it doesn't have this attribute. Community: https://github.com/odoo/odoo/pull/197205
33 changes
Resolved issues and error corrections
When multiple guests scan the same table for self-ordering with pay-after-meal, they now work from the same active order instead of creating separate ones. This helps avoid duplicate or conflicting orders and makes the dining experience smoother for both guests and staff.
Original PR description
When self ordering is setup with pay after meal, and two users scans the same table. The order is now shared between the two users. taskId: 4489980
This fixes a mobile point of sale issue where opening customer selection while reviewing a paid order could cause an error. The customer button is now hidden in that context, preventing confusion and matching the desktop behavior since paid orders should not have their customer changed.
Original PR description
- Fix issue where an error occur when trying to open the customer popup on mobile from the ticket screen (while reviewing a paid order). - Now we don't display the `Customer` selection button when we're on the ticket screen (like it was already done for the "actions" button) to avoid this error (like it's done in desktop). Also, it does not make sense to try to change the customer of a paid order. task-id: 4571914 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
This fix prevents Odoo from raising a server error when a linked record field is empty. Users and custom modules can now handle missing values more safely, improving stability without changing normal behavior.
Original PR description
In OCA we develop a module that assigns dynamic attributes to a product. In odoo 16.0 and prevous 14.0 the module is running smoothly with odoo. In this version convert_to_read method is introduced…
In OCA we develop a module that assigns dynamic attributes to a product.
In odoo 16.0 and prevous 14.0 the module is running smoothly with odoo.
In this version convert_to_read method is introduced and it deals with use_display_name and value, it assumes value record is always has a value
Aluthough use_display_name can be False or value record can be empty.
In that case I retun False instead of causing the server to raise error because it assumes value has id and it is just an empty recordset.
Current behavior before PR:
2025-02-19 20:15:58,724 46176 ERROR pim_17_1 odoo.http: Exception during request handling.
Traceback (most recent call last):
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 2206, in __call__
response = request._serve_db()
^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 1782, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/service/model.py", line 133, in retrying
result = func()
^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 1809, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 2013, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/addons/base/models/ir_http.py", line 221, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/models/models.py", line 86, in web_read
values_list: List[Dict] = self.read(fields_to_read, load=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/models.py", line 3557, in read
return self._read_format(fnames=fields, load=load)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/models.py", line 3770, in _read_format
vals[name] = convert(record[name], record, use_display_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/fields.py", line 3110, in convert_to_read
return value.id
^^^^^^^^
Attri
buteError: 'mail.thread' object has no attribute 'id'
Desired behavior after PR is merged:
The method can just retun False if no condition is met.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes an issue that blocked users from creating manufacturing orders with work orders on small mobile screens. Required manufacturing details are now included in the mobile view, preventing save errors and supporting mobile production workflows.
Original PR description
**Current behavior:** Trying to create an MO on mobile which has work orders is not possible. **Expected behavior:** Can create. **Steps to reproduce:** 1. Install `mrp` with demo data 2. Login, in dev tools change viewport size to iPhone SE (a small screen) 3. Open Inventory -> Manufacturings 4. Click `New`, change product to stool (any variant) 5. Try to save -> `ValidationError` **Cause of the issue:** `workcenter_id` and `product_uom_id` have been removed from the kanban view in commit: b1ceec4c which is used on mobile, meaning that these required fields are not in the save vals returned to the server in the CREATE tuple. **Fix:** Add them back to the kanban view. opw-4440060
Point of Sale category navigation now shows parent categories even when products are only assigned to child categories. This restores the expected category hierarchy so staff can browse products through the correct parent and child structure.
Original PR description
This commit reverts: https://github.com/odoo/odoo/commit/d7d3ed847f147dac23264e91b5d802cd67be6860 After discussing with POS PO the behavior introduced in the commit is not desirable and cannot be introduced in stable. # How to reproduce the issue: - In Pos Product Categories, create a category "Parent", - Create another category "Child" with its parent being "Parent" - Create a new product with the POS category "Parent/Child" - In the pos product displayed, the category display is "Child" and not "Parent" https://github.com/odoo/odoo/commit/d7d3ed847f147dac23264e91b5d802cd67be6860, made the POS category visible only if there is a product in it. However, if the parent category has no products, it won't be displayed. opw-4561712 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Product forms no longer show Purchase-related tabs or checkboxes unless the Purchase app is installed. This avoids confusing users with options that are not available in their current setup.
Original PR description
Issue Before This Commit: ----------------------------------------------- - Purchase tab and checkbox is visible in the product form without installing Purchase. Steps to Produce: ----------------------------------------------- => Purchase checkbox Problem: Purchase checkbox is always visible in the product form which is incorrect. => Purchase tab 1. Install Sales. 2. On Unit and Measure. Problem: Now Purchase tab is visible in the product form without installing Purchase which is incorrect. With this commit: ----------------------------------------------- - Purchase tab and checkbox is visible in the product form only after installing Purchase. Task-id: 4391349
The kiosk payment screen now only shows the Stripe payment methods assigned to that specific kiosk. This prevents customers from seeing or selecting payment options that were not intended for that kiosk setup.
Original PR description
When you have multiple payment methods that can work on the kiosk, they would all be shown on the kiosk screen. Steps to reproduce: ------------------- * Setup 2 Stripe payment methods * Create a PoS kiosk * Assign one of the methods to the kiosk * Open the kiosk * Create an order and go to the payment screen > Observation: Both payment methods are shown Why the fix: ------------ The payment methods are now filtered based on the payment methods assigned to the kiosk. opw-4574644
This fixes an issue where previously loaded drawn signatures could still be treated as empty. Users now see signing buttons enabled or disabled correctly, reducing confusion when completing signature flows.
Original PR description
Before this commit, although there is a signature loaded in the draw mode, the signature's isSignatureEmpty flag is true, which affects the logic that handles the sign buttons [enable/disable] state. After this commit, the isSignatureEmpty is handled correctly and the sign buttons' disability logic is clear. task-4466854 Related: https://github.com/odoo/enterprise/pull/77120 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where website Add to Cart buttons could show an error when linked to products with variants outside the normal product page. Customers can now add those products from custom website pages, reducing checkout friction and broken shopping experiences.
Original PR description
## Versions: 18.0+ ## Issue: Clicking on the `Add to Cart` button displays an error message if configured on a product having variants. The issue seems to come from the following PR: https://github.com/odoo/odoo/pull/187556 ## Steps to reproduce: Go to the `Website` app on home page in edit mode; From the `BLOCKS`'s `Inner content` widgets add a `Add to Cart` button anywhere on the page; Select the button to configure it; Select a product with variants as `Product` (e.g. `Acoustic Bloc Screens`); *Optional: choose a variant too;* Save; Click the added `Add to Cart` button. ## Cause: The code tries to access an inexistant form. opw-4573435 opw-4577757 opw-4561122 opw-4548344 opw-4567354
Creating a link in an empty editor block no longer leaves an extra hidden line break behind it. This prevents formatting from being accidentally applied or left behind when users select, style, or clear formatting on the link.
Original PR description
**Current behaviour before PR:** Creating a link in an empty block using powerbox contains trailing `br` at the end of link. Due to this `br` , when user presses `ctrl + A` and applies any format, `br` also gets formatted along with link. In such case when user selects link using double click and removes format using remove-format button, the link gets unformatted but `br` remains formatted because it is not traversed in selection. **Desired behaviour after PR:** There should be no trailing `br` after creating a link as the block is not empty anymore. task-4399010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where banner content could lose editing settings after being cleaned up in the HTML editor. Users can now place the cursor inside banners as expected, making banner editing smoother and more reliable.
Original PR description
**Current behavior before PR:** - The html_sanitize method sanitized certain banner attributes, such as contenteditable, role, and aria-label. This caused an issue where, when a blur event was triggered, the innerHTML of the current banner would be replaced with sanitized HTML. As a result, these attributes were removed, and the absence of the contenteditable attribute made it impossible to place the cursor inside the banner. **Desired behavior after PR is merged:** - Now, when the normalize method is called, the `contenteditable="true"` attribute will be applied to all elements with the `o_editable` class, and the `contenteditable="false"` attribute will be applied to all elements with the `o_not_editable` class. task-4297729
This fixes an issue where updating taxes and accounts on an invoice after changing the fiscal position could incorrectly delete a line and show a “record does not exist” error. The change keeps invoice updates stable when account mappings are recalculated, reducing disruption during billing adjustments.
Original PR description
When calling `account_move_line._compute_account_id` (via `action_update_fpos_values` for example), we wrongly delete a line after after assigning a new account here…
When calling `account_move_line._compute_account_id` (via
`action_update_fpos_values` for example), we wrongly delete a line after
after assigning a new account here https://github.com/odoo/odoo/blob/22bdaf64ff3f2ee37cd51f0938d1bdd80f9e5ee8/addons/account/models/account_move_line.py#L599-L602
This is because we set a default value for `analytic_distribution` in
`_prepare_base_line_tax_repartition_grouping_key`, therefore we enter
in the wrong condition here https://github.com/odoo/odoo/blob/6ff943b30561f2d7415fdbdfc2246716428779be/addons/account/models/account_tax.py#L2407
because in `grouping_key`, we have `{'analytic_distribution': {}}` and in `tax_lines_mapping` we have`{'analytic_distribution': False}`
Steps:
- Have a fiscal position that map the default revenue account to another
- Create an invoice with the fiscal position created previously, add a
product line
- Unset fiscal position, and click on 'Update Taxes and Accounts' button
-> Error: "Record does not exist or has been deleted."
opw-4512877This fix ensures stock moves created during procurement adjustment keep the expected make-to-order behavior instead of being treated as regular stock moves. It prevents unwanted sharing of reserved inventory, especially for manufacturing components, helping orders keep the stock allocation intended for them.
Original PR description
Since a72382063ee662, the mtso mechanism always create mts move in `_adjust_procure_method()`. So new move gathering manufacturing component for instance are always created in mts. Which lead to reservation sharing which is not desired in mto flows. Task: 4374225 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 HTML editor now ignores invisible placeholder characters when checking whether selected text is formatted. This keeps toolbar buttons like Bold in sync after formatting selections that include links, reducing confusion while editing content.
Original PR description
**Problem**: When applying formatting (e.g., Bold) to a selection that includes a link, isZwnbsp characters inside the DOM cause incorrect formatting state detection. isZwnbsp nodes are not formatted, but they are still considered when checking the selection state. **Solution**: Modify `isSelectionFormat` to check only visible text nodes. isZwnbsp characters should be ignored as they do not get formatted. Also when split we remove `FEFF` chars from text node which in case the node has only one `FEFF` will become an empty node We should exludes those nodes from the check too. **Steps to Reproduce**: 1. Type a link followed by a space. 2. Select all the text. 3. Apply "Bold." 4. The "Bold" button in the toolbar remains inactive incorrectly. opw-4555595 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Kitchen preparation receipts now keep combo meal items grouped together instead of splitting them by product category. This makes orders clearer for restaurant staff and reduces the risk of preparing combo items incorrectly.
Original PR description
When sending combo products that contains different products with different pos categories, the receipt was not showing the products grouped by combo. Steps to reproduce: ------------------- * Create a combo product with different products with different pos categories * Setup a preparation printer that will print all categories * Open PoS and add at least 2 combo products with different selection * Send the order to the kitchen > Observation: The product on the receipt are grouped by product category instead of being grouped by combo. Why the fix: ------------ Instead of sorting all product based on their category, we filter out the combo products first and sort the other products based on their category. opw-4459211
This fixes a test portal template so it is correctly marked as the main portal layout. It prevents portal pages, such as sale order pages used in testing, from showing the discussion area in the wrong position.
Original PR description
Since odoo/odoo#196778, a portal test template has been added. Missing the `primary`attribute in this template affects all the portal templates. This commit adds this attribute to the test template. Steps to reproduce: - Install a module that inherits `portal.mixin` such as sale and `test_mail_full` - Go to a sale order page in the portal - Chatter is at the top of the page
This fix stops users from saving a live chat bot question-selection step unless it includes at least one answer. This prevents chatbot execution errors and helps ensure customer conversations continue smoothly.
Original PR description
**Current behavior before PR:** It was possible to save a step with step_type "question selection" without any answers. However, this would cause an error when the bot was executed. **Desired behavior after PR is merged:** A constraint has been added to ensure that a "question selection" step cannot be saved without at least one answer. task-id:[4522835](https://www.odoo.com/odoo/my-tasks/4522835) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a display issue in report headers where a company logo with a white background could blend incorrectly with the colored wave shape. Logos now appear above the background shape, keeping reports visually clean and branded as intended.
Original PR description
Issue: When changing the company logo, if the image contains a white background it will mix with the header's shape color. This is because the shape is displayed on top of the image. Adding a negative z-index ensures the image is over the shape and doesn't mix with it. task-4471578 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Shared spreadsheet links now only show the “frozen and copied” message when the spreadsheet is actually frozen. This prevents viewers from seeing misleading status information when opening normal shared spreadsheets.
Original PR description
Steps to reproduce: - Create a new blank spreadsheet in Documens - Hit the Share button - Open the sharing link in a incognito window => it says "Frozen and copied on ..." even though it's not frozen at all See Enterprise PR Task-4583953 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
This fix ensures the French accounting setup uses the correct module reference when preserving existing tax tags. It helps prevent tax tag data from being missed or overwritten during setup or updates for French accounting configurations.
Original PR description
When calling preserve_existing_tags_on_taxes(), the module name is passed as argument, cf https://github.com/odoo/odoo/blob/18.0/addons/account/models/chart_template.py#L38. The module name is now l10n_fr_account instead of l10n_fr (account.account.tag are now defined in l10n_fr_account, cf https://github.com/odoo/odoo/blob/18.0/addons/l10n_fr_account/data/account_chart_template_data.xml#L3). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change adds automated testing for the website click-and-collect purchase flow. It helps ensure customers can continue buying online and selecting store pickup without regressions from future changes.
Original PR description
Add tour for the fix b395f98.
Employee payroll declaration documents are now linked to the employee as the contact when they are generated. This ensures employees can see the relevant declarations in their My Profile documents area, improving access to their own payroll paperwork.
Original PR description
Since the employees see in their 'My Profile' tab the documents on which they are 'Contact'. We need to set them as contact when generating declaration and not only 'read' access.
The Sign app now keeps the Sign All button available when a signer has multiple signature or initial fields and has already filled the first one. This prevents users from getting stuck when they want to apply the same signature to the remaining fields without changing it again.
Original PR description
Before this commit, If you have multiple signatures/initials on the page and you sign on the first signature and want to sign for other sign fields as well, it's not possible due to the "sign all" button's disability (if no change is made in the sign wizard). After this commit, The sign-all button is enabled, even if there is no change is made in the sign wizard. task-4466854
Odoo Studio now makes all relevant fields available when users build conditional rules for views, even if those fields were not originally shown on the screen. This fixes a limitation in the rule editor and helps users configure visibility or behavior rules more reliably.
Original PR description
Since commit [6f06420e4a9443c52dc0cb427f8f55eb4aecabce](https://github.com/odoo/odoo/commit/6f06420e4a9443c52dc0cb427f8f55eb4aecabce), fields used in expressions in a view are automatically added to the view if not present originally. This allows all fields to be available in the expression editor for modifiers, which this commit is enabling. task-4481934
The Barcode app now correctly shows the detailed lines needed when tracked products are grouped in batch operations. It also assigns scanned lots to the right receipt line, helping warehouse teams process grouped receipts accurately and avoid quantity mistakes.
Original PR description
Description of the issue ======================== The initial issue was, when tracked product lines are grouped by product in batch ("Group batch lines" parameter checked in the picking type config),…
Description of the issue
========================
The initial issue was, when tracked product lines are grouped by product in batch ("Group batch lines" parameter checked in the picking type config), the sublines weren't displayed.
This issue was caused by the way we choose to display or not sublines. For a tracked product, we don't display them if reserved lot/serial is hidden (picking type config) and if there is no qty done.
That said, that didn't take in consideration the grouping by product where lines for different pickings are grouped together.
In this case, it's better to show the qty demand anyway to know how many quantity needs to be processed for each picking.
Once this issue is fixed, a second issue appears.
Imagine you have this following case:
- 1 line for lot product (0/4 qty) for receipt 1;
- 1 line for lot product (0/4 qty) for receipt 2.
- In batch, these lines are grouped because they share the same product.
Now, let's say we do the following process:
1. Scan the lot product -> The grouped line is selected;
2. Scan lot01 two times -> receipt 1 line is now 2/4 qty with lot01;
3. Scan lot02 -> receipt 2 line is now 1/4 with lot02.
The point 3. where is the issue happens. Usually, when we scan a lot, we check if the line is completed or not by checking its parent line's quantity. Here, the parent line is the batch grouped line and should not work exactly like that, because by checking this line as the parent of every sublines means we can't know if a particular picking need is fulfilled or not.
How to reproduce
================
- Inventory > Configuration > Operations Types > Barcode App:
- Uncheck "Show reserved lot/SN";
- Check "Group batch lines".
- Create two receipts for the same tracked by lot product;
- Create a batch for this receipt;
- Open the batch in the Barcode app -> You can see there is a line for this product with the total quantity but when clicking on the button to display sublines, the sublines are not shown.
Fix
===
For the first issue, we simply added a condition for `stock.picking.batch` to adapt to this case.
For the second issue, the group by tracked product inside a single picking and the group by product inside a batch are not the same and use a different key.
The first kind of group uses the key `parentLine` and the second one use the key `batchParentLine`. When we want the parent line of a subline, we will always refer to the `parentLine`. But in the interface, if this parent line is itself inside a `batchParentLine`, the `parentLine` won't be displayed, only the batch parent line.
That way, the user still has all lines for a same product grouped together under a single parent line, but to know if a need if fulfilled,
we still check on the parent line limited to a single picking.
[opw-4291149](https://www.odoo.com/odoo/project/49/tasks/4291149)This update restores an accounting test to the expected behavior after a related platform change. It helps keep automated quality checks reliable without changing customer-facing accounting features.
Original PR description
Test changed in d5da2b62263f85fbce0f2548085c066cbbf10371 needs to be changed back because of https://github.com/odoo/odoo/pull/198086 opw-4512877
Inventory Count now uses clearer wording and a corrected product selection rule. Users can include the right storable and inventory-tracked products during counts, reducing confusion and missed items.
Original PR description
With this commit ================ - Renamed the return value of the getName method to `Inventory Count` for consistency with the Inventory Count button on the main page. - Rephrased toaster message for Inventory Adjustment Validation. - Updated the domain in the product form of Inventory Count to include `storable/inventory tracked` products. Task: [4458119](https://www.odoo.com/odoo/my-tasks/4458119)
Planning links that include start and end dates now open the Gantt view on the intended date range, avoiding an extra day or misaligned week. This makes shared planning URLs more reliable for teams reviewing schedules.
Original PR description
[IMP] Account: Create force_create attribute in try loading The goal is that we do not need to be more accurate on what we need to update when updating the CoA so I have added force_create to be false if wo do not want to create new accounts, new taxes, new fiscal positions in the Netherlands -I have added the created force attribute to try_loading function to use it whenever we do not need to create new accounts, taxs, and fiscal positions -Modified l10n_nl migrations files to make force create to False task-4556250
Loans using the Skip Until Date setting now move to the correct status when confirmed, even if earlier scheduled entries are skipped. This prevents loans from remaining in draft and avoids an error when users try to confirm them again.
Original PR description
Users managing loans can set the flag Skip Until Date to skip the first entries. However skipped loan lines won't create any move and this create issues with assignment of the correct state when load should be closed Steps to reproduce - Create a loans as follows: - Name: any - Amount Borrowed: 20,000.00 - Interests: 107.87 - 01/01/2024 - Duration: 12 months - [Loan Settings] Skip Until: 10/31/2024 - Save, compute sheet and confirm Issues: - Once confirmed it doesn't change state from "draft" - If we click once again "Confirm" we will get a traceback error opw-4476981
Fixed an issue that could cause an error when barcode inventory settings were opened or read in batches. This helps keep warehouse configuration screens reliable and avoids interruptions for users managing barcode workflows.
Original PR description
An error occurs when the system tries to access single values from multiple records at [1]. Link [1]:…
An error occurs when the system tries to access single values from multiple records at [1].
Link [1]: https://github.com/odoo/enterprise/blob/71747a21cb5c68a8ab151434f85c822f30649aad/stock_barcode/models/res_config_settings.py#L14-L15
Traceback On Sentry:
```
ValueError: too many values to unpack (expected 1)
File "odoo/orm/models.py", line 6073, in ensure_one
_id, = self._ids
ValueError: Expected singleton: res.config.settings(52, 53)
File "odoo/http.py", line 2420, in __call__
response = request._serve_db()
File "odoo/http.py", line 1946, in _serve_db
return self._transactioning(
File "odoo/http.py", line 2010, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1977, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2228, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 335, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 741, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 31, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/service/model.py", line 62, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "odoo/orm/models.py", line 3611, in read
return self._read_format(fnames=fields, load=load)
File "odoo/orm/models.py", line 3841, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "odoo/orm/models.py", line 6880, in __getitem__
return self._fields[key].__get__(self)
File "odoo/orm/fields.py", line 1428, in __get__
self.compute_value(recs)
File "odoo/orm/fields.py", line 1594, in compute_value
records._compute_field_value(self)
File "odoo/orm/models.py", line 5055, in _compute_field_value
determine(field.compute, self)
File "odoo/orm/fields.py", line 70, in determine
return needle(*args)
File "home/odoo/src/enterprise/saas-18.1/stock_barcode/models/res_config_settings.py", line 32, in _compute_show_barcode_nomenclature
self.show_barcode_nomenclature = self.module_stock_barcode and self.env['barcode.nomenclature'].search_count([]) > 1
File "odoo/orm/fields.py", line 1369, in __get__
record.ensure_one()
File "odoo/orm/models.py", line 6076, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
To resolve this issue, Use an iteration(for loop) to iterate records one by one.
Sentry-6296116940This fix prevents upgrades from failing when a Spanish tax report component is referenced before it has fully loaded. It helps customers with the Modelo 130 Spanish reporting module complete upgrades to version 18.0 without being blocked by a loading-order issue.
Original PR description
The custom handler for `l10n_es_modelo130` is [defined](https://github.com/odoo/enterprise/blob/22e11de8df9f8516d17b958079a8d8b67c304b50/l10n_es_reports_modelo130/models/aeat_tax_reports.py#L6-L9) in…
The custom handler for `l10n_es_modelo130` is [defined](https://github.com/odoo/enterprise/blob/22e11de8df9f8516d17b958079a8d8b67c304b50/l10n_es_reports_modelo130/models/aeat_tax_reports.py#L6-L9) in module `l10n_es_reports_modelo_130`. There is however [data](https://github.com/odoo/odoo/blob/18.0/addons/l10n_es_modelo130/data/mod130.xml#L4) that [uses](https://github.com/odoo/enterprise/blob/18.0/l10n_es_reports_modelo130/data/mod130.xml#L4-L5) that handler in module `l10n_es_modelo130`.
Because of the order in which modules are loaded during the upgrade, module `l10n_es_modelo130` is loaded after `account_reports` but before `l10n_es_modelo130_reports`. Therefore, when it loads it's still missing the handler class in env, but the validation from `account_reports` still takes place.
This blocks all the upgrades to 18.0 with `l10n_es_reports_modelo_130` installed.
```
File "/home/odoo/src/odoo/18.0/addons/account/models/account_report.py", line 382, in _compute_user_groupby
report_line._validate_groupby()
File "/home/odoo/src/enterprise/18.0/account_reports/models/account_report.py", line 6854, in _validate_groupby
report_line.report_id._check_groupby_fields(report_line.user_groupby)
File "/home/odoo/src/enterprise/18.0/account_reports/models/account_report.py", line 6394, in _check_groupby_fields
custom_groupby_map = self.env[custom_handler_name]._get_custom_groupby_map() if custom_handler_name else {}
File "/home/odoo/src/odoo/18.0/odoo/api.py", line 596, in __getitem__
return self.registry[model_name](self, (), ())
File "/home/odoo/src/odoo/18.0/odoo/modules/registry.py", line 240, in __getitem__
return self.models[model_name]
KeyError: 'l10n_es_modelo130.mod130.tax.report.handler'
```Shared document spreadsheets now only show the “Frozen and copied” message when the spreadsheet is actually frozen. This avoids confusing viewers who open a normal shared spreadsheet link and helps users trust the sharing status they see.
Original PR description
Steps to reproduce: - Create a new blank spreadsheet in Documens - Hit the Share button - Open the sharing link in a incognito window => it says "Frozen and copied on ..." even though it's not frozen at all See Community PR Task-4583953
Customer statement emails now include the sender signature only once. This keeps customer communications cleaner and avoids an unprofessional-looking duplicate signature when statements are sent from partner records.
Original PR description
Customer statement can be accessed from the partner record and eventually sent to the customer. However currently the mail wizard will add 2 signatures at the end of the mail Steps to reproduce: - Open a partner - Access Customer Statement - Click Print, send email - Check sent email Issue: The signature is duplicated opw-4456798