1 $DBversion = 'XXX'; # will be replaced by the RM
2 if( CheckVersion( $DBversion ) ) {
3 if ( !column_exists( 'course_items', 'itype_enabled' ) ) {
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
16 my $item_level_items = C4::Context->preference('item-level_itypes');
17 my $itype_field = $item_level_items ? 'i.itype' : 'bi.itemtype';
19 UPDATE course_items ci
20 LEFT JOIN items i USING ( itemnumber )
21 LEFT JOIN biblioitems bi USING ( biblioitemnumber )
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 ) ),
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 ),
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 );
46 # Clean up the storage columns
48 UPDATE course_items SET
51 holdingbranch_storage = NULL,
52 location_storage = NULL
56 # Clean up the course enabled value columns
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 )
67 SetVersion( $DBversion );
68 print "Upgrade to $DBversion done (Bug 23727 - Editing course reserve items is broken)\n";