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:
parent
e3468f803a
commit
c2822e30ed
1 changed files with 303 additions and 52 deletions
355
acqui/acquire.pl
355
acqui/acquire.pl
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue