+=head2 IssueSlip
+
+ IssueSlip($branchcode, $borrowernumber, $quickslip)
+
+ Returns letter hash ( see C4::Letters::GetPreparedLetter )
+
+ $quickslip is boolean, to indicate whether we want a quick slip
+
+=cut
+
+sub IssueSlip {
+ my ($branch, $borrowernumber, $quickslip) = @_;
+
+# return unless ( C4::Context->boolean_preference('printcirculationslips') );
+
+ my $today = POSIX::strftime("%Y-%m-%d", localtime);
+
+ my $issueslist = GetPendingIssues($borrowernumber);
+ foreach my $it (@$issueslist){
+ if ($it->{'issuedate'} eq $today) {
+ $it->{'today'} = 1;
+ }
+ elsif ($it->{'date_due'} le $today) {
+ $it->{'overdue'} = 1;
+ }
+
+ $it->{'date_due'}=format_date($it->{'date_due'});
+ }
+ my @issues = sort { $b->{'timestamp'} <=> $a->{'timestamp'} } @$issueslist;
+
+ my ($letter_code, %repeat);
+ if ( $quickslip ) {
+ $letter_code = 'ISSUEQSLIP';
+ %repeat = (
+ 'checkedout' => [ map {
+ 'biblio' => $_,
+ 'items' => $_,
+ 'issues' => $_,
+ }, grep { $_->{'today'} } @issues ],
+ );
+ }
+ else {
+ $letter_code = 'ISSUESLIP';
+ %repeat = (
+ 'checkedout' => [ map {
+ 'biblio' => $_,
+ 'items' => $_,
+ 'issues' => $_,
+ }, grep { !$_->{'overdue'} } @issues ],
+
+ 'overdue' => [ map {
+ 'biblio' => $_,
+ 'items' => $_,
+ 'issues' => $_,
+ }, grep { $_->{'overdue'} } @issues ],
+
+ 'news' => [ map {
+ $_->{'timestamp'} = $_->{'newdate'};
+ { opac_news => $_ }
+ } @{ GetNewsToDisplay("slip") } ],
+ );
+ }
+
+ return C4::Letters::GetPreparedLetter (
+ module => 'circulation',
+ letter_code => $letter_code,
+ branchcode => $branch,
+ tables => {
+ 'branches' => $branch,
+ 'borrowers' => $borrowernumber,
+ },
+ repeat => \%repeat,
+ );
+}