Fix for bug 2885, now an error message is thrown instead of a silent fail
authorChris Cormack <chris@bigballofwax.co.nz>
Sat, 26 Dec 2009 09:23:05 +0000 (22:23 +1300)
committerGalen Charlton <gmcharlt@gmail.com>
Mon, 15 Feb 2010 01:29:44 +0000 (20:29 -0500)
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
C4/Branch.pm
admin/branches.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tmpl

index 34f716a..a6b1a3a 100644 (file)
@@ -44,6 +44,7 @@ BEGIN {
                &ModBranchCategoryInfo
                &DelBranch
                &DelBranchCategory
+               &CheckCategoryUnique
        );
        @EXPORT_OK = qw( &onlymine &mybranch get_branch_code_from_name );
 }
@@ -526,20 +527,42 @@ sets the data from the editbranch form, and writes to the database...
 sub ModBranchCategoryInfo {
     my ($data) = @_;
     my $dbh    = C4::Context->dbh;
-       if ($data->{'add'}){
-               # we are doing an insert
-               my $sth   = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)");
-               $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} );
-               $sth->finish();         
-       }
-       else {
-               # modifying
-               my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?");
-               $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) );
-               $sth->finish();
-       }
+    if ($data->{'add'}){
+       # we are doing an insert
+       my $sth   = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)");
+       $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} );
+       $sth->finish();         
+    }
+    else {
+       # modifying
+       my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?");
+       $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) );
+       $sth->finish();
+    }
+}
+
+=head2 CheckCategoryUnique
+
+if (CheckCategoryUnique($categorycode)){
+  # do something
 }
 
+=cut
+
+sub CheckCategoryUnique {
+    my $categorycode = shift;
+    my $dbh    = C4::Context->dbh;
+    my $sth = $dbh->prepare("SELECT categorycode FROM branchcategories WHERE categorycode = ?");
+    $sth->execute(uc( $categorycode) );
+    if (my $data = $sth->fetchrow_hashref){
+       return 0;
+    }
+    else {
+       return 1;
+    }
+}
+
+    
 =head2 DeleteBranchCategory
 
 DeleteBranchCategory($categorycode);
index 744ccfb..1d6b188 100755 (executable)
@@ -151,6 +151,15 @@ elsif ( $op eq 'addcategory_validate' ) {
     unless ( $params->{'categorycode'} && $params->{'categoryname'} ) {
         default("MESSAGE4",$template);
     }
+    elsif ($input->param('add')){
+       # doing an add must check the code is unique
+       if (CheckCategoryUnique($input->param('categorycode'))){
+           ModBranchCategoryInfo($params);
+       }
+       else {
+           default("MESSAGE9",$template);
+       }
+    }
     else {
         ModBranchCategoryInfo($params);
         default("MESSAGE5",$template);
index de96c18..e05024e 100644 (file)
     <!-- TMPL_IF name="MESSAGE6" --><div class="dialog message">Library category deleted</div><!-- /TMPL_IF -->
     <!-- TMPL_IF name="MESSAGE7" --><div class="dialog message">Library cannot be deleted because there are patrons or items using that library</div><!-- /TMPL_IF -->
     <!-- TMPL_IF name="MESSAGE8" --><div class="dialog message">Category cannot be deleted because there are libraries using that category</div><!-- /TMPL_IF -->
-
+    <!-- TMPL_IF name="MESSAGE9" --><div class="dialog message">Category cannot be added, categorycode already exists</div><!-- /TMPL_IF -->
 <!-- TMPL_IF NAME="branches" -->
     <table id="branchest">
 <thead><tr>