From 24f3a5031d81bf8c468b5c13a6a29d78a43ca10c Mon Sep 17 00:00:00 2001 From: Baptiste Wojtkowski Date: Thu, 11 Jul 2024 12:13:01 +0200 Subject: [PATCH] Bug 18086: Fix issues with NULL for branches See https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=18086#c27 for more context : This addresses the third point of this comment. A few tests do not pass because they test the behaviour of functions concerning branches on an empty string, which is now forbidden due to the foreign key constraint. I propose changes for branches and for categories in two different patches, changing the behaviour of functions so that they interprete NULL in db as the default rule. --- C4/Overdues.pm | 5 +++++ t/db_dependent/Overdues.t | 22 ++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index 7200b88..115df38 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -684,6 +684,10 @@ sub GetBranchcodesWithOverdueRules { WHERE delay1 IS NOT NULL ORDER BY branchcode |); + unless ( $branchcodes->[0] ) { + my $default_rule = Koha::OverdueRules->search({ branchcode => undef }, {})->next; + return Koha::Libraries->search({}, { order_by => 'branchname' })->get_column('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'); @@ -766,6 +770,7 @@ sub GetOverduesForBranch { sub GetOverdueMessageTransportTypes { my ( $branchcode, $categorycode, $letternumber ) = @_; return unless $categorycode and $letternumber; + $branchcode = undef if ($branchcode eq ''); my $rule = Koha::OverdueRules->search( { branchcode => $branchcode, diff --git a/t/db_dependent/Overdues.t b/t/db_dependent/Overdues.t index af719fa..599ceec 100755 --- a/t/db_dependent/Overdues.t +++ b/t/db_dependent/Overdues.t @@ -26,17 +26,35 @@ $dbh->do(q|DELETE FROM message_queue|); $dbh->do(q|DELETE FROM message_transport_types|); $dbh->do(q|DELETE FROM overduerules|); $dbh->do(q|DELETE FROM overduerules_transport_types|); +$dbh->do(q|DELETE FROM branches|); + $dbh->do(q| INSERT INTO message_transport_types( message_transport_type ) VALUES ('email'), ('phone'), ('print'), ('sms') |); +$builder->build({ + source => 'Branch', + value => { + branchcode => 'CPL' + } +}); + +$builder->build({ + source => 'Branch', + value => { + branchcode => 'MPL' + } +}); + + + $dbh->do(q| INSERT INTO overduerules ( overduerules_id, branchcode, categorycode ) VALUES (1, 'CPL', 'PT'), (2, 'CPL', 'YA'), - (3, '', 'PT'), - (4, '', 'YA') + (3, NULL, 'PT'), + (4, NULL, 'YA') |); $dbh->do(q|INSERT INTO overduerules_transport_types (overduerules_id, letternumber, message_transport_type) VALUES -- 2.43.0