Bug 9004 - Talking Tech doesn't account for holidays when calculating a holds last pickup date - Perltidy script.

Signed-off-by: Chris William <chrisw@pascolibraries.org>
This commit is contained in:
Kyle Hall 2012-11-02 08:23:37 -04:00
parent 60b3572894
commit af32e3a475

View file

@ -44,8 +44,7 @@ sub usage {
exit;
}
die
"TalkingTechItivaPhoneNotification system preference not activated... dying\n"
die "TalkingTechItivaPhoneNotification system preference not activated... dying\n"
unless ( C4::Context->preference("TalkingTechItivaPhoneNotification") );
# Database handle
@ -92,8 +91,7 @@ pod2usage( -verbose => 1 ) if $help;
my $OUT;
if ( defined $outfile ) {
open( $OUT, '>', "$outfile" ) || die("Cannot open output file");
}
else {
} else {
print "No output file defined; printing to STDOUT\n"
if ( defined $verbose );
open( $OUT, '>', "&STDOUT" ) || die("Couldn't duplicate STDOUT: $!");
@ -103,21 +101,17 @@ my $format = 'V'; # format for phone notifications
foreach my $type (@types) {
$type = uc($type); #just in case lower or mixed-case was supplied
my $module =
$type_module_map->{$type}; #since the module is required to get the letter
my $code = $type_notice_map->{$type}; #to get the Koha name of the notice
my $module = $type_module_map->{$type}; #since the module is required to get the letter
my $code = $type_notice_map->{$type}; #to get the Koha name of the notice
my @loop;
if ( $type eq 'OVERDUE' ) {
@loop = GetOverdueIssues();
}
elsif ( $type eq 'PREOVERDUE' ) {
} elsif ( $type eq 'PREOVERDUE' ) {
@loop = GetPredueIssues();
}
elsif ( $type eq 'RESERVE' ) {
} elsif ( $type eq 'RESERVE' ) {
@loop = GetWaitingHolds();
}
else {
} else {
print "Unknown or unsupported message type $type; skipping...\n"
if ( defined $verbose );
next;
@ -143,20 +137,16 @@ foreach my $type (@types) {
my $message_id = 0;
if ($outfile) {
$message_id = C4::Letters::EnqueueLetter(
{
letter => $letter,
{ letter => $letter,
borrowernumber => $issues->{'borrowernumber'},
message_transport_type => 'phone',
}
);
}
print $OUT
"\"$format\",\"$language\",\"$type\",\"$issues->{level}\",\"$issues->{cardnumber}\",\"$issues->{patron_title}\",\"$issues->{firstname}\",";
print $OUT
"\"$issues->{surname}\",\"$issues->{phone}\",\"$issues->{email}\",\"$library_code\",";
print $OUT
"\"$issues->{site}\",\"$issues->{site_name}\",\"$issues->{barcode}\",\"$due_date\",\"$issues->{title}\",\"$message_id\"\n";
print $OUT "\"$format\",\"$language\",\"$type\",\"$issues->{level}\",\"$issues->{cardnumber}\",\"$issues->{patron_title}\",\"$issues->{firstname}\",";
print $OUT "\"$issues->{surname}\",\"$issues->{phone}\",\"$issues->{email}\",\"$library_code\",";
print $OUT "\"$issues->{site}\",\"$issues->{site_name}\",\"$issues->{barcode}\",\"$due_date\",\"$issues->{title}\",\"$message_id\"\n";
}
}
@ -218,8 +208,7 @@ This field can be blank if all messages are from a single library.
=cut
sub GetOverdueIssues {
my $query =
"SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
my $query = "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due,
max(overduerules.branchcode) as rulebranch, TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, delay1, delay2, delay3,
issues.branchcode as site, branches.branchname as site_name
@ -240,14 +229,11 @@ sub GetOverdueIssues {
while ( my $issue = $sth->fetchrow_hashref() ) {
if ( $issue->{'daysoverdue'} == $issue->{'delay1'} ) {
$issue->{'level'} = 1;
}
elsif ( $issue->{'daysoverdue'} == $issue->{'delay2'} ) {
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay2'} ) {
$issue->{'level'} = 2;
}
elsif ( $issue->{'daysoverdue'} == $issue->{'delay3'} ) {
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay3'} ) {
$issue->{'level'} = 3;
}
else {
} else {
# this shouldn't ever happen, based our SQL criteria
}
@ -257,8 +243,7 @@ sub GetOverdueIssues {
}
sub GetPredueIssues {
my $query =
"SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
my $query = "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due,
issues.branchcode as site, branches.branchname as site_name
FROM borrowers JOIN issues USING (borrowernumber)
@ -283,8 +268,7 @@ sub GetPredueIssues {
}
sub GetWaitingHolds {
my $query =
"SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
my $query = "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, reserves.waitingdate,
reserves.branchcode AS site, branches.branchname AS site_name,
TO_DAYS(NOW())-TO_DAYS(reserves.waitingdate) AS days_since_waiting
@ -305,39 +289,19 @@ sub GetWaitingHolds {
my @results;
while ( my $issue = $sth->fetchrow_hashref() ) {
my @waitingdate = split( /-/, $issue->{'waitingdate'} );
my @date_due =
Add_Delta_Days( $waitingdate[0], $waitingdate[1], $waitingdate[2],
$pickupdelay );
$issue->{'date_due'} =
sprintf( "%04d-%02d-%02d", $date_due[0], $date_due[1], $date_due[2] );
$issue->{'level'} = 1; # only one level for Hold Waiting notifications
my @date_due = Add_Delta_Days( $waitingdate[0], $waitingdate[1], $waitingdate[2], $pickupdelay );
$issue->{'date_due'} = sprintf( "%04d-%02d-%02d", $date_due[0], $date_due[1], $date_due[2] );
$issue->{'level'} = 1; # only one level for Hold Waiting notifications
my $days_to_subtract = 0;
my $calendar = C4::Calendar->new( branchcode => $issue->{'site'} );
while (
$calendar->isHoliday(
reverse(
Add_Delta_Days(
$waitingdate[0], $waitingdate[1],
$waitingdate[2], $days_to_subtract
)
)
)
)
{
while ( $calendar->isHoliday( reverse( Add_Delta_Days( $waitingdate[0], $waitingdate[1], $waitingdate[2], $days_to_subtract ) ) ) ) {
$days_to_subtract++;
}
$issue->{'days_since_waiting'} =
$issue->{'days_since_waiting'} - $days_to_subtract;
$issue->{'days_since_waiting'} = $issue->{'days_since_waiting'} - $days_to_subtract;
if (
(
grep $_ eq $issue->{'days_since_waiting'},
@holds_waiting_days_to_call
)
|| !scalar(@holds_waiting_days_to_call)
)
{
if ( ( grep $_ eq $issue->{'days_since_waiting'}, @holds_waiting_days_to_call )
|| !scalar(@holds_waiting_days_to_call) ) {
push @results, $issue;
}
}