From a87b416262480d811872df088e0f381a0e8940a9 Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Fri, 13 Sep 2024 15:40:16 +0200 Subject: [PATCH] Bug 41785: Add stocknumber with incremental value with space Test plan: 1) Add authorised values with "INVENTORY_SPACING" code 2) Link the plugin to a field/subfield in your framework 3) Use it during biblio or item edition 4) See that the plugin increment your value correctly Sponsored-by: BibLibre --- .../value_builder/stocknumberAV_spacing.pl | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100755 cataloguing/value_builder/stocknumberAV_spacing.pl diff --git a/cataloguing/value_builder/stocknumberAV_spacing.pl b/cataloguing/value_builder/stocknumberAV_spacing.pl new file mode 100755 index 00000000000..59080fed76e --- /dev/null +++ b/cataloguing/value_builder/stocknumberAV_spacing.pl @@ -0,0 +1,138 @@ +#!/usr/bin/perl + +# Converted to new plugin style (Bug 13437) + +# 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 3 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, see . + +use Modern::Perl; +use CGI qw ( -utf8 ); + +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Koha qw( GetAuthorisedValues ); + +=head1 DESCRIPTION + +This plugin is based on authorised values from INVENTORY. +It is used for stocknumber computation. + +If no prefix is submitted, or the prefix does contain only +numbers, it returns the inserted code (= keep the field unchanged). + +If a prefix is submitted, we look for the highest stocknumber +with this prefix and return it incremented. + +In this case, a stocknumber has this form (e.g. "PREFIX 9678570"): +PREFIX containing letters, a space separator and incremential value. + +=cut + +my $builder = sub { + my ($params) = @_; + + my @options_array; + my $av = GetAuthorisedValues("INVENTORY_SPACING"); + + push @options_array, ""; + for my $r (@$av) { + push @options_array, ""; + } + + my $options = join '', @options_array; + + my $res = qq{ + + }; + + return $res; +}; + +my $launcher = sub { + my ($params) = @_; + my $input = $params->{cgi}; + my $code = $input->param('code'); + + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "cataloguing/value_builder/ajax.tt", + query => $input, + type => "intranet", + flagsrequired => { editcatalogue => '*' }, + } + ); + + # 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-zA-Z]+$/ ) { + my $av = Koha::AuthorisedValues->find( + { + 'category' => 'INVENTORY_SPACING', + 'authorised_value' => $code + } + ); + if ($av) { + $av->lib( $av->lib + 1 ); + $av->store; + $template->param( return => $code . ' ' . sprintf( '%s', ( $av->lib ) ), ); + } 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; +}; + +return { builder => $builder, launcher => $launcher }; -- 2.39.5