Bug 37115: Batch delete linked serials

Test plan:
- Add a new subscription to a serial record (with the option 'create an item record' selected)
- Receive several issues and create the linked items
- Return to the bibliographic record
- Select several items
- Click to 'Delete selected items'
- Tick the box 'delete serial issues linked to items' and confirm
- The items should be deleted correctly
- Back to subscription : the issues linked to items should no longer exist

Signed-off-by: Boubacar OUATTARA <boubacar.ouattara@biblibre.com>
Signed-off-by: Nathalie <nathalie.savarit@univ-amu.fr>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 69b1d07d76)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
Matt Blenkinsop 2024-07-04 10:21:03 +00:00 committed by Paul Derscheid
parent 88304db54b
commit e766667c91
No known key found for this signature in database
GPG Key ID: C25F9FD44CED595B
3 changed files with 30 additions and 11 deletions

View File

@ -81,8 +81,9 @@ sub process {
$self->start;
my @record_ids = @{ $args->{record_ids} };
my $delete_biblios = $args->{delete_biblios};
my @record_ids = @{ $args->{record_ids} };
my $delete_biblios = $args->{delete_biblios};
my $delete_serial_issues = $args->{delete_serial_issues};
my $report = {
total_records => scalar @record_ids,
@ -106,7 +107,12 @@ sub process {
my $item = Koha::Items->find($record_id) || next;
my $return = $item->safe_delete( { skip_record_index => 1, skip_holds_queue => 1 } );
my $return = $item->safe_delete(
{
skip_record_index => 1, skip_holds_queue => 1,
delete_serial_issues => $delete_serial_issues
}
);
unless ($return) {
# FIXME Do we need to rollback the whole transaction if a deletion failed?
@ -221,15 +227,17 @@ sub enqueue {
# TODO Raise exception instead
return unless exists $args->{record_ids};
my @record_ids = @{ $args->{record_ids} };
my $delete_biblios = $args->{delete_biblios} || 0;
my @record_ids = @{ $args->{record_ids} };
my $delete_biblios = $args->{delete_biblios} || 0;
my $delete_serial_issues = $args->{delete_serial_issues} || 0;
$self->SUPER::enqueue(
{
job_size => scalar @record_ids,
job_args => {
record_ids => \@record_ids,
delete_biblios => $delete_biblios,
record_ids => \@record_ids,
delete_biblios => $delete_biblios,
delete_serial_issues => $delete_serial_issues,
},
job_queue => 'long_tasks',
}

View File

@ -175,8 +175,17 @@
<p>This will delete [% IF ( too_many_items_display ) %]all the[% ELSE %]the selected[% END %] items.</p>
<input type="hidden" name="del" value="1" />
[% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
<input type="checkbox" name="del_records" id="del_records" />
<label for="del_records">Delete records if no items remain.</label>
<div style="display: flex; flex-direction: column; gap: 5px;">
<div>
<input type="checkbox" name="del_records" id="del_records" />
<label for="del_records">Delete records if no items remain.</label>
</div>
<div>
<input type="checkbox" name="del_serial_issues" id="del_serial_issues" />
<label for="del_serial_issues">Delete serial issues linked to items.</label>
</div>
</div>
[% END %]
<fieldset class="action">

View File

@ -49,6 +49,7 @@ my $biblionumber = $input->param('biblionumber');
my $op = $input->param('op');
my $del = $input->param('del');
my $del_records = $input->param('del_records');
my $del_serial_issues = $input->param('del_serial_issues');
my $src = $input->param('src');
my $use_default_values = $input->param('use_default_values');
my $exclude_from_local_holds_priority = $input->param('exclude_from_local_holds_priority');
@ -94,8 +95,9 @@ if ( $op eq "cud-action" ) {
if ($del) {
try {
my $params = {
record_ids => \@itemnumbers,
delete_biblios => $del_records,
record_ids => \@itemnumbers,
delete_biblios => $del_records,
delete_serial_issues => $del_serial_issues,
};
my $job_id = Koha::BackgroundJob::BatchDeleteItem->new->enqueue($params);
$nextop = 'enqueued';