Merge commit 'kc/master'
[koha.git] / installer / data / mysql / updatedatabase.pl
index bb874ab..e9943a6 100755 (executable)
@@ -26,7 +26,7 @@ use C4::Installer;
 
 use MARC::Record;
 use MARC::File::XML ( BinaryEncoding => 'utf8' );
 
 use MARC::Record;
 use MARC::File::XML ( BinaryEncoding => 'utf8' );
+
 # FIXME - The user might be installing a new database, so can't rely
 # on /etc/koha.conf anyway.
 
 # FIXME - The user might be installing a new database, so can't rely
 # on /etc/koha.conf anyway.
 
@@ -59,7 +59,7 @@ $|=1; # flushes output
 my $DBversion = "3.00.00.001";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update virtualshelves table to
 my $DBversion = "3.00.00.001";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update virtualshelves table to
-    # 
+    #
     $dbh->do("ALTER TABLE `bookshelf` RENAME `virtualshelves`");
     $dbh->do("ALTER TABLE `shelfcontents` RENAME `virtualshelfcontents`");
     $dbh->do("ALTER TABLE `virtualshelfcontents` ADD `biblionumber` INT( 11 ) NOT NULL default '0' AFTER shelfnumber");
     $dbh->do("ALTER TABLE `bookshelf` RENAME `virtualshelves`");
     $dbh->do("ALTER TABLE `shelfcontents` RENAME `virtualshelfcontents`");
     $dbh->do("ALTER TABLE `virtualshelfcontents` ADD `biblionumber` INT( 11 ) NOT NULL default '0' AFTER shelfnumber");
@@ -104,7 +104,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.004";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.004";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("INSERT INTO `systempreferences` VALUES ('DebugLevel','2','set the level of error info sent to the browser. 0=none, 1=some, 2=most','0|1|2','Choice')");    
+    $dbh->do("INSERT INTO `systempreferences` VALUES ('DebugLevel','2','set the level of error info sent to the browser. 0=none, 1=some, 2=most','0|1|2','Choice')");
     print "Upgrade to $DBversion done (adding DebugLevel systempref, in 'Admin' tab)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (adding DebugLevel systempref, in 'Admin' tab)\n";
     SetVersion ($DBversion);
 }
@@ -158,12 +158,12 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # Create backups of call number columns
     # in case default migration needs to be customized
     #
     # Create backups of call number columns
     # in case default migration needs to be customized
     #
-    # UPGRADE NOTE: temp_upg_biblioitems_call_num should be dropped 
+    # UPGRADE NOTE: temp_upg_biblioitems_call_num should be dropped
     #               after call numbers have been transformed to the new structure
     #
     # Not bothering to do the same with deletedbiblioitems -- assume
     # default is good enough.
     #               after call numbers have been transformed to the new structure
     #
     # Not bothering to do the same with deletedbiblioitems -- assume
     # default is good enough.
-    $dbh->do("CREATE TABLE `temp_upg_biblioitems_call_num` AS 
+    $dbh->do("CREATE TABLE `temp_upg_biblioitems_call_num` AS
               SELECT `biblioitemnumber`, `biblionumber`,
                      `classification`, `dewey`, `subclass`,
                      `lcsort`, `ccode`
               SELECT `biblioitemnumber`, `biblionumber`,
                      `classification`, `dewey`, `subclass`,
                      `lcsort`, `ccode`
@@ -179,18 +179,18 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                                     ADD `totalissues` INT(10) AFTER `cn_sort`");
 
     # default mapping of call number columns:
                                     ADD `totalissues` INT(10) AFTER `cn_sort`");
 
     # default mapping of call number columns:
-    #   cn_class = concatentation of classification + dewey, 
+    #   cn_class = concatentation of classification + dewey,
     #              trimmed to fit -- assumes that most users do not
     #              populate both classification and dewey in a single record
     #   cn_item  = subclass
     #              trimmed to fit -- assumes that most users do not
     #              populate both classification and dewey in a single record
     #   cn_item  = subclass
-    #   cn_source = left null 
-    #   cn_sort = lcsort 
+    #   cn_source = left null
+    #   cn_sort = lcsort
     #
     # After upgrade, cn_sort will have to be set based on whatever
     # default call number scheme user sets as a preference.  Misc
     # script will be added at some point to do that.
     #
     #
     # After upgrade, cn_sort will have to be set based on whatever
     # default call number scheme user sets as a preference.  Misc
     # script will be added at some point to do that.
     #
-    $dbh->do("UPDATE `biblioitems` 
+    $dbh->do("UPDATE `biblioitems`
               SET cn_class = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
                     cn_item = subclass,
                     `cn_sort` = `lcsort`
               SET cn_class = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
                     cn_item = subclass,
                     `cn_sort` = `lcsort`
@@ -210,7 +210,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("UPDATE deletedbiblio SET datecreated = timestamp");
 
     # deletedbiblioitems changes
     $dbh->do("UPDATE deletedbiblio SET datecreated = timestamp");
 
     # deletedbiblioitems changes
-    $dbh->do("ALTER TABLE `deletedbiblioitems` 
+    $dbh->do("ALTER TABLE `deletedbiblioitems`
                         MODIFY `publicationyear` TEXT,
                         CHANGE `volumeddesc` `volumedesc` TEXT,
                         MODIFY `collectiontitle` MEDIUMTEXT DEFAULT NULL AFTER `volumedesc`,
                         MODIFY `publicationyear` TEXT,
                         CHANGE `volumeddesc` `volumedesc` TEXT,
                         MODIFY `collectiontitle` MEDIUMTEXT DEFAULT NULL AFTER `volumedesc`,
@@ -231,12 +231,12 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                         ADD KEY `publishercode` (`publishercode`)
                     ");
 
                         ADD KEY `publishercode` (`publishercode`)
                     ");
 
-    $dbh->do("UPDATE `deletedbiblioitems` 
+    $dbh->do("UPDATE `deletedbiblioitems`
                 SET `cn_class` = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
                `cn_item` = `subclass`,
                 `cn_sort` = `lcsort`
             ");
                 SET `cn_class` = SUBSTR(TRIM(CONCAT_WS(' ', `classification`, `dewey`)), 1, 30),
                `cn_item` = `subclass`,
                 `cn_sort` = `lcsort`
             ");
-    $dbh->do("ALTER TABLE `deletedbiblioitems` 
+    $dbh->do("ALTER TABLE `deletedbiblioitems`
                         DROP COLUMN `classification`,
                         DROP COLUMN `dewey`,
                         DROP COLUMN `subclass`,
                         DROP COLUMN `classification`,
                         DROP COLUMN `dewey`,
                         DROP COLUMN `subclass`,
@@ -245,7 +245,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
             ");
 
     # deleteditems changes
             ");
 
     # deleteditems changes
-    $dbh->do("ALTER TABLE `deleteditems` 
+    $dbh->do("ALTER TABLE `deleteditems`
                         MODIFY `barcode` VARCHAR(20) DEFAULT NULL,
                         MODIFY `price` DECIMAL(8,2) DEFAULT NULL,
                         MODIFY `replacementprice` DECIMAL(8,2) DEFAULT NULL,
                         MODIFY `barcode` VARCHAR(20) DEFAULT NULL,
                         MODIFY `price` DECIMAL(8,2) DEFAULT NULL,
                         MODIFY `replacementprice` DECIMAL(8,2) DEFAULT NULL,
@@ -281,13 +281,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                                 ADD `materials` VARCHAR(10) DEFAULT NULL AFTER `ccode`,
                                 ADD `uri` VARCHAR(255) DEFAULT NULL AFTER `materials`
             ");
                                 ADD `materials` VARCHAR(10) DEFAULT NULL AFTER `ccode`,
                                 ADD `uri` VARCHAR(255) DEFAULT NULL AFTER `materials`
             ");
-    $dbh->do("ALTER TABLE `items` 
+    $dbh->do("ALTER TABLE `items`
                         DROP KEY `itembarcodeidx`,
                         ADD UNIQUE KEY `itembarcodeidx` (`barcode`)");
 
                         DROP KEY `itembarcodeidx`,
                         ADD UNIQUE KEY `itembarcodeidx` (`barcode`)");
 
-    # map items.itype to items.ccode and 
+    # map items.itype to items.ccode and
     # set cn_sort to itemcallnumber -- as with biblioitems.cn_sort,
     # set cn_sort to itemcallnumber -- as with biblioitems.cn_sort,
-    # will have to be subsequently updated per user's default 
+    # will have to be subsequently updated per user's default
     # classification scheme
     $dbh->do("UPDATE `items` SET `cn_sort` = `itemcallnumber`,
                             `ccode` = `itype`");
     # classification scheme
     $dbh->do("UPDATE `items` SET `cn_sort` = `itemcallnumber`,
                             `ccode` = `itype`");
@@ -334,10 +334,10 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                                PRIMARY KEY (`cn_source`),
                                UNIQUE KEY `cn_source_idx` (`cn_source`),
                                KEY `used_idx` (`used`),
                                PRIMARY KEY (`cn_source`),
                                UNIQUE KEY `cn_source_idx` (`cn_source`),
                                KEY `used_idx` (`used`),
-                               CONSTRAINT `class_source_ibfk_1` FOREIGN KEY (`class_sort_rule`) 
+                               CONSTRAINT `class_source_ibfk_1` FOREIGN KEY (`class_sort_rule`)
                                           REFERENCES `class_sort_rules` (`class_sort_rule`)
                              ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
                                           REFERENCES `class_sort_rules` (`class_sort_rule`)
                              ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
-    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) 
+    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type)
               VALUES('DefaultClassificationSource','ddc',
                      'Default classification scheme used by the collection. E.g., Dewey, LCC, etc.', NULL,'free')");
     $dbh->do("INSERT INTO `class_sort_rules` (`class_sort_rule`, `description`, `sort_routine`) VALUES
               VALUES('DefaultClassificationSource','ddc',
                      'Default classification scheme used by the collection. E.g., Dewey, LCC, etc.', NULL,'free')");
     $dbh->do("INSERT INTO `class_sort_rules` (`class_sort_rule`, `description`, `sort_routine`) VALUES
@@ -397,7 +397,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
               `import_record_id` int(11) NOT NULL,
               `candidate_match_id` int(11) NOT NULL,
               `score` int(11) NOT NULL default 0,
               `import_record_id` int(11) NOT NULL,
               `candidate_match_id` int(11) NOT NULL,
               `score` int(11) NOT NULL default 0,
-              CONSTRAINT `import_record_matches_ibfk_1` FOREIGN KEY (`import_record_id`) 
+              CONSTRAINT `import_record_matches_ibfk_1` FOREIGN KEY (`import_record_id`)
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `record_score` (`import_record_id`, `score`)
               ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `record_score` (`import_record_id`, `score`)
               ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
@@ -411,7 +411,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
               `isbn` varchar(14) default NULL,
               `issn` varchar(9) default NULL,
               `has_items` tinyint(1) NOT NULL default 0,
               `isbn` varchar(14) default NULL,
               `issn` varchar(9) default NULL,
               `has_items` tinyint(1) NOT NULL default 0,
-              CONSTRAINT `import_biblios_ibfk_1` FOREIGN KEY (`import_record_id`) 
+              CONSTRAINT `import_biblios_ibfk_1` FOREIGN KEY (`import_record_id`)
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `matched_biblionumber` (`matched_biblionumber`),
               KEY `title` (`title`),
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `matched_biblionumber` (`matched_biblionumber`),
               KEY `title` (`title`),
@@ -426,7 +426,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
               `marcxml` longtext NOT NULL,
               `import_error` mediumtext,
               PRIMARY KEY (`import_items_id`),
               `marcxml` longtext NOT NULL,
               `import_error` mediumtext,
               PRIMARY KEY (`import_items_id`),
-              CONSTRAINT `import_items_ibfk_1` FOREIGN KEY (`import_record_id`) 
+              CONSTRAINT `import_items_ibfk_1` FOREIGN KEY (`import_record_id`)
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `itemnumber` (`itemnumber`),
               KEY `branchcode` (`branchcode`)
                           REFERENCES `import_records` (`import_record_id`) ON DELETE CASCADE ON UPDATE CASCADE,
               KEY `itemnumber` (`itemnumber`),
               KEY `branchcode` (`branchcode`)
@@ -450,7 +450,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
               FROM   `marc_breeding`
               JOIN   `import_records` ON (`import_record_id` = `id`)");
 
               FROM   `marc_breeding`
               JOIN   `import_records` ON (`import_record_id` = `id`)");
 
-    $dbh->do("UPDATE `import_batches` 
+    $dbh->do("UPDATE `import_batches`
               SET `num_biblios` = (
               SELECT COUNT(*)
               FROM `import_records`
               SET `num_biblios` = (
               SELECT COUNT(*)
               FROM `import_records`
@@ -470,7 +470,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = "3.00.00.015"; 
+$DBversion = "3.00.00.015";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("CREATE TABLE `saved_sql` (
            `id` int(11) NOT NULL auto_increment,
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("CREATE TABLE `saved_sql` (
            `id` int(11) NOT NULL auto_increment,
@@ -496,7 +496,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = "3.00.00.016"; 
+$DBversion = "3.00.00.016";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do(" CREATE TABLE reports_dictionary (
           id int(11) NOT NULL auto_increment,
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do(" CREATE TABLE reports_dictionary (
           id int(11) NOT NULL auto_increment,
@@ -510,7 +510,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
     print "Upgrade to $DBversion done (reports_dictionary) added)\n";
     SetVersion ($DBversion);
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
     print "Upgrade to $DBversion done (reports_dictionary) added)\n";
     SetVersion ($DBversion);
-}   
+}
 
 $DBversion = "3.00.00.017";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.017";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
@@ -525,13 +525,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.018";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.018";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("ALTER TABLE `zebraqueue` 
+    $dbh->do("ALTER TABLE `zebraqueue`
                     ADD `done` INT NOT NULL DEFAULT '0',
                     ADD `done` INT NOT NULL DEFAULT '0',
-                    ADD `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ; 
+                    ADD `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
             ");
     print "Upgrade to $DBversion done (adding timestamp and done columns to zebraque table to improve problem tracking) added)\n";
     SetVersion ($DBversion);
             ");
     print "Upgrade to $DBversion done (adding timestamp and done columns to zebraque table to improve problem tracking) added)\n";
     SetVersion ($DBversion);
-}   
+}
 
 $DBversion = "3.00.00.019";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.019";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
@@ -544,7 +544,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.020";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.020";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("ALTER TABLE deleteditems 
+    $dbh->do("ALTER TABLE deleteditems
               DROP KEY `delitembarcodeidx`,
               ADD KEY `delitembarcodeidx` (`barcode`)");
     print "Upgrade to $DBversion done (dropped uniqueness of key on deleteditems.barcode)\n";
               DROP KEY `delitembarcodeidx`,
               ADD KEY `delitembarcodeidx` (`barcode`)");
     print "Upgrade to $DBversion done (dropped uniqueness of key on deleteditems.barcode)\n";
@@ -559,13 +559,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("ALTER TABLE subscription CHANGE lastbranch lastbranch VARCHAR(10)");
     print "Upgrade to $DBversion done (extended missed branchcode columns to 10 chars)\n";
     SetVersion ($DBversion);
     $dbh->do("ALTER TABLE subscription CHANGE lastbranch lastbranch VARCHAR(10)");
     print "Upgrade to $DBversion done (extended missed branchcode columns to 10 chars)\n";
     SetVersion ($DBversion);
-}   
+}
 
 $DBversion = "3.00.00.022";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.022";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("ALTER TABLE items 
+    $dbh->do("ALTER TABLE items
                 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
                 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
-    $dbh->do("ALTER TABLE deleteditems 
+    $dbh->do("ALTER TABLE deleteditems
                 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
     print "Upgrade to $DBversion done (adding damaged column to items table)\n";
     SetVersion ($DBversion);
                 ADD `damaged` tinyint(1) default NULL AFTER notforloan");
     print "Upgrade to $DBversion done (adding damaged column to items table)\n";
     SetVersion ($DBversion);
@@ -577,7 +577,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
          VALUES ('yuipath','http://yui.yahooapis.com/2.3.1/build','Insert the path to YUI libraries','','free')");
     print "Upgrade to $DBversion done (adding new system preference for controlling YUI path)\n";
     SetVersion ($DBversion);
          VALUES ('yuipath','http://yui.yahooapis.com/2.3.1/build','Insert the path to YUI libraries','','free')");
     print "Upgrade to $DBversion done (adding new system preference for controlling YUI path)\n";
     SetVersion ($DBversion);
-} 
+}
 $DBversion = "3.00.00.024";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("ALTER TABLE biblioitems CHANGE  itemtype itemtype VARCHAR(10)");
 $DBversion = "3.00.00.024";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("ALTER TABLE biblioitems CHANGE  itemtype itemtype VARCHAR(10)");
@@ -951,7 +951,7 @@ VALUES( 'he', 'Hebr')");
 
 $DBversion = "3.00.00.046";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.046";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("ALTER TABLE `subscription` CHANGE `numberlength` `numberlength` int(11) default '0' , 
+    $dbh->do("ALTER TABLE `subscription` CHANGE `numberlength` `numberlength` int(11) default '0' ,
                 CHANGE `weeklength` `weeklength` int(11) default '0'");
     $dbh->do("CREATE TABLE `serialitems` (`serialid` int(11) NOT NULL, `itemnumber` int(11) NOT NULL, UNIQUE KEY `serialididx` (`serialid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
     $dbh->do("INSERT INTO `serialitems` SELECT `serialid`,`itemnumber` from serial where NOT ISNULL(itemnumber) && itemnumber <> '' && itemnumber NOT LIKE '%,%'");
                 CHANGE `weeklength` `weeklength` int(11) default '0'");
     $dbh->do("CREATE TABLE `serialitems` (`serialid` int(11) NOT NULL, `itemnumber` int(11) NOT NULL, UNIQUE KEY `serialididx` (`serialid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
     $dbh->do("INSERT INTO `serialitems` SELECT `serialid`,`itemnumber` from serial where NOT ISNULL(itemnumber) && itemnumber <> '' && itemnumber NOT LIKE '%,%'");
@@ -1001,7 +1001,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = "3.00.00.053"; 
+$DBversion = "3.00.00.053";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("CREATE TABLE `printers_profile` (
             `prof_id` int(4) NOT NULL auto_increment,
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("CREATE TABLE `printers_profile` (
             `prof_id` int(4) NOT NULL auto_increment,
@@ -1025,7 +1025,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
     print "Upgrade to $DBversion done ( Printer Profile tables added )\n";
     SetVersion ($DBversion);
             ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ");
     print "Upgrade to $DBversion done ( Printer Profile tables added )\n";
     SetVersion ($DBversion);
-}   
+}
 
 $DBversion = "3.00.00.054";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.054";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
@@ -1051,7 +1051,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     print "Upgrade to $DBversion done ( Added item.enumchron column, and framework map to 952h )\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done ( Added item.enumchron column, and framework map to 952h )\n";
     SetVersion ($DBversion);
 }
-    
+
 $DBversion = "3.00.00.057";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH','0','if ON, OAI-PMH server is enabled',NULL,'YesNo');");
 $DBversion = "3.00.00.057";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OAI-PMH','0','if ON, OAI-PMH server is enabled',NULL,'YesNo');");
@@ -1064,10 +1064,10 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.058";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.058";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do("ALTER TABLE `opac_news` 
-                CHANGE `lang` `lang` VARCHAR( 25 ) 
-                CHARACTER SET utf8 
-                COLLATE utf8_general_ci 
+    $dbh->do("ALTER TABLE `opac_news`
+                CHANGE `lang` `lang` VARCHAR( 25 )
+                CHARACTER SET utf8
+                COLLATE utf8_general_ci
                 NOT NULL default ''");
        print "Upgrade to $DBversion done ( lang field in opac_news made longer )\n";
     SetVersion ($DBversion);
                 NOT NULL default ''");
        print "Upgrade to $DBversion done ( lang field in opac_news made longer )\n";
     SetVersion ($DBversion);
@@ -1150,9 +1150,9 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                 KEY `old_issuesborridx` (`borrowernumber`),
                 KEY `old_issuesitemidx` (`itemnumber`),
                 KEY `old_bordate` (`borrowernumber`,`timestamp`),
                 KEY `old_issuesborridx` (`borrowernumber`),
                 KEY `old_issuesitemidx` (`itemnumber`),
                 KEY `old_bordate` (`borrowernumber`,`timestamp`),
-                CONSTRAINT `old_issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) 
+                CONSTRAINT `old_issues_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
                     ON DELETE SET NULL ON UPDATE SET NULL,
                     ON DELETE SET NULL ON UPDATE SET NULL,
-                CONSTRAINT `old_issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) 
+                CONSTRAINT `old_issues_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`)
                     ON DELETE SET NULL ON UPDATE SET NULL
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
     $dbh->do("CREATE TABLE `old_reserves` (
                     ON DELETE SET NULL ON UPDATE SET NULL
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
     $dbh->do("CREATE TABLE `old_reserves` (
@@ -1174,11 +1174,11 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                 KEY `old_reserves_biblionumber` (`biblionumber`),
                 KEY `old_reserves_itemnumber` (`itemnumber`),
                 KEY `old_reserves_branchcode` (`branchcode`),
                 KEY `old_reserves_biblionumber` (`biblionumber`),
                 KEY `old_reserves_itemnumber` (`itemnumber`),
                 KEY `old_reserves_branchcode` (`branchcode`),
-                CONSTRAINT `old_reserves_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) 
+                CONSTRAINT `old_reserves_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
                     ON DELETE SET NULL ON UPDATE SET NULL,
                     ON DELETE SET NULL ON UPDATE SET NULL,
-                CONSTRAINT `old_reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) 
+                CONSTRAINT `old_reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`)
                     ON DELETE SET NULL ON UPDATE SET NULL,
                     ON DELETE SET NULL ON UPDATE SET NULL,
-                CONSTRAINT `old_reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) 
+                CONSTRAINT `old_reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`)
                     ON DELETE SET NULL ON UPDATE SET NULL
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
 
                     ON DELETE SET NULL ON UPDATE SET NULL
                 ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
 
@@ -1263,7 +1263,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                 `code` varchar(30) DEFAULT NULL,
                 CONSTRAINT `user_permissions_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
                     ON DELETE CASCADE ON UPDATE CASCADE,
                 `code` varchar(30) DEFAULT NULL,
                 CONSTRAINT `user_permissions_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`)
                     ON DELETE CASCADE ON UPDATE CASCADE,
-                CONSTRAINT `user_permissions_ibfk_2` FOREIGN KEY (`module_bit`, `code`) 
+                CONSTRAINT `user_permissions_ibfk_2` FOREIGN KEY (`module_bit`, `code`)
                     REFERENCES `permissions` (`module_bit`, `code`)
                     ON DELETE CASCADE ON UPDATE CASCADE
               ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
                     REFERENCES `permissions` (`module_bit`, `code`)
                     ON DELETE CASCADE ON UPDATE CASCADE
               ) ENGINE=InnoDB DEFAULT CHARSET=utf8");
@@ -1284,7 +1284,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     (13, 'delete_anonymize_patrons', 'Delete old borrowers and anonymize circulation history (deletes borrower reading history)'),
     (13, 'batch_upload_patron_images', 'Upload patron images in batch or one at a time'),
     (13, 'schedule_tasks', 'Schedule tasks to run')");
     (13, 'delete_anonymize_patrons', 'Delete old borrowers and anonymize circulation history (deletes borrower reading history)'),
     (13, 'batch_upload_patron_images', 'Upload patron images in batch or one at a time'),
     (13, 'schedule_tasks', 'Schedule tasks to run')");
-        
+
     $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('GranularPermissions','0','Use detailed staff user permissions',NULL,'YesNo')");
 
     print "Upgrade to $DBversion done (adding permissions and user_permissions tables and GranularPermissions syspref) \n";
     $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('GranularPermissions','0','Use detailed staff user permissions',NULL,'YesNo')");
 
     print "Upgrade to $DBversion done (adding permissions and user_permissions tables and GranularPermissions syspref) \n";
@@ -1416,13 +1416,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("ALTER TABLE import_batches
               ADD COLUMN nomatch_action enum('create_new', 'ignore') NOT NULL default 'create_new' AFTER overlay_action");
     $dbh->do("ALTER TABLE import_batches
     $dbh->do("ALTER TABLE import_batches
               ADD COLUMN nomatch_action enum('create_new', 'ignore') NOT NULL default 'create_new' AFTER overlay_action");
     $dbh->do("ALTER TABLE import_batches
-              ADD COLUMN item_action enum('always_add', 'add_only_for_matches', 'add_only_for_new', 'ignore') 
+              ADD COLUMN item_action enum('always_add', 'add_only_for_matches', 'add_only_for_new', 'ignore')
                   NOT NULL default 'always_add' AFTER nomatch_action");
     $dbh->do("ALTER TABLE import_batches
               MODIFY overlay_action  enum('replace', 'create_new', 'use_template', 'ignore')
                   NOT NULL default 'create_new'");
     $dbh->do("ALTER TABLE import_records
                   NOT NULL default 'always_add' AFTER nomatch_action");
     $dbh->do("ALTER TABLE import_batches
               MODIFY overlay_action  enum('replace', 'create_new', 'use_template', 'ignore')
                   NOT NULL default 'create_new'");
     $dbh->do("ALTER TABLE import_records
-              MODIFY status  enum('error', 'staged', 'imported', 'reverted', 'items_reverted', 
+              MODIFY status  enum('error', 'staged', 'imported', 'reverted', 'items_reverted',
                                   'ignored') NOT NULL default 'staged'");
     $dbh->do("ALTER TABLE import_items
               MODIFY status enum('error', 'staged', 'imported', 'reverted', 'ignored') NOT NULL default 'staged'");
                                   'ignored') NOT NULL default 'staged'");
     $dbh->do("ALTER TABLE import_items
               MODIFY status enum('error', 'staged', 'imported', 'reverted', 'ignored') NOT NULL default 'staged'");
@@ -1441,7 +1441,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->{PrintError} = 0;
     my ($raise_error) = $dbh->{RaiseError};
     $dbh->{RaiseError} = 1;
     $dbh->{PrintError} = 0;
     my ($raise_error) = $dbh->{RaiseError};
     $dbh->{RaiseError} = 1;
-    
+
     my $count = 0;
     my $do_drop = 1;
     eval { $count = $dbh->do("SELECT 1 FROM categorytable"); };
     my $count = 0;
     my $do_drop = 1;
     eval { $count = $dbh->do("SELECT 1 FROM categorytable"); };
@@ -1473,7 +1473,7 @@ $DBversion = "3.00.00.078";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     my ($print_error) = $dbh->{PrintError};
     $dbh->{PrintError} = 0;
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     my ($print_error) = $dbh->{PrintError};
     $dbh->{PrintError} = 0;
-    
+
     unless ($dbh->do("SELECT 1 FROM browser")) {
         $dbh->{PrintError} = $print_error;
         $dbh->do("CREATE TABLE `browser` (
     unless ($dbh->do("SELECT 1 FROM browser")) {
         $dbh->{PrintError} = $print_error;
         $dbh->do("CREATE TABLE `browser` (
@@ -1546,11 +1546,11 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = "3.00.00.083";                                                                                                        
-if (C4::Context->preference("Version") < TransformToNum($DBversion)) {                                                             
-    $dbh->do( qq(UPDATE systempreferences SET value='local' where variable='yuipath' and value like "%/intranet-tmpl/prog/%"));    
-    print "Upgrade to $DBversion done (Changing yuipath behaviour in managing a local value)\n";                                   
-    SetVersion ($DBversion);                                                                                                       
+$DBversion = "3.00.00.083";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do( qq(UPDATE systempreferences SET value='local' where variable='yuipath' and value like "%/intranet-tmpl/prog/%"));
+    print "Upgrade to $DBversion done (Changing yuipath behaviour in managing a local value)\n";
+    SetVersion ($DBversion);
 }
 $DBversion = "3.00.00.084";
     if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 }
 $DBversion = "3.00.00.084";
     if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
@@ -1558,7 +1558,7 @@ $DBversion = "3.00.00.084";
     $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('GoogleJackets','0','if ON, displays jacket covers from Google Books API',NULL,'YesNo')");
     print "Upgrade to $DBversion done (add new sysprefs)\n";
     SetVersion ($DBversion);
     $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('GoogleJackets','0','if ON, displays jacket covers from Google Books API',NULL,'YesNo')");
     print "Upgrade to $DBversion done (add new sysprefs)\n";
     SetVersion ($DBversion);
-}                                             
+}
 
 $DBversion = "3.00.00.085";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.00.00.085";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
@@ -1639,7 +1639,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
           CONSTRAINT `branch_borrower_circ_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
           CONSTRAINT `branch_borrower_circ_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-    "); 
+    ");
     $dbh->do("
         CREATE TABLE `default_borrower_circ_rules` (
           `categorycode` VARCHAR(10) NOT NULL,
     $dbh->do("
         CREATE TABLE `default_borrower_circ_rules` (
           `categorycode` VARCHAR(10) NOT NULL,
@@ -1648,7 +1648,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
           CONSTRAINT `borrower_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
           CONSTRAINT `borrower_borrower_circ_rules_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-    "); 
+    ");
     $dbh->do("
         CREATE TABLE `default_branch_circ_rules` (
           `branchcode` VARCHAR(10) NOT NULL,
     $dbh->do("
         CREATE TABLE `default_branch_circ_rules` (
           `branchcode` VARCHAR(10) NOT NULL,
@@ -1657,7 +1657,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
           CONSTRAINT `default_branch_circ_rules_ibfk_1` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
           CONSTRAINT `default_branch_circ_rules_ibfk_1` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
             ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-    "); 
+    ");
     $dbh->do("
         CREATE TABLE `default_circ_rules` (
             `singleton` enum('singleton') NOT NULL default 'singleton',
     $dbh->do("
         CREATE TABLE `default_circ_rules` (
             `singleton` enum('singleton') NOT NULL default 'singleton',
@@ -1771,7 +1771,7 @@ VALUES
 ('circulation','EVENT','Upcoming Library Event','Upcoming Library Event','Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nThis is a reminder of an upcoming library event in which you have expressed interest.');
 END_SQL
 
 ('circulation','EVENT','Upcoming Library Event','Upcoming Library Event','Dear <<borrowers.firstname>> <<borrowers.surname>>,\r\n\r\nThis is a reminder of an upcoming library event in which you have expressed interest.');
 END_SQL
 
-    my @sql_scripts = ( 
+    my @sql_scripts = (
         'installer/data/mysql/en/mandatory/message_transport_types.sql',
         'installer/data/mysql/en/optional/sample_notices_message_attributes.sql',
         'installer/data/mysql/en/optional/sample_notices_message_transports.sql',
         'installer/data/mysql/en/mandatory/message_transport_types.sql',
         'installer/data/mysql/en/optional/sample_notices_message_attributes.sql',
         'installer/data/mysql/en/optional/sample_notices_message_transports.sql',
@@ -1975,13 +1975,13 @@ if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
             `item_level_request` tinyint(4) NOT NULL default 0,
             PRIMARY KEY `itemnumber` (`itemnumber`),
             KEY `bib_branch` (`biblionumber`, `source_branchcode`),
             `item_level_request` tinyint(4) NOT NULL default 0,
             PRIMARY KEY `itemnumber` (`itemnumber`),
             KEY `bib_branch` (`biblionumber`, `source_branchcode`),
-            CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`) 
+            CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
                 REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
                 REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
-            CONSTRAINT `hold_fill_targets_ibfk_2` FOREIGN KEY (`biblionumber`) 
+            CONSTRAINT `hold_fill_targets_ibfk_2` FOREIGN KEY (`biblionumber`)
                 REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
                 REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
-            CONSTRAINT `hold_fill_targets_ibfk_3` FOREIGN KEY (`itemnumber`) 
+            CONSTRAINT `hold_fill_targets_ibfk_3` FOREIGN KEY (`itemnumber`)
                 REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
                 REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
-            CONSTRAINT `hold_fill_targets_ibfk_4` FOREIGN KEY (`source_branchcode`) 
+            CONSTRAINT `hold_fill_targets_ibfk_4` FOREIGN KEY (`source_branchcode`)
                 REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     ");
                 REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8
     ");
@@ -2004,13 +2004,13 @@ if ( C4::Context->preference('Version') < TransformToNum($DBversion) ) {
         UPDATE issues iss
         SET issuedate = (
             SELECT max(datetime)
         UPDATE issues iss
         SET issuedate = (
             SELECT max(datetime)
-            FROM statistics 
+            FROM statistics
             WHERE type = 'issue'
             AND itemnumber = iss.itemnumber
             AND borrowernumber = iss.borrowernumber
         )
         WHERE issuedate IS NULL;
             WHERE type = 'issue'
             AND itemnumber = iss.itemnumber
             AND borrowernumber = iss.borrowernumber
         )
         WHERE issuedate IS NULL;
-    ");  
+    ");
     $dbh->do("ALTER TABLE statistics DROP KEY tmp_stats");
 
     # default to last renewal date
     $dbh->do("ALTER TABLE statistics DROP KEY tmp_stats");
 
     # default to last renewal date
@@ -2226,7 +2226,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     VALUES (
     'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit by itemtype or collection code.', 'Choice'
     );");
     VALUES (
     'BranchTransferLimitsType', 'ccode', 'itemtype|ccode', 'When using branch transfer limits, choose whether to limit by itemtype or collection code.', 'Choice'
     );");
-    
+
     print "Upgrade to $DBversion done ( Updated table for Branch Transfer Limits)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done ( Updated table for Branch Transfer Limits)\n";
     SetVersion ($DBversion);
 }
@@ -2423,8 +2423,8 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
         MODIFY borrowernumber int(11) default NULL,
         ADD    categorycode varchar(10) default NULL AFTER borrowernumber,
         ADD KEY `categorycode` (`categorycode`),
         MODIFY borrowernumber int(11) default NULL,
         ADD    categorycode varchar(10) default NULL AFTER borrowernumber,
         ADD KEY `categorycode` (`categorycode`),
-        ADD CONSTRAINT `borrower_message_preferences_ibfk_3` 
-                       FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`) 
+        ADD CONSTRAINT `borrower_message_preferences_ibfk_3`
+                       FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`)
                        ON DELETE CASCADE ON UPDATE CASCADE
     /);
     print "Upgrade to $DBversion done (DB changes to allow patron category defaults for messaging preferences)\n";
                        ON DELETE CASCADE ON UPDATE CASCADE
     /);
     print "Upgrade to $DBversion done (DB changes to allow patron category defaults for messaging preferences)\n";
@@ -2470,7 +2470,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $DBversion = "3.01.00.038";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update branches table
 $DBversion = "3.01.00.038";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update branches table
-    # 
+    #
     $dbh->do("ALTER TABLE branches ADD `branchzip` varchar(25) default NULL AFTER `branchaddress3`");
     $dbh->do("ALTER TABLE branches ADD `branchcity` mediumtext AFTER `branchzip`");
     $dbh->do("ALTER TABLE branches ADD `branchcountry` text AFTER `branchcity`");
     $dbh->do("ALTER TABLE branches ADD `branchzip` varchar(25) default NULL AFTER `branchaddress3`");
     $dbh->do("ALTER TABLE branches ADD `branchcity` mediumtext AFTER `branchzip`");
     $dbh->do("ALTER TABLE branches ADD `branchcountry` text AFTER `branchcity`");
@@ -2538,7 +2538,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $DBversion = "3.01.00.046";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update borrowers table
 $DBversion = "3.01.00.046";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     # update borrowers table
-    # 
+    #
     $dbh->do("ALTER TABLE borrowers ADD `country` text AFTER zipcode");
     $dbh->do("ALTER TABLE borrowers ADD `B_country` text AFTER B_zipcode");
     $dbh->do("ALTER TABLE deletedborrowers ADD `country` text AFTER zipcode");
     $dbh->do("ALTER TABLE borrowers ADD `country` text AFTER zipcode");
     $dbh->do("ALTER TABLE borrowers ADD `B_country` text AFTER B_zipcode");
     $dbh->do("ALTER TABLE deletedborrowers ADD `country` text AFTER zipcode");
@@ -2705,14 +2705,6 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = '3.01.00.064';
-if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do('ALTER TABLE issuingrules DROP FOREIGN KEY issuingrules_ibfk_1');
-    $dbh->do('ALTER TABLE issuingrules DROP FOREIGN KEY issuingrules_ibfk_2');
-    SetVersion ($DBversion);
-    print "Upgrade to $DBversion done (deleting contraints in issuingrules)\n";
-}
-
 $DBversion = '3.01.00.065';
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do('ALTER TABLE issuingrules ADD COLUMN `renewalsallowed` smallint(6) NOT NULL default "0" AFTER `issuelength`;');
 $DBversion = '3.01.00.065';
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do('ALTER TABLE issuingrules ADD COLUMN `renewalsallowed` smallint(6) NOT NULL default "0" AFTER `issuelength`;');
@@ -2720,13 +2712,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $sth->execute();
 
     my $sthupd = $dbh->prepare("UPDATE issuingrules SET renewalsallowed = ? WHERE itemtype = ?");
     $sth->execute();
 
     my $sthupd = $dbh->prepare("UPDATE issuingrules SET renewalsallowed = ? WHERE itemtype = ?");
-    
+
     while(my $row = $sth->fetchrow_hashref){
         $sthupd->execute($row->{renewalsallowed}, $row->{itemtype});
     }
     while(my $row = $sth->fetchrow_hashref){
         $sthupd->execute($row->{renewalsallowed}, $row->{itemtype});
     }
-    
+
     $dbh->do('ALTER TABLE itemtypes DROP COLUMN `renewalsallowed`;');
     $dbh->do('ALTER TABLE itemtypes DROP COLUMN `renewalsallowed`;');
-    
+
     SetVersion ($DBversion);
     print "Upgrade to $DBversion done (Moving allowed renewals from itemtypes to issuingrule)\n";
 }
     SetVersion ($DBversion);
     print "Upgrade to $DBversion done (Moving allowed renewals from itemtypes to issuingrule)\n";
 }
@@ -2738,11 +2730,11 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     my $maxreserves = C4::Context->preference('maxreserves');
     $sth = $dbh->prepare('UPDATE issuingrules SET reservesallowed = ?;');
     $sth->execute($maxreserves);
     my $maxreserves = C4::Context->preference('maxreserves');
     $sth = $dbh->prepare('UPDATE issuingrules SET reservesallowed = ?;');
     $sth->execute($maxreserves);
-    
+
     $dbh->do('DELETE FROM systempreferences WHERE variable = "maxreserves";');
 
     $dbh->do("INSERT INTO systempreferences (variable,value, options, explanation, type) VALUES('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights','Choice')");
     $dbh->do('DELETE FROM systempreferences WHERE variable = "maxreserves";');
 
     $dbh->do("INSERT INTO systempreferences (variable,value, options, explanation, type) VALUES('ReservesControlBranch','PatronLibrary','ItemHomeLibrary|PatronLibrary','Branch checked for members reservations rights','Choice')");
-    
+
     SetVersion ($DBversion);
     print "Upgrade to $DBversion done (Moving max allowed reserves from system preference to issuingrule)\n";
 }
     SetVersion ($DBversion);
     print "Upgrade to $DBversion done (Moving max allowed reserves from system preference to issuingrule)\n";
 }
@@ -2752,23 +2744,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchmod', 'Perform batch modification of items')");
     $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchdel', 'Perform batch deletion of items')");
     print "Upgrade to $DBversion done (added permissions for batch modification and deletion)\n";
     $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchmod', 'Perform batch modification of items')");
     $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 13, 'batchdel', 'Perform batch deletion of items')");
     print "Upgrade to $DBversion done (added permissions for batch modification and deletion)\n";
+    SetVersion ($DBversion);
 }
 
 $DBversion = "3.01.00.068";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 }
 
 $DBversion = "3.01.00.068";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-       $dbh->do("ALTER TABLE issuingrules ADD 
-                       COLUMN `finedays` int(11) default NULL AFTER `fine`,
-                       COLUMN `renewalsallowed` smallint(6) default NULL, 
-                       COLUMN `reservesallowed` smallint(6) default NULL,
-                       ");
-       my $sth = $dbh->prepare("SELECT itemtype, renewalsallowed FROM itemtypes");
-    $sth->execute();
-       my $sthupd = $dbh->prepare("UPDATE issuingrules SET renewalsallowed = ? WHERE itemtype = ?");
-       while(my $row = $sth->fetchrow_hashref){
-                 $sthupd->execute($row->{renewalsallowed}, $row->{itemtype});
-       }
-       $dbh->do('ALTER TABLE itemtypes DROP COLUMN `renewalsallowed`;');
-       print "Upgrade done (Adding finedays renewalsallowed, and reservesallowed fields in issuingrules table)\n";
+       $dbh->do("ALTER TABLE issuingrules ADD COLUMN `finedays` int(11) default NULL AFTER `fine` ");
+       print "Upgrade done (Adding finedays in issuingrules table)\n";
+    SetVersion ($DBversion);
 }
 
 
 }
 
 
@@ -2844,7 +2827,7 @@ CREATE TABLE IF NOT EXISTS `aqcontract` (
   `contractdescription` mediumtext,
   `booksellerid` int(11) not NULL,
     PRIMARY KEY  (`contractnumber`),
   `contractdescription` mediumtext,
   `booksellerid` int(11) not NULL,
     PRIMARY KEY  (`contractnumber`),
-        CONSTRAINT `booksellerid_fk1` FOREIGN KEY (`booksellerid`) 
+        CONSTRAINT `booksellerid_fk1` FOREIGN KEY (`booksellerid`)
         REFERENCES `aqbooksellers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 END_SQL
         REFERENCES `aqbooksellers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 END_SQL
@@ -2884,7 +2867,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
     $dbh->do("ALTER TABLE aqbasket ADD COLUMN `basketgroupid` int(11)");
     $dbh->do("ALTER TABLE aqbasket ADD FOREIGN KEY (`basketgroupid`) REFERENCES `aqbasketgroups` (`id`) ON UPDATE CASCADE ON DELETE SET NULL");
                          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
     $dbh->do("ALTER TABLE aqbasket ADD COLUMN `basketgroupid` int(11)");
     $dbh->do("ALTER TABLE aqbasket ADD FOREIGN KEY (`basketgroupid`) REFERENCES `aqbasketgroups` (`id`) ON UPDATE CASCADE ON DELETE SET NULL");
-    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('pdfformat','pdfformat::example','Controls what script is used for printing (basketgroups)','','free')");
+    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('pdfformat','pdfformat::layout2pages','Controls what script is used for printing (basketgroups)','','free')");
     print "Upgrade to $DBversion done (adding basketgroups)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (adding basketgroups)\n";
     SetVersion ($DBversion);
 }
@@ -2920,22 +2903,24 @@ ADDPERIODS
 #                `aqbudgetid` tinyint(4) NOT NULL auto_increment,
 #                  `branchcode` varchar(10) default NULL,
     DropAllForeignKeys('aqbudget');
 #                `aqbudgetid` tinyint(4) NOT NULL auto_increment,
 #                  `branchcode` varchar(10) default NULL,
     DropAllForeignKeys('aqbudget');
-  #$dbh->do("drop table aqbudget;");  
+  #$dbh->do("drop table aqbudget;");
 
 
     $dbh->do(<<BUDGETNAME);
 
 
     $dbh->do(<<BUDGETNAME);
-ALTER TABLE aqbudget RENAME`aqbudgets` 
+ALTER TABLE aqbudget RENAME `aqbudgets`
 BUDGETNAME
     my $maxbudgetid=$dbh->selectcol_arrayref(<<IDsBUDGET);
 BUDGETNAME
     my $maxbudgetid=$dbh->selectcol_arrayref(<<IDsBUDGET);
-SELECT MAX(aqbudgetid) from aqbudgets 
+SELECT MAX(aqbudgetid) from aqbudgets
 IDsBUDGET
 
 IDsBUDGET
 
+$$maxbudgetid[0] = 0 if !$$maxbudgetid[0];
+
     $dbh->do(<<BUDGETAUTOINCREMENT);
 ALTER TABLE `aqbudgets` AUTO_INCREMENT=$$maxbudgetid[0]
 BUDGETAUTOINCREMENT
 
     $dbh->do(<<BUDGETS);
     $dbh->do(<<BUDGETAUTOINCREMENT);
 ALTER TABLE `aqbudgets` AUTO_INCREMENT=$$maxbudgetid[0]
 BUDGETAUTOINCREMENT
 
     $dbh->do(<<BUDGETS);
-ALTER TABLE `aqbudgets` 
+ALTER TABLE `aqbudgets`
    CHANGE  COLUMN aqbudgetid `budget_id` int(11) NOT NULL AUTO_INCREMENT,
    CHANGE  COLUMN branchcode `budget_branchcode` varchar(10) default NULL,
    CHANGE  COLUMN budgetamount `budget_amount` decimal(28,6) NOT NULL default '0.00',
    CHANGE  COLUMN aqbudgetid `budget_id` int(11) NOT NULL AUTO_INCREMENT,
    CHANGE  COLUMN branchcode `budget_branchcode` varchar(10) default NULL,
    CHANGE  COLUMN budgetamount `budget_amount` decimal(28,6) NOT NULL default '0.00',
@@ -2956,15 +2941,15 @@ ALTER TABLE `aqbudgets`
 BUDGETS
 
     $dbh->do(<<BUDGETCONSTRAINTS);
 BUDGETS
 
     $dbh->do(<<BUDGETCONSTRAINTS);
-ALTER TABLE `aqbudgets` 
+ALTER TABLE `aqbudgets`
    ADD CONSTRAINT `aqbudgets_ifbk_1` FOREIGN KEY (`budget_period_id`) REFERENCES `aqbudgetperiods` (`budget_period_id`) ON DELETE CASCADE ON UPDATE CASCADE
 BUDGETCONSTRAINTS
 #    $dbh->do(<<BUDGETPKDROP);
    ADD CONSTRAINT `aqbudgets_ifbk_1` FOREIGN KEY (`budget_period_id`) REFERENCES `aqbudgetperiods` (`budget_period_id`) ON DELETE CASCADE ON UPDATE CASCADE
 BUDGETCONSTRAINTS
 #    $dbh->do(<<BUDGETPKDROP);
-#ALTER TABLE `aqbudgets` 
+#ALTER TABLE `aqbudgets`
 #   DROP PRIMARY KEY
 #BUDGETPKDROP
 #    $dbh->do(<<BUDGETPKADD);
 #   DROP PRIMARY KEY
 #BUDGETPKDROP
 #    $dbh->do(<<BUDGETPKADD);
-#ALTER TABLE `aqbudgets` 
+#ALTER TABLE `aqbudgets`
 #   ADD PRIMARY KEY budget_id
 #BUDGETPKADD
 
 #   ADD PRIMARY KEY budget_id
 #BUDGETPKADD
 
@@ -2972,24 +2957,22 @@ BUDGETCONSTRAINTS
        my $query_period= $dbh->prepare(qq|SELECT budget_period_id from aqbudgetperiods where budget_period_startdate=? and budget_period_enddate=?|);
        my $query_bookfund= $dbh->prepare(qq|SELECT * from aqbookfund where bookfundid=?|);
        my $selectbudgets=$dbh->prepare(qq|SELECT * from aqbudgets|);
        my $query_period= $dbh->prepare(qq|SELECT budget_period_id from aqbudgetperiods where budget_period_startdate=? and budget_period_enddate=?|);
        my $query_bookfund= $dbh->prepare(qq|SELECT * from aqbookfund where bookfundid=?|);
        my $selectbudgets=$dbh->prepare(qq|SELECT * from aqbudgets|);
-       my $updatebudgets=$dbh->prepare(qq|UPDATE aqbudgets SET budget_period_id= ? , budget_name=?, budget_branchcode=? where budget_id=?|);   
+       my $updatebudgets=$dbh->prepare(qq|UPDATE aqbudgets SET budget_period_id= ? , budget_name=?, budget_branchcode=? where budget_id=?|);
        $selectbudgets->execute;
        while (my $databudget=$selectbudgets->fetchrow_hashref){
        $selectbudgets->execute;
        while (my $databudget=$selectbudgets->fetchrow_hashref){
-               $query_period->execute ($$databudget{startdate},$$databudget{enddate}); 
+               $query_period->execute ($$databudget{startdate},$$databudget{enddate});
                my ($budgetperiodid)=$query_period->fetchrow;
                my ($budgetperiodid)=$query_period->fetchrow;
-               $query_bookfund->execute ($$databudget{budget_code});   
+               $query_bookfund->execute ($$databudget{budget_code});
                my $databf=$query_bookfund->fetchrow_hashref;
                my $branchcode=$$databudget{budget_branchcode}||$$databf{branchcode};
                $updatebudgets->execute($budgetperiodid,$$databf{bookfundname},$branchcode,$$databudget{budget_id});
        }
     $dbh->do(<<BUDGETDROPDATES);
                my $databf=$query_bookfund->fetchrow_hashref;
                my $branchcode=$$databudget{budget_branchcode}||$$databf{branchcode};
                $updatebudgets->execute($budgetperiodid,$$databf{bookfundname},$branchcode,$$databudget{budget_id});
        }
     $dbh->do(<<BUDGETDROPDATES);
-ALTER TABLE `aqbudgets` 
+ALTER TABLE `aqbudgets`
    DROP startdate,
    DROP startdate,
-   DROP enddate,
-   DROP bookfundid
+   DROP enddate
 BUDGETDROPDATES
 
 BUDGETDROPDATES
 
-    $dbh->do("DROP TABLE aqbookfund ");
 
     $dbh->do("DROP TABLE IF EXISTS `aqbudgets_planning` ");
     $dbh->do("CREATE TABLE  `aqbudgets_planning` (
 
     $dbh->do("DROP TABLE IF EXISTS `aqbudgets_planning` ");
     $dbh->do("CREATE TABLE  `aqbudgets_planning` (
@@ -3004,12 +2987,14 @@ BUDGETDROPDATES
                         CONSTRAINT `aqbudgets_planning_ifbk_1` FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON DELETE CASCADE ON UPDATE CASCADE
                         ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
 
                         CONSTRAINT `aqbudgets_planning_ifbk_1` FOREIGN KEY (`budget_id`) REFERENCES `aqbudgets` (`budget_id`) ON DELETE CASCADE ON UPDATE CASCADE
                         ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
 
-    $dbh->do("ALTER TABLE `aqorders` 
+    $dbh->do("ALTER TABLE `aqorders`
                     ADD COLUMN `budget_id` tinyint(4) NOT NULL,
                     ADD COLUMN `budgetgroup_id` int(11) NOT NULL,
                     ADD COLUMN  `sort1_authcat` varchar(10) default NULL,
                     ADD COLUMN  `sort2_authcat` varchar(10) default NULL" );
 
                     ADD COLUMN `budget_id` tinyint(4) NOT NULL,
                     ADD COLUMN `budgetgroup_id` int(11) NOT NULL,
                     ADD COLUMN  `sort1_authcat` varchar(10) default NULL,
                     ADD COLUMN  `sort2_authcat` varchar(10) default NULL" );
 
+                # cannot do until aqorderbreakdown removed
+#    $dbh->do("DROP TABLE aqbookfund ");
 
 
 
 
 
 
@@ -3082,7 +3067,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.01.00.083";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 
 $DBversion = "3.01.00.083";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do(qq| 
+    $dbh->do(qq|
  CREATE TABLE `aqorders_items` (
   `ordernumber` int(11) NOT NULL,
   `itemnumber` int(11) NOT NULL,
  CREATE TABLE `aqorders_items` (
   `ordernumber` int(11) NOT NULL,
   `itemnumber` int(11) NOT NULL,
@@ -3093,6 +3078,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     );
 
     $dbh->do(qq| DROP TABLE aqorderbreakdown |);
     );
 
     $dbh->do(qq| DROP TABLE aqorderbreakdown |);
+    $dbh->do('DROP TABLE aqbookfund');
     print "Upgrade to $DBversion done (New aqorders_items table for acqui)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (New aqorders_items table for acqui)\n";
     SetVersion ($DBversion);
 }
@@ -3116,7 +3102,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $DBversion = "3.01.00.086";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do(<<SUGGESTIONS);
 $DBversion = "3.01.00.086";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do(<<SUGGESTIONS);
-ALTER table suggestions 
+ALTER table suggestions
     ADD budgetid INT(11),
     ADD branchcode VARCHAR(10) default NULL,
     ADD acceptedby INT(11) default NULL,
     ADD budgetid INT(11),
     ADD branchcode VARCHAR(10) default NULL,
     ADD acceptedby INT(11) default NULL,
@@ -3126,7 +3112,7 @@ ALTER table suggestions
     ADD rejectedby INT(11) default NULL,
     ADD rejecteddate date default NULL,
     ADD collectiontitle text default NULL,
     ADD rejectedby INT(11) default NULL,
     ADD rejecteddate date default NULL,
     ADD collectiontitle text default NULL,
-    ADD itemtype VARCHAR(30) default NULL,
+    ADD itemtype VARCHAR(30) default NULL
     ;
 SUGGESTIONS
     print "Upgrade to $DBversion done Suggestions";
     ;
 SUGGESTIONS
     print "Upgrade to $DBversion done Suggestions";
@@ -3148,14 +3134,6 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
-$DBversion = "3.01.00.089";
-if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
-    $dbh->do(  qq# ALTER TABLE authorised_values ADD COLUMN `lib_opac` VARCHAR(80) default NULL AFTER `lib` #);
-
-    print "Upgrade to $DBversion done (opac authorised values added)\n";
-    SetVersion ($DBversion);
-}
-
 $DBversion = "3.01.00.090";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $dbh->do("
 $DBversion = "3.01.00.090";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $dbh->do("
@@ -3172,7 +3150,7 @@ $DBversion = "3.01.00.091";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $dbh->do("
        UPDATE `systempreferences` SET `options` = 'holdings|serialcollection|subscriptions'
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 $dbh->do("
        UPDATE `systempreferences` SET `options` = 'holdings|serialcollection|subscriptions'
-       WHERE `systempreferences`.`variable` = 'opacSerialDefaultTab' LIMIT 1 
+       WHERE `systempreferences`.`variable` = 'opacSerialDefaultTab' LIMIT 1
        ");
 
     print "Upgrade to $DBversion done (opac-detail default tag updated)\n";
        ");
 
     print "Upgrade to $DBversion done (opac-detail default tag updated)\n";
@@ -3208,7 +3186,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
        $dbh->do(qq{
        ALTER TABLE aqbasketgroups ADD deliveryplace VARCHAR(10) default NULL, ADD deliverycomment VARCHAR(255) default NULL;
        });
        $dbh->do(qq{
        ALTER TABLE aqbasketgroups ADD deliveryplace VARCHAR(10) default NULL, ADD deliverycomment VARCHAR(255) default NULL;
        });
-       
+
     print "Upgrade to $DBversion done (adding deliveryplace deliverycomment to basketgroups)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (adding deliveryplace deliverycomment to basketgroups)\n";
     SetVersion ($DBversion);
 }
@@ -3229,7 +3207,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
        });
        if (C4::Context->preference('marcflavour') eq 'UNIMARC'){
                $dbh->do(qq{
        });
        if (C4::Context->preference('marcflavour') eq 'UNIMARC'){
                $dbh->do(qq{
-       INSERT IGNORE INTO marc_subfield_structure (frameworkcode,tagfield, tagsubfield, tab, repeatable, mandatory,kohafield) 
+       INSERT IGNORE INTO marc_subfield_structure (frameworkcode,tagfield, tagsubfield, tab, repeatable, mandatory,kohafield)
        SELECT DISTINCT (frameworkcode),995,"j",10,0,0,"items.stocknumber" from biblio_framework ;
                });
                #Previously, copynumber was used as stocknumber
        SELECT DISTINCT (frameworkcode),995,"j",10,0,0,"items.stocknumber" from biblio_framework ;
                });
                #Previously, copynumber was used as stocknumber
@@ -3239,7 +3217,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                $dbh->do(qq{
        UPDATE items set copynumber=NULL;
                });
                $dbh->do(qq{
        UPDATE items set copynumber=NULL;
                });
-       }       
+       }
     print "Upgrade to $DBversion done (stocknumber field added)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (stocknumber field added)\n";
     SetVersion ($DBversion);
 }
@@ -3257,7 +3235,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
        $dbh->do(qq{
        ALTER TABLE aqbasketgroups ADD billingplace VARCHAR(10) NOT NULL AFTER deliverycomment;
        });
        $dbh->do(qq{
        ALTER TABLE aqbasketgroups ADD billingplace VARCHAR(10) NOT NULL AFTER deliverycomment;
        });
-       
+
     print "Upgrade to $DBversion done (Adding billingplace to aqbasketgroups)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (Adding billingplace to aqbasketgroups)\n";
     SetVersion ($DBversion);
 }
@@ -3267,7 +3245,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
        $dbh->do(qq{
        ALTER TABLE auth_subfield_structure MODIFY frameworkcode VARCHAR(10) NULL;
        });
        $dbh->do(qq{
        ALTER TABLE auth_subfield_structure MODIFY frameworkcode VARCHAR(10) NULL;
        });
-       
+
     print "Upgrade to $DBversion done (changing frameworkcode length in auth_subfield_structure)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (changing frameworkcode length in auth_subfield_structure)\n";
     SetVersion ($DBversion);
 }
@@ -3279,7 +3257,7 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
                 (9, 'edit_catalogue', 'Edit catalogue'),
                (9, 'fast_cataloging', 'Fast cataloging')
        });
                 (9, 'edit_catalogue', 'Edit catalogue'),
                (9, 'fast_cataloging', 'Fast cataloging')
        });
-       
+
     print "Upgrade to $DBversion done (granular permissions for cataloging added)\n";
     SetVersion ($DBversion);
 }
     print "Upgrade to $DBversion done (granular permissions for cataloging added)\n";
     SetVersion ($DBversion);
 }
@@ -3291,6 +3269,393 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
     SetVersion ($DBversion);
 }
 
+$DBversion = "3.01.00.101";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do(
+        "INSERT INTO systempreferences 
+           (variable, value, options, explanation, type)
+         VALUES (
+            'OverdueNoticeBcc', '', '', 
+            'Email address to Bcc outgoing notices sent by email',
+            'free')
+         ");
+       print "Upgrade to $DBversion done (added OverdueNoticeBcc system preferences)\n";
+    SetVersion ($DBversion);
+}
+$DBversion = "3.01.00.102";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do(
+    "UPDATE permissions set description = 'Edit catalog (Modify bibliographic/holdings data)' where module_bit = 9 and code = 'edit_catalogue'"
+    );
+       print "Upgrade done (fixed spelling error in edit_catalogue permission)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.103";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES (13, 'moderate_tags', 'Moderate patron tags')");
+       print "Upgrade done (adding patron permissions for tags tool)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.104";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+
+    my ($maninv_count, $borrnotes_count);
+    eval { $maninv_count = $dbh->do("SELECT 1 FROM authorised_values WHERE category='MANUAL_INV'"); };
+    if ($maninv_count == 0) {
+        $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('MANUAL_INV','Copier Fees','.25')");
+    }
+    eval { $borrnotes_count = $dbh->do("SELECT 1 FROM authorised_values WHERE category='BOR_NOTES'"); };
+    if ($borrnotes_count == 0) {
+        $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('BOR_NOTES','ADDR','Address Notes')");
+    }
+    
+    $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('LOC','CART','Book Cart')");
+    $dbh->do("INSERT INTO authorised_values (category,authorised_value,lib) VALUES ('LOC','PROC','Processing Center')");
+
+       print "Upgrade to $DBversion done ( add defaults to authorized values for MANUAL_INV and BOR_NOTES and add new default LOC authorized values for shelf to cart processing )\n";
+       SetVersion ($DBversion);
+}
+
+
+$DBversion = "3.01.00.105";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("
+      CREATE TABLE `collections` (
+        `colId` int(11) NOT NULL auto_increment,
+        `colTitle` varchar(100) NOT NULL default '',
+        `colDesc` text NOT NULL,
+        `colBranchcode` varchar(4) default NULL COMMENT 'branchcode for branch where item should be held.',
+        PRIMARY KEY  (`colId`)
+      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+    ");
+       
+    $dbh->do("
+      CREATE TABLE `collections_tracking` (
+        `ctId` int(11) NOT NULL auto_increment,
+        `colId` int(11) NOT NULL default '0' COMMENT 'collections.colId',
+        `itemnumber` int(11) NOT NULL default '0' COMMENT 'items.itemnumber',
+        PRIMARY KEY  (`ctId`)
+      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+    ");
+    $dbh->do("
+        INSERT INTO permissions (module_bit, code, description) 
+        VALUES ( 13, 'rotating_collections', 'Manage Rotating collections')" );
+       print "Upgrade to $DBversion done (added collection and collection_tracking tables for rotating collections functionality)\n";
+    SetVersion ($DBversion);
+}
+$DBversion = "3.01.00.106";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ( 'OpacAddMastheadLibraryPulldown', '0', '', 'Adds a pulldown menu to select the library to search on the opac masthead.', 'YesNo' )");
+       print "Upgrade done (added OpacAddMastheadLibraryPulldown system preferences)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.107';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    my $upgrade_script = C4::Context->config("intranetdir") . "/installer/data/mysql/patroncards_upgrade.pl";
+    system("perl $upgrade_script");
+    print "Upgrade to $DBversion done (Migrated labels and patroncards tables and data to new schema.)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.108';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do(qq{
+       ALTER TABLE `export_format` ADD `csv_separator` VARCHAR( 2 ) NOT NULL AFTER `marcfields` ,
+       ADD `field_separator` VARCHAR( 2 ) NOT NULL AFTER `csv_separator` ,
+       ADD `subfield_separator` VARCHAR( 2 ) NOT NULL AFTER `field_separator` 
+       });
+       print "Upgrade done (added separators for csv export)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.109";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do(qq{
+       ALTER TABLE `export_format` ADD `encoding` VARCHAR(255) NOT NULL AFTER `subfield_separator`
+       });
+       print "Upgrade done (added encoding for csv export)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.110';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do('ALTER TABLE `categories` ADD COLUMN `enrolmentperioddate` DATE NULL DEFAULT NULL AFTER `enrolmentperiod`');
+    print "Upgrade done (Add enrolment period date support)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.111';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    print "Upgrade done (mark DBrev for 3.2-alpha release)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.112';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do("INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES ('SpineLabelShowPrintOnBibDetails', '0', '', 'If turned on, a \"Print Label\" link will appear for each item on the bib details page in the staff interface.', 'YesNo');");
+       print "Upgrade done ( added Show Spine Label Printer on Bib Items Details preferences )\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.113';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    my $value = C4::Context->preference("XSLTResultsDisplay");
+    $dbh->do(
+        "INSERT INTO systempreferences (variable,value,type)
+         VALUES('OPACXSLTResultsDisplay',$value,'YesNo')");
+    $value = C4::Context->preference("XSLTDetailsDisplay");
+    $dbh->do(
+        "INSERT INTO systempreferences (variable,value,type)
+         VALUES('OPACXSLTDetailsDisplay',$value,'YesNo')");
+    print "Upgrade done (added two new syspref: OPACXSLTResultsDisplay and OPACXSLTDetailDisplay). You may have to go in Admin > System preference to tweak XSLT related syspref both in OPAC and Search tabs.\n     ";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.114';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type)VALUES('AutoSelfCheckAllowed', '0', 'For corporate and special libraries which want web-based self-check available from any PC without the need for a manual staff login. Most libraries will want to leave this turned off. If on, requires self-check ID and password to be entered in AutoSelfCheckID and AutoSelfCheckPass sysprefs.', '', 'YesNo')");
+    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckID','','Staff ID with circulation rights to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free')");
+    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoSelfCheckPass','','Password to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','','free')");
+       print "Upgrade to $DBversion done ( Added AutoSelfCheckAllowed, AutoSelfCheckID, and AutoShelfCheckPass system preference )\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.115';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do('UPDATE aqorders SET quantityreceived = 0 WHERE quantityreceived IS NULL');
+    $dbh->do('ALTER TABLE aqorders MODIFY COLUMN quantityreceived smallint(6) NOT NULL DEFAULT 0');
+       print "Upgrade to $DBversion done ( Default aqorders.quantityreceived to 0 )\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.116';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       if (C4::Context->preference('OrderPdfFormat') eq 'pdfformat::example'){
+               $dbh->do("UPDATE `systempreferences` set value='pdfformat::layout2pages' WHERE variable='OrderPdfFormat'");
+       }
+       print "Upgrade done ( corrected default OrderPdfFormat value if still set wrong )\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.117';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("UPDATE language_rfc4646_to_iso639 SET iso639_2_code = 'por' WHERE rfc4646_subtag='pt' ");
+    print "Upgrade to $DBversion done (corrected ISO 639-2 language code for Portuguese)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.118';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    my ($count) = $dbh->selectrow_array("SELECT count(*) FROM information_schema.columns
+                                         WHERE table_name = 'aqbudgets_planning'
+                                         AND column_name = 'display'");
+    if ($count < 1) {
+        $dbh->do("ALTER TABLE aqbudgets_planning ADD COLUMN display tinyint(1) DEFAULT 1");
+    }
+    print "Upgrade to $DBversion done (bug 4203: add display column to aqbudgets_planning if missing)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.119';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    eval{require Locale::Currency::Format};
+    if (!$@) {
+        print "Upgrade to $DBversion done (Locale::Currency::Format installed.)\n";
+        SetVersion ($DBversion);
+    }
+    else {
+        print "Upgrade to $DBversion done.\n";
+        print "NOTICE: The Locale::Currency::Format package is not installed on your system or not found in \@INC.\nThis dependency is required in order to include fine information in overdue notices.\nPlease ask your system administrator to install this package.\n";
+        SetVersion ($DBversion);
+    }
+}
+
+$DBversion = '3.01.00.120';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do(q{
+INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('soundon','0','Enable circulation sounds during checkin and checkout in the staff interface.  Not supported by all web browsers yet.','','YesNo');
+});
+    print "Upgrade to $DBversion done (bug 1080: add soundon system preference for circulation sounds)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.121';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("ALTER TABLE `reserves` ADD `expirationdate` DATE DEFAULT NULL");
+    $dbh->do("ALTER TABLE `reserves` ADD `lowestPriority` tinyint(1) NOT NULL");
+    $dbh->do("ALTER TABLE `old_reserves` ADD `expirationdate` DATE DEFAULT NULL");
+    $dbh->do("ALTER TABLE `old_reserves` ADD `lowestPriority` tinyint(1) NOT NULL");
+    print "Upgrade to $DBversion done ( Added Additional Fields to Reserves tables )\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.122';
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do(q{
+      INSERT INTO systempreferences (variable,value,explanation,options,type)
+      VALUES ('OAI-PMH:ConfFile', '', 'If empty, Koha OAI Server operates in normal mode, otherwise it operates in extended mode.','','File');
+});
+    print "Upgrade to $DBversion done. — Add a new system preference OAI-PMF:ConfFile\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.123";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
+        (6, 'place_holds', 'Place holds for patrons')");
+    $dbh->do("INSERT INTO `permissions` (`module_bit`, `code`, `description`) VALUES
+        (6, 'modify_holds_priority', 'Modify holds priority')");
+    $dbh->do("UPDATE `userflags` SET `flagdesc` = 'Place and modify holds for patrons' WHERE `flag` = 'reserveforothers'");
+    print "Upgrade to $DBversion done (Add granular permission for holds modification and update description of reserveforothers permission)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.124';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("
+        INSERT INTO `letter` (module, code, name, title, content)         VALUES('reserves', 'HOLDPLACED', 'Hold Placed on Item', 'Hold Placed on Item','A hold has been placed on the following item : <<title>> (<<biblionumber>>) by the user <<firstname>> <<surname>> (<<cardnumber>>).');
+    ");
+    print "Upgrade to $DBversion done (bug 3242: add HOLDPLACED letter template, which is used when emailLibrarianWhenHoldIsPlaced is enabled)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.125';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("
+        INSERT INTO `systempreferences` ( `variable` , `value` , `options` , `explanation` , `type` ) VALUES ( 'PrintNoticesMaxLines', '0', '', 'If greater than 0, sets the maximum number of lines an overdue notice will print. If the number of items is greater than this number, the notice will end with a warning asking the borrower to check their online account for a full list of overdue items.', 'Integer' );
+    ");
+    $dbh->do("
+        INSERT INTO message_transport_types (message_transport_type) values ('print');
+    ");
+    print "Upgrade to $DBversion done (bug 3482: Printable hold and overdue notices)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.126";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('ILS-DI','0','Enable ILS-DI services. See http://your.opac.name/cgi-bin/koha/ilsdi.pl for online documentation.','','YesNo')");
+       $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('ILS-DI:AuthorizedIPs','127.0.0.1','A comma separated list of IP addresses authorized to access the web services.','','free')");
+       
+    print "Upgrade to $DBversion done (Adding ILS-DI updates and ILS-DI:Authorized_IPs)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.127';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("ALTER TABLE messages CHANGE branchcode branchcode varchar(10);");
+    print "Upgrade to $DBversion done (bug 4190: messages in patron account did not work with branchcodes > 4)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.128';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do('CREATE INDEX budget_id ON aqorders (budget_id );');
+    print "Upgrade to $DBversion done (bug 4331: index orders by budget_id)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.129";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do("UPDATE `permissions` SET `code` = 'items_batchdel' WHERE `permissions`.`module_bit` =13 AND `permissions`.`code` = 'batchdel' LIMIT 1 ;");
+       $dbh->do("UPDATE `permissions` SET `code` = 'items_batchmod' WHERE `permissions`.`module_bit` =13 AND `permissions`.`code` = 'batchmod' LIMIT 1 ;");
+       print "Upgrade done (Change permissions names for item batch modification / deletion)\n";
+
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.130";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("UPDATE reserves SET expirationdate = NULL WHERE expirationdate = '0000-00-00'");
+    print "Upgrade done (change reserves.expirationdate values of 0000-00-00 to NULL (bug 1532)"; 
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.131";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do(q{
+INSERT IGNORE INTO message_transport_types (message_transport_type) VALUES ('print'),('feed');
+    });
+    print "Upgrade to $DBversion done (adding print and feed message transport types)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.132";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+       $dbh->do(q{
+    ALTER TABLE language_descriptions ADD INDEX subtag_type_lang (subtag, type, lang);
+    });
+    print "Upgrade to $DBversion done (Adding index to language_descriptions table)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.133';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES ('OverduesBlockCirc','noblock','When checking out an item should overdues block checkout, generate a confirmation dialogue, or allow checkout','noblock|confirmation|block','Choice')");
+    print "Upgrade to $DBversion done (bug 4405: added OverduesBlockCirc syspref to control whether circulation is blocked if a borrower has overdues)\n";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.134';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('DisplayMultiPlaceHold','1','Display the ability to place multiple holds or not','','YesNo')");
+    print "Upgrade to $DBversion done adding syspref DisplayMultiPlaceHold to control whether multiple holds can be placed from the search results page";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.135';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("
+        INSERT INTO `letter` (module, code, name, title, content) VALUES
+('reserves', 'HOLD_PRINT', 'Hold Available for Pickup (print notice)', 'Hold Available for Pickup (print notice)', '<<branches.branchname>>\r\n<<branches.branchaddress1>>\r\n<<branches.branchaddress2>>\r\n\r\n\r\nChange Service Requested\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<<borrowers.firstname>> <<borrowers.surname>>\r\n<<borrowers.address>>\r\n<<borrowers.city>> <<borrowers.zipcode>>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<<borrowers.firstname>> <<borrowers.surname>> <<borrowers.cardnumber>>\r\n\r\nYou have a hold available for pickup as of <<reserves.waitingdate>>:\r\n\r\nTitle: <<biblio.title>>\r\nAuthor: <<biblio.author>>\r\nCopy: <<items.copynumber>>\r\n')
+");
+    print "Upgrade to $DBversion done (bug 4377: added HOLD_PRINT message template)";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.136';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do(qq{
+INSERT INTO permissions (module_bit, code, description) VALUES
+   ( 9, 'edit_items', 'Edit Items');});
+    print "Upgrade to $DBversion done Adding a new permission to edit items";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.137";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+        $dbh->do("
+          INSERT INTO permissions (module_bit, code, description) VALUES
+          (15, 'check_expiration', 'Check the expiration of a serial'),
+          (15, 'claim_serials', 'Claim missing serials'),
+          (15, 'create_subscription', 'Create a new subscription'),
+          (15, 'delete_subscription', 'Delete an existing subscription'),
+          (15, 'edit_subscription', 'Edit an existing subscription'),
+          (15, 'receive_serials', 'Serials receiving'),
+          (15, 'renew_subscription', 'Renew a subscription'),
+          (15, 'routing', 'Routing');
+                 ");
+    print "Upgrade to $DBversion done (adding granular permissions for serials)";
+    SetVersion ($DBversion);
+}
+
+$DBversion = "3.01.00.138";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("DELETE FROM systempreferences WHERE variable = 'GranularPermissions'");
+    print "Upgrade to $DBversion done (bug 4896: removing GranularPermissions syspref; use of granular permissions is now the default)";
+    SetVersion ($DBversion);
+}
+
+$DBversion = '3.01.00.139';
+if (C4::Context->preference('Version') < TransformToNum($DBversion)){
+    $dbh->do("ALTER TABLE message_attributes CHANGE message_name message_name varchar(40);");
+    print "Upgrade to $DBversion done (bug 3682: change message_name from varchar(20) to varchar(40))\n";
+    SetVersion ($DBversion);
+}
+
+
 =item DropAllForeignKeys($table)
 
   Drop all foreign keys of the table $table
 =item DropAllForeignKeys($table)
 
   Drop all foreign keys of the table $table