Last active
October 16, 2017 06:47
-
-
Save xmorave2/91e670ba41c3c38453a674ac10440b91 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/perl | |
| # Copyright 2010 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 strict; | |
| use warnings; | |
| use C4::Auth; | |
| use CGI qw ( -utf8 ); | |
| use C4::Context; | |
| use C4::Output; | |
| =head1 DESCRIPTION | |
| This plugin is specific to AM123 but could be used as a base for similar operations. | |
| 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_javascript { | |
| my ($dbh,$record,$tagslib,$field_number,$tabloop) = @_; | |
| my $res=" | |
| <script type='text/javascript'> | |
| function Blur$field_number() { | |
| var code = document.getElementById('$field_number'); | |
| var url = '../cataloguing/plugin_launcher.pl?plugin_name=stocknumberRegion.pl&code=' + code.value; | |
| var req = \$.get(url); | |
| req.done(function(resp){ | |
| code.value = resp; | |
| return 1; | |
| }); | |
| return 1; | |
| } | |
| </script> | |
| "; | |
| 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.tt", | |
| query => $input, | |
| type => "intranet", | |
| authnotrequired => 0, | |
| flagsrequired => {editcatalogue => '*'}, | |
| debug => 1, | |
| }); | |
| my $dbh = C4::Context->dbh; | |
| # If the textbox is empty, we return a simple incremented stocknumber | |
| if ( $code eq "" ) { | |
| my $branchcode = C4::Context->userenv->{'branch'}; | |
| my $sth = $dbh->prepare("SELECT MAX(CAST(stocknumber AS SIGNED)) FROM items WHERE homebranch = ?"); | |
| $sth->execute($branchcode); | |
| if ( my $max = $sth->fetchrow ) { | |
| $template->param( | |
| return => $max+1, | |
| ); | |
| } | |
| # If "DOP" is entered, we | |
| } elsif ($code eq "DOP") { | |
| my $sth = $dbh->prepare("SELECT MAX(CAST(stocknumber AS SIGNED)) FROM items where stocknumber+0 >= 2049450 AND stocknumber+0 <=2049550"); | |
| $sth->execute(); | |
| if ( my $max = $sth->fetchrow ) { | |
| $template->param( | |
| return => $max+1, | |
| ); | |
| } | |
| # If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented | |
| } elsif ( $code =~ m/^[A-Z]+$/ ) { | |
| my $sth = $dbh->prepare("SELECT MAX(CAST(SUBSTRING_INDEX(stocknumber,'/',-1) AS SIGNED)) FROM items WHERE stocknumber LIKE ?"); | |
| $sth->execute($code.'%'); | |
| if ( my $max = $sth->fetchrow ) { | |
| $template->param( | |
| return => $code.'10/'.($max+1), | |
| ); | |
| } | |
| # 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; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment