[Koha-patches] [PATCH] (bug #3393) take care of default rules in overdues
Nahuel ANGELINETTI
nahuel.angelinetti at biblibre.com
Mon Jul 6 10:19:43 CEST 2009
This fix the overdues notices script, that doesn't take care of default rules.
Now if there is no specific rules for a branchcode, the script use the default rule if it exists.
---
C4/Overdues.pm | 12 ++++++++++++
misc/cronjobs/overdue_notices.pl | 24 +++++++++++++++---------
2 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/C4/Overdues.pm b/C4/Overdues.pm
index 06cf37a..3f167b0 100644
--- a/C4/Overdues.pm
+++ b/C4/Overdues.pm
@@ -978,8 +978,20 @@ returns a list of branch codes for branches with overdue rules defined.
sub GetBranchcodesWithOverdueRules {
my $dbh = C4::Context->dbh;
my $rqoverduebranches = $dbh->prepare("SELECT DISTINCT branchcode FROM overduerules WHERE delay1 IS NOT NULL AND branchcode <> ''");
+ my $availbranches = C4::Branch::GetBranches();
+
$rqoverduebranches->execute;
my @branches = map { shift @$_ } @{ $rqoverduebranches->fetchall_arrayref };
+
+ my $defaultbranches = $dbh->prepare("SELECT DISTINCT branchcode FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ''");
+ $defaultbranches->execute();
+ if($defaultbranches->rows > 0){
+ foreach my $branch (keys %$availbranches){
+ if(not grep{/^$branch$/} @branches){
+ push @branches, $branch;
+ }
+ }
+ }
$rqoverduebranches->finish;
return @branches;
}
diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index 23ce459..1312db9 100755
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -298,7 +298,6 @@ if ( defined $csvfilename ) {
}
foreach my $branchcode (@branches) {
-
my $branch_details = C4::Branch::GetBranchDetail($branchcode);
my $admin_email_address = $branch_details->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
my @output_chunks; # may be sent to mail or stdout or csv file.
@@ -307,19 +306,25 @@ foreach my $branchcode (@branches) {
my $sth2 = $dbh->prepare( <<'END_SQL' );
SELECT biblio.*, items.*, issues.*, TO_DAYS(NOW())-TO_DAYS(date_due) AS days_overdue
- FROM issues,items,biblio
- WHERE items.itemnumber=issues.itemnumber
- AND biblio.biblionumber = items.biblionumber
- AND issues.borrowernumber = ?
+ FROM issues
+ LEFT JOIN items USING(itemnumber)
+ LEFT JOIN biblio USING(biblionumber)
+ WHERE issues.borrowernumber = ?
AND TO_DAYS(NOW())-TO_DAYS(date_due) BETWEEN ? and ?
END_SQL
my $rqoverduerules = $dbh->prepare("SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ");
$rqoverduerules->execute($branchcode);
+
+ # We get default rules is there is no rule for this branch
+ if($rqoverduerules->rows == 0){
+ $rqoverduerules = $dbh->prepare("SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = '' ");
+ $rqoverduerules->execute();
+ }
+
# my $outfile = 'overdues_' . ( $mybranch || $branchcode || 'default' );
while ( my $overdue_rules = $rqoverduerules->fetchrow_hashref ) {
PERIOD: foreach my $i ( 1 .. 3 ) {
-
$verbose and warn "branch '$branchcode', pass $i\n";
my $mindays = $overdue_rules->{"delay$i"}; # the notice will be sent after mindays days (grace period)
my $maxdays = (
@@ -341,9 +346,10 @@ END_SQL
my $borrower_sql = <<'END_SQL';
SELECT COUNT(*), issues.borrowernumber, firstname, surname, address, address2, city, zipcode, email, MIN(date_due) as longest_issue
-FROM issues,borrowers,categories
-WHERE issues.borrowernumber=borrowers.borrowernumber
-AND borrowers.categorycode=categories.categorycode
+FROM issues
+LEFT JOIN borrowers USING (borrowernumber)
+LEFT JOIN categories ON (borrowers.categorycode=categories.categorycode)
+WHERE 1
END_SQL
my @borrower_parameters;
if ($branchcode) {
--
1.6.0.4
More information about the Koha-patches
mailing list