From 213b78174bb3afbafb04a84c3d6c27ef19c5b3a6 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Wed, 7 Oct 2009 11:49:01 +0200 Subject: [PATCH] (bug #3695) allow to limit overdues by categorycode This add two new options to overdue_notices.pl to select only overdues for few categorycodes, or to exclude few categorycodes. Conflicts solved misc/cronjobs/overdue_notices.pl --- misc/cronjobs/overdue_notices.pl | 35 +++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl index dda2949e44..94a1fcd4e3 100755 --- a/misc/cronjobs/overdue_notices.pl +++ b/misc/cronjobs/overdue_notices.pl @@ -53,6 +53,8 @@ overdue_notices.pl [ -n ] [ -library ] [ -library ...] -library only deal with overdues from this library (repeatable : several libraries can be given) -csv populate CSV file -itemscontent item information in templates + -borcat category code that must be included + -borcatout category code that must be excluded =head1 OPTIONS @@ -105,6 +107,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 @@ -224,6 +234,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; @@ -234,6 +245,8 @@ my $csvfilename; my $triggered = 0; my $listall = 0; my $itemscontent = join( ',', qw( issuedate title barcode author ) ); +my @myborcat; +my @myborcatout; GetOptions( 'help|?' => \$help, @@ -246,6 +259,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; @@ -293,7 +308,6 @@ if (@branchcodes) { # these are the fields that will be substituted into <> my @item_content_fields = split( /,/, $itemscontent ); -my $dbh = C4::Context->dbh(); binmode( STDOUT, ":utf8" ); our $csv; # the Text::CSV_XS object @@ -330,8 +344,23 @@ 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){ + $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' ); while ( my $overdue_rules = $rqoverduerules->fetchrow_hashref ) { PERIOD: foreach my $i ( 1 .. 3 ) { -- 2.39.2