From: Dobrica Pavlinusic Date: Sun, 1 Jan 2012 12:18:50 +0000 (+0100) Subject: FFZG #390 - Signatura zatvorenog spremišta X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=771a93287f4902d8fc96f646b07942b2a5288d85;p=koha.git FFZG #390 - Signatura zatvorenog spremišta Implementirati višestruke nizove signatura prema formatu Ovo je port na Template Toolkit za Kohu 3.4 i novije --- diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index d22558fb41..02e95e17a9 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -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) { diff --git a/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl b/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl new file mode 100755 index 0000000000..14512f32db --- /dev/null +++ b/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.pl @@ -0,0 +1,126 @@ +#!/usr/bin/perl + +use strict; +use C4::Auth; +use CGI; +use C4::Context; + +use C4::Search; +use C4::Output; + +=head1 NAME + +plugin ffzg-signatura-zatvoreno-spremiste + +=head1 SYNOPSIS + +generate signatura + +=head1 DESCRIPTION + +=head1 FUNCTIONS + +=over 2 + +=cut + +sub plugin_parameters { +my ($dbh,$record,$tagslib,$i,$tabloop) = @_; +return ""; +} + +sub plugin_javascript { + my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; + my $function_name= $field_number; + my $res=" + +"; + + return ($function_name,$res); +} + + +my $signature = [ + "knjige (formalno signiranje)" => [ + [ "PA 100001-999999", "do 18 cm" ], + [ "PB 100001-999999", "18,1-25 cm" ], + [ "PC 100001-999999", "25,1-35 cm" ], + [ "PD 100001-999999", "iznad 35 cm" ], + [ "PE 100001-999999", "poprečni format" ], + ], + "posebne zbirke" => [ + [ "DD 100001-999999", "Doktorske disertacije" ], + [ "MR 100001-999999", "Magistarski i specijalistički radovi" ], + [ "DR 100001-999999", "Diplomski i zavrÅ¡ni radovi" ], + [ "FO 100001-999999", "Fotokopije" ], + [ "SE 100001-999999", "Separati" ], + ], +]; + + +sub plugin { + my ($input) = @_; + my $index= $input->param('index'); + my $index2= $input->param('index2'); + $index2=-1 unless($index2); + my $result= $input->param('result'); + + + my @optgroup; + + while( my $optgroup = shift @$signature ) { + + my $g = { label => $optgroup }; + + my $o = shift @$signature; + foreach my $option ( @$o ) { + + my ( $template, $display ) = @$option; + push @{ $g->{option} }, { display => $display, value => $template }; + } + push @optgroup, $g; + } + + my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {editcatalogue => 1}, + debug => 1, + }); + $template->param( + index => $index, + index2 => $index2, + "f1_$result" => "f1_".$result, + optgroup => [ @optgroup ], + ); + output_html_with_http_headers $input, $cookie, $template->output; +} + +1; diff --git a/ffzg/ffzg-390-signatura-zatvorenog-spremista/ffzg_zs_seq.sql b/ffzg/ffzg-390-signatura-zatvorenog-spremista/ffzg_zs_seq.sql new file mode 100644 index 0000000000..2a225eea3c --- /dev/null +++ b/ffzg/ffzg-390-signatura-zatvorenog-spremista/ffzg_zs_seq.sql @@ -0,0 +1,41 @@ + +drop table if exists ffzg_zs_seq; + +create table ffzg_zs_seq ( + name varchar(2) unique not null, + current integer unsigned not null +); + +insert into ffzg_zs_seq values ('PA',100000); +insert into ffzg_zs_seq values ('PB',100000); +insert into ffzg_zs_seq values ('PC',100000); +insert into ffzg_zs_seq values ('PD',100000); +insert into ffzg_zs_seq values ('PE',100000); +insert into ffzg_zs_seq values ('DD',100000); +insert into ffzg_zs_seq values ('MR',100000); +insert into ffzg_zs_seq values ('DR',100000); +insert into ffzg_zs_seq values ('FO',100000); +insert into ffzg_zs_seq values ('SE',100000); + +update ffzg_zs_seq +set current=( + select + max(substring_index(itemcallnumber,' ',-1)) + from items + where substring_index(itemcallnumber,' ',1) = ffzg_zs_seq.name +); + +update ffzg_zs_seq set current = 100000 where current < 100000 ; + +select * from ffzg_zs_seq ; + +delimiter | + +create function ffzg_zs_nextval( seq_name varchar(2) ) +returns integer unsigned +begin + update ffzg_zs_seq set current = ( @next_val := current + 1 ) where name = seq_name ; + return @next_val; +end| + +delimiter ; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tt new file mode 100644 index 0000000000..aa9b502224 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/ffzg-signatura-zatvoreno-spremiste.tt @@ -0,0 +1,56 @@ + + + + + +Signature za zatvoreno spremiÅ¡te + + + + +

Signature za zatvoreno spremište

+
+ + + + [% FOREACH group IN optgroup %] + + + [% FOREACH opt IN group.option %] + + [% END %] + [% END %] + + +
[% group.label %]
+ + + [% opt.display %]
+ + +
+
+ + +