# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Test::More tests => 17;
+use Test::More tests => 18;
use Test::Warn;
use MARC::Record;
is( $prepared_letter->{content}, $modification->id(), 'Patron modification object used correctly' );
subtest 'regression tests' => sub {
- plan tests => 7;
+ plan tests => 8;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build( { source => 'Borrower' } );
EOF
reset_template( { template => $template, code => $code, module => 'circulation' } );
- my $letter_for_item1 = C4::Reserves::ReserveSlip( $library->{branchcode}, $patron->{borrowernumber}, $biblio1->{biblionumber} );
- my $letter_for_item2 = C4::Reserves::ReserveSlip( $library->{branchcode}, $patron->{borrowernumber}, $biblio2->{biblionumber} );
+ my $letter_for_item1 = C4::Reserves::ReserveSlip( { branchcode => $library->{branchcode}, borrowernumber => $patron->{borrowernumber}, biblionumber => $biblio1->{biblionumber} } );
+ my $letter_for_item2 = C4::Reserves::ReserveSlip( { branchcode => $library->{branchcode}, borrowernumber => $patron->{borrowernumber}, biblionumber => $biblio2->{biblionumber} } );
my $tt_template = <<EOF;
<h5>Date: [% today | \$KohaDates with_hours => 1 %]</h5>
EOF
reset_template( { template => $tt_template, code => $code, module => 'circulation' } );
- my $tt_letter_for_item1 = C4::Reserves::ReserveSlip( $library->{branchcode}, $patron->{borrowernumber}, $biblio1->{biblionumber} );
- my $tt_letter_for_item2 = C4::Reserves::ReserveSlip( $library->{branchcode}, $patron->{borrowernumber}, $biblio2->{biblionumber} );
+ my $tt_letter_for_item1 = C4::Reserves::ReserveSlip( { branchcode => $library->{branchcode}, borrowernumber => $patron->{borrowernumber}, biblionumber => $biblio1->{biblionumber} } );
+ my $tt_letter_for_item2 = C4::Reserves::ReserveSlip( { branchcode => $library->{branchcode}, borrowernumber => $patron->{borrowernumber}, biblionumber => $biblio2->{biblionumber} } );
is( $tt_letter_for_item1->{content}, $letter_for_item1->{content}, );
is( $tt_letter_for_item2->{content}, $letter_for_item2->{content}, );
is( $tt_letter->{content}, $letter->{content}, );
};
+ subtest 'Bug 19743 - Header and Footer should be updated on each item for checkin / checkout / renewal notices' => sub {
+ plan tests => 8;
+
+ my $checkout_code = 'CHECKOUT';
+ my $checkin_code = 'CHECKIN';
+
+ my $dbh = C4::Context->dbh;
+ $dbh->do("DELETE FROM letter");
+ $dbh->do("DELETE FROM issues");
+ $dbh->do("DELETE FROM message_queue");
+
+ # Enable notification for CHECKOUT - Things are hardcoded here but should work with default data
+ $dbh->do(q|INSERT INTO borrower_message_preferences( borrowernumber, message_attribute_id ) VALUES ( ?, ? )|, undef, $patron->{borrowernumber}, 6 );
+ my $borrower_message_preference_id = $dbh->last_insert_id(undef, undef, "borrower_message_preferences", undef);
+ $dbh->do(q|INSERT INTO borrower_message_transport_preferences( borrower_message_preference_id, message_transport_type) VALUES ( ?, ? )|, undef, $borrower_message_preference_id, 'email' );
+ # Enable notification for CHECKIN - Things are hardcoded here but should work with default data
+ $dbh->do(q|INSERT INTO borrower_message_preferences( borrowernumber, message_attribute_id ) VALUES ( ?, ? )|, undef, $patron->{borrowernumber}, 5 );
+ $borrower_message_preference_id = $dbh->last_insert_id(undef, undef, "borrower_message_preferences", undef);
+ $dbh->do(q|INSERT INTO borrower_message_transport_preferences( borrower_message_preference_id, message_transport_type) VALUES ( ?, ? )|, undef, $borrower_message_preference_id, 'email' );
+
+ my $checkout_template = q|
+<<branches.branchname>>
+----
+----
+|;
+ reset_template( { template => $checkout_template, code => $checkout_code, module => 'circulation' } );
+ my $checkin_template = q[
+<<branches.branchname>>
+----
+----
+];
+ reset_template( { template => $checkin_template, code => $checkin_code, module => 'circulation' } );
+
+ my $issue = C4::Circulation::AddIssue( $patron, $item1->{barcode} );
+ my $first_checkout_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ my $library_object = Koha::Libraries->find( $issue->branchcode );
+ my $old_branchname = $library_object->branchname;
+ my $new_branchname = "Kyle M Hall Memorial Library";
+
+ # Change branch name for second checkout notice
+ $library_object->branchname($new_branchname);
+ $library_object->store();
+
+ C4::Circulation::AddIssue( $patron, $item2->{barcode} );
+ my $second_checkout_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ # Restore old name for first checkin notice
+ $library_object->branchname( $old_branchname );
+ $library_object->store();
+
+ AddReturn( $item1->{barcode} );
+ my $first_checkin_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ # Change branch name for second checkin notice
+ $library_object->branchname($new_branchname);
+ $library_object->store();
+
+ AddReturn( $item2->{barcode} );
+ my $second_checkin_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ # Restore old name for first TT checkout notice
+ $library_object->branchname( $old_branchname );
+ $library_object->store();
+
+ Koha::Notice::Messages->delete;
+
+ # TT syntax
+ $checkout_template = q|
+[% branch.branchname %]
+----
+----
+|;
+ reset_template( { template => $checkout_template, code => $checkout_code, module => 'circulation' } );
+ $checkin_template = q[
+[% branch.branchname %]
+----
+----
+];
+ reset_template( { template => $checkin_template, code => $checkin_code, module => 'circulation' } );
+
+ C4::Circulation::AddIssue( $patron, $item1->{barcode} );
+ my $first_checkout_tt_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ # Change branch name for second checkout notice
+ $library_object->branchname($new_branchname);
+ $library_object->store();
+
+ C4::Circulation::AddIssue( $patron, $item2->{barcode} );
+ my $second_checkout_tt_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ # Restore old name for first checkin notice
+ $library_object->branchname( $old_branchname );
+ $library_object->store();
+
+ AddReturn( $item1->{barcode} );
+ my $first_checkin_tt_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+#
+ # Change branch name for second checkin notice
+ $library_object->branchname($new_branchname);
+ $library_object->store();
+
+ AddReturn( $item2->{barcode} );
+ my $second_checkin_tt_letter = Koha::Notice::Messages->search( {}, { order_by => { -desc => 'message_id' } } )->next;
+
+ my $first_letter = qq[
+$old_branchname
+];
+ my $second_letter = qq[
+$new_branchname
+];
+
+
+ is( $first_checkout_letter->content, $first_letter, 'Verify first checkout letter' );
+ is( $second_checkout_letter->content, $second_letter, 'Verify second checkout letter' );
+ is( $first_checkin_letter->content, $first_letter, 'Verify first checkin letter' );
+ is( $second_checkin_letter->content, $second_letter, 'Verify second checkin letter' );
+
+ is( $first_checkout_tt_letter->content, $first_letter, 'Verify TT first checkout letter' );
+ is( $second_checkout_tt_letter->content, $second_letter, 'Verify TT second checkout letter' );
+ is( $first_checkin_tt_letter->content, $first_letter, 'Verify TT first checkin letter' );
+ is( $second_checkin_tt_letter->content, $second_letter, 'Verify TT second checkin letter' );
+ };
+
};
subtest 'loops' => sub {
};
};
+subtest 'add_tt_filters' => sub {
+ plan tests => 1;
+ my $code = "TEST";
+ my $module = "TEST";
+
+ my $patron = $builder->build_object(
+ {
+ class => 'Koha::Patrons',
+ value => { surname => "with_punctuation_" }
+ }
+ );
+ my $biblio = $builder->build_object(
+ { class => 'Koha::Biblios', value => { title => "with_punctuation_" } }
+ );
+ my $biblioitem = $builder->build_object(
+ {
+ class => 'Koha::Biblioitems',
+ value => {
+ biblionumber => $biblio->biblionumber,
+ isbn => "with_punctuation_"
+ }
+ }
+ );
+
+ my $template = q|patron=[% borrower.surname %];biblio=[% biblio.title %];biblioitems=[% biblioitem.isbn %]|;
+ reset_template( { template => $template, code => $code, module => $module } );
+ my $letter = GetPreparedLetter(
+ module => $module,
+ letter_code => $code,
+ tables => {
+ borrowers => $patron->borrowernumber,
+ biblio => $biblio->biblionumber,
+ biblioitems => $biblioitem->biblioitemnumber
+ }
+ );
+ my $expected_letter = q|patron=with_punctuation_;biblio=with_punctuation;biblioitems=with_punctuation|;
+ is( $letter->{content}, $expected_letter, "Pre-processing should call TT plugin to remove punctuation if table is biblio or biblioitems");
+};
+
+
sub reset_template {
my ( $params ) = @_;
my $template = $params->{template};