1 package C4
::Bookseller
;
3 # Copyright 2000-2002 Katipo Communications
4 # Copyright 2010 PTFS Europe
6 # This file is part of Koha.
8 # Koha is free software; you can redistribute it and/or modify it
9 # under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 3 of the License, or
11 # (at your option) any later version.
13 # Koha is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with Koha; if not, see <http://www.gnu.org/licenses>.
24 use base
qw( Exporter );
27 GetBooksellersWithLateOrders
32 C4::Bookseller - Koha functions for dealing with booksellers.
40 The functions in this module deal with booksellers. They allow to
41 add a new bookseller, to modify it or to get some informations around
46 =head2 GetBooksellersWithLateOrders
48 %results = GetBooksellersWithLateOrders( $delay, $estimateddeliverydatefrom, $estimateddeliverydateto );
50 Searches for suppliers with late orders.
54 sub GetBooksellersWithLateOrders
{
55 my ( $delay, $estimateddeliverydatefrom, $estimateddeliverydateto ) = @_;
56 my $dbh = C4
::Context
->dbh;
58 # FIXME NOT quite sure that this operation is valid for DBMs different from Mysql, HOPING so
59 # should be tested with other DBMs
62 my @query_params = ();
63 my $dbdriver = C4
::Context
->config("db_scheme") || "mysql";
65 SELECT DISTINCT aqbasket.booksellerid, aqbooksellers.name
66 FROM aqorders LEFT JOIN aqbasket ON aqorders.basketno=aqbasket.basketno
67 LEFT JOIN aqbooksellers ON aqbasket.booksellerid = aqbooksellers.id
70 OR datereceived IS NULL
71 OR aqorders.quantityreceived < aqorders.quantity
74 AND aqorders.ecost <> 0
75 AND aqorders.quantity - COALESCE(aqorders.quantityreceived,0) <> 0
76 AND aqbasket.closedate IS NOT NULL
78 if ( defined $delay && $delay >= 0 ) {
79 $query .= " AND (closedate <= DATE_SUB(CAST(now() AS date),INTERVAL ? + COALESCE(aqbooksellers.deliverytime,0) DAY)) ";
80 push @query_params, $delay;
81 } elsif ( $delay && $delay < 0 ){
82 warn 'WARNING: GetBooksellerWithLateOrders is called with a negative value';
85 if ( defined $estimateddeliverydatefrom ) {
87 AND ADDDATE(aqbasket.closedate, INTERVAL COALESCE(aqbooksellers.deliverytime,0) DAY) >= ?';
88 push @query_params, $estimateddeliverydatefrom;
89 if ( defined $estimateddeliverydateto ) {
90 $query .= ' AND ADDDATE(aqbasket.closedate, INTERVAL COALESCE(aqbooksellers.deliverytime, 0) DAY) <= ?';
91 push @query_params, $estimateddeliverydateto;
93 $query .= ' AND ADDDATE(aqbasket.closedate, INTERVAL COALESCE(aqbooksellers.deliverytime, 0) DAY) <= CAST(now() AS date)';
96 if ( defined $estimateddeliverydateto ) {
97 $query .= ' AND ADDDATE(aqbasket.closedate, INTERVAL COALESCE(aqbooksellers.deliverytime,0) DAY) <= ?';
98 push @query_params, $estimateddeliverydateto;
101 my $sth = $dbh->prepare($query);
102 $sth->execute( @query_params );
104 while ( my ( $id, $name ) = $sth->fetchrow ) {
105 $supplierlist{$id} = $name;
108 return %supplierlist;
117 Koha Development Team <http://koha-community.org/>