Koha/installer/data/mysql/db_revs/230600036.pl
Tomas Cohen Arazi d19cfb44ae
Bug 30719: DBRev 23.06.00.036
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-10-17 14:45:26 -03:00

132 lines
5 KiB
Perl
Executable file

use Modern::Perl;
return {
bug_number => "30719",
description => "Add ability to create batch ILL requests",
up => sub {
my ($args) = @_;
my ( $dbh, $out ) = @$args{qw(dbh out)};
unless ( TableExists('illbatch_statuses') ) {
$dbh->do(
q{
CREATE TABLE `illbatch_statuses` (
`id` int(11) NOT NULL auto_increment COMMENT "Status ID",
`name` varchar(100) NOT NULL COMMENT "Name of status",
`code` varchar(20) NOT NULL COMMENT "Unique, immutable code for status",
`is_system` tinyint(1) COMMENT "Is this status required for system operation",
PRIMARY KEY(`id`),
UNIQUE KEY `u_illbatchstatuses__code` (`code`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
}
);
say $out "Added new table 'illbatch_statuses'";
}
unless ( TableExists('illbatches') ) {
$dbh->do(
q{
CREATE TABLE `illbatches` (
`ill_batch_id` int(11) NOT NULL auto_increment COMMENT "Batch ID",
`name` varchar(100) NOT NULL COMMENT "Unique name of batch",
`backend` varchar(20) NOT NULL COMMENT "Name of batch backend",
`patron_id` int(11) NULL DEFAULT NULL COMMENT "Patron associated with batch",
`library_id` varchar(50) NULL DEFAULT NULL COMMENT "Branch associated with batch",
`status_code` varchar(20) NULL DEFAULT NULL COMMENT "Status of batch",
PRIMARY KEY (`ill_batch_id`),
UNIQUE KEY `u_illbatches__name` (`name`),
CONSTRAINT `illbatches_bnfk` FOREIGN KEY (`patron_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illbatches_bcfk` FOREIGN KEY (`library_id`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `illbatches_sfk` FOREIGN KEY (`status_code`) REFERENCES `illbatch_statuses` (`code`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
}
);
say $out "Added new table 'illbatches'";
}
unless ( column_exists( 'illrequests', 'batch_id' ) ) {
$dbh->do(
q{
ALTER TABLE `illrequests`
ADD COLUMN `batch_id` int(11) COMMENT 'Optional ID of batch that this request belongs to' AFTER backend
}
);
say $out "Added column 'illrequests.batch_id'";
}
unless ( foreign_key_exists( 'illrequests', 'illrequests_ibfk' ) ) {
$dbh->do(
q{
ALTER TABLE `illrequests`
ADD CONSTRAINT `illrequests_ibfk` FOREIGN KEY (`batch_id`) REFERENCES `illbatches` (`ill_batch_id`) ON DELETE SET NULL ON UPDATE CASCADE
}
);
}
# Get any existing NEW batch status
my ($new_status) = $dbh->selectrow_array(
q|
SELECT name FROM illbatch_statuses WHERE code='NEW';
|
);
unless ($new_status) {
$dbh->do(
qq{
INSERT INTO illbatch_statuses ( name, code, is_system ) VALUES ('New', 'NEW', '1')
}
);
say $out "Added new ILL batch status 'NEW'";
}
# Get any existing IN_PROGRESS batch status
my ($in_progress_status) = $dbh->selectrow_array(
q|
SELECT name FROM illbatch_statuses WHERE code='IN_PROGRESS';
|
);
unless ($in_progress_status) {
$dbh->do(
qq{
INSERT INTO illbatch_statuses( name, code, is_system ) VALUES( 'In progress', 'IN_PROGRESS', '1' )
}
);
say $out "Added new ILL batch status 'IN_PROGRESS'";
}
# Get any existing COMPLETED batch status
my ($completed_status) = $dbh->selectrow_array(
q|
SELECT name FROM illbatch_statuses WHERE code='COMPLETED';
|
);
unless ($completed_status) {
$dbh->do(
qq{
INSERT INTO illbatch_statuses( name, code, is_system ) VALUES( 'Completed', 'COMPLETED', '1' )
}
);
say $out "Added new ILL batch status 'COMPLETED'";
}
# Get any existing UNKNOWN batch status
my ($unknown_status) = $dbh->selectrow_array(
q|
SELECT name FROM illbatch_statuses WHERE code='UNKNOWN';
|
);
unless ($unknown_status) {
$dbh->do(
qq{
INSERT INTO illbatch_statuses( name, code, is_system ) VALUES( 'Unknown', 'UNKNOWN', '1' )
}
);
say $out "Added new ILL batch status 'UNKNOWN'";
}
},
};