View | Details | Raw Unified | Return to bug 24161
Collapse All | Expand All

(-)a/C4/Acquisition.pm (-130 / +1 lines)
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
- 

Return to bug 24161