|
Line 0
Link Here
|
|
|
1 |
$DBversion = 'XXX'; # will be replaced by the RM |
| 2 |
if( CheckVersion( $DBversion ) ) { |
| 3 |
if ( !column_exists( 'course_items', 'itype_enabled' ) ) { |
| 4 |
$dbh->do(q{ |
| 5 |
ALTER TABLE course_items |
| 6 |
ADD COLUMN itype_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER itype, |
| 7 |
ADD COLUMN ccode_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER ccode, |
| 8 |
ADD COLUMN holdingbranch_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER holdingbranch, |
| 9 |
ADD COLUMN location_enabled tinyint(1) NOT NULL DEFAULT 0 AFTER location, |
| 10 |
ADD COLUMN itype_storage varchar(10) DEFAULT NULL AFTER itype_enabled, |
| 11 |
ADD COLUMN ccode_storage varchar(80) DEFAULT NULL AFTER ccode_enabled, |
| 12 |
ADD COLUMN holdingbranch_storage varchar(10) DEFAULT NULL AFTER ccode_enabled, |
| 13 |
ADD COLUMN location_storage varchar(80) DEFAULT NULL AFTER location_enabled, |
| 14 |
}); |
| 15 |
|
| 16 |
my $item_level_items = C4::Context->preference('item-level_itypes'); |
| 17 |
my $itype_field = $item_level_items ? 'i.itype' : 'bi.itemtype'; |
| 18 |
$dbh->do(q{ |
| 19 |
UPDATE course_items ci |
| 20 |
LEFT JOIN items i USING ( itemnumber ) |
| 21 |
LEFT JOIN biblioitems bi USING ( biblioitemnumber ) |
| 22 |
SET |
| 23 |
|
| 24 |
-- Assume the column is enabled if the course item is active and i.itype/bi.itemtype is set, |
| 25 |
-- or if the course item is not enabled and ci.itype is set |
| 26 |
ci.itype_enabled = IF( ci.enabled = 'yes', IF( $itype_field IS NULL, 0, 1 ), IF( ci.itype IS NULL, 0, 1 ) ), |
| 27 |
ci.ccode_enabled = IF( ci.enabled = 'yes', IF( i.ccode IS NULL, 0, 1 ), IF( ci.ccode IS NULL, 0, 1 ) ), |
| 28 |
ci.holdingbranch_enabled = IF( ci.enabled = 'yes', IF( i.holdingbranch IS NULL, 0, 1 ), IF( ci.holdingbranch IS NULL, 0, 1 ) ), |
| 29 |
ci.location_enabled = IF( ci.enabled = 'yes', IF( i.location IS NULL, 0, 1 ), IF( ci.location IS NULL, 0, 1 ) ), |
| 30 |
|
| 31 |
-- If the course item is enabled, copy the value from the item. |
| 32 |
-- If the course item is not enabled, keep the existing value |
| 33 |
ci.itype = IF( ci.enabled = 'yes', $itype_field, ci.itype ), |
| 34 |
ci.ccode = IF( ci.enabled = 'yes', i.ccode, ci.ccode ), |
| 35 |
ci.holdingbranch = IF( ci.enabled = 'yes', i.holdingbranch, ci.holdingbranch ), |
| 36 |
ci.location = IF( ci.enabled = 'yes', i.location, ci.location ), |
| 37 |
|
| 38 |
-- If the course is enabled, copy the value from the item to storage. |
| 39 |
-- If it is not enabled, copy the value from the course item to storage |
| 40 |
ci.itype_storage = IF( ci.enabled = 'no', $itype_field, ci.itype ), |
| 41 |
ci.ccode_storage = IF( ci.enabled = 'no', i.ccode, ci.ccode ), |
| 42 |
ci.holdingbranch_storage = IF( ci.enabled = 'no', i.holdingbranch, ci.holdingbranch ), |
| 43 |
ci.location_storage = IF( ci.enabled = 'no', i.location, ci.location ); |
| 44 |
}); |
| 45 |
|
| 46 |
# Clean up the storage columns |
| 47 |
$dbh->do(q{ |
| 48 |
UPDATE course_items SET |
| 49 |
itype_storage = NULL, |
| 50 |
ccode_storage = NULL, |
| 51 |
holdingbranch_storage = NULL, |
| 52 |
location_storage = NULL |
| 53 |
WHERE enabled = 'no'; |
| 54 |
}); |
| 55 |
|
| 56 |
# Clean up the course enabled value columns |
| 57 |
$dbh->do(q{ |
| 58 |
UPDATE course_items SET |
| 59 |
itype = IF( itype_enabled = 'no', NULL, itype ), |
| 60 |
ccode = IF( ccode_enabled = 'no', NULL, ccode ), |
| 61 |
holdingbranch = IF( holdingbranch_enabled = 'no', NULL, holdingbranch ), |
| 62 |
location = IF( location_enabled = 'no', NULL, location ) |
| 63 |
WHERE enabled = 'no'; |
| 64 |
}); |
| 65 |
} |
| 66 |
|
| 67 |
SetVersion( $DBversion ); |
| 68 |
print "Upgrade to $DBversion done (Bug 23727 - Editing course reserve items is broken)\n"; |
| 69 |
} |