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

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

Return to bug 17649