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

(-)a/misc/cronjobs/ordersClaim.pl (-15 / +12 lines)
Lines 39-44 use Pod::Usage; Link Here
39
39
40
use C4::Letters;
40
use C4::Letters;
41
use C4::Acquisition;
41
use C4::Acquisition;
42
use Koha::Acquisition::Orders;
42
43
43
=head1 NAME
44
=head1 NAME
44
45
Lines 73-78 Default is 1; Link Here
73
74
74
=back
75
=back
75
76
77
=cut
78
76
my $help;
79
my $help;
77
my $delay;
80
my $delay;
78
my $claimed_for = 0;
81
my $claimed_for = 0;
Lines 89-99 GetOptions( Link Here
89
92
90
pod2usage(1) if $help;
93
pod2usage(1) if $help;
91
94
92
my @lateorders = GetLateOrders( ($delay) );
95
my @lateorders = Koha::Acquisition::Orders->filter_by_lates({ delay => $delay });
93
96
94
# Sort orders by basket
97
# Sort orders by basket
95
my $baskets_orders;
98
my $baskets_orders;
96
push @{ $baskets_orders->{ $_->{basketno} } }, $_->{ordernumber} for @lateorders;
99
push @{ $baskets_orders->{ $_->basketno } }, $_->ordernumber for @lateorders;
97
100
98
while (my ($basketno, $orderids) = each %$baskets_orders) {
101
while (my ($basketno, $orderids) = each %$baskets_orders) {
99
    my $schema = Koha::Database->new->schema;
102
    my $schema = Koha::Database->new->schema;
Lines 117-129 while (my ($basketno, $orderids) = each %$baskets_orders) { Link Here
117
120
118
    my $orderids_str = join(',', ('?') x @$orderids);
121
    my $orderids_str = join(',', ('?') x @$orderids);
119
    my $orders = $dbh->selectall_arrayref(qq{
122
    my $orders = $dbh->selectall_arrayref(qq{
120
        SELECT aqorders.*, aqbasket.*, biblio.*
123
        SELECT aqorders.*, aqbasket.*, biblio.*,
124
        COUNT(aqorders_claims.claimed_on) AS claims_count,
125
        MAX(aqorders_claims.claimed_on) AS last_claim
121
        FROM aqorders
126
        FROM aqorders
122
        LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
127
        LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
123
        LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
128
        LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
129
        LEFT JOIN aqorders_claims ON aqorders.ordernumber = aqorders_claims.ordernumber
124
        WHERE aqorders.ordernumber IN ($orderids_str)
130
        WHERE aqorders.ordernumber IN ($orderids_str)
125
        AND aqorders.claims_count < $max_claims
131
        HAVING claims_count <= $max_claims
126
        AND (aqorders.claimed_date IS NULL or aqorders.claimed_date <= DATE_SUB(CAST(now() AS date),INTERVAL $claimed_for DAY))
132
        AND (last_claim IS NULL or last_claim <= DATE_SUB(CAST(now() AS date),INTERVAL $claimed_for DAY))
127
    }, {Slice => {}}, @$orderids);
133
    }, {Slice => {}}, @$orderids);
128
134
129
    next unless @$orders;
135
    next unless @$orders;
Lines 154-166 while (my ($basketno, $orderids) = each %$baskets_orders) { Link Here
154
160
155
    continue unless $id;
161
    continue unless $id;
156
162
157
    my $today = Koha::DateUtils::dt_from_string;
163
    Koha::Acquisition::Orders->find($_->{ordernumber})->claim() for @$orders;
158
    foreach my $o ( @$orders ) {
159
        my $order = $schema->resultset('Aqorder')->find($o->{ordernumber});
160
        my $count = $order->get_column('claims_count') || 0;
161
        $order->set_columns({
162
            claimed_date => $today->ymd,
163
            claims_count => $count+1
164
        })->update_or_insert;
165
    }
166
}
164
}
167
- 

Return to bug 20125