Remove Stopwords bug fixing
[koha.git] / acqui / neworderempty.pl
index 587c1fc..ac4a934 100755 (executable)
@@ -65,35 +65,58 @@ if this order comes from a suggestion.
 use strict;
 use CGI;
 use C4::Context;
+use C4::Input;
+
 use C4::Auth;
 use C4::Bookfund;
-use C4::Bookseller;
+use C4::Bookseller;            # GetBookSellerFromId
 use C4::Acquisition;
-use C4::Suggestions;
-use C4::Biblio;
-use C4::Search;
+use C4::Suggestions;   # GetSuggestion
+use C4::Biblio;                        # GetBiblioData
+use C4::Output;
+use C4::Input;
 use C4::Koha;
-use C4::Interface::CGI::Output;
+use C4::Branch;                        # GetBranches
 use C4::Members;
-use C4::Input;
-use C4::Date;
 
 my $input        = new CGI;
-my $booksellerid = $input->param('booksellerid');
+my $booksellerid = $input->param('booksellerid');      # FIXME: else ERROR!
 my $title        = $input->param('title');
 my $author       = $input->param('author');
 my $copyright    = $input->param('copyright');
-my @booksellers  = GetBookSeller($booksellerid);
-my $count        = scalar @booksellers;
+my $bookseller   = GetBookSellerFromId($booksellerid); # FIXME: else ERROR!
 my $ordnum       = $input->param('ordnum');
-my $biblionumber       = $input->param('biblionumber');
+my $biblionumber = $input->param('biblionumber');
 my $basketno     = $input->param('basketno');
+my $purchaseorder= $input->param('purchaseordernumber');
 my $suggestionid = $input->param('suggestionid');
+# my $donation     = $input->param('donation');
 my $close        = $input->param('close');
 my $data;
 my $new;
 
-my $dbh = C4::Context->dbh;
+if ( $ordnum eq '' ) {    # create order
+    $new = 'yes';
+
+    #  $ordnum=newordernum;
+    if ( $biblionumber && !$suggestionid ) {
+        $data = GetBiblioData($biblionumber);
+    }
+
+# get suggestion fields if applicable. If it's a subscription renewal, then the biblio already exists
+# otherwise, retrieve suggestion information.
+    if ($suggestionid) {
+               $data = ($biblionumber) ? GetBiblioData($biblionumber) : GetSuggestion($suggestionid);
+    }
+}
+else {    #modify order
+    $data   = GetOrder($ordnum);
+    $biblionumber = $data->{'biblionumber'};
+    #get basketno and supplierno. too!
+    my $data2 = GetBasket( $data->{'basketno'} );
+    $basketno     = $data2->{'basketno'};
+    $booksellerid = $data2->{'booksellerid'};
+}
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
@@ -105,69 +128,8 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         debug           => 1,
     }
 );
-my $me= C4::Context->userenv;
-my $homebranch=$me->{'branch'} ;
-my $branch;
-my $bookfundid;
-my $discount= $booksellers[0]->{'discount'};
-my $gstrate=C4::Context->preference('gist')*100;
-if ( $ordnum eq '' ) {    # create order
-    $new = 'yes';
-    if ( $biblionumber  ) {
-       my $record=XMLgetbibliohash($dbh,$biblionumber);
-          ###Error checking if a non existent biblionumber given manually
-       if (!$record){
-       print $input->redirect("/cgi-bin/koha/acqui/basket.pl?supplierid=$booksellerid");
-       }
-        $data = XMLmarc2koha_onerecord($dbh,$record,"biblios");
-    }elsif($suggestionid){
-       $data = GetSuggestion($suggestionid);
-    
-        if ( $data->{'title'} eq '' ) {
-               $data->{'title'}         = $title;
-                $data->{'author'}        = $author;
-                $data->{'copyrightdate'} = $copyright;
-       }
-   }### if biblionumber
- if ($basketno){
-        my $basket = GetBasket( $basketno);
-       my @orders=GetOrders($basketno);
-               if (@orders){
-               $template->param(
-               purchaseordernumber     =>  $orders[0]->{purchaseordernumber}, );
-               }
-       $template->param(
-       creationdate     => format_date( $basket->{creationdate} ),
-       authorisedbyname => $basket->{authorisedbyname},);
-  }else{
-       my @datetoday = localtime();
-       my $date = (1900+$datetoday[5])."-".($datetoday[4]+1)."-". $datetoday[3];
-       $template->param(
-       creationdate     => format_date($date),
-       authorisedbyname => $loggedinuser,);
-  }
-}else {    #modify order
-    $data   = GetSingleOrder($ordnum);
-    $biblionumber = $data->{'biblionumber'};
-    #get basketno and suppleirno. too!
-    my $data2 = GetBasket( $data->{'basketno'} );
-    $basketno     = $data->{'basketno'};
-    $booksellerid = $data2->{'booksellerid'};
-    $discount=$data->{'discount'};
-       $gstrate=$data->{'gst'} ;
-    $bookfundid =$data->{'bookfundid'};
- my $aqbookfund=GetBookFund($data->{'bookfundid'});
-$branch=$aqbookfund->{branchcode};
-$template->param(      
-       purchaseordernumber     =>  $data->{purchaseordernumber},
-       creationdate     => format_date( $data2->{creationdate} ),
-       authorisedbyname => $data2->{authorisedbyname},);
-       
-}
-
-
 
-# get currencies (for exchange rates calcs if needed)
+# get currencies (for change rates calcs if needed)
 my @rates = GetCurrencies();
 my $count = scalar @rates;
 
@@ -179,54 +141,58 @@ for ( my $i = 0 ; $i < $count ; $i++ ) {
     push @loop_currency, \%line;
 }
 
+# build itemtype list
+my $itemtypes = GetItemTypes;
 
-
-
+my @itemtypesloop;
+foreach my $thisitemtype (sort {$itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'}} keys %$itemtypes) {
+    push @itemtypesloop, { itemtype => $itemtypes->{$thisitemtype}->{'itemtype'} , desc =>  $itemtypes->{$thisitemtype}->{'description'} } ;
+}
 
 # build branches list
-my $branches = GetBranches;
+my $onlymine=C4::Context->preference('IndependantBranches') && 
+             C4::Context->userenv && 
+             C4::Context->userenv->{flags}!=1 && 
+             C4::Context->userenv->{branch};
+my $branches = GetBranches($onlymine);
 my @branchloop;
-foreach my $thisbranch ( sort keys %$branches ) {
-my $selected=1 if $thisbranch eq $branch;
-     my %row = ( 
+foreach my $thisbranch ( sort {$branches->{$a}->{'branchname'} cmp $branches->{$b}->{'branchname'}} keys %$branches ) {
+     my %row = (
         value      => $thisbranch,
         branchname => $branches->{$thisbranch}->{'branchname'},
-       selected=>$selected ,
     );
+       $row{'selected'} = 1 if( $thisbranch eq $data->{branchcode}) ;
     push @branchloop, \%row;
 }
-$template->param( branchloop => \@branchloop );
+$template->param( branchloop => \@branchloop , itypeloop => \@itemtypesloop );
 
 # build bookfund list
+my $borrower= GetMember($loggedinuser);
+my ( $flags, $homebranch )= ($borrower->{'flags'},$borrower->{'branchcode'});
 
-my $count2;
-my @bookfund;
 my @select_bookfund;
 my %select_bookfunds;
-my $selbookfund;
-@bookfund = GetBookFunds($homebranch);
-$count2 = scalar @bookfund;
+
+my @bookfund = GetBookFunds($homebranch);
+my $count2 = scalar @bookfund;
 
 for ( my $i = 0 ; $i < $count2 ; $i++ ) {
     push @select_bookfund, $bookfund[$i]->{'bookfundid'};
     $select_bookfunds{ $bookfund[$i]->{'bookfundid'} } =
       $bookfund[$i]->{'bookfundname'};
-       if ($bookfund[$i]->{'bookfundid'} eq $bookfundid){
-       $selbookfund=1;
-       }
 }
 my $CGIbookfund = CGI::scrolling_list(
-    -name     => 'bookfundid',
+    -name     => 'bookfund',
+       -id       => 'bookfund',
     -values   => \@select_bookfund,
-    -default  => $data->{'bookfundid'},
+    -default  => ($data->{'bookfundid'} ? $data->{'bookfundid'} : $select_bookfund[0]),
     -labels   => \%select_bookfunds,
-    -size     => 1,
-    -selected =>$selbookfund,
+       #-size     => 1,
     -multiple => 0
 );
 
 my $bookfundname;
-
+my $bookfundid;
 if ($close) {
     $bookfundid   = $data->{'bookfundid'};
     $bookfundname = $select_bookfunds{$bookfundid};
@@ -236,34 +202,36 @@ if ($close) {
 my $CGIsort1 = buildCGIsort( "Asort1", "sort1", $data->{'sort1'} );
 if ($CGIsort1) {
     $template->param( CGIsort1 => $CGIsort1 );
-}
-else {
+} else {
     $template->param( sort1 => $data->{'sort1'} );
 }
 
 my $CGIsort2 = buildCGIsort( "Asort2", "sort2", $data->{'sort2'} );
 if ($CGIsort2) {
     $template->param( CGIsort2 => $CGIsort2 );
-}
-else {
+} else {
     $template->param( sort2 => $data->{'sort2'} );
 }
 
-my $bibitemsexists;
-
-#
-
-    $template->param( bibitemexists => "1" ) if $biblionumber;
-        my @bibitemloop;
-          my %line;
-        $line{isbn}             = $data->{'isbn'};
-        $line{itemtype}         = $data->{'itemtype'};
-        $line{volumeddesc}      = $data->{'volumeddesc'};
+#do a biblioitems lookup on bib
+my @bibitems = GetBiblioItemByBiblioNumber($biblionumber);
+my $bibitemscount = scalar @bibitems;
+
+if ( $bibitemscount > 0 ) {
+    # warn "NEWBIBLIO: bibitems for $biblio exists\n";
+    my @bibitemloop;
+    for ( my $i = 0 ; $i < $bibitemscount ; $i++ ) {
+        my %line;
+        $line{biblioitemnumber} = $bibitems[$i]->{'biblioitemnumber'};
+        $line{isbn}             = $bibitems[$i]->{'isbn'};
+        $line{itemtype}         = $bibitems[$i]->{'itemtype'};
+        $line{volumeddesc}      = $bibitems[$i]->{'volumeddesc'};
         push( @bibitemloop, \%line );
 
         $template->param( bibitemloop => \@bibitemloop );
-    
-
+    }
+    $template->param( bibitemexists => "1" );
+}
 
 # fill template
 $template->param(
@@ -279,18 +247,21 @@ $template->param(
     basketno         => $basketno,
     booksellerid     => $booksellerid,
     suggestionid     => $suggestionid,
-    biblionumber           => $biblionumber,
+    biblionumber     => $biblionumber,
+    authorisedbyname => $borrower->{'firstname'} . " " . $borrower->{'surname'},
+       biblioitemnumber => $data->{'biblioitemnumber'},
     itemtype         => $data->{'itemtype'},
-    discount         => $discount,
-    listincgst       => $booksellers[0]->{'listincgst'},
-    listprice        => $booksellers[0]->{'listprice'},
-    gstreg           => $booksellers[0]->{'gstreg'},
-    invoiceinc       => $booksellers[0]->{'invoiceincgst'},
-    invoicedisc      => $booksellers[0]->{'invoicedisc'},
-    nocalc           => $booksellers[0]->{'nocalc'},
-    name             => $booksellers[0]->{'name'},
-    currency         => $booksellers[0]->{'listprice'},
-    gstrate          =>$gstrate,
+    itemtype_desc    => $itemtypes->{$data->{'itemtype'}}->{description},
+    discount         => $bookseller->{'discount'},
+    listincgst       => $bookseller->{'listincgst'},
+    listprice        => $bookseller->{'listprice'},
+    gstreg           => $bookseller->{'gstreg'},
+    invoiceinc       => $bookseller->{'invoiceincgst'},
+    invoicedisc      => $bookseller->{'invoicedisc'},
+    nocalc           => $bookseller->{'nocalc'},
+    name             => $bookseller->{'name'},
+    currency         => $bookseller->{'listprice'},
+    gstrate          => C4::Context->preference("gist") || 0,
     loop_currencies  => \@loop_currency,
     orderexists      => ( $new eq 'yes' ) ? 0 : 1,
     title            => $data->{'title'},
@@ -302,11 +273,10 @@ $template->param(
     quantity         => $data->{'quantity'},
     listprice        => $data->{'listprice'},
     rrp              => $data->{'rrp'},
+    total            => $data->{ecost}*$data->{quantity},
     invoice          => $data->{'booksellerinvoicenumber'},
     ecost            => $data->{'ecost'},
-    total              =>$data->{'unitprice'}* $data->{'quantity'},
-  unitprice            => $data->{'unitprice'},
- gst        => $data->{'ecost'}*$gstrate/100,
+    purchaseordernumber => $data->{'purchaseordernumber'},
     notes            => $data->{'notes'},
     publishercode    => $data->{'publishercode'},
 #     donation         => $donation