Merging Katipo changes
[koha.git] / acqui / newbiblio.pl
index b45b804..2b19a83 100755 (executable)
 use strict;
 use CGI;
 use C4::Context;
-use C4::Catalogue;
-use C4::Search;
+use C4::Input;
+use C4::Database;
 use C4::Auth;
+use C4::Acquisition;
+use C4::Suggestions;
+use C4::Biblio;
+use C4::Search;
 use C4::Output;
+use C4::Input;
+use C4::Koha;
 use C4::Interface::CGI::Output;
-use C4::Database;
 use HTML::Template;
 
 my $input=new CGI;
-my $id=$input->param('id');
+my $booksellerid=$input->param('booksellerid');
 my $title=$input->param('title');
 my $author=$input->param('author');
 my $copyright=$input->param('copyright');
-my ($count,@booksellers)=bookseller($id);
+my ($count,@booksellers)=bookseller($booksellerid);
 my $ordnum=$input->param('ordnum');
 my $biblio=$input->param('biblio');
-my $basket=$input->param('basket');
+my $basketno=$input->param('basketno');
+my $suggestionid = $input->param('suggestionid');
+my $close= $input->param('close');
 my $data;
 my $new;
 my $dbh = C4::Context->dbh;
-if ($ordnum eq ''){
+if ($ordnum eq ''){ # create order
        $new='yes';
-       $ordnum=newordernum;
-       if ($biblio) {
+#      $ordnum=newordernum;
+       if ($biblio && !$suggestionid) {
+                       $data=bibdata($biblio);
+       }
+       # get suggestion fields if applicable. If it's a subscription renewal, then the biblio already exists
+       # otherwise, retrieve suggestion information.
+       if ($suggestionid) {
+               if ($biblio) {
                        $data=bibdata($biblio);
+               } else {
+                       $data = getsuggestion($suggestionid);
+               }
        }
        if ($data->{'title'} eq ''){
                $data->{'title'}=$title;
                $data->{'author'}=$author;
                $data->{'copyrightdate'}=$copyright;
        }
-}else {
+}else { #modify order
        $data=getsingleorder($ordnum);
        $biblio=$data->{'biblionumber'};
 }
@@ -68,7 +84,8 @@ my ($template, $loggedinuser, $cookie)
                             debug => 1,
                             });
 
-#my ($count2,$currencies)=getcurrencies;
+
+# get currencies (for change rates calcs if needed
 my ($count,$rates)=getcurrencies();
 my @loop_currency = ();
 for (my $i=0;$i<$count;$i++){
@@ -78,18 +95,15 @@ for (my $i=0;$i<$count;$i++){
        push @loop_currency, \%line;
 }
 
-my $query="Select itemtype,description from itemtypes order by description";
-my $sth=$dbh->prepare($query);
+# build itemtype list
+my $sth=$dbh->prepare("Select itemtype,description from itemtypes order by description");
 $sth->execute;
 my  @itemtype;
 my %itemtypes;
-push @itemtype, "";
-$itemtypes{''} = "Please choose";
 while (my ($value,$lib) = $sth->fetchrow_array) {
        push @itemtype, $value;
        $itemtypes{$value}=$lib;
 }
-
 my $CGIitemtype=CGI::scrolling_list( -name     => 'format',
                        -values   => \@itemtype,
                        -default  => $data->{'itemtype'},
@@ -98,37 +112,27 @@ my $CGIitemtype=CGI::scrolling_list( -name     => 'format',
                        -multiple => 0 );
 $sth->finish;
 
-my @branches;
-my @select_branch;
-my %select_branches;
-my ($count2,@branches)=branches();
-for (my $i=0;$i<$count2;$i++){
-       push @select_branch, $branches[$i]->{'branchcode'};#
-       $select_branches{$branches[$i]->{'branchcode'}} = $branches[$i]->{'branchname'};
+# build branches list
+my $branches = getbranches;
+my @branchloop;
+foreach my $thisbranch (sort keys %$branches) {
+       my %row =(value => $thisbranch,
+                               branchname => $branches->{$thisbranch}->{'branchname'},
+                       );
+       push @branchloop, \%row;
 }
-my $CGIbranch=CGI::scrolling_list( -name     => 'branch',
-                       -values   => \@select_branch,
-                       -default  => $data->{'branchcode'},
-                       -labels   => \%select_branches,
-                       -size     => 1,
-                       -multiple => 0 );
+$template->param(branchloop =>\@branchloop);
 
-my $auto_barcode = C4::Context->boolean_preference("autoBarcode") || 0;
-       # See whether barcodes should be automatically allocated.
-       # Defaults to 0, meaning "no".
-my $barcode;
-if ($auto_barcode eq '1') {
-       $sth=$dbh->prepare("Select max(barcode) from items");
-       $sth->execute;
-       my $data=$sth->fetchrow_hashref;
-       $barcode = $data->{'barcode'}+1;
-       $sth->finish;
-}
+# build bookfund list
+my $sthtemp = $dbh->prepare("Select flags, branchcode from borrowers where borrowernumber = ?");
+$sthtemp->execute($loggedinuser);
+my ($flags, $homebranch)=$sthtemp->fetchrow;
 
+my $count2;
 my @bookfund;
 my @select_bookfund;
 my %select_bookfunds;
-($count2,@bookfund)=bookfunds();
+($count2,@bookfund)=bookfunds($homebranch);
 for (my $i=0;$i<$count2;$i++){
        push @select_bookfund, $bookfund[$i]->{'bookfundid'};
        $select_bookfunds{$bookfund[$i]->{'bookfundid'}} = $bookfund[$i]->{'bookfundname'}
@@ -139,19 +143,48 @@ my $CGIbookfund=CGI::scrolling_list( -name     => 'bookfund',
                        -labels   => \%select_bookfunds,
                        -size     => 1,
                        -multiple => 0 );
+my $bookfundname;
+my $bookfundid;
+if ($close){
+       $bookfundid=$data->{'bookfundid'};
+       $bookfundname= $select_bookfunds{$bookfundid};
+}
+
+#Build sort lists
+my $CGIsort1 = buildCGIsort("Asort1","sort1",$data->{'sort1'});
+if ($CGIsort1) {
+       $template->param(CGIsort1 => $CGIsort1);
+} else {
+       $template->param( sort1 => $data->{'sort1'});
+}
+
+my $CGIsort2 = buildCGIsort("Asort2","sort2",$data->{'sort2'});
+if ($CGIsort2) {
+       $template->param(CGIsort2 =>$CGIsort2);
+} else {
+       $template->param( sort2 => $data->{'sort2'});
+}
+
+# fill template
+$template->param( close=> $close, bookfundid=>$bookfundid, bookfundname=>$bookfundname) if ($close);
+
 
 $template->param( existing => $biblio,
                                                title => $title,
                                                ordnum => $ordnum,
-                                               basket => $basket,
-                                               id => $id,
+                                               basketno => $basketno,
+                                               booksellerid => $booksellerid,
+                                               suggestionid => $suggestionid,
                                                biblio => $biblio,
                                                biblioitemnumber => $data->{'biblioitemnumber'},
                                                itemtype => $data->{'itemtype'},
                                                discount => $booksellers[0]->{'discount'},
-                                               listincgst => $booksellers[0]->{'listincgst'},
+                                               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 => C4::Context->preference("gist") ,
@@ -161,16 +194,15 @@ $template->param( existing => $biblio,
                                                author => $data->{'author'},
                                                copyrightdate => $data->{'copyrightdate'},
                                                CGIitemtype => $CGIitemtype,
-                                               CGIbranch => $CGIbranch,
                                                CGIbookfund => $CGIbookfund,
                                                isbn => $data->{'isbn'},
                                                seriestitle => $data->{'seriestitle'},
                                                quantity => $data->{'quantity'},
                                                listprice => $data->{'listprice'},
                                                rrp => $data->{'rrp'},
+                                               invoice => $data->{'booksellerinvoicenumber'},
                                                ecost => $data->{'ecost'},
                                                notes => $data->{'notes'},
-                                               barcode => $data->{'barcode'},);
+                                               publishercode => $data->{'publishercode'});
 
 output_html_with_http_headers $input, $cookie, $template->output;
-