Use biblioitems.itemtype as a default for items.itype
authorMichael Hafen <mdhafen@tech.washk12.org>
Fri, 12 Sep 2008 19:16:58 +0000 (13:16 -0600)
committerJohn Soros <john.soros@biblibre.com>
Tue, 28 Apr 2009 11:15:10 +0000 (13:15 +0200)
This correct the html select default in additem.pl, and enforces use of
biblioitems.itemtype as the default in Items::AddItem.  The code in
Items is to catch items added through MARC record staging.

Thanks to Joe Atzberger for suggestion.

[RM note: this patch means that an item's item-level item type,
 once that item is added or updated via additem.pl,
 now cannot be blank or NULL unless the biblio-level item type
 is blank.]

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
C4/Items.pm
cataloguing/additem.pl

index dcac099..0f7d6a3 100644 (file)
@@ -224,6 +224,12 @@ sub AddItem {
     _set_derived_columns_for_add($item);
     $item->{'more_subfields_xml'} = _get_unlinked_subfields_xml($unlinked_item_subfields);
     # FIXME - checks here
+    unless ( $item->{itype} ) {  # default to biblioitem.itemtype if no itype
+        my $itype_sth = $dbh->prepare("SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
+        $itype_sth->execute( $item->{'biblionumber'} );
+        ( $item->{'itype'} ) = $itype_sth->fetchrow_array;
+    }
+
        my ( $itemnumber, $error ) = _koha_new_item( $item, $item->{barcode} );
     $item->{'itemnumber'} = $itemnumber;
 
index 62885d2..f2f1922 100755 (executable)
@@ -333,7 +333,16 @@ foreach my $tag (sort keys %{$tagslib}) {
               push @authorised_values, $itemtype;
               $authorised_lib{$itemtype} = $description;
           }
-          $value = $itemtype unless ($value);
+
+          unless ( $value ) {
+              my $default_itemtype;
+              my $itype_sth = $dbh->prepare("SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
+              $itype_sth->execute( $biblionumber );
+              ( $default_itemtype ) = $itype_sth->fetchrow_array;
+              $value = $default_itemtype;
+          }
+  
+          #---- class_sources
       }
       elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) {
           push @authorised_values, "" unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );