Bug 20446: Fix Edifact quotes processing
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 29 Mar 2018 13:39:08 +0000 (10:39 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 6 Apr 2018 16:31:45 +0000 (13:31 -0300)
Caused by
  commit 04aea91de0f2fe1103e4021f880d135da1fd11a9
  Bug 15685: (QA follow-up) Address QA issues

->find is called on Koha::Object instead of the set class (Koha::Objects)
and raises the following error:
Can't use string ("Koha::Acquisition::Basket") as a HASH ref while
"strict refs" in use at /usr/share/koha/lib/Koha/Object.pm line 275.

This patch also makes sure $basketno refers to an existing basket in DB

I cannot provide a test plan, I have no idea how this code is used.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Koha/EDI.pm

index bad68d1..fcf352c 100644 (file)
@@ -36,6 +36,7 @@ use Koha::Edifact;
 use Log::Log4perl;
 use Text::Unidecode;
 use Koha::Plugins::Handler;
+use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Booksellers;
 
 our $VERSION = 1.1;
@@ -545,11 +546,11 @@ sub quote_item {
     my ( $item, $quote, $basketno ) = @_;
 
     my $schema = Koha::Database->new()->schema();
-
-    # create biblio record
     my $logger = Log::Log4perl->get_logger();
-    if ( !$basketno ) {
-        $logger->error('Skipping order creation no basketno');
+
+    my $basket = Koha::Acquisition::Baskets->find( $basketno );
+    unless ( $basket ) {
+        $logger->error('Skipping order creation no valid basketno');
         return;
     }
     $logger->trace( 'Checking db for matches with ', $item->item_number_id() );
@@ -797,8 +798,6 @@ sub quote_item {
                     );
                 }
 
-                my $basket = Koha::Acquisition::Basket->find( $basketno );
-
                 if ( $basket->effective_create_item eq 'ordering' ) {
                     my $new_item = {
                         notforloan       => -1,