Bug 19256: Make Koha::Acq::Order using Koha::Object
[koha.git] / acqui / addorderiso2709.pl
index 847c635..1aeaf3c 100755 (executable)
@@ -45,8 +45,9 @@ use C4::Members;
 use Koha::Number::Price;
 use Koha::Libraries;
 use Koha::Acquisition::Currencies;
-use Koha::Acquisition::Order;
+use Koha::Acquisition::Orders;
 use Koha::Acquisition::Booksellers;
+use Koha::Patrons;
 
 my $input = new CGI;
 my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({
@@ -147,6 +148,7 @@ if ($op eq ""){
     my $biblio_count = 0;
     for my $biblio (@$biblios){
         $biblio_count++;
+        my $duplifound = 0;
         # Check if this import_record_id was selected
         next if not grep { $_ eq $$biblio{import_record_id} } @import_record_id_selected;
         my ( $marcblob, $encoding ) = GetImportRecordMarc( $biblio->{'import_record_id'} );
@@ -164,15 +166,15 @@ if ($op eq ""){
         unless ( $biblionumber ) {
             if ($matcher_id) {
                 if ( $matcher_id eq '_TITLE_AUTHOR_' ) {
-                    $duplinbatch = $import_batch_id if FindDuplicate($marcrecord);
+                    $duplifound = 1 if FindDuplicate($marcrecord);
                 }
                 else {
                     my $matcher = C4::Matcher->fetch($matcher_id);
                     my @matches = $matcher->get_matches( $marcrecord, my $max_matches = 1 );
-                    $duplinbatch = $import_batch_id if @matches;
+                    $duplifound = 1 if @matches;
                 }
 
-                next if $duplinbatch;
+                $duplinbatch = $import_batch_id and next if $duplifound;
             }
 
             # add the biblio
@@ -216,6 +218,8 @@ if ($op eq ""){
         my @replacementprices = $input->multi_param('replacementprice_' . $biblio_count);
         my @itemcallnumbers = $input->multi_param('itemcallnumber_' . $biblio_count);
         my $itemcreation = 0;
+
+        my @itemnumbers;
         for (my $i = 0; $i < $count; $i++) {
             $itemcreation = 1;
             my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({
@@ -233,6 +237,7 @@ if ($op eq ""){
                 replacementprice => $replacementprices[$i],
                 itemcallnumber => $itemcallnumbers[$i],
             }, $biblionumber);
+            push( @itemnumbers, $itemnumber );
         }
         if ($itemcreation == 1) {
             # Group orderlines from MarcItemFieldsToOrder
@@ -300,19 +305,20 @@ if ($op eq ""){
                         )
                     };
 
-                    my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert;
+                    my $order = Koha::Acquisition::Order->new( \%orderinfo )->store;
+                    $order->add_item( $_ ) for @itemnumbers;
                 }
             }
         } else {
             # 3rd add order
-            my $patron = C4::Members::GetMember( borrowernumber => $loggedinuser );
+            my $patron = Koha::Patrons->find( $loggedinuser );
             # get quantity in the MARC record (1 if none)
             my $quantity = GetMarcQuantity($marcrecord, C4::Context->preference('marcflavour')) || 1;
             my %orderinfo = (
                 biblionumber       => $biblionumber,
                 basketno           => $cgiparams->{'basketno'},
                 quantity           => $c_quantity,
-                branchcode         => $patron->{branchcode},
+                branchcode         => $patron->branchcode,
                 budget_id          => $c_budget_id,
                 uncertainprice     => 1,
                 sort1              => $c_sort1,
@@ -369,7 +375,7 @@ if ($op eq ""){
             )
         };
 
-        my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert;
+        my $order = Koha::Acquisition::Order->new( \%orderinfo )->store;
 
         # 4th, add items if applicable
         # parse the item sent by the form, and create an item just for the import_record_id we are dealing with
@@ -412,15 +418,14 @@ if ($op eq ""){
 my $budgets = GetBudgets();
 my $budget_id = @$budgets[0]->{'budget_id'};
 # build bookfund list
-my $borrower = GetMember( 'borrowernumber' => $loggedinuser );
-my ( $flags, $homebranch ) = ( $borrower->{'flags'}, $borrower->{'branchcode'} );
+my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
 my $budget = GetBudget($budget_id);
 
 # build budget list
 my $budget_loop = [];
 my $budgets_hierarchy = GetBudgetHierarchy;
 foreach my $r ( @{$budgets_hierarchy} ) {
-    next unless (CanUserUseBudget($borrower, $r, $userflags));
+    next unless (CanUserUseBudget($patron, $r, $userflags));
     if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
         next;
     }