From 503ea1ad2ac555bdfd4a0fbd0f4d54e050967336 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 30 Aug 2012 15:31:14 +0200 Subject: [PATCH] Bug 7992: New plugin stocknumberAV Bugzilla description (from delaye): 1 / Create a list of authorised values(INVENTORY_NUMBER). In which the code is the prefix and the description the last number assigned. 2/A space between the prefix and number. 3 / From a holding record, after indicate the prefix when you click on the plugin -> koha search the last number from authorised values assigned in the list and increment n +1 level meter --- cataloguing/value_builder/stocknumberAV.pl | 113 ++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 cataloguing/value_builder/stocknumberAV.pl diff --git a/cataloguing/value_builder/stocknumberAV.pl b/cataloguing/value_builder/stocknumberAV.pl new file mode 100755 index 0000000..0578d44 --- /dev/null +++ b/cataloguing/value_builder/stocknumberAV.pl @@ -0,0 +1,113 @@ +#!/usr/bin/perl + +# Copyright 2012 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 Modern::Perl; +use C4::Auth; +use CGI; +use C4::Context; + +=head1 DESCRIPTION + +This plugin is based on authorised values INVENTORY. +It is used for stocknumber computation. + +If the user send an empty string, we return a simple incremented stocknumber. +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 : "PREFIX 0009678570". + - PREFIX is an upercase word + - a space separator + - 10 digits, with leading 0s if needed + +=cut + +sub plugin_parameters { +} + +sub plugin_javascript { + my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; + my $res = qq{ + + }; + + return ($field_number,$res); +} + +sub plugin { + my ($input) = @_; + my $code = $input->param('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, + } + ); + + my $dbh = C4::Context->dbh; + + # If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented + $code =~ s/ *$//g; + if ( $code =~ m/^[A-Z]+$/ ) { + my $sth = $dbh->prepare("SELECT lib FROM authorised_values WHERE category='INVENTORY' AND authorised_value=?"); + $sth->execute( $code); + + if ( my $valeur = $sth->fetchrow ) { + $template->param( return => $code . ' ' . sprintf( '%010s', ( $valeur + 1 ) ), ); + my $sth2 = $dbh->prepare("UPDATE authorised_values SET lib=? WHERE category='INVENTORY' AND authorised_value=?"); + $sth2->execute($valeur+1,$code); + } else { + $template->param( return => "There is no defined value for $code"); + } + # The user entered a custom value, we don't touch it, this could be handled in js + } else { + $template->param( return => $code, ); + } + + output_html_with_http_headers $input, $cookie, $template->output; +} + +1; -- 1.7.10.4