FFZG #390 - Signatura zatvorenog spremišta
[koha.git] / cataloguing / additem.pl
index 70ca4a9..ce12906 100755 (executable)
@@ -306,6 +306,29 @@ my ($template, $loggedinuser, $cookie)
                  });
 
 
+# XXX dpavlin -- signatura zatvorenog spremista
+sub ffzg_zs_callnumber {
+       my ($record) = @_;
+       my ($tagfield,$tagsubfield) = &GetMarcFromKohaField("items.itemcallnumber",$frameworkcode);
+       if ($record->field($tagfield)->subfield($tagsubfield) =~ m/^ZS#(\w\w)\s(\d+)-(\d+)$/ ) {
+               my ( $prefix, $min, $max ) = ( $1, $2, $3 );
+               my $sth = $dbh->prepare(qq{ select ffzg_zs_nextval(?) });
+               $sth->execute( $prefix );
+               my ($itemcallnumber) = $sth->fetchrow;
+
+warn "ZS: $prefix $min - $max => $itemcallnumber\n";
+
+               if ( $itemcallnumber < $min || $itemcallnumber > $max ) {
+                       die "can't find next itemcallnumber for $prefix $min-$max, got: $itemcallnumber";
+               }
+               my $fieldItem = $record->field($tagfield);
+               $fieldItem->update($tagsubfield => $prefix . ' ' . $itemcallnumber);
+       }
+       return $record;
+}
+
+
+
 my $today_iso = C4::Dates->today('iso');
 $template->param(today_iso => $today_iso);
 
@@ -338,6 +361,8 @@ if ($op eq "additem") {
         $record = _increment_barcode($record, $frameworkcode);
     }
 
+       $record = ffzg_zs_callnumber( $record ); # XXX dpavlin
+
     my $addedolditem = TransformMarcToKoha($dbh,$record);
 
     # If we have to add or add & duplicate, we add the item
@@ -511,6 +536,9 @@ if ($op eq "additem") {
     # MARC::Record builded => now, record in DB
     # warn "R: ".$record->as_formatted;
     # check that the barcode don't exist already
+
+       $itemtosave = ffzg_zs_callnumber( $itemtosave ); # XXX dpavlin
+
     my $addedolditem = TransformMarcToKoha($dbh,$itemtosave);
     my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
     if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {