@@ -, +, @@
compatible
---
C4/Letters.pm | 6 ++
C4/Members.pm | 58 +++++++------
t/db_dependent/Letters/TemplateToolkit.t | 138 ++++++++++++++++++++++++++++++-
3 files changed, 178 insertions(+), 24 deletions(-)
--- a/C4/Letters.pm
+++ a/C4/Letters.pm
@@ -1566,6 +1566,12 @@ sub _get_tt_params {
plural => 'old_checkouts',
fk => 'itemnumber',
},
+ overdues => {
+ module => 'Koha::Checkouts',
+ singular => 'overdue',
+ plural => 'overdues',
+ fk => 'itemnumber',
+ },
borrower_modifications => {
module => 'Koha::Patron::Modifications',
singular => 'patron_modification',
--- a/C4/Members.pm
+++ a/C4/Members.pm
@@ -1136,39 +1136,50 @@ sub IssueSlip {
$b->{issuedate} <=> $a->{issuedate} : $s;
} @issues;
- my ($letter_code, %repeat);
+ my ($letter_code, %repeat, %loops);
if ( $quickslip ) {
$letter_code = 'ISSUEQSLIP';
- %repeat = (
- 'checkedout' => [ map {
+ my @checkouts = map {
'biblio' => $_,
'items' => $_,
'biblioitems' => $_,
'issues' => $_,
- }, grep { $_->{'now'} } @issues ],
+ }, grep { $_->{'now'} } @issues;
+ %repeat = (
+ checkedout => \@checkouts, # History syntax
+ );
+ %loops = (
+ issues => [ map { $_->{issues}{itemnumber} } @checkouts ], # TT syntax
);
}
else {
+ my @checkouts = map {
+ 'biblio' => $_,
+ 'items' => $_,
+ 'biblioitems' => $_,
+ 'issues' => $_,
+ }, grep { !$_->{'overdue'} } @issues;
+ my @overdues = map {
+ 'biblio' => $_,
+ 'items' => $_,
+ 'biblioitems' => $_,
+ 'issues' => $_,
+ }, grep { $_->{'overdue'} } @issues;
+ my $news = GetNewsToDisplay( "slip", $branch );
+ my @news = map {
+ $_->{'timestamp'} = $_->{'newdate'};
+ { opac_news => $_ }
+ } @$news;
$letter_code = 'ISSUESLIP';
- %repeat = (
- 'checkedout' => [ map {
- 'biblio' => $_,
- 'items' => $_,
- 'biblioitems' => $_,
- 'issues' => $_,
- }, grep { !$_->{'overdue'} } @issues ],
-
- 'overdue' => [ map {
- 'biblio' => $_,
- 'items' => $_,
- 'biblioitems' => $_,
- 'issues' => $_,
- }, grep { $_->{'overdue'} } @issues ],
-
- 'news' => [ map {
- $_->{'timestamp'} = $_->{'newdate'};
- { opac_news => $_ }
- } @{ GetNewsToDisplay("slip",$branch) } ],
+ %repeat = (
+ checkedout => \@checkouts,
+ overdue => \@overdues,
+ news => \@news,
+ );
+ %loops = (
+ issues => [ map { $_->{issues}{itemnumber} } @checkouts ],
+ overdues => [ map { $_->{issues}{itemnumber} } @overdues ],
+ opac_news => [ map { $_->{opac_news}{idnew} } @news ],
);
}
@@ -1182,6 +1193,7 @@ sub IssueSlip {
'borrowers' => $borrowernumber,
},
repeat => \%repeat,
+ loops => \%loops,
);
}
--- a/t/db_dependent/Letters/TemplateToolkit.t
+++ a/t/db_dependent/Letters/TemplateToolkit.t
@@ -286,7 +286,7 @@ $prepared_letter = GetPreparedLetter(
is( $prepared_letter->{content}, $modification->id(), 'Patron modification object used correctly' );
subtest 'regression tests' => sub {
- plan tests => 5;
+ plan tests => 6;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build( { source => 'Borrower' } );
@@ -316,6 +316,19 @@ subtest 'regression tests' => sub {
itemcallnumber => 'itemcallnumber2',
}
)->store->unblessed;
+ my $biblio3 = Koha::Biblio->new({title => 'Test Biblio 3'})->store->unblessed;
+ my $biblioitem3 = Koha::Biblioitem->new({biblionumber => $biblio3->{biblionumber}})->store()->unblessed;
+ my $item3 = Koha::Item->new(
+ {
+ biblionumber => $biblio3->{biblionumber},
+ biblioitemnumber => $biblioitem3->{biblioitemnumber},
+ barcode => 'another_t_barcode_3',
+ homebranch => $library->{branchcode},
+ holdingbranch => $library->{branchcode},
+ itype => 'BK',
+ itemcallnumber => 'itemcallnumber3',
+ }
+ )->store->unblessed;
C4::Context->_new_userenv('xxx');
C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, 'Midway Public Library', '', '', '');
@@ -582,6 +595,129 @@ EOF
is( $tt_letter_for_item1->{content}, $letter_for_item1->{content}, );
is( $tt_letter_for_item2->{content}, $letter_for_item2->{content}, );
};
+
+ subtest 'ISSUESLIP|checkedout|repeat' => sub {
+ plan tests => 2;
+
+ my $code = 'ISSUESLIP';
+
+ my $branchcode = $library->{branchcode};
+
+ Koha::News->delete;
+ my $news_item = Koha::NewsItem->new({ branchcode => $branchcode, title => "A wonderful news", content => "This is the wonderful news." })->store;
+
+ # historic syntax
+ my $template = <
+<
+< <
+[% biblio.title %]
+[% biblio.title %] [% n.content %]
+(<
+
+<
+
+Checked Out
+
+Barcode: <
+Date due: <
+Overdues
+
+Barcode: <
+Date due: <
+
+
+News
+<
+
+
+([% borrower.cardnumber %])
+
+[% today | \$KohaDates with_hours => 1 %]
+
+Checked Out
+[% FOREACH checkout IN checkouts %]
+[%~ SET item = checkout.item %]
+[%~ SET biblio = checkout.item.biblio %]
+
+Barcode: [% item.barcode %]
+Date due: [% checkout.date_due | \$KohaDates %]
+Overdues
+[% FOREACH overdue IN overdues %]
+[%~ SET item = overdue.item %]
+[%~ SET biblio = overdue.item.biblio %]
+
+Barcode: [% item.barcode %]
+Date due: [% overdue.date_due | \$KohaDates %]
+
+
+News
+[% FOREACH n IN news %]
+[% n.title %]
+
+
|
\n\n|s; + + is( $first_tt_slip->{content}, $first_slip->{content}, ); + is( $second_tt_slip->{content}, $second_slip->{content}, ); + }; }; subtest 'loops' => sub { --