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 |
- |
|
|