From 4f1b98160eb294d91c0d446e30eb4bc177b8e753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Cohen=20Arazi?= Date: Tue, 5 May 2026 10:16:25 -0300 Subject: [PATCH] Bug 42385: Use Koha::Policy::Circulation everywhere Replaces all calls to _GetCircControlBranch with Koha::Policy::Circulation->circ_control_library in: - C4::Circulation (10 call sites) - Koha::Item (1 call site) - Koha::Recall (1 call site) - reserve/request.pl (1 call site) - svc/letters/preview (2 call sites) Test plan: 1. Apply patch 2. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Policy/Circulation.t \ t/db_dependent/Circulation.t \ t/db_dependent/Koha/Items.t \ t/db_dependent/Koha/Recall.t => SUCCESS: Tests pass! 3. Sign off :-D Signed-off-by: Alex Carver [Acerock7] Signed-off-by: Martin Renvoize Signed-off-by: Pedro Amorim --- C4/Circulation.pm | 21 +++++++++++---------- Koha/Item.pm | 3 ++- Koha/Recall.pm | 2 +- reserve/request.pl | 5 +++-- svc/letters/preview | 5 +++-- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 66f2ffcae1..05a3cd07be 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -82,6 +82,7 @@ use Try::Tiny; use JSON; use C4::Context; +use Koha::Policy::Circulation; use C4::Reserves qw( CheckReserves CanItemBeReserved MoveReserve ModReserve ModReserveMinusPriority IsAvailableForItemLevelRequest ); use C4::Biblio qw( UpdateTotalIssues ); @@ -436,7 +437,7 @@ sub TooMany { my $cat_borrower = $patron->categorycode; # Get which branchcode we need - my $branch = _GetCircControlBranch( $item, $patron ); + my $branch = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $type = $item->effective_itemtype; my ( $type_object, $parent_type, $parent_maxissueqty_rule ); @@ -860,7 +861,7 @@ sub CanBookBeIssued { my $dbh = C4::Context->dbh; my $patron_unblessed = $patron->unblessed; - my $circ_library = Koha::Libraries->find( _GetCircControlBranch( $item_object, $patron ) ); + my $circ_library = Koha::Libraries->find( Koha::Policy::Circulation->circ_control_library( $item_object, $patron ) ); my $now = dt_from_string(); @@ -1538,7 +1539,7 @@ Missing POD for checkHighHolds. sub checkHighHolds { my ( $item, $patron ) = @_; - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $return_data = { exceeded => 0, @@ -1728,7 +1729,7 @@ sub AddIssue { or return; # if we don't get an Item, abort. my $item_unblessed = $item_object->unblessed; - my $branchcode = _GetCircControlBranch( $item_object, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item_object, $patron ); # get actual issuing if there is one my $actualissue = $item_object->checkout; @@ -3118,7 +3119,7 @@ within the grace period). sub _calculate_new_debar_dt { my ( $patron, $item, $dt_due, $return_date ) = @_; - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $circcontrol = C4::Context->preference('CircControl'); my $issuing_rule = Koha::CirculationRules->get_effective_rules( { @@ -3423,7 +3424,7 @@ sub CanBookBeRenewed { my $final_unseen_renewal = 0; # override_limit will override anything else except on_reserve - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); unless ($override_limit) { ( $auto_renew, $soonest ) = _CanBookBeAutoRenewed( @@ -3708,7 +3709,7 @@ sub AddRenewal { my $patron = Koha::Patrons->find($borrowernumber) or return; # FIXME Should do more than just return my $patron_unblessed = $patron->unblessed; - my $circ_library = Koha::Libraries->find( _GetCircControlBranch( $item_object, $patron ) ); + my $circ_library = Koha::Libraries->find( Koha::Policy::Circulation->circ_control_library( $item_object, $patron ) ); my $schema = Koha::Database->schema; $schema->txn_do( @@ -3983,7 +3984,7 @@ sub GetRenewCount { $unseencount = $data->{'unseen_renewals'} if $data->{'unseen_renewals'}; # $item and $borrower should be calculated - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $rules = Koha::CirculationRules->get_effective_rules( { @@ -4044,7 +4045,7 @@ sub GetSoonestRenewDate { my $dbh = C4::Context->dbh; - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $issuing_rule = Koha::CirculationRules->get_effective_rules( { categorycode => $patron->categorycode, @@ -4112,7 +4113,7 @@ sub GetLatestAutoRenewDate { return unless $item; my $dbh = C4::Context->dbh; - my $branchcode = _GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); my $circulation_rules = Koha::CirculationRules->get_effective_rules( { diff --git a/Koha/Item.pm b/Koha/Item.pm index 95ae6cbbdf..5e078ebd41 100644 --- a/Koha/Item.pm +++ b/Koha/Item.pm @@ -26,6 +26,7 @@ use Koha::DateUtils qw( dt_from_string output_pref ); use C4::Context; use C4::Circulation qw( barcodedecode GetBranchItemRule ); +use Koha::Policy::Circulation; use C4::Reserves; use C4::ClassSource qw( GetClassSort ); use C4::Log qw( logaction ); @@ -2664,7 +2665,7 @@ sub can_be_recalled { my $branchcode = C4::Context->userenv->{'branch'}; if ($patron) { - $branchcode = C4::Circulation::_GetCircControlBranch( $self, $patron ); + $branchcode = Koha::Policy::Circulation->circ_control_library( $self, $patron ); } # Check the circulation rule for each relevant itemtype for this item diff --git a/Koha/Recall.pm b/Koha/Recall.pm index 5ccb4b18eb..34f848446a 100644 --- a/Koha/Recall.pm +++ b/Koha/Recall.pm @@ -262,7 +262,7 @@ sub calc_expirationdate { my $branchcode = $self->patron->branchcode; if ($item) { - $branchcode = C4::Circulation::_GetCircControlBranch( $item, $self->patron ); + $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $self->patron ); } my $rule = Koha::CirculationRules->get_effective_rule( diff --git a/reserve/request.pl b/reserve/request.pl index 74527d6e31..a19ddbba5e 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -37,7 +37,8 @@ use C4::Reserves use C4::Items qw( get_hostitemnumbers_of ); use C4::Koha qw( getitemtypeimagelocation ); use C4::Serials qw( CountSubscriptionFromBiblionumber ); -use C4::Circulation qw( _GetCircControlBranch GetBranchItemRule ); +use C4::Circulation qw( GetBranchItemRule ); +use Koha::Policy::Circulation; use Koha::DateUtils qw( dt_from_string ); use C4::Search qw( enabled_staff_search_views ); @@ -544,7 +545,7 @@ if ( ( $findborrower && $borrowernumber_hold || $findclub && $club_hold ) } if ($patron) { - my $branch = _GetCircControlBranch( $item_object, $patron ); + my $branch = Koha::Policy::Circulation->circ_control_library( $item_object, $patron ); my $branchitemrule = GetBranchItemRule( $branch, $item->{'itype'} ); diff --git a/svc/letters/preview b/svc/letters/preview index 86046327be..a0a021c096 100755 --- a/svc/letters/preview +++ b/svc/letters/preview @@ -23,6 +23,7 @@ use C4::Auth qw( get_template_and_user ); use C4::Context; use C4::Output qw( output_html_with_http_headers ); use C4::Circulation; +use Koha::Policy::Circulation; use C4::Letters; use Koha::Checkouts; use Koha::Items; @@ -153,7 +154,7 @@ if ( $code eq 'CHECKIN' ) { my $checkout = Koha::Checkouts->find( { itemnumber => $item->itemnumber } ); if ($checkout) { my $patron = Koha::Patrons->find( $checkout->borrowernumber ); - my $branchcode = C4::Circulation::_GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); $letter_params = { tables => { issues => $item->itemnumber, @@ -174,7 +175,7 @@ if ( $code eq 'CHECKIN' ) { my $item = Koha::Items->find( { barcode => $barcode } ); my $patron = Koha::Patrons->find($borrowernumber); if ( $item and $patron ) { - my $branchcode = C4::Circulation::_GetCircControlBranch( $item, $patron ); + my $branchcode = Koha::Policy::Circulation->circ_control_library( $item, $patron ); $letter_params = { tables => { issues => $item->itemnumber,