enable EnhancedMessagingPreferences to turn notification on/off
[koha.git] / acqui / addorderiso2709.pl
index 6329307..25366b1 100755 (executable)
@@ -18,9 +18,9 @@
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
 use warnings;
@@ -37,7 +37,8 @@ use C4::Biblio;
 use C4::Items;
 use C4::Koha qw/GetItemTypes/;
 use C4::Budgets qw/GetBudgets/;
-use C4::Acquisition qw/NewOrderItem/;
+use C4::Acquisition qw/NewOrderItem GetBasket/;
+use C4::Bookseller qw/GetBookSellerFromId/;
 
 my $input = new CGI;
 my ($template, $loggedinuser, $cookie) = get_template_and_user({
@@ -50,8 +51,14 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({
                                         });
 my $cgiparams = $input->Vars;
 my $op = $cgiparams->{'op'};
-$template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl");
-my $ordnum;
+my $booksellerid  = $input->param('booksellerid');
+my $bookseller = GetBookSellerFromId($booksellerid);
+
+$template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl",
+                booksellerid => $booksellerid,
+                booksellername => $bookseller->{name},
+                );
+my $ordernumber;
 
 if ($cgiparams->{'import_batch_id'} && $op eq ""){
     $op = "batch_details";
@@ -119,18 +126,17 @@ if ($op eq ""){
             if (C4::Context->preference("BiblioAddsAuthorities")){
                 my ($countlinked,$countcreated)=BiblioAddAuthorities($marcrecord, $cgiparams->{'frameworkcode'});
             }
-            my $patron = C4::Members->GetMember($loggedinuser);
+            my $patron = C4::Members->GetMember(borrowernumber => $loggedinuser);
             my $branch = C4::Branch->GetBranchDetail($patron->{branchcode});
             my ($invoice);
             my %orderinfo = ("biblionumber", $biblionumber,
-                                           "basketno", $cgiparams->{'basketno'},
-                                           "quantity", $cgiparams->{'quantityrec-' . $biblio->{'import_record_id'}},
-#                                           "budgetdate", $budget,
-                                           "branchcode", $branch,
-                                           "booksellerinvoicenumber", $invoice,
-                                           "budget_id", $budget_id,
-                                           "uncertainprice", 1,
-                                           );
+                            "basketno", $cgiparams->{'basketno'},
+                            "quantity", $cgiparams->{'quantityrec-' . $biblio->{'import_record_id'}},
+                            "branchcode", $branch,
+                            "booksellerinvoicenumber", $invoice,
+                            "budget_id", $budget_id,
+                            "uncertainprice", 1,
+                            );
             # get the price if there is one.
             # filter by storing only the 1st number
             # we suppose the currency is correct, as we have no possibilities to get it.
@@ -139,8 +145,6 @@ if ($op eq ""){
               if ($orderinfo{'listprice'} =~ /^([\d\.,]*)/) {
                   $orderinfo{'listprice'} = $1;
                   $orderinfo{'listprice'} =~ s/,/\./;
-                  eval "use C4::Acquisition qw/GetBasket/;";
-                  eval "use C4::Bookseller qw/GetBookSellerFromId/;";
                   my $basket = GetBasket($orderinfo{basketno});
                   my $bookseller = GetBookSellerFromId($basket->{booksellerid});
                   my $gst = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
@@ -156,8 +160,6 @@ if ($op eq ""){
               if ($orderinfo{'listprice'} =~ /^([\d\.,]*)/) {
                   $orderinfo{'listprice'} = $1;
                   $orderinfo{'listprice'} =~ s/,/\./;
-                  eval "use C4::Acquisition qw/GetBasket/;";
-                  eval "use C4::Bookseller qw/GetBookSellerFromId/;";
                   my $basket = GetBasket($orderinfo{basketno});
                   my $bookseller = GetBookSellerFromId($basket->{booksellerid});
                   my $gst = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
@@ -168,8 +170,10 @@ if ($op eq ""){
               }
               $orderinfo{'rrp'} = $orderinfo{'listprice'};
             }
+            # remove uncertainprice flag if we have found a price in the MARC record
+            $orderinfo{uncertainprice} = 0 if $orderinfo{listprice};
             my $basketno;
-            ( $basketno, $ordnum ) = NewOrder(\%orderinfo);
+            ( $basketno, $ordernumber ) = NewOrder(\%orderinfo);
 
             # now, add items if applicable
             # parse all items sent by the form, and create an item just for the import_record_id we are dealing with
@@ -203,11 +207,11 @@ if ($op eq ""){
                                 $found = 1;
                             }
                         }
-                        push @{$item->{tags}}, @tags[$i];
-                        push @{$item->{subfields}}, @subfields[$i];
-                        push @{$item->{field_values}}, @field_values[$i];
-                        push @{$item->{ind_tag}}, @ind_tag[$i];
-                        push @{$item->{indicator}}, @indicator[$i];
+                        push @{$item->{tags}}, $tags[$i];
+                        push @{$item->{subfields}}, $subfields[$i];
+                        push @{$item->{field_values}}, $field_values[$i];
+                        push @{$item->{ind_tag}}, $ind_tag[$i];
+                        push @{$item->{indicator}}, $indicator[$i];
                         $item->{itemid} = $itemid;
                         if (! $found){
                              push @items, $item;
@@ -223,7 +227,7 @@ if ($op eq ""){
                                                 $item->{'indicator'});
                         my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
                         my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
-                        NewOrderItem( $itemnumber, $ordnum);
+                        NewOrderItem( $itemnumber, $ordernumber);
                 }
             }
         }
@@ -260,15 +264,15 @@ sub import_batches_list {
 
 sub import_biblios_list {
     my ($template, $import_batch_id) = @_;
-    my $batch = GetImportBatch($import_batch_id);
-    my $biblios = GetImportBibliosRange($import_batch_id);
+    my $batch = GetImportBatch($import_batch_id,'staged');
+    my $biblios = GetImportBibliosRange($import_batch_id,'','','staged');
     my @list = ();
-# Itemtype is mandatory for adding a biblioitem, we just add a default, the user needs to modify this aftewards
-    my $itemtypehash = GetItemTypes();
-    my @itemtypes;
-    for my $key (sort { $itemtypehash->{$a}->{description} cmp $itemtypehash->{$b}->{description} } keys %$itemtypehash) {
-        push(@itemtypes, $itemtypehash->{$key});
-    }
+# Itemtype is mandatory for adding a biblioitem, we just add a default, the user needs to modify this aftewards
+    my $itemtypehash = GetItemTypes();
+    my @itemtypes;
+    for my $key (sort { $itemtypehash->{$a}->{description} cmp $itemtypehash->{$b}->{description} } keys %$itemtypehash) {
+        push(@itemtypes, $itemtypehash->{$key});
+    }
     foreach my $biblio (@$biblios) {
         my $citation = $biblio->{'title'};
         $citation .= " $biblio->{'author'}" if $biblio->{'author'};
@@ -288,15 +292,15 @@ sub import_biblios_list {
             match_biblionumber => $#$match > -1 ? $match->[0]->{'biblionumber'} : 0,
             match_citation => $#$match > -1 ? $match->[0]->{'title'} . ' ' . $match->[0]->{'author'} : '',
             match_score => $#$match > -1 ? $match->[0]->{'score'} : 0,
-            itemtypes => \@itemtypes,
+            itemtypes => \@itemtypes,
         );
-        if (C4::Context->preference('AcqCreateItem') eq 'ordering' && !$ordnum) {
-            # prepare empty item form
-            my $cell = PrepareItemrecordDisplay();
-            my @itemloop;
-            push @itemloop,$cell;
-            $cellrecord{'items'} = \@itemloop;
-        }
+#         if (C4::Context->preference('AcqCreateItem') eq 'ordering' && !$ordernumber) {
+            # prepare empty item form
+            my $cell = PrepareItemrecordDisplay();
+            my @itemloop;
+            push @itemloop,$cell;
+            $cellrecord{'items'} = \@itemloop;
+        }
         push @list, \%cellrecord;
 
 
@@ -306,15 +310,15 @@ sub import_biblios_list {
     my $nomatch_action = GetImportBatchNoMatchAction($import_batch_id);
     my $item_action = GetImportBatchItemAction($import_batch_id);
     $template->param(biblio_list => \@list,
-                                      num_results => $num_biblios,
-                                      import_batch_id => $import_batch_id,
-                                      "overlay_action_${overlay_action}" => 1,
-                                      overlay_action => $overlay_action,
-                                      "nomatch_action_${nomatch_action}" => 1,
-                                      nomatch_action => $nomatch_action,
-                                      "item_action_${item_action}" => 1,
-                                      item_action => $item_action
-                                     );
+                        num_results => $num_biblios,
+                        import_batch_id => $import_batch_id,
+                        "overlay_action_${overlay_action}" => 1,
+                        overlay_action => $overlay_action,
+                        "nomatch_action_${nomatch_action}" => 1,
+                        nomatch_action => $nomatch_action,
+                        "item_action_${item_action}" => 1,
+                        item_action => $item_action
+                    );
     batch_info($template, $batch);
 }