From 05a0118911e9d94d47e0038330487e6d35419a05 Mon Sep 17 00:00:00 2001 From: Josh Stompro Date: Tue, 25 Feb 2020 13:53:08 -0600 Subject: [PATCH] LP#850160 - Event Def Environment Fleshing Might Have Issue When the action trigger environment gets fleshed out, there is a bug with how might_have relations are fleshed ever other time they are evaluated. The first time they are correctly evaluated, but then the next time the same path gets evaluated, the object gets reset to the first value in the object. See https://bugs.launchpad.net/evergreen/+bug/850160 for testing notes. The fix is to add an extra check to only grab the first element if the object is an array. If it isn't an array it means it has already been fleshed. Testing notes: One way to test this bug is by looking at the self check receipt, hours of operations bug. https://bugs.launchpad.net/evergreen/+bug/793627 By default, the self check receipt will fail for even numbers of items checked out because the hours of operation doesn't get fleshed correctly. With this change, the receipt should print for even and odd numbers of items. Another test is to add user.money_summary to a lost/bill action trigger event notification. Before the fix, if you have an even number of items billec, the user.money_summary gets set to the first object in that table, and for odd numbers of items, user.money_summary.balanced_owed gets set correctly. Signed-off-by: Josh Stompro Signed-off-by: Mike Rylander --- Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm index bd85e387dd..4291eeb407 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Event.pm @@ -693,7 +693,7 @@ sub _object_by_path { } $$node{$$label[-1]} = $obj; } else { - $obj = $$obj[0] if $rtype eq 'might_have'; + $obj = $$obj[0] if $rtype eq 'might_have' and ref($obj) eq 'ARRAY'; $context->$step( $obj ) if ($obj); } } -- 2.43.2