Koha/cataloguing/value_builder/stocknumberAV.pl
Katrin Fischer 817e795df7
Bug 22098: (QA follow-up) Improving documentation
Improves the documentation of the script a bit, but makes one
important change:

-If no prefix is submitted, or prefix does not contain only
-numbers, it returns the inserted code (= keep a field unchanged)
+If no prefix is submitted, or the prefix does contain only
+numbers, it returns the inserted code (= keep the field unchanged).

To test:
- Add an authorised INVENTORY value with 2020 as prefix
- After linking the stocknumberAV.pl to the 952$i in the frameworks
- Edit an item
- Add 2020 in the stocknumber field
- Trigger plugin
- Verify nothing happens

If the prefix contains only numbers... nothing happens.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-03-24 10:55:59 +00:00

109 lines
3.4 KiB
Perl
Executable file

#!/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 <http://www.gnu.org/licenses>.
use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Auth;
use C4::Output;
use Koha::AuthorisedValues;
=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 0009678570"):
PREFIX containing letters, a space separator and 10 digits with leading
0s if needed.
=cut
my $builder = sub {
my ( $params ) = @_;
my $res = qq{
<script>
function Click$params->{id}() {
var code = document.getElementById('$params->{id}');
\$.ajax({
url: '/cgi-bin/koha/cataloguing/plugin_launcher.pl',
type: 'POST',
data: {
'plugin_name': 'stocknumberAV.pl',
'code' : code.value,
},
success: function(data){
var field = document.getElementById('$params->{id}');
field.value = data;
return 1;
}
});
}
</script>
};
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",
authnotrequired => 0,
flagsrequired => { editcatalogue => '*' },
debug => 1,
}
);
# 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',
'authorised_value' => $code
});
if ( $av ) {
$av->lib($av->lib + 1);
$av->store;
$template->param( return => $code . ' ' . sprintf( '%010s', ( $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 };