[open-ils-commits] [GIT] Evergreen ILS branch rel_2_12 updated. e1cda10bdd842988700b021182c3b5379d595c2e

Evergreen Git git at git.evergreen-ils.org
Mon May 1 16:43:31 EDT 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, rel_2_12 has been updated
       via  e1cda10bdd842988700b021182c3b5379d595c2e (commit)
       via  076328c9e501f5b33274212428d0fad01aaa81db (commit)
       via  69834618324cac093849d83ab06475d8ea1d58cf (commit)
       via  0e2fb07031d5be7cadbd62132444a66ae2de95a8 (commit)
      from  f57af22bda0d8e268ef29bae216ae69301047aba (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e1cda10bdd842988700b021182c3b5379d595c2e
Author: Galen Charlton <gmc at equinoxinitiative.org>
Date:   Mon May 1 16:45:29 2017 -0400

    LP#1257915: add live_t tests
    
    And here's a test plan for humans:
    
    [1] Create a purchase order with, say, 3 lineitems and 2
        copies on each of these.
    [2] Receive the first two lineitems outright.
    [3] Receive one of the copies on the last lineitem and cancel
        the other with a cancellation reason that's permanent (e.g.,
        bad ISBN) rather than temporary (e.g., backordered).
    [4] Note that the purchase order's state remains 'on-order'
    [5] Apply the patch.
    [6] Repeat steps #1-4. This time, the PO's state should be
        'received'.
    [7] Repeat steps #1-4, but this time, choose backordered as
        the cancellation reason. This time, the PO's state should
        remain 'on-order'.
    
    It should be noted that the patches for this bug do *not*
    retrospectively mark purchase orders as being received.
    
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/perlmods/live_t/22-acq-po-status.t b/Open-ILS/src/perlmods/live_t/22-acq-po-status.t
new file mode 100644
index 0000000..09ecda0
--- /dev/null
+++ b/Open-ILS/src/perlmods/live_t/22-acq-po-status.t
@@ -0,0 +1,64 @@
+#!perl
+use strict; use warnings;
+use Test::More tests => 11;
+use OpenILS::Utils::TestUtils;
+use OpenILS::Utils::CStoreEditor qw/:funcs/;
+use OpenILS::Application::Acq::Order;
+
+diag("Tests ACQ purchase orders");
+
+my $script = OpenILS::Utils::TestUtils->new();
+$script->bootstrap;
+
+$script->authenticate({
+    username => 'admin',
+    password => 'demo123',
+    type => 'staff'
+});
+
+my $e = $script->editor(authtoken=>$script->authtoken);
+$e->xact_begin;
+
+ok($script->authtoken, 'Have an authtoken');
+
+my $conn; # dummy for now
+my $mgr = OpenILS::Application::Acq::BatchManager->new(editor => $e, conn => $conn);
+
+my $origpo = $e->retrieve_acq_purchase_order(2);
+is($origpo->state, 'on-order', 'order starts at expected state') or
+    BAIL_OUT('order 2 does not have expected state');
+
+my $origli3 = $e->retrieve_acq_lineitem(3);
+my $origli4 = $e->retrieve_acq_lineitem(4);
+my $origli5 = $e->retrieve_acq_lineitem(5);
+
+is($origli3->state, 'on-order', 'line item 3 starts at expected state') or
+    BAIL_OUT('line item 3 does not have expected state');
+is($origli4->state, 'cancelled', 'line item 4 starts at expected state') or
+    BAIL_OUT('line item 4 does not have expected state');
+is($origli5->state, 'cancelled', 'line item 5 starts at expected state') or
+    BAIL_OUT('line item 5 does not have expected state');
+is($origli4->cancel_reason, 1283, 'line item 4 starts at expected cancel_reason') or
+    BAIL_OUT('line item 4 does not have expected cancel_reason');
+is($origli5->cancel_reason, 1, 'line item 5 starts at expected cancel_reason') or
+    BAIL_OUT('line item 5 does not have expected cancel_reason');
+
+my $ret = OpenILS::Application::Acq::Order::check_purchase_order_received($mgr, 2);
+is($ret->state, 'on-order', 'order cannot be received (yet)');
+
+OpenILS::Application::Acq::Order::receive_lineitem($mgr, 3, 1);
+my $li = $e->retrieve_acq_lineitem(3);
+is($li->state, 'received', 'line item 3 received');
+
+$ret = OpenILS::Application::Acq::Order::check_purchase_order_received($mgr, 2);
+is($ret->state, 'on-order', 'order still cannot be received');
+
+$li = $e->retrieve_acq_lineitem(4);
+$li->cancel_reason(2); # this one has keep_debits = false, i.e., we don't expect
+                       # this one to ever show up
+$e->update_acq_lineitem($li);
+
+$ret = OpenILS::Application::Acq::Order::check_purchase_order_received($mgr, 2);
+is($ret->state, 'received', 'LP#1257915: order now received');
+
+$e->rollback;

commit 076328c9e501f5b33274212428d0fad01aaa81db
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Apr 12 16:54:25 2017 -0400

    LP#1257915 Repair receive-when-cancel query
    
    Repaire the json_query used to determine if a PO is ready to be marked
    received.
    
    A PO is non-receiveable if it has any lineitems that are not in the
    received/cancelled [sic] state OR any that are canceled with a
    keep_debits=true cancel reason.
    
    Prior to this change, simply having a state of "cancelled" was enough to
    prevent receiving.
    
    * Replace tabs w/ spaces
    * Remove unnecessary "or return 0" clause which was causing Perl
      precedence warnings.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
index 07aab00..3eae860 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
@@ -787,7 +787,7 @@ sub receive_lineitem_detail {
     my $li = check_lineitem_received($mgr, $lid->lineitem) or return 0;
     return 1 if $li == 1; # li not received
 
-    return check_purchase_order_received($mgr, $li->purchase_order) or return 0;
+    return check_purchase_order_received($mgr, $li->purchase_order);
 }
 
 
@@ -1191,21 +1191,29 @@ sub create_purchase_order {
 sub check_purchase_order_received {
     my($mgr, $po_id) = @_;
 
-	my $non_recv_li = $mgr->editor->json_query({
-		"select" =>{
-        	"jub" =>["id"]
-    	},
-    	"from" =>{
-        	"jub" => {"acqcr" => {"type" => "left"}}
-    	},
-    	"where" =>{
-        	"+jub" => {"purchase_order" => $po_id},
-        	"-or" => [
-            	{"+jub" => {"state" => {"!=" => "received"}}},
-            	{"+acqcr" => {"keep_debits" =>"t"}}
-        	]
-    	}
-	});
+    my $non_recv_li = $mgr->editor->json_query({
+        "select" =>{
+            "jub" =>["id"]
+        },
+        "from" =>{
+            "jub" => {"acqcr" => {"type" => "left"}}
+        },
+        "where" => {
+            "+jub" => {"purchase_order" => $po_id},
+            # Return lineitems that are not in the received/cancelled [sic] 
+            # state OR those that are canceled with keep_debits=true.
+            "-or" => [
+                {"+jub" => {
+                    "state" => {"not in" => ["received", "cancelled"]}}
+                }, {
+                    "-and" => [
+                        {"+jub" => {"state" => "cancelled"}},
+                        {"+acqcr" => {"keep_debits" =>"t"}}
+                    ]
+                }
+            ]
+        }
+    });
 
     my $po = $mgr->editor->retrieve_acq_purchase_order($po_id);
     return $po if @$non_recv_li;
@@ -3240,7 +3248,6 @@ sub cancel_lineitem {
 
     # check to see if this cancelation should result in
     # marking the purchase order "received"
-    my $po;
     return 0 unless check_purchase_order_received($mgr, $li->purchase_order->id);
 
     return $result;

commit 69834618324cac093849d83ab06475d8ea1d58cf
Author: Chris Sharp <csharp at georgialibraries.org>
Date:   Fri Apr 7 08:45:06 2017 -0400

    LP#1257915 - Also check whether to mark the PO received when canceling.
    
    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
index 58a6550..07aab00 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
@@ -1199,9 +1199,9 @@ sub check_purchase_order_received {
         	"jub" => {"acqcr" => {"type" => "left"}}
     	},
     	"where" =>{
-        	"+jub" => {"id" => $po_id},
+        	"+jub" => {"purchase_order" => $po_id},
         	"-or" => [
-            	{"+jub" => {"state" => "received"}},
+            	{"+jub" => {"state" => {"!=" => "received"}}},
             	{"+acqcr" => {"keep_debits" =>"t"}}
         	]
     	}
@@ -3229,7 +3229,7 @@ sub cancel_lineitem {
             }
         }
     }
-
+ 
     update_lineitem($mgr, $li) or return 0;
     $result->{"li"} = {
         $li_id => {
@@ -3237,6 +3237,12 @@ sub cancel_lineitem {
             "cancel_reason" => $cancel_reason
         }
     };
+
+    # check to see if this cancelation should result in
+    # marking the purchase order "received"
+    my $po;
+    return 0 unless check_purchase_order_received($mgr, $li->purchase_order->id);
+
     return $result;
 }
 

commit 0e2fb07031d5be7cadbd62132444a66ae2de95a8
Author: Chris Sharp <csharp at georgialibraries.org>
Date:   Wed Apr 5 09:52:50 2017 -0400

    LP#1257915 - Mark POs received when all lineitems are received or canceled.
    
    Previously, Evergreen only considered lineitems not in a "received" status
    when deciding whether to consider a purchase order to be "received".  Now
    items with cancel reasons that do not keep debits (e.g. not backordered)
    are considered "done".
    
    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
index 2a64bdf..58a6550 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
@@ -1191,10 +1191,21 @@ sub create_purchase_order {
 sub check_purchase_order_received {
     my($mgr, $po_id) = @_;
 
-    my $non_recv_li = $mgr->editor->search_acq_lineitem(
-        {   purchase_order => $po_id,
-            state => {'!=' => 'received'}
-        }, {idlist=>1});
+	my $non_recv_li = $mgr->editor->json_query({
+		"select" =>{
+        	"jub" =>["id"]
+    	},
+    	"from" =>{
+        	"jub" => {"acqcr" => {"type" => "left"}}
+    	},
+    	"where" =>{
+        	"+jub" => {"id" => $po_id},
+        	"-or" => [
+            	{"+jub" => {"state" => "received"}},
+            	{"+acqcr" => {"keep_debits" =>"t"}}
+        	]
+    	}
+	});
 
     my $po = $mgr->editor->retrieve_acq_purchase_order($po_id);
     return $po if @$non_recv_li;

-----------------------------------------------------------------------

Summary of changes:
 .../perlmods/lib/OpenILS/Application/Acq/Order.pm  |   36 +++++++++--
 Open-ILS/src/perlmods/live_t/22-acq-po-status.t    |   64 ++++++++++++++++++++
 2 files changed, 94 insertions(+), 6 deletions(-)
 create mode 100644 Open-ILS/src/perlmods/live_t/22-acq-po-status.t


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list