Bug 17971: Add support for objects represented by fk
For instance an issue is not fetch from its fk but using the fk itemnumber. We need to support them. Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
3ee3cf10e6
commit
77b72decd4
|
|
@ -1563,10 +1563,12 @@ sub _get_tt_params {
|
|||
my $fk = $config->{$table}->{fk};
|
||||
|
||||
if ( $is_a_loop ) {
|
||||
unless ( ref( $tables->{$table} ) eq 'ARRAY' ) {
|
||||
my $values = $tables->{$table} || [];
|
||||
unless ( ref( $values ) eq 'ARRAY' ) {
|
||||
croak "ERROR processing table $table. Wrong API call.";
|
||||
}
|
||||
my $objects = $module->search( { $pk => { -in => $tables->{$table} } } );
|
||||
my $key = $pk ? $pk : $fk;
|
||||
my $objects = $module->search( { $key => { -in => $values } } );
|
||||
$params->{ $config->{$table}->{plural} } = $objects;
|
||||
}
|
||||
elsif ( $ref eq q{} || $ref eq 'HASH' ) {
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ subtest 'regression tests' => sub {
|
|||
};
|
||||
|
||||
subtest 'loops' => sub {
|
||||
plan tests => 1;
|
||||
plan tests => 2;
|
||||
my $code = "TEST";
|
||||
my $module = "TEST";
|
||||
|
||||
|
|
@ -395,6 +395,20 @@ subtest 'loops' => sub {
|
|||
my $expected_letter = join '', ( $patron_1->{surname}, $patron_2->{surname} );
|
||||
is( $letter->{content}, $expected_letter, );
|
||||
};
|
||||
|
||||
subtest 'foreign key is used' => sub {
|
||||
plan tests => 1;
|
||||
my $patron_1 = $builder->build({ source => 'Borrower' });
|
||||
my $patron_2 = $builder->build({ source => 'Borrower' });
|
||||
my $checkout_1 = $builder->build({ source => 'Issue', value => { borrowernumber => $patron_1->{borrowernumber} } } );
|
||||
my $checkout_2 = $builder->build({ source => 'Issue', value => { borrowernumber => $patron_1->{borrowernumber} } } );
|
||||
|
||||
my $template = q|[% FOREACH checkout IN checkouts %][% checkout.issue_id %][% END %]|;
|
||||
reset_template( { template => $template, code => $code, module => $module } );
|
||||
my $letter = GetPreparedLetter( module => $module, letter_code => $code, loops => { issues => [ $checkout_1->{itemnumber}, $checkout_2->{itemnumber} ] } );
|
||||
my $expected_letter = join '', ( $checkout_1->{issue_id}, $checkout_2->{issue_id} );
|
||||
is( $letter->{content}, $expected_letter, );
|
||||
};
|
||||
};
|
||||
|
||||
sub reset_template {
|
||||
|
|
|
|||
Loading…
Reference in New Issue