@@ -, +, @@ - display the due_date - deals with a branchcode parameter limit - deals with the various emails a patron has to select the 1st valid one (function in C4/Members) --- misc/cronjobs/overdue_notices.pl | 133 ++++++++++++++++++++++++-------------- misc/cronjobs/printoverdues.sh | 9 ++- 2 files changed, 89 insertions(+), 53 deletions(-) --- a/misc/cronjobs/overdue_notices.pl +++ a/misc/cronjobs/overdue_notices.pl @@ -40,6 +40,9 @@ use C4::Dates qw/format_date/; use C4::Debug; use C4::Letters; use C4::Overdues qw(GetFine); +use C4::Reports::Guided; #_get_column_defs +use open qw(:std :utf8); +use YAML; =head1 NAME @@ -256,7 +259,7 @@ my $csvfilename; my $htmlfilename; my $triggered = 0; my $listall = 0; -my $itemscontent = join( ',', qw( date_due title barcode author itemnumber ) ); +my $itemscontent = join( ',', qw( issuedate title barcode author biblionumber date_due) ); my @myborcat; my @myborcatout; @@ -267,17 +270,25 @@ GetOptions( 'n' => \$nomail, 'max=s' => \$MAX, 'library=s' => \@branchcodes, - 'csv:s' => \$csvfilename, # this optional argument gets '' if not supplied. - 'html:s' => \$htmlfilename, # this optional argument gets '' if not supplied. + 'csv:s' => \$csvfilename, # this optional argument gets '' if not supplied. + 'html:s' => \$htmlfilename, # this optional argument gets '' if not supplied. 'itemscontent=s' => \$itemscontent, - 'list-all' => \$listall, - 't|triggered' => \$triggered, - 'borcat=s' => \@myborcat, - 'borcatout=s' => \@myborcatout, + 'list-all' => \$listall, + 't|triggered' => \$triggered, + 'borcat=s' => \@myborcat, + 'borcatout=s' => \@myborcatout, ) or pod2usage(2); pod2usage(1) if $help; pod2usage( -verbose => 2 ) if $man; +my $columns_def_hashref = C4::Reports::Guided::_get_column_defs(); + +foreach my $key ( keys %$columns_def_hashref ) { + my $initkey = $key; + $key =~ s/[^\.]*\.//; + $columns_def_hashref->{$key} = $columns_def_hashref->{$initkey}; +} +print Dump($columns_def_hashref); if ( defined $csvfilename && $csvfilename =~ /^-/ ) { warn qq(using "$csvfilename" as filename, that seems odd); } @@ -313,7 +324,7 @@ if (@branchcodes) { } else { $verbose and warn "No active overduerules for $branchcodes_word '@branchcodes'\n"; - ( scalar grep { '' eq $_ } @branches ) + ( scalar grep { $_ eq ""} @overduebranches ) or die "No active overduerules for DEFAULT either!"; $verbose and warn "Falling back on default rules for @branchcodes\n"; @branches = (''); @@ -353,22 +364,26 @@ if ( defined $htmlfilename ) { open $html_fh, ">",File::Spec->catdir ($htmlfilename,"notices-".$today->output('iso').".html"); } - print $html_fh "\n"; - print $html_fh "
\n"; - print $html_fh "\n"; - print $html_fh "\n"; - print $html_fh "\n"; + print $html_fh < + + + + + + +HEAD } foreach my $branchcode (@branches) { - my $branch_details = C4::Branch::GetBranchDetail($branchcode); + my $branch_details = C4::Branch::GetBranchDetail($branchcode) unless ($branchcode eq ""); my $admin_email_address = $branch_details->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress'); my @output_chunks; # may be sent to mail or stdout or csv file. @@ -431,7 +446,7 @@ WHERE issues.borrowernumber=borrowers.borrowernumber AND borrowers.categorycode=categories.categorycode END_SQL my @borrower_parameters; - if ($branchcode) { + if ($branchcode && $branchcode ne "") { $borrower_sql .= ' AND issues.branchcode=? '; push @borrower_parameters, $branchcode; } @@ -458,6 +473,7 @@ END_SQL $address1, $address2, $city, $postcode, $country, $email, $longest_issue ) = $sth->fetchrow ) { + $email=C4::Members::GetFirstValidEmailAddress($borrowernumber); $verbose and warn "borrower $firstname, $lastname ($borrowernumber) has $itemcount items triggering level $i."; my $letter = C4::Letters::getletter( 'circulation', $overdue_rules->{"letter$i"} ); @@ -473,29 +489,43 @@ END_SQL if ( $overdue_rules->{"debarred$i"} ) { #action taken is debarring - C4::Members::DebarMember($borrowernumber); + C4::Members::DebarMember($borrowernumber, '9999-12-31'); $verbose and warn "debarring $borrowernumber $firstname $lastname\n"; } my @params = ($listall ? ( $borrowernumber , 1 , $MAX ) : ( $borrowernumber, $mindays, $maxdays )); $verbose and warn "STH2 PARAMS: borrowernumber = $borrowernumber, mindays = $mindays, maxdays = $maxdays"; $sth2->execute(@params); my $itemcount = 0; - my $titles = ""; + + my $titles; + if ($htmlfilename) { + $titles = "" . join( " | ", @$columns_def_hashref{@item_content_fields} ); + warn @item_content_fields; + warn map { "$columns_def_hashref->{$_};" } @item_content_fields; + $titles .= " |
---|---|
" . join( " | ", @item_info ) . " |
\n"; + $params->{'letter'}->{'content'}=~s# #\n"; } else { --- a/misc/cronjobs/printoverdues.sh +++ a/misc/cronjobs/printoverdues.sh @@ -39,8 +39,9 @@ then fi for i in $1/*.html do - xhtml2pdf $optpisa $i + xhtml2pdf --encoding utf-8 $optpisa $i done -lp $optprinter $1/*.pdf -tar cvfz $directory`date "+%Y%m%d"`.tar.gz $directory -rm -rf $directory + +#lp $optprinter $1/*.pdf +#tar cvfz $directory`date "+%Y%m%d"`.tar.gz $directory +#rm -rf $directory --
#g; $return .= "$params->{'letter'}->{'content'}\n"; $return .= "\n