#!/usr/bin/perl # # Copyright 2008-2010 Foundations Bible College # Parts copyright 2012 C & P Bibliography Services # # 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. package C4::Barcodes::ValueBuilder::incremental; use C4::Context; my $DEBUG = 0; sub get_barcode { my ($args) = @_; my $nextnum; # not the best, two catalogers could add the same barcode easily this way :/ my $query = "select max(abs(barcode)) from items"; my $sth = C4::Context->dbh->prepare($query); $sth->execute(); while (my ($count)= $sth->fetchrow_array) { $nextnum = $count; } $nextnum++; return $nextnum; } 1; package C4::Barcodes::ValueBuilder::hbyymmincr; use C4::Context; my $DEBUG = 0; sub get_barcode { my ($args) = @_; my $nextnum; my $year = substr($args->{year}, -2); my $query = "SELECT MAX(CAST(SUBSTRING(barcode,-4) AS signed)) AS number FROM items WHERE barcode REGEXP ?"; my $sth = C4::Context->dbh->prepare($query); $sth->execute("^[-a-zA-Z]{1,}$year"); while (my ($count)= $sth->fetchrow_array) { $nextnum = $count if $count; $nextnum = 0 if $nextnum == 9999; # this sequence only allows for cataloging 10000 books per month warn "Existing incremental number = $nextnum" if $DEBUG; } $nextnum++; $nextnum = sprintf("%0*d", "4",$nextnum); $nextnum = $year . $args->{mon} . $nextnum; warn "New hbyymmincr Barcode = $nextnum" if $DEBUG; my $scr = " for (i=0 ; i{loctag}' && document.f.subfield[i].value == '$args->{locsubfield}') { fnum = i; } } if (\$('#' + id).val() == '') { \$('#' + id).val(document.f.field_value[fnum].value + '$nextnum'); } "; return $nextnum, $scr; } package C4::Barcodes::ValueBuilder::annual; use C4::Context; my $DEBUG = 0; sub get_barcode { my ($args) = @_; my $nextnum; my $query = "select max(cast( substring_index(barcode, '-',-1) as signed)) from items where barcode like ?"; my $sth=C4::Context->dbh->prepare($query); $sth->execute("$args->{year}%"); while (my ($count)= $sth->fetchrow_array) { warn "Examining Record: $count" if $DEBUG; $nextnum = $count if $count; } $nextnum++; $nextnum = sprintf("%0*d", "4",$nextnum); $nextnum = "$args->{year}-$nextnum"; return $nextnum; } 1; =head1 Barcodes::ValueBuilder This module is intended as a shim to ease the eventual transition from having all barcode-related code in the value builder plugin .pl file to using C4::Barcodes. Since the shift will require a rather significant amount of refactoring, this module will return value builder-formatted results, at first by merely running the code that was formerly in the barcodes.pl value builder, but later by using C4::Barcodes. =cut 1;