|
Lines 66-72
BEGIN {
Link Here
|
| 66 |
&GetBasketgroups &ReOpenBasketgroup |
66 |
&GetBasketgroups &ReOpenBasketgroup |
| 67 |
|
67 |
|
| 68 |
&DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber |
68 |
&DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber |
| 69 |
&GetLateOrders &GetOrderFromItemnumber |
69 |
&GetOrderFromItemnumber |
| 70 |
&SearchOrders &GetHistory &GetRecentAcqui |
70 |
&SearchOrders &GetHistory &GetRecentAcqui |
| 71 |
&ModReceiveOrder &CancelReceipt |
71 |
&ModReceiveOrder &CancelReceipt |
| 72 |
&TransferOrder |
72 |
&TransferOrder |
|
Lines 2137-2270
sub GetParcels {
Link Here
|
| 2137 |
|
2137 |
|
| 2138 |
#------------------------------------------------------------# |
2138 |
#------------------------------------------------------------# |
| 2139 |
|
2139 |
|
| 2140 |
=head3 GetLateOrders |
|
|
| 2141 |
|
| 2142 |
@results = &GetLateOrders; |
| 2143 |
|
| 2144 |
Searches for bookseller with late orders. |
| 2145 |
|
| 2146 |
return: |
| 2147 |
the table of supplier with late issues. This table is full of hashref. |
| 2148 |
|
| 2149 |
=cut |
| 2150 |
|
| 2151 |
sub GetLateOrders { |
| 2152 |
my $delay = shift; |
| 2153 |
my $supplierid = shift; |
| 2154 |
my $branch = shift; |
| 2155 |
my $estimateddeliverydatefrom = shift; |
| 2156 |
my $estimateddeliverydateto = shift; |
| 2157 |
|
| 2158 |
my $dbh = C4::Context->dbh; |
| 2159 |
|
| 2160 |
#BEWARE, order of parenthesis and LEFT JOIN is important for speed |
| 2161 |
my $dbdriver = C4::Context->config("db_scheme") || "mysql"; |
| 2162 |
|
| 2163 |
my @query_params = (); |
| 2164 |
my $select = " |
| 2165 |
SELECT aqbasket.basketno, |
| 2166 |
aqorders.ordernumber AS ordernumber, |
| 2167 |
DATE(aqbasket.closedate) AS orderdate, |
| 2168 |
aqbasket.basketname AS basketname, |
| 2169 |
aqbasket.basketgroupid AS basketgroupid, |
| 2170 |
aqbasketgroups.name AS basketgroupname, |
| 2171 |
aqorders.rrp AS unitpricesupplier, |
| 2172 |
aqorders.ecost AS unitpricelib, |
| 2173 |
aqorders.claims_count AS claims_count, |
| 2174 |
aqorders.claimed_date AS claimed_date, |
| 2175 |
aqorders.order_internalnote AS internalnote, |
| 2176 |
aqorders.order_vendornote AS vendornote, |
| 2177 |
aqbudgets.budget_name AS budget, |
| 2178 |
borrowers.branchcode AS branch, |
| 2179 |
aqbooksellers.name AS supplier, |
| 2180 |
aqbooksellers.id AS supplierid, |
| 2181 |
biblio.author, biblio.title, |
| 2182 |
biblioitems.publishercode AS publisher, |
| 2183 |
biblioitems.publicationyear, |
| 2184 |
biblioitems.isbn AS isbn, |
| 2185 |
ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) AS estimateddeliverydate, |
| 2186 |
"; |
| 2187 |
my $from = " |
| 2188 |
FROM |
| 2189 |
aqorders LEFT JOIN biblio ON biblio.biblionumber = aqorders.biblionumber |
| 2190 |
LEFT JOIN biblioitems ON biblioitems.biblionumber = biblio.biblionumber |
| 2191 |
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id, |
| 2192 |
aqbasket LEFT JOIN borrowers ON aqbasket.authorisedby = borrowers.borrowernumber |
| 2193 |
LEFT JOIN aqbooksellers ON aqbasket.booksellerid = aqbooksellers.id |
| 2194 |
LEFT JOIN aqbasketgroups ON aqbasket.basketgroupid = aqbasketgroups.id |
| 2195 |
WHERE aqorders.basketno = aqbasket.basketno |
| 2196 |
AND ( datereceived IS NULL |
| 2197 |
OR aqorders.quantityreceived < aqorders.quantity |
| 2198 |
) |
| 2199 |
AND aqbasket.closedate IS NOT NULL |
| 2200 |
AND aqorders.datecancellationprinted IS NULL |
| 2201 |
"; |
| 2202 |
if ($dbdriver eq "mysql") { |
| 2203 |
$select .= " |
| 2204 |
aqorders.quantity - COALESCE(aqorders.quantityreceived,0) AS quantity, |
| 2205 |
(aqorders.quantity - COALESCE(aqorders.quantityreceived,0)) * aqorders.rrp AS subtotal, |
| 2206 |
DATEDIFF(CAST(now() AS date),closedate) AS latesince |
| 2207 |
"; |
| 2208 |
if ( defined $delay ) { |
| 2209 |
$from .= " AND (closedate <= DATE_SUB(CAST(now() AS date),INTERVAL ? DAY)) " ; |
| 2210 |
push @query_params, $delay; |
| 2211 |
} |
| 2212 |
$from .= " AND aqorders.quantity - COALESCE(aqorders.quantityreceived,0) <> 0"; |
| 2213 |
} else { |
| 2214 |
# FIXME: account for IFNULL as above |
| 2215 |
$select .= " |
| 2216 |
aqorders.quantity AS quantity, |
| 2217 |
aqorders.quantity * aqorders.rrp AS subtotal, |
| 2218 |
(CAST(now() AS date) - closedate) AS latesince |
| 2219 |
"; |
| 2220 |
if ( defined $delay ) { |
| 2221 |
$from .= " AND (closedate <= (CAST(now() AS date) -(INTERVAL ? DAY)) "; |
| 2222 |
push @query_params, $delay; |
| 2223 |
} |
| 2224 |
$from .= " AND aqorders.quantity <> 0"; |
| 2225 |
} |
| 2226 |
if (defined $supplierid) { |
| 2227 |
$from .= ' AND aqbasket.booksellerid = ? '; |
| 2228 |
push @query_params, $supplierid; |
| 2229 |
} |
| 2230 |
if (defined $branch) { |
| 2231 |
$from .= ' AND borrowers.branchcode LIKE ? '; |
| 2232 |
push @query_params, $branch; |
| 2233 |
} |
| 2234 |
|
| 2235 |
if ( defined $estimateddeliverydatefrom or defined $estimateddeliverydateto ) { |
| 2236 |
$from .= ' AND aqbooksellers.deliverytime IS NOT NULL '; |
| 2237 |
} |
| 2238 |
if ( defined $estimateddeliverydatefrom ) { |
| 2239 |
$from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) >= ?'; |
| 2240 |
push @query_params, $estimateddeliverydatefrom; |
| 2241 |
} |
| 2242 |
if ( defined $estimateddeliverydateto ) { |
| 2243 |
$from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) <= ?'; |
| 2244 |
push @query_params, $estimateddeliverydateto; |
| 2245 |
} |
| 2246 |
if ( defined $estimateddeliverydatefrom and not defined $estimateddeliverydateto ) { |
| 2247 |
$from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) <= CAST(now() AS date)'; |
| 2248 |
} |
| 2249 |
if (C4::Context->preference("IndependentBranches") |
| 2250 |
&& !C4::Context->IsSuperLibrarian() ) { |
| 2251 |
$from .= ' AND borrowers.branchcode LIKE ? '; |
| 2252 |
push @query_params, C4::Context->userenv->{branch}; |
| 2253 |
} |
| 2254 |
$from .= " AND orderstatus <> 'cancelled' "; |
| 2255 |
my $query = "$select $from \nORDER BY latesince, basketno, borrowers.branchcode, supplier"; |
| 2256 |
$debug and print STDERR "GetLateOrders query: $query\nGetLateOrders args: " . join(" ",@query_params); |
| 2257 |
my $sth = $dbh->prepare($query); |
| 2258 |
$sth->execute(@query_params); |
| 2259 |
my @results; |
| 2260 |
while (my $data = $sth->fetchrow_hashref) { |
| 2261 |
push @results, $data; |
| 2262 |
} |
| 2263 |
return @results; |
| 2264 |
} |
| 2265 |
|
| 2266 |
#------------------------------------------------------------# |
| 2267 |
|
| 2268 |
=head3 GetHistory |
2140 |
=head3 GetHistory |
| 2269 |
|
2141 |
|
| 2270 |
\@order_loop = GetHistory( %params ); |
2142 |
\@order_loop = GetHistory( %params ); |
| 2271 |
- |
|
|