Bug 29658: Fix crash on cancelling cancelled order
Found this crash in our 20.11 logs:
Cannot insert order: Mandatory parameter biblionumber is missing at /usr/share/koha/acqui/cancelorder.pl line 60.
at /usr/share/perl/5.28/Carp.pm line 289
Carp::croak('Cannot insert order: Mandatory parameter biblionumber is missing') called at /usr/share/koha/Koha/Acquisition/Order.pm line 79
Koha::Acquisition::Order::store('Koha::Acquisition::Order=HASH(0x55f3760e2860)') called at /usr/share/koha/Koha/Acquisition/Order.pm line 189
Koha::Acquisition::Order::cancel('Koha::Acquisition::Order=HASH(0x55f3760e2860)', 'HASH(0x55f375a17ec0)') called at /usr/share/koha/acqui/cancelorder.pl line 60
Not sure how to reproduce this one as it happened. But might be related to repeated clicking, backspacing etc.
Test plan:
Create a new basket and order.
Open this same basket in two browser tabs.
Cancel the order line (delete catalog record) in tab 1.
Go to second tab, try again.
Without this patch, it will crash. With this patch, an error message.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 2a3ba5f825
)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
9651875981
commit
22e6fd7cd8
2 changed files with 16 additions and 2 deletions
|
@ -56,8 +56,17 @@ my $delete_biblio = $input->param('del_biblio') ? 1 : 0;
|
|||
if( $action and $action eq "confirmcancel" ) {
|
||||
my $reason = $input->param('reason');
|
||||
my $order = Koha::Acquisition::Orders->find($ordernumber);
|
||||
$order->cancel({ reason => $reason, delete_biblio => $delete_biblio });
|
||||
my @messages = @{ $order->object_messages };
|
||||
my @messages;
|
||||
if( !$order ) {
|
||||
push @messages, Koha::Object::Message->new({ message => 'error_order_not_found', type => 'error' });
|
||||
$template->param( error_order_not_found => 1 );
|
||||
} elsif( $order->datecancellationprinted ) {
|
||||
push @messages, Koha::Object::Message->new({ message => 'error_order_already_cancelled', type => 'error' });
|
||||
$template->param( error_order_already_cancelled => 1 );
|
||||
} else {
|
||||
$order->cancel({ reason => $reason, delete_biblio => $delete_biblio });
|
||||
@messages = @{ $order->object_messages };
|
||||
}
|
||||
|
||||
if ( scalar @messages > 0 ) {
|
||||
$template->param( error_delitem => 1 )
|
||||
|
|
|
@ -62,6 +62,11 @@
|
|||
[% ELSE %]
|
||||
<div class="dialog alert">
|
||||
An error has occurred.
|
||||
[% IF error_order_already_cancelled %]
|
||||
<p>The order has been cancelled already.</p>
|
||||
[% ELSIF error_order_not_found %]
|
||||
<p>The order could not be found.</p>
|
||||
[% END %]
|
||||
[% IF ( error_delitem ) %]
|
||||
<p>The order has been cancelled, although one or more items could not have been deleted.</p>
|
||||
[% END %]
|
||||
|
|
Loading…
Reference in a new issue