Bug 23727: Add new columns
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
96bc0afee2
commit
e08eae728c
2 changed files with 77 additions and 0 deletions
69
installer/data/mysql/atomicupdate/bug_23727.perl
Normal file
69
installer/data/mysql/atomicupdate/bug_23727.perl
Normal file
|
@ -0,0 +1,69 @@
|
|||
$DBversion = 'XXX'; # will be replaced by the RM
|
||||
if( CheckVersion( $DBversion ) ) {
|
||||
if ( !column_exists( 'course_items', 'itype_enabled' ) ) {
|
||||
$dbh->do(q{
|
||||
ALTER TABLE course_items
|
||||
ADD COLUMN itype_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER itype,
|
||||
ADD COLUMN ccode_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER ccode,
|
||||
ADD COLUMN holdingbranch_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER holdingbranch,
|
||||
ADD COLUMN location_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER location,
|
||||
ADD COLUMN itype_storage varchar(10) DEFAULT NULL AFTER itype_enabled,
|
||||
ADD COLUMN ccode_storage varchar(80) DEFAULT NULL AFTER ccode_enabled,
|
||||
ADD COLUMN holdingbranch_storage varchar(10) DEFAULT NULL AFTER ccode_enabled,
|
||||
ADD COLUMN location_storage varchar(80) DEFAULT NULL AFTER location_enabled
|
||||
});
|
||||
|
||||
my $item_level_items = C4::Context->preference('item-level_itypes');
|
||||
my $itype_field = $item_level_items ? 'i.itype' : 'bi.itemtype';
|
||||
$dbh->do(qq{
|
||||
UPDATE course_items ci
|
||||
LEFT JOIN items i USING ( itemnumber )
|
||||
LEFT JOIN biblioitems bi USING ( biblioitemnumber )
|
||||
SET
|
||||
|
||||
-- Assume the column is enabled if the course item is active and i.itype/bi.itemtype is set,
|
||||
-- or if the course item is not enabled and ci.itype is set
|
||||
ci.itype_enabled = IF( ci.enabled = 'yes', IF( $itype_field IS NULL, 0, 1 ), IF( ci.itype IS NULL, 0, 1 ) ),
|
||||
ci.ccode_enabled = IF( ci.enabled = 'yes', IF( i.ccode IS NULL, 0, 1 ), IF( ci.ccode IS NULL, 0, 1 ) ),
|
||||
ci.holdingbranch_enabled = IF( ci.enabled = 'yes', IF( i.holdingbranch IS NULL, 0, 1 ), IF( ci.holdingbranch IS NULL, 0, 1 ) ),
|
||||
ci.location_enabled = IF( ci.enabled = 'yes', IF( i.location IS NULL, 0, 1 ), IF( ci.location IS NULL, 0, 1 ) ),
|
||||
|
||||
-- If the course item is enabled, copy the value from the item.
|
||||
-- If the course item is not enabled, keep the existing value
|
||||
ci.itype = IF( ci.enabled = 'yes', $itype_field, ci.itype ),
|
||||
ci.ccode = IF( ci.enabled = 'yes', i.ccode, ci.ccode ),
|
||||
ci.holdingbranch = IF( ci.enabled = 'yes', i.holdingbranch, ci.holdingbranch ),
|
||||
ci.location = IF( ci.enabled = 'yes', i.location, ci.location ),
|
||||
|
||||
-- If the course is enabled, copy the value from the item to storage.
|
||||
-- If it is not enabled, copy the value from the course item to storage
|
||||
ci.itype_storage = IF( ci.enabled = 'no', $itype_field, ci.itype ),
|
||||
ci.ccode_storage = IF( ci.enabled = 'no', i.ccode, ci.ccode ),
|
||||
ci.holdingbranch_storage = IF( ci.enabled = 'no', i.holdingbranch, ci.holdingbranch ),
|
||||
ci.location_storage = IF( ci.enabled = 'no', i.location, ci.location );
|
||||
});
|
||||
|
||||
# Clean up the storage columns
|
||||
$dbh->do(q{
|
||||
UPDATE course_items SET
|
||||
itype_storage = NULL,
|
||||
ccode_storage = NULL,
|
||||
holdingbranch_storage = NULL,
|
||||
location_storage = NULL
|
||||
WHERE enabled = 'no';
|
||||
});
|
||||
|
||||
# Clean up the course enabled value columns
|
||||
$dbh->do(q{
|
||||
UPDATE course_items SET
|
||||
itype = IF( itype_enabled = 'no', NULL, itype ),
|
||||
ccode = IF( ccode_enabled = 'no', NULL, ccode ),
|
||||
holdingbranch = IF( holdingbranch_enabled = 'no', NULL, holdingbranch ),
|
||||
location = IF( location_enabled = 'no', NULL, location )
|
||||
WHERE enabled = 'no';
|
||||
});
|
||||
}
|
||||
|
||||
SetVersion( $DBversion );
|
||||
print "Upgrade to $DBversion done (Bug 23727 - Editing course reserve items is broken)\n";
|
||||
}
|
|
@ -3818,9 +3818,17 @@ CREATE TABLE `course_items` (
|
|||
`ci_id` int(11) NOT NULL AUTO_INCREMENT, -- course item id
|
||||
`itemnumber` int(11) NOT NULL, -- items.itemnumber for the item on reserve
|
||||
`itype` varchar(10) DEFAULT NULL, -- new itemtype for the item to have while on reserve (optional)
|
||||
`itype_enabled` tinyint(1) NOT NULL DEFAULT 0, -- indicates if itype should be changed while on course reserve
|
||||
`itype_storage` varchar(10) DEFAULT NULL, -- a place to store the itype when item is on course reserve
|
||||
`ccode` varchar(80) DEFAULT NULL, -- new category code for the item to have while on reserve (optional)
|
||||
`ccode_enabled` tinyint(1) NOT NULL DEFAULT 0, -- indicates if ccode should be changed while on course reserve
|
||||
`ccode_storage` varchar(80) DEFAULT NULL, -- a place to store the ccode when item is on course reserve
|
||||
`holdingbranch` varchar(10) DEFAULT NULL, -- new holding branch for the item to have while on reserve (optional)
|
||||
`holdingbranch_enabled` tinyint(1) NOT NULL DEFAULT 0, -- indicates if itype should be changed while on course reserve
|
||||
`holdingbranch_storage` varchar(10) DEFAULT NULL, -- a place to store the holdingbranch when item is on course reserve
|
||||
`location` varchar(80) DEFAULT NULL, -- new shelving location for the item to have while on reseve (optional)
|
||||
`location_enabled` tinyint(1) NOT NULL DEFAULT 0, -- indicates if itype should be changed while on course reserve
|
||||
`location_storage` varchar(80) DEFAULT NULL, -- a place to store the location when the item is on course reserve
|
||||
`enabled` enum('yes','no') NOT NULL DEFAULT 'no', -- if at least one enabled course has this item on reseve, this field will be 'yes', otherwise it will be 'no'
|
||||
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`ci_id`),
|
||||
|
|
Loading…
Reference in a new issue