Wednesday, October 30, 2024
12 changes · 18.0
Enhancements to existing features
Kitchen tickets in Point of Sale now show clearer order updates, including notes, add-ons, staff member, table or takeaway details, and timing. This helps restaurant teams understand what changed in an order faster and reduces delays or mistakes in kitchen preparation.
Original PR description
In this commit:
-------------------
- We have changed the entire kitchen ticket structure added many important data
to make it more usefule such as
- Diferent title related to the order changes.
- Proper orderline formation with internal notes and addons.
- Who has taken the order.
- Floor, table name with order number and time of order changes.
- Also adapted sitting mode (Dine in, Take out) changes.
- Changed the getOrderChanges functionas below
- Identified and separated only note updates in line
- Added some required informations like comboline and attributes.
- Enabled Order button when sitting mode updated (Dinein <-> Takeout)
- For this we have saved the sittingMode data in last order changes.
Task: 4264433Combo products now behave more consistently in online sales: shoppers will not see unnecessary configuration steps, combo products are excluded from wishlists, and combo items follow the intended display order. Analytics reporting for combo prices is also corrected, improving sales tracking accuracy.
Original PR description
- Don't open the combo configurator in eCommerce if there's nothing to configure, - Don't allow combo products in the wishlist, - Order combo items by combo sequence instead of by selection order, - Fix the Google Analytics tracking price for combos. task-4264135 Closes https://github.com/odoo/odoo/issues/182464
The Projects kanban view no longer counts linked documents just to decide whether to show the Documents menu item. This greatly improves loading performance for projects with many tasks, while the Documents menu may now appear even when no documents are present for users with folder access.
Original PR description
## Description Following a32825ee00f2b330d99113f4d8c1488903fe744e, the "Documents" menu-item is hidden when there are no documents in it. The presence of the field `document_count` in the view triggers `_compute_documents`, which is relatively slow for projects with a lot of tasks. It's not worth to incure the cost at each load of this view (which is a hot path) just for hiding a button in a sub-menu. ## Spec Change The menu-item "Documents" is present even if there are no document and you have differnet than `'none'` permission on the folder. ## Benchmark Loading "Projects" kanban view with 5 favourite projects, one of which has 1M+ tasks on next.odoo.com | | Before | After | Speedup | |---------------|--------|-------|---------| | Timings (hot) | 10.2s | 790ms | 12.9x |
Portal users now see only the document actions they are allowed to use, reducing confusion from unavailable options. Internal users also gain smoother uploading in the company documents area, while unavailable duplicate actions are hidden when not permitted.
Original PR description
We disable for portal user, the actions they cannot perform. In the "New" drop down button: - hide "Folder" (create Folder) - hide "Link" (create link) In the cog menu: - hide "Move to trash" - hide "Add shortcut" when the parent folder is not editable In the configure form: - hide lock/pinned toggle buttons - hide owner and partner_id - hide create_activity_option (alias) - hide Email Upload (alias) We also authorize internal user to upload in "My company" folder (which actually upload in the personal drive of the user). Task-4216243
The Documents app now uses a simpler and more consistent rule for identifying company folders: items owned by Odoobot with no parent folder. This makes the folder list and document view behave more consistently, while removing the older pinned-folder concept behind the scenes.
Original PR description
Purpose ======= Simplify the company folder domain. Now the domain is just the documents owned by Odoobot, and without a parent folder. The search panel now use the same domain, and so the only difference now between the kanban view and the search panel is that the search panel only show folders. Technical ========= Because the old `is_pinned_folder` is used in access rule, we can not just set it to False, it needs to reflect the owner_id / folder_id values (it will be cleaned in master). Task-4293841
The Documents list now shows clear icons for folders, links, and file types next to document names. This makes it easier for users to quickly recognize document types, with shortcuts highlighted in blue for better visibility.
Original PR description
Purpose ======= Show the documents types (folder, url and files mimetypes) using icons in the list view. Specification ============= Creating a new 'documents_type_icon" widget that can be displayed alongside the documents names. Reducing the 'type' column's width and removing the column title to make the type icon feel like a part of the document name. Also coloring the shortcuts in blue in the list view. Task-4263142
Resolved issues and error corrections
Fixes an intermittent issue where manufacturing work orders could keep the wrong expected duration after producing serial-tracked items in batches. This helps production planning stay accurate and consistent for manufacturing teams.
Original PR description
This is a non-deterministic bug. Setup: - install mrp, enable workorders and serial numbers - create a storable product A with serial tracking - create a BOM with 1 operation for product A Steps: -…
This is a non-deterministic bug. Setup: - install mrp, enable workorders and serial numbers - create a storable product A with serial tracking - create a BOM with 1 operation for product A Steps: - create a MO for 2 units of product A -> the duration expected on the WO should be 120 minutes. - confirm then plan the MO - produce all -> you'll see a wizard for batch production (2nd wizard) - generate serials then produce or prepare MO (doesn't matter which) Issue: Sometimes the duration of the initial workorder is correctly computed -> 60 minutes, sometimes it is not (left as is). This is a mix of 2 'bugs': First, we have the `self.env['mrp.production'].browse` via a set(). Because it's a set, the productions received are not always in order, so the loop just after may process the last MO first. This triggers the 2nd 'bug'. Second, the first MO (that was planned) won't trigger `_compute_duration_expected` at https://github.com/odoo/odoo/blob/014ed907a2fab280e9fa6dd93b23a6a852700796/addons/mrp/wizard/mrp_batch_produce.py#L116 when changing `qty_producing` because of `is_planned`: https://github.com/odoo/odoo/blob/014ed907a2fab280e9fa6dd93b23a6a852700796/addons/mrp/models/mrp_production.py#L730-L731 instead, it will go through the compute later because the second MO (created in the split, but not planned) will trigger the compute for both ids via `recompute` because the original MO id was still in the pending transactions: https://github.com/odoo/odoo/blob/014ed907a2fab280e9fa6dd93b23a6a852700796/odoo/fields.py#L1413 However, the first workorder will already have its qty_producing set to 1 so won't pass in `_get_duration_expected`. Fix: Use `OrderedSet` instead of set along with `reversed()` so that the loop will process the last MO first. This way the pending compute for the original MO will correctly compute the duration because it's WO's qty_producing will still be zero. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where adding a down payment from purchase matching could reset a purchase order line back to the vendor’s default price. This preserves the price negotiated on the purchase order and helps avoid billing and reconciliation discrepancies.
Original PR description
### Steps to reproduce the issue: 1. Create a Product and add a Vendor Price under the Purchase tab 2. Create a Request for Quotation from the Vendor with the Product, change the Unit Price 3.…
### Steps to reproduce the issue: 1. Create a Product and add a Vendor Price under the Purchase tab 2. Create a Request for Quotation from the Vendor with the Product, change the Unit Price 3. Confirm Order 4. Create a Vendor Bill from the Vendor with one Invoice Line, click on "Purchase Matching" 5. Select the Invoice Line and click on "Add to PO" 6. Select the PO previously created and Add Down Payment 7. On the PO, the Unit Price on the Product Line has reverted to the Vendor Price ### Explanation: During `_create_downpayments`, `purchase.order.line` created from `account.move.line` are added to `purchase.order.order_line` through a concatenation operator (here a `+`, but `|` would have the same effect). With this operation, `purchase.order.order_line` is flagged as a modified value and needs to be totally recomputed. In the triggered recomputation methods is `_compute_price_unit_and_date_planned_and_name`, which affects multiple values including `unit_price` and uses `product_product.seller_ids`. https://github.com/odoo/odoo/blob/d0e7be7832672d476f1b289af52d3a425990d719/addons/purchase/models/purchase_order_line.py#L313-L318 https://github.com/odoo/odoo/blob/d0e7be7832672d476f1b289af52d3a425990d719/addons/purchase/models/purchase_order_line.py#L351-L358 ### Fix reasoning: With `Command.link`, only the added lines are flagged as new values and `purchase.order.order_line` is not recomputed. opw-4275163
This fixes a payroll/time off issue where changing an accrual allocation start date could leave old carryover expiration values in place, causing the displayed accrued days to become incorrect. Employees and HR teams will now see consistent, accurate time off balances when allocation dates are adjusted.
Original PR description
Steps to Reproduce: Create an accrual allocation: - Carryover date on allocation start date. - Has 1 level: * Start 0 days after allocation start date. * Accrues 1 day monthly on 1st day of the…
Steps to Reproduce:
Create an accrual allocation:
- Carryover date on allocation start date.
- Has 1 level:
* Start 0 days after allocation start date.
* Accrues 1 day monthly on 1st day of the month.
* Carryover policy all accrued time carried over.
* Carryover validity 1 month.
* Leave other options as is.
- Leave other options as is.
Create an allocation:
- Allocation type: accrual allocation.
- Accrual plan: use the one defined above.
- The following dates are in mm/dd/YYYY
- Set allocation start date 08/01/2023.
Number of days becomes 2 days (as expected).
- Set allocation start date 09/01/2023.
Number of day becomes 12 days (as expected).
- Set allocation start date 08/01/2023.
Number of days becomes 13 days (wrong).
The issue is that the expiration date of carried over days and the number of expiring days aren't reset when the start date of the allocation changes.
The fix is to reset these values when the start date of the allocation changes.
task-4208024Unmerging multiple charts of accounts for the same company no longer fails with an unexpected error. This helps accounting users complete account structure changes reliably without manual workarounds.
Original PR description
Currently an error occurs when the user unmerges two or more charts of accounts with the same company. error: `ValueError: Expected singleton: account.account(1249, 1252, 163, 164, 165, 754)` This is because at [1] `self` used to display name here `self` contains multiple records. This commit will fix the above issue by looping records of self and using `display_name` of account, which is needed. [1]- https://github.com/odoo/odoo/blob/0bac60a7085c51ac8cb4f793b013dbea927d180c/addons/account/models/account_account.py#L1108 sentry-5985600163
Shared spreadsheet links now use the standard public documents page setup, preventing crashes when opened by viewers in debug mode or customized environments. This makes publicly shared spreadsheets more reliable and better aligned with other public document pages.
Original PR description
Steps to reproduce: - insert a pivot or a list in a spreadsheet - click on the Share button to share the spreadsheet - Choose "Viewer" for "Anyone with the link" - Copy the link and open it in an incognito window - in the URL, add ?debug=assets => boom This rendered page doesn't have `odoo.__session_info__` which crashes any code trying to read it. In standard, the view validation (only enabled in debug mode) reads it crash. On the saas, some custo also reads it and crashes. Two observations: - this page doesn't need the asset `documents.webclient` (in which is included the backend view stuff and the saas custo) - we can use the `documents.public_page_layout` which already includes `odoo.__session_info__` and the design is more aligned with the other documents public pages Note that I can't really write a test because nothing breaks in standard (except in debug mode) Task: 4297246
This fixes an issue where Odoo Studio could incorrectly combine two separate layout edits: adding a field in one group and removing another group. The change helps ensure Studio saves form customizations accurately, reducing the risk of unexpected layout changes for users.
Original PR description
…ifferent trees
Add a field at the end of the "left" subgroup and remove the "right" subgroup.
```xml
<form>
<group>
<group>
<field name="display_name" />
[ADD A FIELD]
</group>
[ REMOVE THIS GROUP
<group>
</group>
]
</group>
</form>
```
Before this commit, when "normalizing" the xpaths, the add field operation was aggregated with the remove operation because no unchanged node was found in between.
We were left with the inheriting view:
```xml
<xpath expr="[..]/group[2]" position="replace">
<field name="added_field" />
</xpath>
```
After this commit, this flow works and the two operations are independent.
part of task-4207793