Friday, November 29, 2024
8 changes · 17.0
Resolved issues and error corrections
This update resolves an issue where component moves weren't being created when adding components from the shop floor in multi-step manufacturing workflows. The fix ensures that necessary transfer rules are triggered, regardless of the procurement method, allowing for accurate tracking of component movements within the production process. This improves the reliability of multi-step manufacturing operations.
Original PR description
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO…
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO for a product and add an operation (no need of component) - Confirm the MO and go to your operation in the shopfloor - Click on the 3 dots > Add component > add any component #### > Back to the MO: No transfer was created from stock to pre-prod ### Cause of the issue: When you add component from the shopfloor, you will trigger a call of the `add_product` method to create and confirm the raw move associated to the MO: https://github.com/odoo/enterprise/blob/2e2efe8421b2f85950e50ff102cdabf98d2d91ab/mrp_workorder/wizard/additional_product.py#L36-L37 However, if the `procure_method`` of this move is not set to mto/mtso it will not trigger other rules in order to generate the other transfers ### Note: A priori, the issue should not be reproducible in 18.0+ as this part of the code was refactored and the issue was fixed by 235047b68e6a24a14e32b94b1d4a15a580dc5ad2 opw-4236272
This update fixes an issue where the cost analysis report incorrectly displayed the 'to produce' quantity for byproducts instead of the actual quantity produced. The change ensures that the report accurately reflects the byproduct quantities used in manufacturing orders, leading to more precise cost calculations.
Original PR description
**Steps to reproduce the bug:**
- Create a storable product:
- "Finished Product" with the following BoM:
- Component: 1 unit of "C1"
- Byproducts:
- 1 unit of "By-product 1"
- 1 unit of "By-product 2"
- Create a manufacturing order to produce 5 units of the finished product.
- Confirm the MO.
- Set the quantity produced to 5 units.
- Set the quantity of byproducts to:
- By-product 1: 4 units
- By-product 2: 3 units
- Validate the MO.
- Print the cost analysis.
**Problem:**
The reported quantity does not show the actual quantity produced but
instead shows the "to produce" quantity.
opw-4312292This update ensures that attachments linked to documents remain attached during version changes, addressing a requirement for strict audit trails (GoBD) in Germany. This prevents document deletion and maintains a complete record of all document versions, crucial for regulatory compliance.
Original PR description
Normally, when using document versioning, the attachments linked to a record are re-attached to the document when changing the version. This is not compatible with the requirement for audit trail in Germany (GoBD) as we want to be sure that the document won't be deleted. This is ensure by making sure all the attachments stay attached, and can't be deleted. To reproduce: * Install Accounting and Documents, as well as l10n_de * Select/configure a German company * Create new document folder settings for Customer Invoices * Create a new invoice * Send & Print * Delete it from the attachments (it should "detach it") * On the document, change the main history version, or on the invoice, navigate through the attachments [opw-4095549](https://www.odoo.com/odoo/project.task/4095549)
This update corrects a bug where a raw move in a manufacturing order would unexpectedly become marked as 'available' after exiting the barcode module. The fix prevents a split operation from incorrectly reserving the move, ensuring accurate stock tracking. This improves the reliability of the MRP process.
Original PR description
### Steps to reproduce: - Create two storable product: Final Product (FP) and Component (COMP) - Create and confirm an MO for FP with a raw move: 1 x COMP > The move should be: "not available" since…
### Steps to reproduce: - Create two storable product: Final Product (FP) and Component (COMP) - Create and confirm an MO for FP with a raw move: 1 x COMP > The move should be: "not available" since 0 unit of COMP are in Stock - Go to the barcode module > Operations > Manufacturing - Remove the MO Ready filter > Click on your MO and then exit barcode - Go back to the MO in the back end (mrp module) #### > The raw move has been reserved and is hence marked as available. ### Cause of the issue: Exiting the barcode will launch an rpc call of the `split_uncompleted_moves` in order to split uncomplete moves in 2 if necessary (for the records to be appropriately set the next time you enter the barcode): https://github.com/odoo/enterprise/blob/71f979d5bdf88207cb94c83bd6a69633da649d1e/stock_barcode/static/src/models/barcode_picking_model.js#L1327-L1329 https://github.com/odoo/enterprise/blob/71f979d5bdf88207cb94c83bd6a69633da649d1e/stock_barcode/models/stock_move.py#L9-L11 Furthermore, since c29f61fdded2e80d0bb3c06199c6a196feac8076 in case of a production the component move are rather splitted on the move lines to avoid odd split of the component moves on the MO. However, in that case if a unassigned move is splitted, a move line will be generated and associated to that move, which makes it reserved and hence available. opw-4338827 ---
This update fixes a synchronization issue when using multiple preparation displays for point-of-sale orders. Previously, order statuses weren't consistently updated across displays, leading to discrepancies. This fix ensures order statuses are accurately reflected across all linked preparation displays, providing a more reliable view of order progress.
Original PR description
There is currently a problem of synchronization when using multiple tracking displays per pos config. Steps to reproduce: ------------------- * Configure 2 Preparation displays, 1 for the category…
There is currently a problem of synchronization when using multiple tracking displays per pos config.
Steps to reproduce:
-------------------
* Configure 2 Preparation displays, 1 for the category food, the other for
drinks. Link them both to the restaurant
* Open the two preparation displays and their preparation status
* In the restaurant, place an order for 1 food and 1 drink product
* On one of the preparation display mark the food as ready
> Observation: Both status screen will show 'ready'
* Again on the preparation display mark the food as completed
> Observation: The order disappears from both screen.
Refreshing both status screen will not show the same state
Why the fix:
------------
The status screen should be seen as an ORDER status screen.
When placing an order 1 in the restaurant, the status screen should only show it as ready when all the pos preparation display orders linked to that order are ready.
This idea behind this fix is to get the status of the order as they are in the related preparation display and to modify it with regards of other status screen that are linked to the same pos config.
Let's discuss this part:
```python
for display in other_displays:
other_display_orders = display._get_pos_orders()
for order in other_display_orders['notDone']:
if order in current_display_orders['done']:
current_display_orders['done'].remove(order)
current_display_orders['notDone'].append(order)
```
`other_display_orders` represent the preparation display orders from other preparation displays.
`current_display_orders` represents the preparation display orders related to the preparation display we just used.
Here we basically ensure that we don't show a preparation order on the status screen as done if there is another preparation order linked to the same order which is not ready.
Scenario:
* `current_display_orders = {'done': ['101', '102'], 'notDone': ['103']} `
* `other_display_orders = {'done': ['101'], 'notDone': ['102', '103']}`
* result -> `current_display_orders = {'done': ['101'], 'notDone': ['103', '102']} `
The fix does not stop here as we also need to consider 2 scenarios:
* 1, we mark a preparation display order as complete in one preparation display.
* 2, we have preparation display orders that are not on the preparation display
but still linked to the same pos config as the status screen opened
In both scenarios, we will have some tracking numbers in `orders` which will not be found in `current_display_orders`.
```python
for order in other_display_orders['done'] + other_display_orders['notDone']:
if (
order not in current_display_orders['done'] + current_display_orders['notDone']
and self.env["pos_preparation_display.order"].search(
[('pos_order_id.tracking_number', 'ilike', order)]
).pos_config_id.id in self.pos_config_ids.ids
):
stage = 'done' if order in orders['done'] else 'notDone'
current_display_orders[stage].append(order)
```
This part of the fix will look at all the orders that are not present in `current_display_orders` and if the preparation order belong to a pos order made in the pos config of the current preparation display status then it will be added in the respective stage.
Scenario:
* `current_display_orders = {'done': ['101', '102'], 'notDone': ['103']} `
* `other_display_orders = {'done': ['101'], 'notDone': ['102', '103', '104']}`
* result -> `current_display_orders = {'done': ['101'], 'notDone': ['103', '102', '104']} `
We also apply this logic when loading the status screen for the first time/or refreshing it. We want to see the status of all orders from the set of pos configs.
opw-[4265987](https://www.odoo.com/web#id=4265987&view_type=form&model=project.task)This update resolves an issue where newly created Gantt appointment events incorrectly defaulted to a duration of -23:00 hours. The fix ensures a standard 1-hour default duration is applied, and the correct appointment type is selected, improving event scheduling accuracy.
Original PR description
Steps to reproduce =================== - Open the resource schedule, and go into day mode. - Switch to tomorrow, and click new. - The start date has been changed but not the end date, which is still…
Steps to reproduce =================== - Open the resource schedule, and go into day mode. - Switch to tomorrow, and click new. - The start date has been changed but not the end date, which is still now +duration. - Which creates a default duration of `-23:00 hours`. Second issue: - Open the resource type appointment and then create the booking from the Gantt view using the new button. - We get the wrong appointment type there. Technical =========== - Earlier, the stop was calculated based on the current time instead of `start` in the default_stop. we set stop datetime inside `onAddClicked` by default to start + 1 hour to override the calendar.event's default_stop. - Earlier, we fell into the condition of fetching only the user appointment when we were not providing any resources inside the default_get method, which led to having the user-based appointment instead of the resource-based one. Here, we added a separate condition to fetch the resource-based when going through the action of resource gantt. After this PR =================== - This PR addresses the issue and fixes it by adding the default stop for 1 hour after the start time and assigning the correct appointment type. Task-4330924
This update resolves an issue where products weren't correctly displayed in deferred journal entries generated from invoices. The fix ensures that the product associated with the invoice is accurately reflected in the deferred entry, improving reporting accuracy. This prevents discrepancies in financial reporting.
Original PR description
*= account_reports,account_accountant,account_disallowed_expenses_fleet **Steps to Reproduce:** - Create 1 invoice with start date, and end date on invoice line. - Confirm the invoice. - Click on the Deferred Entries smart button. - Observe that the product is missing in the journal entry(linked to the selected journal for deferred entries). **Cause:** - The product_id is not being passed while generating deferred entries. **Technical:** IMP was done in this commit 017600af4de58482e2ff4ed1e176be88e3cd8041 but this was done from saas-17.2, so in this PR, the fix is done for v17.0 I didn't add the 'product_id' key directly to the dictionary because if any existing custom module calls this function, it breaks the flow. **task**-4345458
This update ensures that the GSTR1 reporting cron job only processes invoices that haven't been flagged as blocked. By ignoring blocked entries, we improve the accuracy of the reports generated for Indian businesses, reducing potential reporting errors and ensuring compliance.
Original PR description
In this PR: - Updated `_cron_send_gstr1_data` to ignore entries with `gstr1_blocking_level` set. - Ensures only unblocked GSTR1 entries are processed by the cron job. Forward-Port-Of: odoo/enterprise#74564