LP#1078593 Regenerate summaries when deleting issuances
authorDan Wells <dbw2@calvin.edu>
Tue, 8 Apr 2014 20:22:33 +0000 (16:22 -0400)
committerBen Shum <bshum@biblio.org>
Tue, 3 Feb 2015 21:05:30 +0000 (16:05 -0500)
Both interfaces currently allow you to delete issuances even if they
have items attached and have the delete cascade.  While this might be
a dangerous allowance, we should still make sure to keep our summaries
updated when this happens.

This commit adds automatic summary regeneration when deleting issuances
in either serials interface.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm
Open-ILS/src/templates/serial/subscription/issuance.tt2
Open-ILS/web/js/ui/default/serial/subscription/issuance.js

index c2caf50..07cd43a 100644 (file)
@@ -392,6 +392,7 @@ sub fleshed_issuance_alter {
     my $override = $self->api_name =~ /override/;
 
     my %found_ssub_ids;
+    my %regen_ssub_ids;
     for my $issuance (@$issuances) {
         my $ssub_id = ref $issuance->subscription ? $issuance->subscription->id : $issuance->subscription;
         if (!exists($found_ssub_ids{$ssub_id})) {
@@ -413,6 +414,7 @@ sub fleshed_issuance_alter {
 
         if( $issuance->isdeleted ) {
             $evt = _delete_siss( $editor, $override, $issuance);
+            $regen_ssub_ids{$ssub_id} = 1;
         } elsif( $issuance->isnew ) {
             _cleanse_dates($issuance, ['date_published']);
             $evt = _create_siss( $editor, $issuance );
@@ -424,11 +426,19 @@ sub fleshed_issuance_alter {
         last if $evt;
     }
 
-    if( $evt ) {
+    if (!$evt) {
+        # if we deleted any issuances, update the summaries
+        # for all dists in those ssubs
+        my @ssub_ids = keys %regen_ssub_ids;
+        $evt = _regenerate_summaries($editor, {'ssub_ids' => \@ssub_ids}) if @ssub_ids;
+    }
+
+    if ( $evt ) {
         $logger->info("fleshed issuance-alter failed with event: ".OpenSRF::Utils::JSON->perl2JSON($evt));
         $editor->rollback;
         return $evt;
     }
+
     $logger->debug("issuance-alter: done updating issuance batch");
     $editor->commit;
     $logger->info("fleshed issuance-alter successfully updated ".scalar(@$issuances)." issuances");
index a90e5b0..42042c4 100644 (file)
@@ -7,7 +7,7 @@
         <span dojoType="dijit.form.Button"
             onclick="iss_grid.showCreatePane();">[% l('New Issuance') %]</span>
         <span dojoType="dijit.form.Button"
-            onclick="iss_grid.deleteSelected();">[% l('Delete Selected') %]</span>
+            onclick="iss_grid.deleteSelected(); regenerate_summaries();">[% l('Delete Selected') %]</span>
     </div>
 </div>
 [%- IF CGI.param('context') != 'scv' -%]
index 3f4dfcf..047ea77 100644 (file)
@@ -98,3 +98,20 @@ function generate_predictions(fields) {
         progess_dialog.hide();
     }
 }
+
+function regenerate_summaries() {
+    var args = {"ssub_ids": [sub.id()]};
+    try {
+        fieldmapper.standardRequest(
+            ["open-ils.serial", "open-ils.serial.regenerate_summaries"], {
+                "params": [openils.User.authtoken, args],
+                "async": true,
+                "onresponse": function(r) {
+                    openils.Util.readResponse(r); /* tests for events */
+                }
+            }
+        );
+    } catch (E) {
+        alert(E);
+    }
+}