Commit e1df3a57 authored by Kyle M Hall's avatar Kyle M Hall Committed by Paul Poulain

Bug 8063 - Hold print notices do not sort by branch

Adds the option -s/--split to enable notices to be separated
into different files by borrower home library.
Signed-off-by: default avatarJulian Maurice <julian.maurice@biblibre.com>
parent 612b12f4
......@@ -779,7 +779,8 @@ sub GetPrintMessages {
my $params = shift || {};
return _get_unsent_messages( { message_transport_type => 'print',
borrowernumber => $params->{'borrowernumber'}, } );
borrowernumber => $params->{'borrowernumber'},
} );
}
=head2 GetQueuedMessages ([$hashref])
......@@ -874,8 +875,9 @@ sub _get_unsent_messages (;$) {
my $dbh = C4::Context->dbh();
my $statement = << 'ENDSQL';
SELECT message_id, borrowernumber, subject, content, message_transport_type, status, time_queued, from_address, to_address, content_type
FROM message_queue
SELECT mq.message_id, mq.borrowernumber, mq.subject, mq.content, mq.message_transport_type, mq.status, mq.time_queued, mq.from_address, mq.to_address, mq.content_type, b.branchcode
FROM message_queue mq
LEFT JOIN borrowers b ON b.borrowernumber = mq.borrowernumber
WHERE status = ?
ENDSQL
......@@ -894,6 +896,7 @@ ENDSQL
push @query_params, $params->{'limit'};
}
}
$debug and warn "_get_unsent_messages SQL: $statement";
$debug and warn "_get_unsent_messages params: " . join(',',@query_params);
my $sth = $dbh->prepare( $statement );
......
......@@ -21,14 +21,14 @@ use strict;
use warnings;
BEGIN {
# find Koha's Perl modules
# test carefully before changing this
use FindBin;
eval { require "$FindBin::Bin/../kohalib.pl" };
}
use CGI; # NOT a CGI script, this is just to keep C4::Templates::gettemplate happy
use
CGI; # NOT a CGI script, this is just to keep C4::Templates::gettemplate happy
use C4::Context;
use C4::Dates;
use C4::Debug;
......@@ -42,41 +42,88 @@ sub usage {
Usage: $0 OUTPUT_DIRECTORY
Will print all waiting print notices to
OUTPUT_DIRECTORY/notices-CURRENT_DATE.html .
-s --split Split messages into separate file by borrower home library to OUTPUT_DIRECTORY/notices-CURRENT_DATE-BRANCHCODE.html
USAGE
exit $_[0];
}
my ( $stylesheet, $help );
my ( $stylesheet, $help, $split );
GetOptions(
'h|help' => \$help,
) || usage( 1 );
'h|help' => \$help,
's|split' => \$split,
) || usage(1);
usage( 0 ) if ( $help );
usage(0) if ($help);
my $output_directory = $ARGV[0];
if ( !$output_directory || !-d $output_directory ) {
print STDERR "Error: You must specify a valid directory to dump the print notices in.\n";
usage( 1 );
print STDERR
"Error: You must specify a valid directory to dump the print notices in.\n";
usage(1);
}
my $today = C4::Dates->new();
my @all_messages = @{ GetPrintMessages() };
exit unless (@all_messages);
if ($split) {
my %messages_by_branch;
foreach my $message (@all_messages) {
push( @{ $messages_by_branch{ $message->{'branchcode'} } }, $message );
}
foreach my $branchcode ( keys %messages_by_branch ) {
my @messages = @{ $messages_by_branch{$branchcode} };
open $OUTPUT, '>',
File::Spec->catdir( $output_directory,
"holdnotices-" . $today->output('iso') . "-$branchcode.html" );
my $template =
C4::Templates::gettemplate( 'batch/print-notices.tmpl', 'intranet',
new CGI );
$template->param(
stylesheet => C4::Context->preference("NoticeCSS"),
today => $today->output(),
messages => \@messages,
);
print $OUTPUT $template->output;
foreach my $message (@messages) {
C4::Letters::_set_message_status(
{ message_id => $message->{'message_id'}, status => 'sent' } );
}
close $OUTPUT;
}
}
else {
open $OUTPUT, '>',
File::Spec->catdir( $output_directory,
"holdnotices-" . $today->output('iso') . ".html" );
my $today = C4::Dates->new();
my @messages = @{ GetPrintMessages() };
exit unless( @messages );
my $template =
C4::Templates::gettemplate( 'batch/print-notices.tmpl', 'intranet',
new CGI );
open OUTPUT, '>', File::Spec->catdir( $output_directory, "holdnotices-" . $today->output( 'iso' ) . ".html" );
$template->param(
stylesheet => C4::Context->preference("NoticeCSS"),
today => $today->output(),
messages => \@all_messages,
);
my $template = C4::Templates::gettemplate( 'batch/print-notices.tmpl', 'intranet', new CGI );
print $OUTPUT $template->output;
$template->param(
stylesheet => C4::Context->preference("NoticeCSS"),
today => $today->output(),
messages => \@messages,
);
foreach my $message (@all_messages) {
C4::Letters::_set_message_status(
{ message_id => $message->{'message_id'}, status => 'sent' } );
}
print OUTPUT $template->output;
close $OUTPUT;
foreach my $message ( @messages ) {
C4::Letters::_set_message_status( { message_id => $message->{'message_id'}, status => 'sent' } );
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment