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})) {
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 );
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");
<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' -%]
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);
+ }
+}