From ca6361e647ce9f9ad32fbcbe2975885501278a22 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 8 Aug 2024 10:34:22 +0100 Subject: [PATCH] Bug 10190: Update GetBranchcodesWithOverdueRules to use CirculationRules This patch updates the C4::Overdues method GetBranchecodesWithOverdueRules to refer to the new location of these rules in the circulation rules table. We also update the unit tests to move the mocked data into the right location. We could perhaps migrate this method in Koha::CirculationRules at a later date? Sponsored-by: Glasgow Colleges Library Group --- C4/Overdues.pm | 23 +++++++++--------- t/db_dependent/Overdues.t | 50 ++++++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index a2494f7f1e9..8c0d3b149f3 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -676,18 +676,19 @@ returns a list of branch codes for branches with overdue rules defined. =cut sub GetBranchcodesWithOverdueRules { - my $dbh = C4::Context->dbh; - my $branchcodes = $dbh->selectcol_arrayref(q| - SELECT DISTINCT(branchcode) - FROM overduerules - WHERE delay1 IS NOT NULL - ORDER BY branchcode - |); - if ( defined $branchcodes->[0] && $branchcodes->[0] eq '' ) { - # If a default rule exists, all branches should be returned - return Koha::Libraries->search({}, { order_by => 'branchname' })->get_column('branchcode'); + my @branchcodes = Koha::CirculationRules->search( + { rule_name => 'overdue_1_delay' }, + { + order_by => 'branchcode', + columns => ['branchcode'], + distinct => 1, + } + )->get_column('branchcode'); + if ( !$branchcodes[0] ) { + @branchcodes = Koha::Libraries->search( {}, { order_by => 'branchname' } )->get_column('branchcode'); } - return @$branchcodes; + + return @branchcodes; } =head2 GetOverduesForBranch diff --git a/t/db_dependent/Overdues.t b/t/db_dependent/Overdues.t index af719faf76f..78be653025d 100755 --- a/t/db_dependent/Overdues.t +++ b/t/db_dependent/Overdues.t @@ -83,53 +83,59 @@ $mtts = C4::Overdues::GetOverdueMessageTransportTypes('', 'PT', 3); is_deeply( $mtts, ['print', 'sms', 'email'], 'GetOverdueMessageTransportTypes: third overdue is by print, sms and email for PT (default). With print in first.' ); # Test GetBranchcodesWithOverdueRules -$dbh->do(q|DELETE FROM overduerules|); +$dbh->do(q|DELETE FROM circulation_rules WHERE rule_name LIKE 'overdue_%' |); my @overdue_branches; warnings_are { @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules(); } [], "No warnings thrown when no overdue rules exist"; -$dbh->do(q| - INSERT INTO overduerules - ( branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3 ) +$dbh->do( + q| + INSERT INTO circulation_rules + ( branchcode, categorycode, itemtype, rule_name, rule_value ) VALUES - ( '', '', 1, 'LETTER_CODE1', 1, 5, 'LETTER_CODE2', 1, 10, 'LETTER_CODE3', 1 ) -|); + ( NULL, NULL, NULL, 'overdue_1_delay', 1 ) +| +); my @branchcodes = map { $_->branchcode } Koha::Libraries->search->as_list; @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules(); is_deeply( [ sort @overdue_branches ], [ sort @branchcodes ], 'If a default rule exists, all branches should be returned' ); -$dbh->do(q| - INSERT INTO overduerules - ( branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3 ) +$dbh->do( + q| + INSERT INTO circulation_rules + ( branchcode, categorycode, itemtype, rule_name, rule_value ) VALUES - ( 'CPL', '', 1, 'LETTER_CODE1', 1, 5, 'LETTER_CODE2', 1, 10, 'LETTER_CODE3', 1 ) -|); + ( 'CPL', NULL, NULL, 'overdue_1_delay', 1 ) +| +); @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules(); is_deeply( [ sort @overdue_branches ], [ sort @branchcodes ], 'If a default rule exists and a specific rule exists, all branches should be returned' ); -$dbh->do(q|DELETE FROM overduerules|); +$dbh->do(q|DELETE FROM circulation_rules WHERE rule_name LIKE 'overdue_%' |); $dbh->do(q| - INSERT INTO overduerules - ( branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3 ) + INSERT INTO circulation_rules + ( branchcode, categorycode, itemtype, rule_name, rule_value ) VALUES - ( 'CPL', '', 1, 'LETTER_CODE1', 1, 5, 'LETTER_CODE2', 1, 10, 'LETTER_CODE3', 1 ) + ( 'CPL', NULL, NULL, 'overdue_1_delay', 1 ) |); @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules(); is_deeply( \@overdue_branches, ['CPL'] , 'If only a specific rule exist, only 1 branch should be returned' ); -$dbh->do(q|DELETE FROM overduerules|); -$dbh->do(q| - INSERT INTO overduerules - ( branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3 ) +$dbh->do(q|DELETE FROM circulation_rules WHERE rule_name LIKE 'overdue_%' |); +$dbh->do( + q| + INSERT INTO circulation_rules + ( branchcode, categorycode, itemtype, rule_name, rule_value ) VALUES - ( 'CPL', '', 1, 'LETTER_CODE1_CPL', 1, 5, 'LETTER_CODE2_CPL', 1, 10, 'LETTER_CODE3_CPL', 1 ), - ( 'MPL', '', 1, 'LETTER_CODE1_MPL', 1, 5, 'LETTER_CODE2_MPL', 1, 10, 'LETTER_CODE3_MPL', 1 ) -|); + ( 'CPL', NULL, NULL, 'overdue_1_delay', 1 ), + ( 'MPL', NULL, NULL, 'overdue_1_delay', 1 ) +| +); @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules(); is_deeply( \@overdue_branches, ['CPL', 'MPL'] , 'If only 2 specific rules exist, 2 branches should be returned' ); -- 2.46.0