@@ -, +, @@ ARTICLE_REQUEST account debit type --- .../data/mysql/atomicupdate/bug_27946.perl | 29 +++++++++++++++++++ installer/data/mysql/kohastructure.sql | 5 +++- .../mysql/mandatory/account_debit_types.sql | 3 +- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_27946.perl --- a/installer/data/mysql/atomicupdate/bug_27946.perl +++ a/installer/data/mysql/atomicupdate/bug_27946.perl @@ -0,0 +1,29 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + # you can use $dbh here like: + # $dbh->do( "ALTER TABLE biblio ADD COLUMN badtaste int" ); + + # or perform some test and warn + if( !column_exists( 'categories', 'article_request_fee' ) ) { + $dbh->do(q{ + ALTER TABLE `categories` ADD COLUMN `article_request_fee` decimal(28,6) DEFAULT NULL COMMENT 'Cost for article scan request' AFTER `exclude_from_local_holds_priority` + }); + } + + if( !column_exists( 'article_requests', 'debit_line_id' ) ) { + $dbh->do(q{ + ALTER TABLE `article_requests` ADD COLUMN `debit_line_id` int(11) DEFAULT NULL COMMENT 'Debit line with cost for article scan request' AFTER `notes` + }); + $dbh->do(q{ + ALTER TABLE `article_requests` ADD CONSTRAINT `article_requests_ibfk_5` FOREIGN KEY (`debit_line_id`) REFERENCES `accountlines` (`accountlines_id`) ON DELETE SET NULL ON UPDATE CASCADE + }); + } + + $dbh->do(q{ + INSERT IGNORE INTO account_debit_types ( code, description, can_be_invoiced, can_be_sold, default_amount, is_system ) VALUES + ('ARTICLE_REQUEST', 'Article scan request fee', 0, 0, NULL, 1); + }); + + # Always end with this (adjust the bug info) + NewVersion( $DBversion, 27946, "Add article_request_fee to categories table, add debit_line_id column to article_requests table and add ARTICLE_REQUEST as a debit type"); +} --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -753,6 +753,7 @@ CREATE TABLE `article_requests` ( `notes` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, `format` enum('PHOTOCOPY', 'SCAN') NOT NULL DEFAULT 'PHOTOCOPY', `urls` MEDIUMTEXT, + `debit_line_id` int(11) DEFAULT NULL COMMENT 'Debit line with cost for article scan request', `created_on` timestamp NULL DEFAULT NULL COMMENT 'Be careful with two timestamps in one table not allowing NULL', `updated_on` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), @@ -763,7 +764,8 @@ CREATE TABLE `article_requests` ( CONSTRAINT `article_requests_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `article_requests_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `article_requests_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE CASCADE, - CONSTRAINT `article_requests_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE + CONSTRAINT `article_requests_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `article_requests_ibfk_5` FOREIGN KEY (`debit_line_id`) REFERENCES `accountlines` (`accountlines_id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1621,6 +1623,7 @@ CREATE TABLE `categories` ( `min_password_length` smallint(6) DEFAULT NULL COMMENT 'set minimum password length for patrons in this category', `require_strong_password` tinyint(1) DEFAULT NULL COMMENT 'set required password strength for patrons in this category', `exclude_from_local_holds_priority` tinyint(1) DEFAULT NULL COMMENT 'Exclude patrons of this category from local holds priority', + `article_request_fee` decimal(28,6) DEFAULT NULL COMMENT 'Cost for article scan request', PRIMARY KEY (`categorycode`), UNIQUE KEY `categorycode` (`categorycode`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; --- a/installer/data/mysql/mandatory/account_debit_types.sql +++ a/installer/data/mysql/mandatory/account_debit_types.sql @@ -13,4 +13,5 @@ INSERT INTO account_debit_types ( code, description, can_be_invoiced, can_be_sol ('RENT_DAILY_RENEW', 'Renewal of daily rental item', 0, 0, NULL, 1), ('RESERVE', 'Hold fee', 0, 0, NULL, 1), ('RESERVE_EXPIRED', 'Hold waiting too long', 0, 0, NULL, 1), -('VOID', 'Credit has been voided', 0, 0, NULL, 1); +('VOID', 'Credit has been voided', 0, 0, NULL, 1), +('ARTICLE_REQUEST', 'Article scan request fee', 0, 0, NULL, 1); --