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

(-)a/C4/Overdues.pm (+12 lines)
Lines 978-985 returns a list of branch codes for branches with overdue rules defined. Link Here
978
sub GetBranchcodesWithOverdueRules {
978
sub GetBranchcodesWithOverdueRules {
979
    my $dbh               = C4::Context->dbh;
979
    my $dbh               = C4::Context->dbh;
980
    my $rqoverduebranches = $dbh->prepare("SELECT DISTINCT branchcode FROM overduerules WHERE delay1 IS NOT NULL AND branchcode <> ''");
980
    my $rqoverduebranches = $dbh->prepare("SELECT DISTINCT branchcode FROM overduerules WHERE delay1 IS NOT NULL AND branchcode <> ''");
981
    my $availbranches = C4::Branch::GetBranches();
982
    
981
    $rqoverduebranches->execute;
983
    $rqoverduebranches->execute;
982
    my @branches = map { shift @$_ } @{ $rqoverduebranches->fetchall_arrayref };
984
    my @branches = map { shift @$_ } @{ $rqoverduebranches->fetchall_arrayref };
985
    
986
    my $defaultbranches = $dbh->prepare("SELECT DISTINCT branchcode FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ''");
987
    $defaultbranches->execute();
988
    if($defaultbranches->rows > 0){
989
        foreach my $branch (keys %$availbranches){
990
            if(not grep{/^$branch$/} @branches){
991
                push @branches, $branch;
992
            }
993
        }
994
    }
983
    $rqoverduebranches->finish;
995
    $rqoverduebranches->finish;
984
    return @branches;
996
    return @branches;
985
}
997
}
(-)a/misc/cronjobs/overdue_notices.pl (-10 / +15 lines)
Lines 298-304 if ( defined $csvfilename ) { Link Here
298
}
298
}
299
299
300
foreach my $branchcode (@branches) {
300
foreach my $branchcode (@branches) {
301
302
    my $branch_details = C4::Branch::GetBranchDetail($branchcode);
301
    my $branch_details = C4::Branch::GetBranchDetail($branchcode);
303
    my $admin_email_address = $branch_details->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
302
    my $admin_email_address = $branch_details->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
304
    my @output_chunks;    # may be sent to mail or stdout or csv file.
303
    my @output_chunks;    # may be sent to mail or stdout or csv file.
Lines 307-325 foreach my $branchcode (@branches) { Link Here
307
306
308
    my $sth2 = $dbh->prepare( <<'END_SQL' );
307
    my $sth2 = $dbh->prepare( <<'END_SQL' );
309
SELECT biblio.*, items.*, issues.*, TO_DAYS(NOW())-TO_DAYS(date_due) AS days_overdue
308
SELECT biblio.*, items.*, issues.*, TO_DAYS(NOW())-TO_DAYS(date_due) AS days_overdue
310
  FROM issues,items,biblio
309
  FROM issues
311
  WHERE items.itemnumber=issues.itemnumber
310
  LEFT JOIN items USING(itemnumber)
312
    AND biblio.biblionumber   = items.biblionumber
311
  LEFT JOIN biblio USING(biblionumber)
313
    AND issues.borrowernumber = ?
312
  WHERE issues.borrowernumber = ?
314
    AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN ? and ?
313
    AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN ? and ?
315
END_SQL
314
END_SQL
316
315
317
    my $rqoverduerules = $dbh->prepare("SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ");
316
    my $rqoverduerules = $dbh->prepare("SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ");
318
    $rqoverduerules->execute($branchcode);
317
    $rqoverduerules->execute($branchcode);
318
    
319
    # We get default rules is there is no rule for this branch
320
    if($rqoverduerules->rows == 0){
321
        $rqoverduerules = $dbh->prepare("SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = '' ");
322
        $rqoverduerules->execute();
323
    }
324
319
    # my $outfile = 'overdues_' . ( $mybranch || $branchcode || 'default' );
325
    # my $outfile = 'overdues_' . ( $mybranch || $branchcode || 'default' );
320
    while ( my $overdue_rules = $rqoverduerules->fetchrow_hashref ) {
326
    while ( my $overdue_rules = $rqoverduerules->fetchrow_hashref ) {
321
      PERIOD: foreach my $i ( 1 .. 3 ) {
327
      PERIOD: foreach my $i ( 1 .. 3 ) {
322
323
            $verbose and warn "branch '$branchcode', pass $i\n";
328
            $verbose and warn "branch '$branchcode', pass $i\n";
324
            my $mindays = $overdue_rules->{"delay$i"};    # the notice will be sent after mindays days (grace period)
329
            my $mindays = $overdue_rules->{"delay$i"};    # the notice will be sent after mindays days (grace period)
325
            my $maxdays = (
330
            my $maxdays = (
Lines 341-349 END_SQL Link Here
341
346
342
            my $borrower_sql = <<'END_SQL';
347
            my $borrower_sql = <<'END_SQL';
343
SELECT COUNT(*), issues.borrowernumber, firstname, surname, address, address2, city, zipcode, email, MIN(date_due) as longest_issue
348
SELECT COUNT(*), issues.borrowernumber, firstname, surname, address, address2, city, zipcode, email, MIN(date_due) as longest_issue
344
FROM   issues,borrowers,categories
349
FROM   issues
345
WHERE  issues.borrowernumber=borrowers.borrowernumber
350
LEFT JOIN borrowers USING (borrowernumber)
346
AND    borrowers.categorycode=categories.categorycode
351
LEFT JOIN categories ON (borrowers.categorycode=categories.categorycode)
352
WHERE 1 
347
END_SQL
353
END_SQL
348
            my @borrower_parameters;
354
            my @borrower_parameters;
349
            if ($branchcode) {
355
            if ($branchcode) {
350
- 

Return to bug 3393