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

(-)a/misc/cronjobs/overdue_notices.pl (-6 / +20 lines)
Lines 73-79 overdue_notices.pl Link Here
73
   -list-all                      list all overdues
73
   -list-all                      list all overdues
74
   -date         <yyyy-mm-dd>     emulate overdues run for this date
74
   -date         <yyyy-mm-dd>     emulate overdues run for this date
75
   -email        <email_type>     type of email that will be used. Can be 'email', 'emailpro' or 'B_email'. Repeatable.
75
   -email        <email_type>     type of email that will be used. Can be 'email', 'emailpro' or 'B_email'. Repeatable.
76
76
   -a           <branchcode>      Create only one message per borrower and delay level including overdues from all branches.
77
=head1 OPTIONS
77
=head1 OPTIONS
78
78
79
=over 8
79
=over 8
Lines 181-186 use it in order to send overdues on a specific date and not Now. Format: YYYY-MM Link Here
181
181
182
Allows to specify which type of email will be used. Can be email, emailpro or B_email. Repeatable.
182
Allows to specify which type of email will be used. Can be email, emailpro or B_email. Repeatable.
183
183
184
=item B<-a> | B<--all_in_one>
185
186
Create only one message per borrower and for each delay level including overdues from all branches.
187
Branchcode value (branches.branchcode) has to be given to choose which sender address will be set.
188
It's recommended to use this option only with default notice(s) defined for 'All branches'
189
in Notices & Slips and no specific ones.
190
184
=back
191
=back
185
192
186
=head1 DESCRIPTION
193
=head1 DESCRIPTION
Lines 302-307 my $itemscontent = join( ',', qw( date_due title barcode author itemnumber ) ); Link Here
302
my @myborcat;
309
my @myborcat;
303
my @myborcatout;
310
my @myborcatout;
304
my ( $date_input, $today );
311
my ( $date_input, $today );
312
my $all_in_one;
305
313
306
GetOptions(
314
GetOptions(
307
    'help|?'         => \$help,
315
    'help|?'         => \$help,
Lines 321-326 GetOptions( Link Here
321
    'borcat=s'       => \@myborcat,
329
    'borcat=s'       => \@myborcat,
322
    'borcatout=s'    => \@myborcatout,
330
    'borcatout=s'    => \@myborcatout,
323
    'email=s'        => \@emails,
331
    'email=s'        => \@emails,
332
    'a|all_in_one=s'   => \$all_in_one,
324
) or pod2usage(2);
333
) or pod2usage(2);
325
pod2usage(1) if $help;
334
pod2usage(1) if $help;
326
pod2usage( -verbose => 2 ) if $man;
335
pod2usage( -verbose => 2 ) if $man;
Lines 442-447 elsif ( defined $text_filename ) { Link Here
442
  }
451
  }
443
}
452
}
444
453
454
my %already_queued;
455
my %seen = map { $_ => 1 } @branches;
445
foreach my $branchcode (@branches) {
456
foreach my $branchcode (@branches) {
446
    if ( C4::Context->preference('OverdueNoticeCalendar') ) {
457
    if ( C4::Context->preference('OverdueNoticeCalendar') ) {
447
        my $calendar = Koha::Calendar->new( branchcode => $branchcode );
458
        my $calendar = Koha::Calendar->new( branchcode => $branchcode );
Lines 450-463 foreach my $branchcode (@branches) { Link Here
450
        }
461
        }
451
    }
462
    }
452
463
453
    my $library             = Koha::Libraries->find($branchcode);
464
    my $library             = $all_in_one ? Koha::Libraries->find($all_in_one) : Koha::Libraries->find($branchcode);
454
    my $admin_email_address = $library->branchemail
465
    my $admin_email_address = $library->branchemail
455
      || C4::Context->preference('KohaAdminEmailAddress');
466
      || C4::Context->preference('KohaAdminEmailAddress');
456
    my @output_chunks;    # may be sent to mail or stdout or csv file.
467
    my @output_chunks;    # may be sent to mail or stdout or csv file.
457
468
458
    $verbose and warn sprintf "branchcode : '%s' using %s\n", $branchcode, $admin_email_address;
469
    $verbose and warn sprintf "branchcode : '%s' using %s\n", $branchcode, $admin_email_address;
459
470
460
    my $sth2 = $dbh->prepare( <<"END_SQL" );
471
    my $overduequery = <<"END_SQL";
461
SELECT biblio.*, items.*, issues.*, biblioitems.itemtype, branchname
472
SELECT biblio.*, items.*, issues.*, biblioitems.itemtype, branchname
462
  FROM issues,items,biblio, biblioitems, branches b
473
  FROM issues,items,biblio, biblioitems, branches b
463
  WHERE items.itemnumber=issues.itemnumber
474
  WHERE items.itemnumber=issues.itemnumber
Lines 465-473 SELECT biblio.*, items.*, issues.*, biblioitems.itemtype, branchname Link Here
465
    AND b.branchcode = items.homebranch
476
    AND b.branchcode = items.homebranch
466
    AND biblio.biblionumber   = biblioitems.biblionumber
477
    AND biblio.biblionumber   = biblioitems.biblionumber
467
    AND issues.borrowernumber = ?
478
    AND issues.borrowernumber = ?
468
    AND issues.branchcode = ?
469
    AND TO_DAYS($date)-TO_DAYS(issues.date_due) >= 0
479
    AND TO_DAYS($date)-TO_DAYS(issues.date_due) >= 0
470
END_SQL
480
END_SQL
481
    $overduequery.= " AND issues.branchcode = ?" unless $all_in_one;
482
    my $sth2 =  $dbh->prepare($overduequery);
471
483
472
    my $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ";
484
    my $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ";
473
    $query .= " AND categorycode IN (".join( ',' , ('?') x @myborcat ).") " if (@myborcat);
485
    $query .= " AND categorycode IN (".join( ',' , ('?') x @myborcat ).") " if (@myborcat);
Lines 571-576 END_SQL Link Here
571
                    next;
583
                    next;
572
                }
584
                }
573
                $borrowernumber = $data->{'borrowernumber'};
585
                $borrowernumber = $data->{'borrowernumber'};
586
                next if ($all_in_one && $already_queued{"$borrowernumber$i"});
574
                my $borr =
587
                my $borr =
575
                    $data->{'firstname'} . ', '
588
                    $data->{'firstname'} . ', '
576
                  . $data->{'surname'} . ' ('
589
                  . $data->{'surname'} . ' ('
Lines 614-620 END_SQL Link Here
614
                    ) unless $test_mode;
627
                    ) unless $test_mode;
615
                    $verbose and warn "debarring $borr\n";
628
                    $verbose and warn "debarring $borr\n";
616
                }
629
                }
617
                my @params = ($borrowernumber,$branchcode);
630
                my @params = $all_in_one ? ($borrowernumber) : ($borrowernumber, $branchcode);
618
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber";
631
                $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber";
619
632
620
                $sth2->execute(@params);
633
                $sth2->execute(@params);
Lines 662-667 END_SQL Link Here
662
                      $exceededPrintNoticesMaxLines = 1;
675
                      $exceededPrintNoticesMaxLines = 1;
663
                      last;
676
                      last;
664
                    }
677
                    }
678
                    next if $all_in_one and ! grep {$seen{$item_info->{branchcode}}} @branches;
665
                    $j++;
679
                    $j++;
666
                    my @item_info = map { $_ =~ /^date|date$/ ?
680
                    my @item_info = map { $_ =~ /^date|date$/ ?
667
                                           eval { output_pref( { dt => dt_from_string( $item_info->{$_} ), dateonly => 1 } ); }
681
                                           eval { output_pref( { dt => dt_from_string( $item_info->{$_} ), dateonly => 1 } ); }
Lines 775-780 END_SQL Link Here
775
                        }
789
                        }
776
                    }
790
                    }
777
                }
791
                }
792
                $already_queued{"$borrowernumber$i"} = 1;
778
            }
793
            }
779
            $sth->finish;
794
            $sth->finish;
780
        }
795
        }
781
- 

Return to bug 17649