don't make the call to open-ils.cat if there are no real copies to delete. I'm assum...
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 1 Apr 2010 05:15:19 +0000 (05:15 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 1 Apr 2010 05:15:19 +0000 (05:15 +0000)
From my open-ils.acq.lineitem.cancel branch

git-svn-id: svn://svn.open-ils.org/ILS/trunk@16080 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm

index 2cbf412..696e725 100644 (file)
@@ -2456,15 +2456,17 @@ sub cancel_lineitem {
     }
 
     # attempt to delete the gathered copies (this will also handle volume deletion, bib deletion, and attempt hold retargeting)
-    my $cat_service = OpenSRF::AppSession->create('open-ils.cat');
-    $cat_service->connect;
-    my $cat_req = $cat_service->request('open-ils.cat.asset.copy.fleshed.batch.update', $mgr->editor->authtoken, $copies);
-    my $cat_result  = $cat_req->recv;
-    $cat_service->disconnect;
-    if (!$cat_result or $cat_result->content != 1) { # failed to delete copies
-        return new OpenILS::Event(
-            "ACQ_NOT_CANCELABLE", "note" => "lineitem $li_id", "payload" => $cat_result
-        );
+    if (scalar(@$copies)>0) {
+        my $cat_service = OpenSRF::AppSession->create('open-ils.cat');
+        $cat_service->connect;
+        my $cat_req = $cat_service->request('open-ils.cat.asset.copy.fleshed.batch.update', $mgr->editor->authtoken, $copies);
+        my $cat_result  = $cat_req->recv;
+        $cat_service->disconnect;
+        if (!$cat_result or $cat_result->content != 1) { # failed to delete copies
+            return new OpenILS::Event(
+                "ACQ_NOT_CANCELABLE", "note" => "lineitem $li_id", "payload" => $cat_result
+            );
+        }
     }
 
     # TODO delete the associated fund debits?