From dcbee0835eea86c8226c88b67f55dee4e99ad3ba Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 17 Jan 2012 20:04:08 +0100 Subject: [PATCH] FFZG stocknumber value_builder plugin for YEAR-NR Squashed commit of the following: commit 87ff20b8470895b3261a408c503ca3d0f5130025 Author: Dobrica Pavlinusic Date: Tue Jan 17 19:47:27 2012 +0100 stocknumber in YEAR-NR format commit 9084f5a1199d9305570da122d3b383f2b2662bf8 Author: Dobrica Pavlinusic Date: Tue Jan 17 18:30:11 2012 +0100 begin value builder for inventory book --- cataloguing/value_builder/ffzg-stocknumber.pl | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 cataloguing/value_builder/ffzg-stocknumber.pl diff --git a/cataloguing/value_builder/ffzg-stocknumber.pl b/cataloguing/value_builder/ffzg-stocknumber.pl new file mode 100755 index 0000000000..0239f37984 --- /dev/null +++ b/cataloguing/value_builder/ffzg-stocknumber.pl @@ -0,0 +1,136 @@ +#!/usr/bin/perl + +# Copyright 2010 BibLibre SARL +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +use C4::Auth; +use CGI; +use C4::Context; + +=head1 DESCRIPTION + +This plugin is specific to FFZG but could be used as a base for similar operations. +It is used for stocknumber computation. + +If the user send an empty string, we return a simple incremented stocknumber for current year. +If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented. +In this case, a stocknumber has this form : "YEAR-0009678570". + - YEAR is numeric 4-digit year, like 2012 + - dash + - digits, without leading zero + +Required database changes: + + create unique index item_stocknumer on items(stocknumber) ; + + create table ffzg_inventarna_knjiga ( + id int not null auto_increment primary key, + year int not null, + num int not null, + biblionumber int not null, + last_update timestamp default current_timestamp on update current_timestamp, + unique index ffzg_inv_br(year,num) + ) ; + +=cut + +sub plugin_parameters { +} + +sub plugin_javascript { + my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; + + my $res=" + + "; + + return ($field_number,$res); +} + +sub plugin { + my ($input) = @_; + + + my $code = $input->param('code'); + my ( $year, $num ) = split(/-/,$code); + + $year = (localtime)[5] + 1900 unless $year; + +warn "XXX plugin code = $code"; + + my ($template, $loggedinuser, $cookie) = get_template_and_user({ + template_name => "cataloguing/value_builder/ajax.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {editcatalogue => '*'}, + debug => 1, + }); + + if ( ! $num ) { + + my $dbh = C4::Context->dbh; + + $dbh->begin_work; + + my $sth = $dbh->prepare("select max(num) from ffzg_inventarna_knjiga where year = ?"); + $sth->execute($year); + + my $max = $sth->fetchrow; # return null without any data + $max += 1; + + $sth = $dbh->prepare("insert into ffzg_inventarna_knjiga (year,num) values (?,?)"); + $sth->execute( $year, $max ); + + $dbh->commit; + + $num = $max; + + } + + $template->param( + return => $year . '-' . $num, + ); + + output_html_with_http_headers $input, $cookie, $template->output; +} + +1; -- 2.20.1