From a80d315cc1abf64554719e268d9420c1a401c56d Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 3 May 2012 15:22:17 +0200 Subject: [PATCH] Bug 7992: Specific plugin stocknumberam123 improvements Bugzilla description (from delaye): 1 / Create a list of authorised values(INVENTORY_NUMBER). In which the code is the prefix and the description the last number assigned. 2/A space between the prefix and number. 3 / From a holding record, after indicate the prefix when you click on the plugin -> koha search the last number from authorised values assigned in the list and increment n +1 level meter --- cataloguing/value_builder/stocknumberam123.pl | 61 +++++++++++-------------- 1 files changed, 27 insertions(+), 34 deletions(-) diff --git a/cataloguing/value_builder/stocknumberam123.pl b/cataloguing/value_builder/stocknumberam123.pl index ab88f61..dc589b8 100755 --- a/cataloguing/value_builder/stocknumberam123.pl +++ b/cataloguing/value_builder/stocknumberam123.pl @@ -49,6 +49,10 @@ sub plugin_javascript { } function Blur$field_number() { + return 1; + } + + function Clic$field_number() { var code = document.getElementById('$field_number'); var url = '../cataloguing/plugin_launcher.pl?plugin_name=stocknumberam123.pl&code=' + code.value; var blurcallbackstocknumber = { @@ -61,10 +65,6 @@ sub plugin_javascript { var transaction = YAHOO.util.Connect.asyncRequest('GET',url, blurcallbackstocknumber, null); return 1; } - - function Clic$field_number() { - return 1; - } "; @@ -75,42 +75,35 @@ sub plugin { my ($input) = @_; my $code = $input->param('code'); - my ($template, $loggedinuser, $cookie) = get_template_and_user({ - template_name => "cataloguing/value_builder/ajax.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {editcatalogue => '*'}, - debug => 1, - }); + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "cataloguing/value_builder/ajax.tmpl", + 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 $sth = $dbh->prepare("SELECT MAX(CAST(stocknumber AS SIGNED)) FROM items"); - $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.' '.sprintf('%010s',($max+1)), - ); + if ( $code =~ m/^[A-Z]+$/ ) { + my $sth = $dbh->prepare("SELECT lib FROM authorised_values WHERE category='INVENTORY' AND authorised_value=?"); + $sth->execute( $code); + + if ( my $valeur = $sth->fetchrow ) { + $template->param( return => $code . ' ' . sprintf( '%010s', ( $valeur + 1 ) ), ); + my $sth2 = $dbh->prepare("UPDATE authorised_values SET lib=? WHERE category='INVENTORY' AND authorised_value=?"); + $sth2->execute($valeur+1,$code); + } 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 + # The user entered a custom value, we don't touch it, this could be handled in js } else { - $template->param( - return => $code, - ); + $template->param( return => $code, ); } + output_html_with_http_headers $input, $cookie, $template->output; } -- 1.7.7.3