[Koha-patches] [PATCH] [followup](bug #3819) hold policies implementation

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Mon Nov 30 16:47:33 CET 2009


This still backports updatedatabase from head, update kohastructure, and fix smart-rules.tmpl/.pl.
---
 admin/smart-rules.pl                               |   31 ++++++++++++++++++++
 installer/data/mysql/kohastructure.sql             |   16 ++++++++++
 installer/data/mysql/updatedatabase30.pl           |   28 +++++++++++++++++-
 .../prog/en/modules/admin/smart-rules.tmpl         |    1 +
 4 files changed, 75 insertions(+), 1 deletions(-)

diff --git a/admin/smart-rules.pl b/admin/smart-rules.pl
index 2dd1878..2be5364 100755
--- a/admin/smart-rules.pl
+++ b/admin/smart-rules.pl
@@ -365,7 +365,38 @@ foreach my $entry (@sorted_branch_cat_rules, @sorted_row_loop) {
     $entry->{unlimited_maxissueqty} = 1 unless defined($entry->{maxissueqty});
 }
 
+my $sth_branch_item;
+if ($branch eq "*") {
+    $sth_branch_item = $dbh->prepare("
+        SELECT default_branch_item_rules.*, itemtypes.description AS humanitemtype
+        FROM default_branch_item_rules
+        JOIN itemtypes USING (itemtype)
+    ");
+    $sth_branch_item->execute();
+} else {
+    $sth_branch_item = $dbh->prepare("
+        SELECT branch_item_rules.*, itemtypes.description AS humanitemtype
+        FROM branch_item_rules
+        JOIN itemtypes USING (itemtype)
+        WHERE branch_item_rules.branchcode = ?
+    ");
+    $sth_branch_item->execute($branch);
+}
+
+my @branch_item_rules = ();
+while (my $row = $sth_branch_item->fetchrow_hashref) {
+    push @branch_item_rules, $row;
+}
+my @sorted_branch_item_rules = sort { $a->{'humanitemtype'} cmp $b->{'humanitemtype'} } @branch_item_rules;
+
+# note undef holdallowed so that template can deal with them
+foreach my $entry (@sorted_branch_item_rules) {
+    $entry->{holdallowed_any} = 1 if($entry->{holdallowed} == 2);
+    $entry->{holdallowed_same} = 1 if($entry->{holdallowed} == 1);
+}
+
 $template->param(show_branch_cat_rule_form => 1);
+$template->param(branch_item_rule_loop => \@sorted_branch_item_rules);
 $template->param(branch_cat_rule_loop => \@sorted_branch_cat_rules);
 
 $template->param(categoryloop => \@category_loop,
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 4d1d9cf..3e1acc6 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -747,6 +747,7 @@ DROP TABLE IF EXISTS `default_branch_circ_rules`;
 CREATE TABLE `default_branch_circ_rules` (
   `branchcode` VARCHAR(10) NOT NULL,
   `maxissueqty` int(4) default NULL,
+  `holdallowed` int(1) default NULL,
   PRIMARY KEY (`branchcode`),
   CONSTRAINT `default_branch_circ_rules_ibfk_1` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
     ON DELETE CASCADE ON UPDATE CASCADE
@@ -765,6 +766,20 @@ CREATE TABLE `default_branch_item_rules` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 --
+-- Table structure for table `branch_item_rules`
+--
+
+CREATE TABLE `branch_item_rules` (
+          `branchcode` varchar(10) NOT NULL,
+          `itemtype` varchar(10) NOT NULL,
+          `holdallowed` tinyint(1) default NULL,
+          PRIMARY KEY  (`itemtype`,`branchcode`),
+          KEY `branch_item_rules_ibfk_2` (`branchcode`),
+          CONSTRAINT `branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE,
+          CONSTRAINT `branch_item_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
+        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
+
+--
 -- Table structure for table `default_circ_rules`
 --
 
@@ -772,6 +787,7 @@ DROP TABLE IF EXISTS `default_circ_rules`;
 CREATE TABLE `default_circ_rules` (
     `singleton` enum('singleton') NOT NULL default 'singleton',
     `maxissueqty` int(4) default NULL,
+    `holdallowed` int(1) default NULL,
     PRIMARY KEY (`singleton`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
diff --git a/installer/data/mysql/updatedatabase30.pl b/installer/data/mysql/updatedatabase30.pl
index 83d3062..941153e 100644
--- a/installer/data/mysql/updatedatabase30.pl
+++ b/installer/data/mysql/updatedatabase30.pl
@@ -632,7 +632,7 @@ OPACISBDEN
     SetVersion ($DBversion);
 }  
 
-$DBversion = "3.00.04.021";
+$DBversion = "3.00.05.001";
 if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     $dbh->do(<<DEFAULTBRANCHRULES);
     CREATE TABLE `default_branch_item_rules` (
@@ -645,6 +645,32 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
 DEFAULTBRANCHRULES
 }
 
+$DBversion = "3.00.05.001";
+#$DBversion = "3.01.00.012";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('AllowHoldPolicyOverride', '0', 'Allow staff to override hold policies when placing holds',NULL,'YesNo')");
+    $dbh->do("
+        CREATE TABLE `branch_item_rules` (
+          `branchcode` varchar(10) NOT NULL,
+          `itemtype` varchar(10) NOT NULL,
+          `holdallowed` tinyint(1) default NULL,
+          PRIMARY KEY  (`itemtype`,`branchcode`),
+          KEY `branch_item_rules_ibfk_2` (`branchcode`),
+          CONSTRAINT `branch_item_rules_ibfk_1` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE,
+          CONSTRAINT `branch_item_rules_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE
+        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
+    ");
+    $dbh->do("
+        ALTER TABLE default_branch_circ_rules
+            ADD COLUMN holdallowed tinyint(1) NULL
+    ");
+    $dbh->do("
+        ALTER TABLE default_circ_rules
+            ADD COLUMN holdallowed tinyint(1) NULL
+    ");
+    print "Upgrade to $DBversion done (Add tables and system preferences for holds policies)\n";
+    SetVersion ($DBversion);
+}
 
 =item DropAllForeignKeys($table)
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tmpl
index 0badb0c..c5e6edc 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tmpl
@@ -255,6 +255,7 @@ $(document).ready(function() {
                 <tr>
                     <td>
                         <select name="itemtype">
+                        	<option value="*">All item types</option>
                         <!-- TMPL_LOOP NAME="itemtypeloop" -->
                             <option value="<!-- TMPL_VAR NAME="itemtype" -->"><!-- TMPL_VAR NAME="description" --></option>
                         <!-- /TMPL_LOOP -->
-- 
1.6.3.3




More information about the Koha-patches mailing list