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

(-)a/misc/cronjobs/thirdparty/TalkingTech_itiva_outbound.pl (-19 / +33 lines)
Lines 262-298 sub GetOverdueIssues { Link Here
262
    my $query =
262
    my $query =
263
        "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
263
        "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
264
                borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due,
264
                borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due,
265
                max(overduerules.branchcode) as rulebranch, TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, delay1, delay2, delay3,
265
                TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, borrowers.categorycode as categorycode, items.itemtype as itemtype,
266
                issues.branchcode as site, branches.branchname as site_name
266
                issues.branchcode as site, branches.branchname as site_name
267
                FROM borrowers JOIN issues USING (borrowernumber)
267
                FROM borrowers JOIN issues USING (borrowernumber)
268
                JOIN items USING (itemnumber)
268
                JOIN items USING (itemnumber)
269
                JOIN biblio USING (biblionumber)
269
                JOIN biblio USING (biblionumber)
270
                JOIN branches ON (issues.branchcode = branches.branchcode)
270
                JOIN branches ON (issues.branchcode = branches.branchcode)
271
                JOIN overduerules USING (categorycode)
271
                WHERE ( overduerules.branchcode = borrowers.branchcode )
272
                JOIN overduerules_transport_types USING ( overduerules_id )
273
                WHERE ( overduerules.branchcode = borrowers.branchcode or overduerules.branchcode = '')
274
                AND overduerules_transport_types.message_transport_type = 'itiva'
275
                AND ( (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay1
276
                  OR  (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay2
277
                  OR  (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay3 )
278
                $patron_branchcode_filter
272
                $patron_branchcode_filter
279
                GROUP BY items.itemnumber
273
                GROUP BY items.itemnumber
274
                ORDER BY items.itemtype, borrowers.categorycode, branches.branchcode
280
                ";
275
                ";
281
    my $sth = $dbh->prepare($query);
276
    my $sth = $dbh->prepare($query);
282
    $sth->execute();
277
    $sth->execute();
278
279
    my @trigger_numbers;
280
    my $triggers = Koha::CirculationRules->search(
281
        { rule_name => { 'like' => 'overdue_%_mtt' }, rule_value => { like => '%itiva%' } } );
282
    for my $trigger ( $triggers->all ) {
283
        my $trigger_number = $trigger->rule_name;
284
        $trigger_number =~ s/(.*)(\d+)(.*)/$2/;
285
        push @trigger_numbers, $trigger_number unless grep { $_ == $trigger_number } @trigger_numbers;
286
    }
287
    my @rules = map { ( "overdue_$_" . "_delay", "overdue_$_" . "_notice", "overdue_$_" . "_mtt" ) } @trigger_numbers;
288
283
    my @results;
289
    my @results;
284
    while ( my $issue = $sth->fetchrow_hashref() ) {
290
    while ( my $issue = $sth->fetchrow_hashref() ) {
285
        if ( $issue->{'daysoverdue'} == $issue->{'delay1'} ) {
291
        my $effective_rules = Koha::CirculationRules->get_effective_rules(
286
            $issue->{'level'} = 1;
292
            {
287
        } elsif ( $issue->{'daysoverdue'} == $issue->{'delay2'} ) {
293
                categorycode => $issue->{'categorycode'},
288
            $issue->{'level'} = 2;
294
                branchcode   => $issue->{'branchcode'},
289
        } elsif ( $issue->{'daysoverdue'} == $issue->{'delay3'} ) {
295
                itemtype     => $issue->{'itemtype'},
290
            $issue->{'level'} = 3;
296
                rules        => \@rules
291
        } else {
297
            }
292
298
        );
293
            # this shouldn't ever happen, based our SQL criteria
299
300
        my $i = 1;
301
    PERIOD: while (1) {
302
            last PERIOD if ( !defined( $effective_rules->{ "overdue_$i" . '_delay' } ) );
303
            if (   $effective_rules->{ "overdue_$i" . '_mtt' } =~ /itiva/
304
                && $issue->{'daysoverdue'} == $effective_rules->{ "overdue_$i" . '_delay' } )
305
            {
306
                $issue->{'level'} = $i;
307
                push @results, $issue;
308
            }
309
            $i++;
294
        }
310
        }
295
        push @results, $issue;
296
    }
311
    }
297
    return @results;
312
    return @results;
298
}
313
}
299
- 

Return to bug 10190