Bug 18360: Allow to delete a cancelled order from open basket

Doing this under flag of order_manage and not on the higher level
of baskets.

Starting here with a single order delete for cancelled lines. So
deleting an open order line requires cancelling it first. Can be
extended later if needed.

Test plan:
Pick an open basket with cancelled lines.
Try to delete a few lines.
Test that you cannot do this on an closed basket. (Bonus: manipulate
URL with basketno, ordernumber and op=cud-delete-order.)

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Marcel de Rooy 2024-02-20 12:52:43 +00:00 committed by Katrin Fischer
parent 87b921726a
commit 2891b0d5e6
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
2 changed files with 40 additions and 2 deletions

View file

@ -119,7 +119,22 @@ $template->param( skip_confirm_reopen => 1) if $confirm_pref eq '2';
my @messages;
if ( $op eq 'cud-delete_confirm' ) {
if ( $op eq 'cud-delete-order' ) {
output_and_exit( $query, $cookie, $template, 'insufficient_permission' )
unless $logged_in_patron->has_permission( { acquisition => 'order_manage' } );
# We only allow deleting cancelled line without biblionumber for now
my $ordernumber = $query->param('ordernumber');
my $order = Koha::Acquisition::Orders->search(
{
biblionumber => undef,
ordernumber => $ordernumber, orderstatus => 'cancelled'
}
);
$order->delete if $order;
$op = 'list';
} elsif ( $op eq 'cud-delete_confirm' ) {
output_and_exit( $query, $cookie, $template, 'insufficient_permission' )
unless $logged_in_patron->has_permission( { acquisition => 'delete_baskets' } );

View file

@ -781,6 +781,7 @@
<th>GST %</th>
<th>GST</th>
<th>Fund</th>
<th>Delete order</th>
</tr>
</thead>
<tbody>
@ -844,11 +845,19 @@
<td class="number">[% order.total_tax_included | $Price %]</td>
<td class="number">[% order.tax_rate * 100 | html %]</td>
<td class="number">[% order.tax_value | $Price %]</td>
<td>[% order.budget_name | html %]
<td>[% order.budget_name | html %]</td>
<td>
[% UNLESS closedate %]<a class="delete_order" href="#" data-ordernumber="[% order.ordernumber | html %]" data-biblionumber="[% order.biblionumber | html %]">Delete</a>[% END %]
</td>
</tr>
[% END # /FOREACH order %]
</tbody>
</table> <!-- /#cancelledorderst -->
<form id="delete_order_form" method="post">
<input type="hidden" name="op" value="cud-delete-order"/>
<input type="hidden" name="ordernumber" value=""/>
<input type="hidden" name="basketno" value="[% basketno | html %]"/>
</form>
</div> <!-- /#cancelledorders -->
[% END # /IF (cancelledorders_loop) %]
<br />
@ -1113,6 +1122,20 @@
window.location = "/cgi-bin/koha/acqui/basket.pl?op=edi_confirm&basketno=[% basketno | html %]";
}
}
$(document).ready(function() {
$(".delete_order").on('click', function(e) {
e.preventDefault();
if( $(this).data('biblionumber') ) {
alert( _("Please delete the linked bibliographic record first.") );
return false;
} else if( !confirm(_("Are you sure you want to delete this order line?")) ) {
return false;
}
$('#delete_order_form input[name="ordernumber"]').val( $(this).data('ordernumber') );
$('#delete_order_form').submit();
});
});
</script>
[% ELSE %]
<script>