# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
-# $Id$
use strict;
-
+# use Smart::Comments;
use vars qw($VERSION @ISA @EXPORT);
# set the version for version checking
-$VERSION = do { my @v = '$Revision$' =~ /\d+/g; shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); };
+$VERSION = 3.00;
=head1 NAME
if ( $branch ne '' ) {
$strsth = "
SELECT *
- FROM aqbookfund,aqbudget
- WHERE aqbookfund.bookfundid=aqbudget.bookfundid
- AND startdate<now()
+ FROM aqbookfund
+ LEFT JOIN aqbudget ON aqbookfund.bookfundid=aqbudget.bookfundid
+ WHERE startdate<now()
AND enddate>now()
AND (aqbookfund.branchcode='' OR aqbookfund.branchcode= ? )
GROUP BY aqbookfund.bookfundid ORDER BY bookfundname";
else {
$strsth = "
SELECT *
- FROM aqbookfund,
- aqbudget
- WHERE aqbookfund.bookfundid=aqbudget.bookfundid
- AND startdate<now()
+ FROM aqbookfund
+ LEFT JOIN aqbudget ON aqbookfund.bookfundid=aqbudget.bookfundid
+ WHERE startdate<now()
AND enddate>now()
GROUP BY aqbookfund.bookfundid ORDER BY bookfundname
";
=head3 GetBookFundBreakdown
-( $spent, $comtd ) = &GetBookFundBreakdown( $id, $year, $start, $end );
+( $spent, $comtd ) = &GetBookFundBreakdown( $id, $start, $end );
returns the total comtd & spent for a given bookfund, and a given year
used in acqui-home.pl
=cut
sub GetBookFundBreakdown {
- my ( $id, $year, $start, $end ) = @_;
+ my ( $id, $start, $end ) = @_;
my $dbh = C4::Context->dbh;
# if no start/end dates given defaut to everything
# do a query for spent totals.
my $query = "
- SELECT quantity,datereceived,freight,unitprice,listprice,ecost,
- quantityreceived,subscription
- FROM aqorders
- LEFT JOIN aqorderbreakdown ON aqorders.ordernumber=aqorderbreakdown.ordernumber
- WHERE bookfundid=?
- AND (datecancellationprinted IS NULL OR datecancellationprinted='0000-00-00')
- AND ((datereceived >= ? and datereceived < ?) OR (budgetdate >= ? and budgetdate < ?))
+ Select quantity,datereceived,freight,unitprice,listprice,ecost,quantityreceived
+ as qrev,subscription,title,itype as itemtype,aqorders.biblionumber,aqorders.booksellerinvoicenumber,
+ quantity-quantityreceived as tleft,
+ aqorders.ordernumber
+ as ordnum,entrydate,budgetdate,aqbasket.booksellerid,aqbasket.basketno
+ from aqorders
+ inner join aqorderbreakdown on aqorderbreakdown.ordernumber = aqorders.ordernumber
+ inner join aqbasket on aqbasket.basketno = aqorders.basketno
+ left join items on items.biblionumber=aqorders.biblionumber
+ where bookfundid=?
+ and (datereceived >= ? and datereceived < ?)
+ and (datecancellationprinted is NULL or
+ datecancellationprinted='0000-00-00')
+ and (closedate >= ? and closedate < ?)
+ ORDER BY datereceived
";
my $sth = $dbh->prepare($query);
- $sth->execute( $id, $start, $end, $start, $end );
+ $sth->execute( $id, $start, $end, $start, $end);
- my $spent = 0;
+ my ($spent) = 0;
while ( my $data = $sth->fetchrow_hashref ) {
- if ( $data->{'subscription'} == 1 ) {
- $spent += $data->{'quantity'} * $data->{'unitprice'};
- }
- else {
-
- my $leftover = $data->{'quantity'} - ($data->{'quantityreceived'}?$data->{'quantityreceived'}:0);
- $spent += ( $data->{'unitprice'} ) * ($data->{'quantityreceived'}?$data->{'quantityreceived'}:0);
+ if($data->{datereceived}){
+ my $recv = $data->{'qrev'};
+ if ( $recv > 0 ) {
+ $spent += $recv * $data->{'unitprice'};
+ }
}
}
listprice,ecost,quantityreceived AS qrev,
subscription,title,itemtype,aqorders.biblionumber,
aqorders.booksellerinvoicenumber,
- quantity-quantityreceived AS tleft,
- aqorders.ordernumber AS ordnum,entrydate,budgetdate,
- booksellerid,aqbasket.basketno
- FROM aqorderbreakdown,
- aqbasket,
- aqorders
+ quantity-quantityreceived AS tleft,quantityreceived,
+ aqorders.ordernumber AS ordnum,entrydate,budgetdate
+ FROM aqorders
+ LEFT JOIN aqbasket USING (basketno)
LEFT JOIN biblioitems ON biblioitems.biblioitemnumber=aqorders.biblioitemnumber
+ LEFT JOIN aqorderbreakdown ON aqorders.ordernumber=aqorderbreakdown.ordernumber
WHERE bookfundid=?
- AND aqorders.ordernumber=aqorderbreakdown.ordernumber
- AND aqorders.basketno=aqbasket.basketno
AND (budgetdate >= ? AND budgetdate < ?)
AND (datecancellationprinted IS NULL OR datecancellationprinted='0000-00-00')
+ AND (closedate >= ? AND closedate <= ?)
";
$sth = $dbh->prepare($query);
- $sth->execute( $id, $start, $end );
+# warn "$start $end";
+ $sth->execute( $id, $start, $end , $start, $end);
- my $comtd;
+ my $comtd=0;
- my $total = 0;
while ( my $data = $sth->fetchrow_hashref ) {
- my $left = $data->{'tleft'};
- if ( !$left || $left eq '' ) {
- $left = $data->{'quantity'};
- }
- if ( $left && $left > 0 ) {
- my $subtotal = $left * $data->{'ecost'};
- $data->{subtotal} = $subtotal;
- $data->{'left'} = $left;
- $comtd += $subtotal;
+ if(not $data->{datereceived}){
+ my $left = $data->{'tleft'};
+ if ( !$left || $left eq '' ) {
+ $left = $data->{'quantity'};
+ }
+ if ( $left && $left > 0 ) {
+ my $subtotal = $left * $data->{'ecost'};
+ $data->{subtotal} = $subtotal;
+ $data->{'left'} = $left;
+ $comtd += $subtotal;
+ }
}
+# use Data::Dumper; warn Dumper($data);
}
$sth->finish;
=head3 ModBookFund
-&ModBookFund($bookfundname,$branchcode,$bookfundid);
-this function update the bookfundname and the branchcode on aqbookfund table
-on database.
+&ModBookFund($bookfundname,$bookfundid,$current_branch, $branchcode)
+
+This function updates the bookfundname and the branchcode in the aqbookfund table.
=cut
+# FIXME: use placeholders, ->prepare(), ->execute()
+
sub ModBookFund {
- my ($bookfundname,$bookfundid,$branchcode) = @_;
+ my ($bookfundname,$bookfundid,$current_branch, $branchcode) = @_;
+
my $dbh = C4::Context->dbh;
- my $query = "
- UPDATE aqbookfund
- SET bookfundname = ?
- WHERE bookfundid = ?
- AND branchcode= ?
- ";
- warn "name : $bookfundname";
- my $sth=$dbh->prepare($query);
- $sth->execute($bookfundname,$bookfundid,"$branchcode");
-# budgets depending on a bookfund must have the same branchcode
-# if the bookfund branchcode is set
- if (defined $branchcode) {
- $query = "
- UPDATE aqbudget
- SET branchcode = ?
- ";
- $sth=$dbh->prepare($query);
- $sth->execute($branchcode);
+
+ my $retval = $dbh->do("
+ UPDATE aqbookfund
+ SET bookfundname = '$bookfundname',
+ branchcode = '$branchcode'
+ WHERE bookfundid = '$bookfundid'
+ AND branchcode = '$current_branch'
+ ");
+
+ ### $retval
+
+ # budgets depending on a bookfund must have the same branchcode
+
+ # if the bookfund branchcode is set, and previous update is successfull, then update aqbudget.branchcode too.
+ if (defined $branchcode && $retval > 0) {
+ my $query = "UPDATE aqbudget
+ SET branchcode = ?
+ WHERE bookfundid = ? ";
+
+ my $sth=$dbh->prepare($query);
+ $sth->execute($branchcode, $bookfundid) ;
}
}
AND branchcode = ?
";
my $sth = $dbh->prepare($query);
- $sth->execute($bookfundid,$branchcode);
+ $sth->execute($bookfundid,"$branchcode");
return $sth->fetchrow;
}