big change from Katipo.

------------------------------
- Results for 'mutli orders with matching titles attached to same bibitem'  now split into new .tmpl file, "acquire-multi-order.tmpl".
- this script/tmpl does 3 things!?!, pulled search results out of acquire.pl, now points to searchresults.tmpl.
- little fix to display correct supplier info in acquire.pl's 'detail' view.
- Little fix on previous commit, now doesnt break single order acquire view.
- Fix for RT:698 https://staff.katipo.co.nz/rt/Ticket/Display.html?id=698.
- now display correct supplier title when 0 results returned.
- Now pickes up basketno, to display as url to tmpl.
- Adding in fix for bibitems with more than one matching order.
- Rolled back to prod version, added 'create new bib-group' fix.
- Mason's ACQ fixes from HLT-DEV , work in progress
- Now does a lookup in aqorders, for all existing orders matching  biblioitems, then presents all matching orders in a table. this feature can be overridden by calling acquire.pl with multiorderseach=n in url, acquire.pl will instead go to specific order.
- Now catches, and returns to acquire.pl if newitems() fails.
- Now takes a barcodeerror value as arg.
- 'create new biblioitems' checkbox now only apears for bibitems with >= 1 items attached.
- adding stuff to let hlt have an accession date link from moredetail.tmpl
  that actually does something other than break biblioitems - not working yet
- Added output for volume as well as volumeddesc
- Added volume description to output loop
- Making change for bug #3676 displaying date unformatted
- More bugfixing this time a bug not saving volume info
- Fix for bug 3529, allow freight to be distributed among the items
- added a sprintf to get the number displaying in normal notation
- Altered the auto_barcode to actually get something other than 1
  but now got a problem with the result displaying in scientific notation
This commit is contained in:
sushi 2006-07-12 14:56:52 +00:00
parent e3468f803a
commit c2822e30ed

View file

@ -25,79 +25,271 @@ use strict;
use CGI;
use C4::Context;
use C4::Acquisition;
use C4::Koha;
use C4::Biblio;
use C4::Output;
use C4::Search;
use C4::Auth;
use C4::Interface::CGI::Output;
use C4::Database;
use HTML::Template;
use C4::Date;
use Data::Dumper;
my $input = new CGI;
my $supplierid = $input->param('supplierid');
my $dbh = C4::Context->dbh;
my $search = $input->param('recieve');
my $invoice = $input->param('invoice');
my $freight = $input->param('freight');
my $biblio = $input->param('biblio');
my $catview = $input->param('catview');
my $gst = $input->param('gst');
my $search = $input->param('recieve');
my $invoice = $input->param('invoice');
my $freight = $input->param('freight');
my $biblio = $input->param('biblio');
my $biblioitem = $input->param('bibitem'); # added my mason 20060324
my $catview = $input->param('catview');
my $gst = $input->param('gst');
my $noitems = $input->param('items');
my $set_barcode = $input->param('set_barcode');
my $library_name = C4::Context->preference("LibraryName");
my ( $count, @results ) =
ordersearch( $search, $supplierid, $biblio, $catview );
# warn "C:$count for ordersearch($search,$supplierid,$biblio,$catview);";
my ( $count2, @booksellers ) = bookseller( $results[0]->{'booksellerid'} );
my $date = $results[0]->{'entrydate'};
if ( $library_name eq "Horowhenua Library Trust" && $count > 1 ) {
( $count, @results ) = ordersearch( $search, $biblio, $catview );
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "acqui/acquire.tmpl",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => { acquisition => 1 },
debug => 1,
}
);
$template->param($count);
my $sthtemp =
$dbh->prepare(
"Select flags, branchcode from borrowers where borrowernumber = ?");
$sthtemp->execute($loggedinuser);
my ( $flags, $homebranch ) = $sthtemp->fetchrow;
}
#warn "COUNT = $count";
#warn "C:$count for ordersearch($search,$supplierid,$biblio,$catview);";
my ( $count2, @booksellers );
if ( $count == 1 ) {
my $sth;
( $count2, @booksellers ) = bookseller( $results[0]->{'booksellerid'} );
}
else {
( $count2, @booksellers ) = bookseller($supplierid);
}
my $branches = getbranches;
my @branchloop;
foreach my $thisbranch ( sort keys %$branches ) {
my %row = (
value => $thisbranch,
branchname => $branches->{$thisbranch}->{'branchname'},
);
push @branchloop, \%row;
#warn Dumper @results;
my $date = $results[0]->{'entrydate'};
my $exchange = getcurrency( $booksellers[0]->{'listprice'} );
my $no_multi = $input->param('no_multi');
#-------------------------
# bugzilla: http://bugzilla.katipo.co.nz/show_bug.cgi?id=3916 , mason.
# ok lets do a lookup to see how many orders exist for a bibitem, if there are >1,
# then we need to display them to the user so they can choose, because the system cant
# work it out, as there are no itemnumbers stored in the aqorders records :(
my @results2;
#warn "MASON BIBITEM= $biblioitem";
my $query2 = " select * from aqorders where biblioitemnumber =?";
my $sth2 = $dbh->prepare($query2);
$sth2->execute($biblioitem);
while ( my $data2 = $sth2->fetchrow_hashref ) {
#warn $data2;
#warn Dumper "DATA2:", $data2->{'basketno'};
my $query3 = " select * from aqbasket where basketno =?";
my $sth3 = $dbh->prepare($query3);
$sth3->execute( $data2->{'basketno'} );
my $data3 = $sth3->fetchrow_hashref;
#warn Dumper $data3;
$data2->{'booksellerid'} = $data3->{'booksellerid'};
push( @results2, $data2 );
}
$sth2->finish;
#warn Dumper @results2;
my @loop;
my $result_count = scalar(@results2);
#warn "MULTI REESULT $result_count";
#warn "NO_MULTI = $no_multi";
my ( $template, $loggedinuser, $cookie );
if ( $result_count > 1 && $no_multi != 1 ) {
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "acqui/acquire-multi-order.tmpl",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => { acquisition => 1 },
debug => 1,
}
);
#warn "IN MULTI IF \n";
# cool, now lets shove the results into a loop
for ( my $i = 0 ; $i < $result_count ; $i++ ) {
my %line;
$line{booksellerid} = $results2[$i]->{'booksellerid'};
$line{biblionumber} = $results2[$i]->{'biblionumber'};
$line{biblioitemnumber} = $results2[$i]->{'biblioitemnumber'};
$line{ordernumber} = $results2[$i]->{'ordernumber'};
$line{title} = $results2[$i]->{'title'};
$line{booksellerinvoicenumber} =
$results[$i]->{'booksellerinvoicenumber'};
$line{datereceived} = $results2[$i]->{'datereceived'};
$line{entrydate} = $results2[$i]->{'entrydate'};
$line{quantity} = $results2[$i]->{'quantity'};
$line{listprice} = $results2[$i]->{'listprice'};
$line{freight} = $results2[$i]->{'freight'};
$line{unitprice} = $results2[$i]->{'unitprice'};
$line{quantityreceived} = $results2[$i]->{'quantityreceived'};
$line{supplierreference} = $results2[$i]->{'supplierreference'};
$line{purchaseordernumber} = $results2[$i]->{'purchaseordernumber'};
$line{basketno} = $results2[$i]->{'basketno'};
$line{timestamp} = $results2[$i]->{'timestamp'};
$line{rrp} = $results2[$i]->{'rrp'};
$line{budgetdate} = $results2[$i]->{'budgetdate'};
push @loop, \%line;
#warn "LOOPING", $results2[$i]->{'ordernumber'};
}
$template->param(
loop => \@loop,
multi => 1,
biblio => $biblio,
biblioitem => $biblioitem,
);
}
elsif ( $count == 1 ) {
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "acqui/acquire.tmpl",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => { acquisition => 1 },
debug => 1,
}
);
#warn "NO MULTI\n";
my $itemtype2 = $results[0]->{'itemtype'};
my $freightperitem;
if ( $results[0]->{'freight'} > 0 ) {
$freightperitem = $results[0]->{'freight'};
}
else {
if ( $noitems > 0 ) {
$freightperitem = $freight / $noitems;
}
}
$freightperitem = sprintf( "%.2f", $freightperitem );
my $sth;
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 => $results[0]->{'itemtype'},
-labels => \%itemtypes,
-size => 1,
-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'};
}
my $CGIbranch = CGI::scrolling_list(
-name => 'branch',
-values => \@select_branch,
-default => $results[0]->{'branchcode'},
-labels => \%select_branches,
-size => 1,
-multiple => 0
);
my $auto_barcode = C4::Context->boolean_preference("autoBarcode") || 0;
#warn "ACQIRE AUTO BARCODE = $auto_barcode";
# 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 = $dbh->prepare("Select max(barcode) barcode from items");
$sth->execute;
my $data = $sth->fetchrow_hashref;
$barcode = $results[0]->{'barcode'} + 1;
my @data_results;
while ( my $data = $sth->fetchrow_hashref ) {
push( @data_results, $data );
}
$barcode = @data_results[0]->{'barcode'} + 1;
#warn 'moo', @data_results[0]->{'barcode'};
#warn "auto Barcode = $barcode";
#$barcode = sprintf( "%.0f", $barcode );
#warn "auto Barcode = $barcode";
$sth->finish;
my $moo = 'TEST777';
$moo = $moo + 1;
#warn $moo;
}
my @bookfund;
my @select_bookfund;
my %select_bookfunds;
( $count2, @bookfund ) = bookfunds();
for ( my $i = 0 ; $i < $count2 ; $i++ ) {
push @select_bookfund, $bookfund[$i]->{'bookfundid'};
$select_bookfunds{ $bookfund[$i]->{'bookfundid'} } =
$bookfund[$i]->{'bookfundname'};
}
my $CGIbookfund = CGI::scrolling_list(
-name => 'bookfund',
-values => \@select_bookfund,
-default => $results[0]->{'bookfundid'},
-labels => \%select_bookfunds,
-size => 1,
-multiple => 0
);
if ( $results[0]->{'quantityreceived'} == 0 ) {
$results[0]->{'quantityreceived'} = '';
}
if ( $results[0]->{'unitprice'} == 0 ) {
$results[0]->{'unitprice'} = '';
}
#warn Dumper( $results[0] );
$template->param(
branchloop => \@branchloop,
count => 1,
biblionumber => $results[0]->{'biblionumber'},
ordernumber => $results[0]->{'ordernumber'},
@ -105,17 +297,28 @@ if ( $count == 1 ) {
supplierid => $results[0]->{'booksellerid'},
freight => $freight,
gst => $gst,
catview => ( $catview ne 'yes' ? 1 : 0 ),
name => $booksellers[0]->{'name'},
date => format_date($date),
title => $results[0]->{'title'},
author => $results[0]->{'author'},
copyrightdate => format_date( $results[0]->{'copyrightdate'} ),
itemtype => $results[0]->{'itemtype'},
isbn => $results[0]->{'isbn'},
seriestitle => $results[0]->{'seriestitle'},
barcode => $barcode,
bookfund => $results[0]->{'bookfundid'},
noitems => $noitems,
# catview => ($catview ne 'yes'?1:0),
catview => $catview,
name => $booksellers[0]->{'name'},
date => format_date($date),
title => $results[0]->{'title'},
author => $results[0]->{'author'},
copyrightdate => $results[0]->{'copyrightdate'},
# copyrightdate => format_date($results[0]->{'copyrightdate'}),
# itemtype => $results[0]->{'itemtype'},
CGIbranch => $CGIbranch,
CGIbookfund => $CGIbookfund,
CGIitemtype => $CGIitemtype,
isbn => $results[0]->{'isbn'},
seriestitle => $results[0]->{'seriestitle'},
volinf => $results[0]->{'volumeddesc'},
barcode => $barcode,
set_barcode => $set_barcode,
# bookfund => $results[0]->{'bookfundid'},
quantity => $results[0]->{'quantity'},
quantityreceived => $results[0]->{'quantityreceived'},
rrp => $results[0]->{'rrp'},
@ -123,9 +326,51 @@ if ( $count == 1 ) {
unitprice => $results[0]->{'unitprice'},
invoice => $invoice,
notes => $results[0]->{'notes'},
freightperitem => $freightperitem,
nocalc => $booksellers[0]->{'nocalc'},
invoicedisc => $booksellers[0]->{'invoicedisc'},
invoiceinc => $booksellers[0]->{'invoiceincgst'},
applygst => $booksellers[0]->{'gstreg'},
discount => $booksellers[0]->{'discount'},
supplierid => $booksellers[0]->{'id'},
currency => $exchange->{'rate'},
basketno => $results[0]->{'basketno'},
booksellerinvoicenumber => $results[0]->{'booksellerinvoicenumber'},
itemtype2 => $itemtype2, #added by mason BGZLA:3823
);
#warn Dumper $booksellers[0];
#warn Dumper $results[0];
# MASON: this is a little fix, to ensure that the 'create new biblio group' checkbox # ONLY appears in acquire.tmpl for biblioitems that already have 1 OR MORE items
# attached to them.
my $biblioitemnumber = $results[0]->{'biblioitemnumber'};
my $error = &countitems($biblioitemnumber);
#warn "MASON: number of items for $biblioitemnumber = $error";
if ( $error > 0 ) {
$template->param( createbibitem => 'YES' );
}
}
else {
else { # whats this loop for ??? mason
# why this loop when acqui
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "acqui/searchresult.tmpl",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => { acquisition => 1 },
debug => 1,
}
);
my @loop;
for ( my $i = 0 ; $i < $count ; $i++ ) {
my %line;
@ -140,7 +385,10 @@ else {
$line{gst} = $gst;
$line{title} = $results[$i]->{'title'};
$line{author} = $results[$i]->{'author'};
$line{vol} = $results[$i]->{'volume'};
$line{volinf} = $results[$i]->{'volumeddesc'};
$line{supplierid} = $supplierid;
$line{noitems} = $noitems;
push @loop, \%line;
}
$template->param(
@ -149,7 +397,10 @@ else {
name => $booksellers[0]->{'name'},
supplierid => $supplierid,
invoice => $invoice,
search => $search
);
warn "MASON: search= $search";
}
output_html_with_http_headers $input, $cookie, $template->output;
output_html_with_http_headers $input, $cookie, $template->output;Chris