Bug 34736

Summary: Item checkboxes move to wrong order line in multi-receive, breaking partial receive
Product: Koha Reporter: Katrin Fischer <katrin.fischer>
Component: AcquisitionsAssignee: Nick Clemens (kidclamp) <nick>
Status: CLOSED FIXED QA Contact: Testopia <testopia>
Severity: major    
Priority: P5 - low CC: fridolin.somers, kebliss, matt.blenkinsop, michaela.sieber, nick, tomascohen, victor
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: Trivial patch
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
23.11.00,23.05.04
Circulation function:
Bug Depends on: 8179    
Bug Blocks: 34880, 35004    
Attachments: Bug 34736: Don't trigger quantity change on loading order
Bug 34736: Don't trigger quantity change on loading order
Bug 34736: Don't trigger quantity change on loading order

Description Katrin Fischer 2023-09-07 10:07:18 UTC
If multiple items were ordered and only a part of those are received, the order line is split into 2, received and pending. When you work with multi-receive and switch back and forth between entries, things get confused and you end up with a broken partial receive where the received items have not been re-linked to the new order line.

This might also have other bad side effects. Sorry for the somewhat complicated test plan:

To test:
* Create a new basket, create items on placing the order
* Create an order line with 4 items
* Create another order line with 2 items
* Close the basket
* Receive shipment and create an invoice
* Select both orders via the checkboxes got multi-receive
* Click "receive selected"
* Edit first order line, quantity received = 1 (1 out of 4)
* Verify that one item is also selected in the table
* Switch to "next order"
* Quantity received is 0, no items checked in the second order
* Switch to "Previous order"
* ERROR: Item checkbox was lost, quantity received still correct
* Switch to next order
* ERROR: item is now checked, quantity received 0
* Note: We see a mix up of the information entered, one has the checkbox now, the other the quantity.
* Save changes
* Click confirm
* Continue (complaint about the second order left unchanged)

You are back on the summary:
* pending order: quantity changed from 4 to 3 - correct
* received order: quantity shows 1 - correct

* Click on receive for your updated order line (with 3 items) 
* 4 items show to be received (should be 3)
Comment 1 Nick Clemens (kidclamp) 2023-09-07 19:08:24 UTC
Created attachment 155342 [details] [review]
Bug 34736: Don't trigger quantity change on loading order

We have a change event to automatically check or uncheck the first items on a list when
the value is changed directly.

The code is calling this when setting the quantity when loading an order, but this is causing a problem
in that we are setting the quantity to load.switch orders and triggering the checkboxes wrongly

To test:
 1 - Create a new basket, create items on placing the order
 2 - Create an order line with 4 items
 3 - Create another order line with 2 items
 4 - Close the basket
 5 - Receive shipment and create an invoice
 6 - Select both orders via the checkboxes got multi-receive
 7 - Click "receive selected"
 8 - Edit first order line, quantity received = 1 (1 out of 4)
 9 - Verify that one item is also selected in the table
10 - Switch to "next order"
11 - Quantity received is 0, no items checked in the second order
12 - Switch to "Previous order"
13 - ERROR: Item checkbox was lost, quantity received still correct
14 - Switch to next order
15 - ERROR: item is now checked, quantity received 0
16 - Note: We see a mix up of the information entered, one has the checkbox now, the other the quantity.
17 - Save changes
18 - Click confirm
19 - Continue (complaint about the second order left unchanged)
20 - You are back on the summary:
     * pending order: quantity changed from 4 to 3 - correct
     * received order: quantity shows 1 - correct
21 - Click on receive for your updated order line (with 3 items)
     * 4 items show to be received (should be 3)
22 - Apply patch
23 - Cancel receipt of items
24 - Repeat 1-12
25 - Items are loaded correctly
26 - Try with various checkboxes and switch back and forth
27 - Confirm that manually adjusting quantity received checks the first n boxes
28 - Confirm setting quantity to 0 unchecks the boxes
Comment 2 Katrin Fischer 2023-09-08 09:40:07 UTC
Created attachment 155384 [details] [review]
Bug 34736: Don't trigger quantity change on loading order

We have a change event to automatically check or uncheck the first items on a list when
the value is changed directly.

The code is calling this when setting the quantity when loading an order, but this is causing a problem
in that we are setting the quantity to load.switch orders and triggering the checkboxes wrongly

To test:
 1 - Create a new basket, create items on placing the order
 2 - Create an order line with 4 items
 3 - Create another order line with 2 items
 4 - Close the basket
 5 - Receive shipment and create an invoice
 6 - Select both orders via the checkboxes got multi-receive
 7 - Click "receive selected"
 8 - Edit first order line, quantity received = 1 (1 out of 4)
 9 - Verify that one item is also selected in the table
10 - Switch to "next order"
11 - Quantity received is 0, no items checked in the second order
12 - Switch to "Previous order"
13 - ERROR: Item checkbox was lost, quantity received still correct
14 - Switch to next order
15 - ERROR: item is now checked, quantity received 0
16 - Note: We see a mix up of the information entered, one has the checkbox now, the other the quantity.
17 - Save changes
18 - Click confirm
19 - Continue (complaint about the second order left unchanged)
20 - You are back on the summary:
     * pending order: quantity changed from 4 to 3 - correct
     * received order: quantity shows 1 - correct
21 - Click on receive for your updated order line (with 3 items)
     * 4 items show to be received (should be 3)
22 - Apply patch
23 - Cancel receipt of items
24 - Repeat 1-12
25 - Items are loaded correctly
26 - Try with various checkboxes and switch back and forth
27 - Confirm that manually adjusting quantity received checks the first n boxes
28 - Confirm setting quantity to 0 unchecks the boxes

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Comment 3 Katrin Fischer 2023-09-08 09:40:44 UTC
Bad bug, small fix - just how I like it. Thanks a lot Nick!
Comment 4 Victor Grousset/tuxayo 2023-09-12 22:19:17 UTC
Created attachment 155579 [details] [review]
Bug 34736: Don't trigger quantity change on loading order

We have a change event to automatically check or uncheck the first items on a list when
the value is changed directly.

The code is calling this when setting the quantity when loading an order, but this is causing a problem
in that we are setting the quantity to load.switch orders and triggering the checkboxes wrongly

To test:
 1 - Create a new basket, create items on placing the order
 2 - Create an order line with 4 items
 3 - Create another order line with 2 items
 4 - Close the basket
 5 - Receive shipment and create an invoice
 6 - Select both orders via the checkboxes got multi-receive
 7 - Click "receive selected"
 8 - Edit first order line, quantity received = 1 (1 out of 4)
 9 - Verify that one item is also selected in the table
10 - Switch to "next order"
11 - Quantity received is 0, no items checked in the second order
12 - Switch to "Previous order"
13 - ERROR: Item checkbox was lost, quantity received still correct
14 - Switch to next order
15 - ERROR: item is now checked, quantity received 0
16 - Note: We see a mix up of the information entered, one has the checkbox now, the other the quantity.
17 - Save changes
18 - Click confirm
19 - Continue (complaint about the second order left unchanged)
20 - You are back on the summary:
     * pending order: quantity changed from 4 to 3 - correct
     * received order: quantity shows 1 - correct
21 - Click on receive for your updated order line (with 3 items)
     * 4 items show to be received (should be 3)
22 - Apply patch
23 - Cancel receipt of items
24 - Repeat 1-12
25 - Items are loaded correctly
26 - Try with various checkboxes and switch back and forth
27 - Confirm that manually adjusting quantity received checks the first n boxes
28 - Confirm setting quantity to 0 unchecks the boxes

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Comment 5 Victor Grousset/tuxayo 2023-09-12 22:21:01 UTC
Works, makes sense, QA script happy, code looks good, passing QA :)

It was a nasty one, well done all ^^
Comment 6 Tomás Cohen Arazi (tcohen) 2023-09-15 14:59:01 UTC
Pushed to master for 23.11.

Nice work everyone, thanks!
Comment 7 Fridolin Somers 2023-09-18 07:38:09 UTC
Pushed to 23.05.x for 23.05.04
Comment 8 Katrin Fischer 2023-09-22 08:19:41 UTC
I am afraid we have an unwanted side-effect here if my git-bisect is correct :( 

Bug 34880 - Receive impossible if items created 'in cataloguing'
Comment 9 Victor Grousset/tuxayo 2023-09-25 05:58:55 UTC
oh no, very weird it did that. Thanks for finding it out.
Comment 10 Matt Blenkinsop 2023-10-12 15:21:02 UTC
Dependency missing for 22.11.x - not backporting