From f108b8d30f778244b4fccb6deb07bb6a1e2fe292 Mon Sep 17 00:00:00 2001 From: Dan Wells Date: Tue, 8 Apr 2014 16:22:33 -0400 Subject: [PATCH 1/1] LP#1078593 Regenerate summaries when deleting issuances 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 Signed-off-by: Kathy Lussier Signed-off-by: Ben Shum --- .../perlmods/lib/OpenILS/Application/Serial.pm | 12 +++++++++++- .../templates/serial/subscription/issuance.tt2 | 2 +- .../ui/default/serial/subscription/issuance.js | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm index c2caf50e8e..07cd43a0f5 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm @@ -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"); diff --git a/Open-ILS/src/templates/serial/subscription/issuance.tt2 b/Open-ILS/src/templates/serial/subscription/issuance.tt2 index a90e5b0cce..42042c4a10 100644 --- a/Open-ILS/src/templates/serial/subscription/issuance.tt2 +++ b/Open-ILS/src/templates/serial/subscription/issuance.tt2 @@ -7,7 +7,7 @@ [% l('New Issuance') %] [% l('Delete Selected') %] + onclick="iss_grid.deleteSelected(); regenerate_summaries();">[% l('Delete Selected') %] [%- IF CGI.param('context') != 'scv' -%] diff --git a/Open-ILS/web/js/ui/default/serial/subscription/issuance.js b/Open-ILS/web/js/ui/default/serial/subscription/issuance.js index 3f4dfcffa8..047ea77dc3 100644 --- a/Open-ILS/web/js/ui/default/serial/subscription/issuance.js +++ b/Open-ILS/web/js/ui/default/serial/subscription/issuance.js @@ -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); + } +} -- 2.43.2