[Koha-patches] [PATCH] (bug #3695) allow to limit overdues by categorycode

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Tue Oct 6 14:03:28 CEST 2009


This add two new options to overdue_notices.pl to select only overdues for few categorycodes, or to exclude few categorycodes.
---
 misc/cronjobs/overdue_notices.pl |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index e205e1e..53f39f4 100755
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -53,6 +53,8 @@ overdue_notices.pl [ -n ] [ -library <branchcode> ] [ -max <number of days> ] [
    -library      <branchname>     only deal with overdues from this library
    -csv          <filename>       populate CSV file
    -itemscontent <list of fields> item information in templates
+   -borcat       <categorycode>   category code that must be included
+   -borcatout    <categorycode>   category code that must be excluded
 
 =head1 OPTIONS
 
@@ -104,6 +106,14 @@ defaults to issuedate,title,barcode,author
 Other possible values come from fields in the biblios, items, and
 issues tables.
 
+=item B<-borcat>
+
+Repetable field, that permit to select only few of patrons categories.
+
+=item B<-borcatout>
+
+Repetable field, permis to exclude some patrons categories.
+
 =item B<-t> | B<--triggered>
 
 This option causes a notice to be generated if and only if 
@@ -223,6 +233,7 @@ alert them of items that have just become due.
 
 # These variables are set by command line options.
 # They are initially set to default values.
+my $dbh = C4::Context->dbh();
 my $help    = 0;
 my $man     = 0;
 my $verbose = 0;
@@ -233,6 +244,8 @@ my $csvfilename;
 my $triggered = 0;
 my $listall = 0;
 my $itemscontent = join( ',', qw( issuedate title barcode author ) );
+my @myborcat;
+my @myborcatout;
 
 GetOptions(
     'help|?'         => \$help,
@@ -245,6 +258,8 @@ GetOptions(
     'itemscontent=s' => \$itemscontent,
     'list-all'      => \$listall,
     't|triggered'             => \$triggered,
+    'borcat=s'      => \@myborcat,
+    'borcatout=s'   => \@myborcatout,
 ) or pod2usage(2);
 pod2usage(1) if $help;
 pod2usage( -verbose => 2 ) if $man;
@@ -278,7 +293,6 @@ if ($mybranch) {
 # these are the fields that will be substituted into <<item.content>>
 my @item_content_fields = split( /,/, $itemscontent );
 
-my $dbh = C4::Context->dbh();
 binmode( STDOUT, ":utf8" );
 
 our $csv;       # the Text::CSV_XS object
@@ -314,13 +328,21 @@ SELECT biblio.*, items.*, issues.*, TO_DAYS(NOW())-TO_DAYS(date_due) AS days_ove
     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);
+    my $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? ";
+    $query .= " AND categorycode IN (".join( ',' , ('?') x @myborcat ).") " if (@myborcat);
+    $query .= " AND categorycode NOT IN (".join( ',' , ('?') x @myborcatout ).") " if (@myborcatout);
+    
+    my $rqoverduerules =  $dbh->prepare($query);
+    $rqoverduerules->execute($branchcode, @myborcat, @myborcatout);
     
     # 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();
+        $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = '' ";
+        $query .= " AND categorycode IN (".join( ',' , ('?') x @myborcat ).") " if (@myborcat);
+        $query .= " AND categorycode NOT IN (".join( ',' , ('?') x @myborcatout ).") " if (@myborcatout);
+        
+        $rqoverduerules = $dbh->prepare($query);
+        $rqoverduerules->execute(@myborcat, @myborcatout);
     }
 
     # my $outfile = 'overdues_' . ( $mybranch || $branchcode || 'default' );
-- 
1.6.0.4




More information about the Koha-patches mailing list