From 74b205649bbbf59ab512e71dcad8d13046a13670 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 29 Aug 2023 12:17:14 +0000 Subject: [PATCH] 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 Signed-off-by: Jonathan Druart Signed-off-by: Aleisha Amohia Signed-off-by: Tomas Cohen Arazi --- Koha/Schema/Result/Item.pm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Koha/Schema/Result/Item.pm b/Koha/Schema/Result/Item.pm index ab5f09418b..25dd46c36b 100644 --- a/Koha/Schema/Result/Item.pm +++ b/Koha/Schema/Result/Item.pm @@ -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 -- 2.39.5