From ba36be1cbcb0358bdbf0a83ca835526df00d622d Mon Sep 17 00:00:00 2001 From: Joshua Ferraro Date: Sat, 6 Oct 2007 00:23:47 -0500 Subject: [PATCH] refining barcode plugin, two new options Signed-off-by: Chris Cormack Signed-off-by: Joshua Ferraro --- cataloguing/value_builder/barcode.pl | 91 ++++++++++------- .../value_builder/usmarc_field_952v.pl | 99 ------------------- installer/data/en/mandatory/sysprefs.sql | 2 +- 3 files changed, 59 insertions(+), 133 deletions(-) delete mode 100755 cataloguing/value_builder/usmarc_field_952v.pl diff --git a/cataloguing/value_builder/barcode.pl b/cataloguing/value_builder/barcode.pl index 8e6ccd478c..7ad5769c68 100755 --- a/cataloguing/value_builder/barcode.pl +++ b/cataloguing/value_builder/barcode.pl @@ -47,43 +47,62 @@ the 3 scripts are inserted after the in the html code =cut sub plugin_javascript { -my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; -my $function_name= "barcode".(int(rand(100000))+1); + my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; + my $function_name= "barcode".(int(rand(100000))+1); -# find today's date -my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = + # find today's date + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -$year +=1900; -$mon +=1; -if (length($mon)==1) { - $mon = "0".$mon; -} -if (length($mday)==1) { - $mday = "0".$mday; -} -if (length($hour)==1) { - $hour = "0".$hour; -} -if (length($min)==1) { + $year +=1900; + $mon +=1; + if (length($mon)==1) { + $mon = "0".$mon; + } + if (length($mday)==1) { + $mday = "0".$mday; + } + if (length($hour)==1) { + $hour = "0".$hour; + } + if (length($min)==1) { $min = "0".$min; -} -if (length($sec)==1) { + } + if (length($sec)==1) { $hour = "0".$sec; -} + } -my $dbh = C4::Context->dbh; -my $date = "$year"; + my $dbh = C4::Context->dbh; + my $date = "$year"; -my $query = "select max(abs(barcode)) from items"; -my $sth=$dbh->prepare($query); -$sth->execute(); -my $nextnum; -while (my ($count)= $sth->fetchrow_array) { - $nextnum = $count; - warn "COUNT".$count; -} -$nextnum++; -my $res = " + my ($tag,$subfield) = GetMarcFromKohaField("items.barcode"); + + my $nextnum; + my $query; + my $autoBarcodeType = C4::Context->preference("autoBarcode"); + unless ($autoBarcodeType eq 'OFF' or !$autoBarcodeType) { + + if ($autoBarcodeType eq 'annual') { + $query = "select max(cast( substring_index(barcode, '-',-1) as signed)) from items where barcode like ?"; + my $sth=$dbh->prepare($query); + $sth->execute("$year%"); + while (my ($count)= $sth->fetchrow_array) { + $nextnum = $count if $count; + } + $nextnum++; + $nextnum = sprintf("%0*d", "4",$nextnum); + $nextnum = "$year-$nextnum"; + } + elsif ($autoBarcodeType eq 'incremental') { + # not the best, two catalogers could add the same barcode easily this way :/ + $query = "select max(abs(barcode)) from items"; + my $sth=$dbh->prepare($query); + $sth->execute(); + while (my ($count)= $sth->fetchrow_array) { + $nextnum = $count; + } + $nextnum++; + } + my $res = " "; -return ($function_name,$res); + + # don't return a value unless we have the appropriate syspref set + return ($function_name,$res); + } + else { + return ($function_name,""); + } } =head1 diff --git a/cataloguing/value_builder/usmarc_field_952v.pl b/cataloguing/value_builder/usmarc_field_952v.pl deleted file mode 100755 index 5ff0931d1a..0000000000 --- a/cataloguing/value_builder/usmarc_field_952v.pl +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/perl - -# $Id$ - -# Copyright 2000-2002 Katipo Communications -# -# 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA - -require Exporter; -use C4::Auth; -use C4::Context; -use C4::Output; -use CGI; -use C4::Search; -use MARC::Record; -use C4::Koha; - - -=head1 - -plugin_parameters : other parameters added when the plugin is called by the dopop function - -=cut -sub plugin_parameters { -my ($dbh,$record,$tagslib,$i,$tabloop) = @_; -return ""; -} - -=head1 - -plugin_javascript : the javascript function called when the user enters the subfield. -contain 3 javascript functions : -* one called when the field is entered (OnFocus). Named FocusXXX -* one called when the field is leaved (onBlur). Named BlurXXX -* one called when the ... link is clicked () named ClicXXX - -returns : -* XXX -* a variable containing the 3 scripts. -the 3 scripts are inserted after the in the html code - -=cut -sub plugin_javascript { -my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; -my $function_name= "210c".(int(rand(100000))+1); - -# find today's date -my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = - localtime(time); -$year +=1900; -$mon +=1; -my $date = "$year-$mon-$mday"; -my $res = " - -"; -return ($function_name,$res); -} - -=head1 - -plugin : the true value_builded. The screen that is open in the popup window. - -=cut - -sub plugin { -my ($input) = @_; -return ""; -} - -1; diff --git a/installer/data/en/mandatory/sysprefs.sql b/installer/data/en/mandatory/sysprefs.sql index a5a8929350..5a09a29277 100644 --- a/installer/data/en/mandatory/sysprefs.sql +++ b/installer/data/en/mandatory/sysprefs.sql @@ -5,7 +5,7 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AmazonDevKey','','See: aws-portal.amazon.com/gp/aws/developer/registration/index.html','','free'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AnonSuggestions','0','Set to anonymous borrowernumber to enable Anonymous suggestions',NULL,'free'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('authoritysep','--','Used to separate a list of authorities in a display. Usually --','10','free'); -INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('autoBarcode','1','If ON, barcode is auto-calculated','','YesNo'); +INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('autoBarcode','OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002','incremental|annual|OFF','Choice'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutoLocation','0','If ON, IP authentication is enabled, blocking access to the staff client from unauthorized IP addresses',NULL,'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('AutomaticItemReturn','1','If ON, items attempt to return to their home branch when checked in',NULL,'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('autoMemberNum','1','If ON, patron number is auto-calculated','','YesNo'); -- 2.39.5