Koha/installer/data/mysql/db_revs/220600020.pl
2022-10-11 09:08:56 -03:00

54 lines
2 KiB
Perl
Executable file

use Modern::Perl;
return {
bug_number => "31086",
description => "Do not allow null values in branchcodes for reserves",
up => sub {
my ($args) = @_;
my ($dbh, $out) = @$args{qw(dbh out)};
my $sth = $dbh->prepare(q{
SELECT borrowernumber, biblionumber
FROM reserves
WHERE branchcode IS NULL;
});
$sth->execute;
my $holds_no_branch = $sth->fetchall_arrayref( {} );
if ( scalar @{$holds_no_branch} > 0 ) {
say $out "Holds with no branchcode were found and will be updated to the first branch in the system";
foreach my $hnb ( @{$holds_no_branch} ) {
say $out "Please review hold for borrowernumber "
. $hnb->{borrowernumber}
. " on biblionumber "
. $hnb->{biblionumber}
. " to correct pickup branch if necessary";
}
}
# Ensure we have no NULL's in the branchcode field
$dbh->do(q{
UPDATE reserves SET branchcode = ( SELECT branchcode FROM branches LIMIT 1) WHERE branchcode IS NULL;
});
# Remove FOREIGN KEY CONSTRAINT
if ( foreign_key_exists( 'reserves', 'reserves_ibfk_4' ) ) {
$dbh->do(q{
ALTER TABLE reserves DROP FOREIGN KEY reserves_ibfk_4;
});
}
# Set the NOT NULL configuration
$dbh->do(q{
ALTER TABLE reserves
MODIFY COLUMN `branchcode` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'foreign key from the branches table defining which branch the patron wishes to pick this hold up at'
});
# Replace the constraint
$dbh->do(q{
ALTER TABLE reserves ADD CONSTRAINT reserves_ibfk_4 FOREIGN KEY (branchcode) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE;
});
# Print useful stuff here
say $out "Removed NULL option from branchcode for reserves";
},
};