|
Lines 926-981
sub IssueSlip {
Link Here
|
| 926 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
926 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
| 927 |
return unless $patron; |
927 |
return unless $patron; |
| 928 |
|
928 |
|
| 929 |
my @issues = @{ GetPendingIssues($borrowernumber) }; |
929 |
my $pending_checkouts = $patron->pending_checkouts; # Should be $patron->checkouts->pending? |
| 930 |
|
|
|
| 931 |
for my $issue (@issues) { |
| 932 |
$issue->{date_due} = $issue->{date_due_sql}; |
| 933 |
if ($quickslip) { |
| 934 |
my $today = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }); |
| 935 |
if ( substr( $issue->{issuedate}, 0, 10 ) eq $today |
| 936 |
or substr( $issue->{lastreneweddate}, 0, 10 ) eq $today ) { |
| 937 |
$issue->{now} = 1; |
| 938 |
}; |
| 939 |
} |
| 940 |
} |
| 941 |
|
| 942 |
# Sort on timestamp then on issuedate then on issue_id |
| 943 |
# useful for tests and could be if modified in a batch |
| 944 |
@issues = sort { |
| 945 |
$b->{timestamp} <=> $a->{timestamp} |
| 946 |
or $b->{issuedate} <=> $a->{issuedate} |
| 947 |
or $b->{issue_id} <=> $a->{issue_id} |
| 948 |
} @issues; |
| 949 |
|
930 |
|
| 950 |
my ($letter_code, %repeat, %loops); |
931 |
my ($letter_code, %repeat, %loops); |
| 951 |
if ( $quickslip ) { |
932 |
if ( $quickslip ) { |
|
|
933 |
my $today_start = dt_from_string->set( hour => 0, minute => 0, second => 0 ); |
| 934 |
my $today_end = dt_from_string->set( hour => 23, minute => 59, second => 0 ); |
| 935 |
$today_start = Koha::Database->new->schema->storage->datetime_parser->format_datetime( $today_start ); |
| 936 |
$today_end = Koha::Database->new->schema->storage->datetime_parser->format_datetime( $today_end ); |
| 952 |
$letter_code = 'ISSUEQSLIP'; |
937 |
$letter_code = 'ISSUEQSLIP'; |
| 953 |
my @checkouts = map { |
938 |
|
| 954 |
'biblio' => $_, |
939 |
# issue date or lastreneweddate is today |
| 955 |
'items' => $_, |
940 |
my $todays_checkouts = $pending_checkouts->search( |
| 956 |
'biblioitems' => $_, |
941 |
{ |
| 957 |
'issues' => $_, |
942 |
-or => { |
| 958 |
}, grep { $_->{'now'} } @issues; |
943 |
issuedate => { |
|
|
944 |
'>=' => $today_start, |
| 945 |
'<=' => $today_end, |
| 946 |
}, |
| 947 |
lastreneweddate => |
| 948 |
{ '>=' => $today_start, '<=' => $today_end, } |
| 949 |
} |
| 950 |
} |
| 951 |
); |
| 952 |
my @checkouts; |
| 953 |
while ( my $c = $todays_checkouts->next ) { |
| 954 |
my $all = $c->unblessed_all_relateds; |
| 955 |
push @checkouts, { |
| 956 |
biblio => $all, |
| 957 |
items => $all, |
| 958 |
biblioitems => $all, |
| 959 |
issues => $all, |
| 960 |
}; |
| 961 |
} |
| 962 |
|
| 959 |
%repeat = ( |
963 |
%repeat = ( |
| 960 |
checkedout => \@checkouts, # History syntax |
964 |
checkedout => \@checkouts, # Historical syntax |
| 961 |
); |
965 |
); |
| 962 |
%loops = ( |
966 |
%loops = ( |
| 963 |
issues => [ map { $_->{issues}{itemnumber} } @checkouts ], # TT syntax |
967 |
issues => [ map { $_->{issues}{itemnumber} } @checkouts ], # TT syntax |
| 964 |
); |
968 |
); |
| 965 |
} |
969 |
} |
| 966 |
else { |
970 |
else { |
| 967 |
my @checkouts = map { |
971 |
my $today = Koha::Database->new->schema->storage->datetime_parser->format_datetime( dt_from_string ); |
| 968 |
'biblio' => $_, |
972 |
# Checkouts due in the future |
| 969 |
'items' => $_, |
973 |
my $checkouts = $pending_checkouts->search({ date_due => { '>' => $today } }); |
| 970 |
'biblioitems' => $_, |
974 |
my @checkouts; my @overdues; |
| 971 |
'issues' => $_, |
975 |
while ( my $c = $checkouts->next ) { |
| 972 |
}, grep { !$_->{'overdue'} } @issues; |
976 |
my $all = $c->unblessed_all_relateds; |
| 973 |
my @overdues = map { |
977 |
push @checkouts, { |
| 974 |
'biblio' => $_, |
978 |
biblio => $all, |
| 975 |
'items' => $_, |
979 |
items => $all, |
| 976 |
'biblioitems' => $_, |
980 |
biblioitems => $all, |
| 977 |
'issues' => $_, |
981 |
issues => $all, |
| 978 |
}, grep { $_->{'overdue'} } @issues; |
982 |
}; |
|
|
983 |
} |
| 984 |
|
| 985 |
# Checkouts due in the past are overdues |
| 986 |
my $overdues = $pending_checkouts->search({ date_due => { '<=' => $today } }); |
| 987 |
while ( my $o = $overdues->next ) { |
| 988 |
my $all = $o->unblessed_all_relateds; |
| 989 |
push @overdues, { |
| 990 |
biblio => $all, |
| 991 |
items => $all, |
| 992 |
biblioitems => $all, |
| 993 |
issues => $all, |
| 994 |
}; |
| 995 |
} |
| 979 |
my $news = GetNewsToDisplay( "slip", $branch ); |
996 |
my $news = GetNewsToDisplay( "slip", $branch ); |
| 980 |
my @news = map { |
997 |
my @news = map { |
| 981 |
$_->{'timestamp'} = $_->{'newdate'}; |
998 |
$_->{'timestamp'} = $_->{'newdate'}; |
| 982 |
- |
|
|