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

(-)a/C4/Acquisition.pm (-130 / +1 lines)
Lines 67-73 BEGIN { Link Here
67
        &GetBasketgroups &ReOpenBasketgroup
67
        &GetBasketgroups &ReOpenBasketgroup
68
68
69
        &DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber
69
        &DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber
70
        &GetLateOrders &GetOrderFromItemnumber
70
        &GetOrderFromItemnumber
71
        &SearchOrders &GetHistory &GetRecentAcqui
71
        &SearchOrders &GetHistory &GetRecentAcqui
72
        &ModReceiveOrder &CancelReceipt
72
        &ModReceiveOrder &CancelReceipt
73
        &TransferOrder
73
        &TransferOrder
Lines 2073-2206 sub GetParcels { Link Here
2073
2073
2074
#------------------------------------------------------------#
2074
#------------------------------------------------------------#
2075
2075
2076
=head3 GetLateOrders
2077
2078
  @results = &GetLateOrders;
2079
2080
Searches for bookseller with late orders.
2081
2082
return:
2083
the table of supplier with late issues. This table is full of hashref.
2084
2085
=cut
2086
2087
sub GetLateOrders {
2088
    my $delay      = shift;
2089
    my $supplierid = shift;
2090
    my $branch     = shift;
2091
    my $estimateddeliverydatefrom = shift;
2092
    my $estimateddeliverydateto = shift;
2093
2094
    my $dbh = C4::Context->dbh;
2095
2096
    #BEWARE, order of parenthesis and LEFT JOIN is important for speed
2097
    my $dbdriver = C4::Context->config("db_scheme") || "mysql";
2098
2099
    my @query_params = ();
2100
    my $select = "
2101
    SELECT aqbasket.basketno,
2102
        aqorders.ordernumber      AS ordernumber,
2103
        DATE(aqbasket.closedate)  AS orderdate,
2104
        aqbasket.basketname       AS basketname,
2105
        aqbasket.basketgroupid    AS basketgroupid,
2106
        aqbasketgroups.name       AS basketgroupname,
2107
        aqorders.rrp              AS unitpricesupplier,
2108
        aqorders.ecost            AS unitpricelib,
2109
        aqorders.claims_count     AS claims_count,
2110
        aqorders.claimed_date     AS claimed_date,
2111
        aqorders.order_internalnote AS internalnote,
2112
        aqorders.order_vendornote   AS vendornote,
2113
        aqbudgets.budget_name     AS budget,
2114
        borrowers.branchcode      AS branch,
2115
        aqbooksellers.name        AS supplier,
2116
        aqbooksellers.id          AS supplierid,
2117
        biblio.author, biblio.title,
2118
        biblioitems.publishercode AS publisher,
2119
        biblioitems.publicationyear,
2120
        biblioitems.isbn          AS isbn,
2121
        ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) AS estimateddeliverydate,
2122
    ";
2123
    my $from = "
2124
    FROM
2125
        aqorders LEFT JOIN biblio     ON biblio.biblionumber         = aqorders.biblionumber
2126
        LEFT JOIN biblioitems         ON biblioitems.biblionumber    = biblio.biblionumber
2127
        LEFT JOIN aqbudgets           ON aqorders.budget_id          = aqbudgets.budget_id,
2128
        aqbasket LEFT JOIN borrowers  ON aqbasket.authorisedby       = borrowers.borrowernumber
2129
        LEFT JOIN aqbooksellers       ON aqbasket.booksellerid       = aqbooksellers.id
2130
        LEFT JOIN aqbasketgroups      ON aqbasket.basketgroupid      = aqbasketgroups.id
2131
        WHERE aqorders.basketno = aqbasket.basketno
2132
        AND ( datereceived IS NULL
2133
            OR aqorders.quantityreceived < aqorders.quantity
2134
        )
2135
        AND aqbasket.closedate IS NOT NULL
2136
        AND aqorders.datecancellationprinted IS NULL
2137
    ";
2138
    if ($dbdriver eq "mysql") {
2139
        $select .= "
2140
        aqorders.quantity - COALESCE(aqorders.quantityreceived,0)                 AS quantity,
2141
        (aqorders.quantity - COALESCE(aqorders.quantityreceived,0)) * aqorders.rrp AS subtotal,
2142
        DATEDIFF(CAST(now() AS date),closedate) AS latesince
2143
        ";
2144
        if ( defined $delay ) {
2145
            $from .= " AND (closedate <= DATE_SUB(CAST(now() AS date),INTERVAL ? DAY)) " ;
2146
            push @query_params, $delay;
2147
        }
2148
        $from .= " AND aqorders.quantity - COALESCE(aqorders.quantityreceived,0) <> 0";
2149
    } else {
2150
        # FIXME: account for IFNULL as above
2151
        $select .= "
2152
                aqorders.quantity                AS quantity,
2153
                aqorders.quantity * aqorders.rrp AS subtotal,
2154
                (CAST(now() AS date) - closedate)            AS latesince
2155
        ";
2156
        if ( defined $delay ) {
2157
            $from .= " AND (closedate <= (CAST(now() AS date) -(INTERVAL ? DAY)) ";
2158
            push @query_params, $delay;
2159
        }
2160
        $from .= " AND aqorders.quantity <> 0";
2161
    }
2162
    if (defined $supplierid) {
2163
        $from .= ' AND aqbasket.booksellerid = ? ';
2164
        push @query_params, $supplierid;
2165
    }
2166
    if (defined $branch) {
2167
        $from .= ' AND borrowers.branchcode LIKE ? ';
2168
        push @query_params, $branch;
2169
    }
2170
2171
    if ( defined $estimateddeliverydatefrom or defined $estimateddeliverydateto ) {
2172
        $from .= ' AND aqbooksellers.deliverytime IS NOT NULL ';
2173
    }
2174
    if ( defined $estimateddeliverydatefrom ) {
2175
        $from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) >= ?';
2176
        push @query_params, $estimateddeliverydatefrom;
2177
    }
2178
    if ( defined $estimateddeliverydateto ) {
2179
        $from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) <= ?';
2180
        push @query_params, $estimateddeliverydateto;
2181
    }
2182
    if ( defined $estimateddeliverydatefrom and not defined $estimateddeliverydateto ) {
2183
        $from .= ' AND ADDDATE(aqbasket.closedate, INTERVAL aqbooksellers.deliverytime DAY) <= CAST(now() AS date)';
2184
    }
2185
    if (C4::Context->preference("IndependentBranches")
2186
            && !C4::Context->IsSuperLibrarian() ) {
2187
        $from .= ' AND borrowers.branchcode LIKE ? ';
2188
        push @query_params, C4::Context->userenv->{branch};
2189
    }
2190
    $from .= " AND orderstatus <> 'cancelled' ";
2191
    my $query = "$select $from \nORDER BY latesince, basketno, borrowers.branchcode, supplier";
2192
    $debug and print STDERR "GetLateOrders query: $query\nGetLateOrders args: " . join(" ",@query_params);
2193
    my $sth = $dbh->prepare($query);
2194
    $sth->execute(@query_params);
2195
    my @results;
2196
    while (my $data = $sth->fetchrow_hashref) {
2197
        push @results, $data;
2198
    }
2199
    return @results;
2200
}
2201
2202
#------------------------------------------------------------#
2203
2204
=head3 GetHistory
2076
=head3 GetHistory
2205
2077
2206
  \@order_loop = GetHistory( %params );
2078
  \@order_loop = GetHistory( %params );
2207
- 

Return to bug 24161