[Koha-cvs] koha/acqui acquire.pl
Mason James
szrj1m at yahoo.com
Wed Jul 12 16:56:52 CEST 2006
CVSROOT: /sources/koha
Module name: koha
Changes by: Mason James <sushi> 06/07/12 14:56:52
Modified files:
acqui : acquire.pl
Log message:
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
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/acqui/acquire.pl?cvsroot=koha&r1=1.22&r2=1.23
Patches:
Index: acquire.pl
===================================================================
RCS file: /sources/koha/koha/acqui/acquire.pl,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- acquire.pl 7 Jun 2006 02:59:10 -0000 1.22
+++ acquire.pl 12 Jul 2006 14:56:52 -0000 1.23
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-# $Id: acquire.pl,v 1.22 2006/06/07 02:59:10 sushi Exp $
+# $Id: acquire.pl,v 1.23 2006/07/12 14:56:52 sushi Exp $
#script to recieve orders
#written by chris at katipo.co.nz 24/2/2000
@@ -25,11 +25,17 @@
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;
@@ -38,17 +44,134 @@
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'} );
+if ( $library_name eq "Horowhenua Library Trust" && $count > 1 ) {
+ ( $count, @results ) = ordersearch( $search, $biblio, $catview );
+
+}
+
+#warn "COUNT = $count";
+#warn "C:$count for ordersearch($search,$supplierid,$biblio,$catview);";
+
+my ( $count2, @booksellers );
+if ( $count == 1 ) {
+ ( $count2, @booksellers ) = bookseller( $results[0]->{'booksellerid'} );
+}
+else {
+ ( $count2, @booksellers ) = bookseller($supplierid);
+}
+
+#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);
-my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+#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",
@@ -56,48 +179,117 @@
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;
+ );
-if ( $count == 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 $branches = getbranches;
- my @branchloop;
- foreach my $thisbranch ( sort keys %$branches ) {
- my %row = (
- value => $thisbranch,
- branchname => $branches->{$thisbranch}->{'branchname'},
+ my $CGIitemtype = CGI::scrolling_list(
+ -name => 'format',
+ -values => \@itemtype,
+ -default => $results[0]->{'itemtype'},
+ -labels => \%itemtypes,
+ -size => 1,
+ -multiple => 0
);
- push @branchloop, \%row;
+ $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 @@
supplierid => $results[0]->{'booksellerid'},
freight => $freight,
gst => $gst,
- catview => ( $catview ne 'yes' ? 1 : 0 ),
+ 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 => format_date( $results[0]->{'copyrightdate'} ),
- itemtype => $results[0]->{'itemtype'},
+ 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,
- bookfund => $results[0]->{'bookfundid'},
+ set_barcode => $set_barcode,
+
+ # bookfund => $results[0]->{'bookfundid'},
quantity => $results[0]->{'quantity'},
quantityreceived => $results[0]->{'quantityreceived'},
rrp => $results[0]->{'rrp'},
@@ -123,9 +326,51 @@
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 @@
$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 @@
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
More information about the Koha-cvs
mailing list