Bug 34639: Use coderef for releationship

This patch switches from a simple relationship to a custom join as
illustrated in the DBIx::Class docs

Reference:
https://metacpan.org/pod/DBIx::Class::Relationship::Base#Custom-join-conditions

This does not include an order_by, so I am not sure if it is sufficient

To test:
1 - On command line:
    export DBIC_TRACE=1;
2 - Save simple script:
use Modern::Perl;
use Koha::Items;

my $items = Koha::Items->search( {'me.itemnumber'=>27}, {prefetch => 'current_branchtransfers'} );
my $item = $items->next;

warn $item->_result->current_branchtransfers->count();
warn $item->get_transfer();
3 - run it
4 - Note that the query doesn't include conditions on the transfers
5 - Apply patch
6 - Repeat
7 - Note that query is correct

Test in staf client:
1. Add an item to library A
2. Go to Circulation -> Transfer
3. Transfer the item from library A to another library B
4. Set your currently logged in library to library B
5. Check-in the item
6. Observe message "Item received from A"
7. View the bibliographic record of the item (catalogue/detail.pl)
8. Observe item in "In transit from A to B since xx/xx/xxxx Available"
9. Apply patch
10. Restart all
11. Reload details - item no longer in transit

Signed-off-by: Lari Taskula <lari.taskula@hypernova.fi>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Nick Clemens 2023-08-29 12:17:14 +00:00 committed by Tomas Cohen Arazi
parent 1395bc00eb
commit 74b205649b
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F

View file

@ -975,11 +975,15 @@ __PACKAGE__->many_to_many(
__PACKAGE__->has_many(
"current_branchtransfers",
"Koha::Schema::Result::Branchtransfer",
{ 'foreign.itemnumber' => 'self.itemnumber' },
{
where => { datearrived => undef, datecancelled => undef },
order_by => [ { -desc => 'datesent' }, { -asc => 'daterequested' } ]
}
sub {
my $args = shift;
return {
"$args->{foreign_alias}.itemnumber" => { -ident => "$args->{self_alias}.itemnumber" },
"$args->{foreign_alias}.datearrived" => undef,
"$args->{foreign_alias}.datecancelled" => undef,
};
},
);
# Relationship with bundled items