From 0c74b730568ff9450d41ffdfb0afb6da22e70671 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 Signed-off-by: George Harkins --- C4/Overdues.pm | 26 ++++++++++++-------------- t/db_dependent/Overdues.t | 32 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index 4d6e50f27a8..fe4d9b46d82 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -687,21 +687,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 979f378a25f..a656b95ff0e 100755 --- a/t/db_dependent/Overdues.t +++ b/t/db_dependent/Overdues.t @@ -95,7 +95,7 @@ is_deeply( ); # 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(); } [], @@ -103,10 +103,10 @@ warnings_are { @overdue_branches = C4::Overdues::GetBranchcodesWithOverdueRules( $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 - ( '', '', 1, 'LETTER_CODE1', 1, 5, 'LETTER_CODE2', 1, 10, 'LETTER_CODE3', 1 ) + ( NULL, NULL, NULL, 'overdue_1_delay', 1 ) | ); @@ -120,10 +120,10 @@ is_deeply( $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 ) | ); @@ -133,27 +133,27 @@ is_deeply( '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|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_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 ) | ); -- 2.48.1