@@ -, +, @@ -> Alert message informs about the duplicate barcode --- C4/Items.pm | 7 ++- acqui/check_duplicate_barcode_ajax.pl | 55 ++++++++++++++++++++ .../prog/en/modules/acqui/neworderempty.tt | 46 +++++++++++++++- 3 files changed, 104 insertions(+), 4 deletions(-) create mode 100755 acqui/check_duplicate_barcode_ajax.pl --- a/C4/Items.pm +++ a/C4/Items.pm @@ -2042,10 +2042,15 @@ sub _koha_new_item { $item->{'copynumber'}, $item->{'stocknumber'}, ); - my $itemnumber = $dbh->{'mysql_insertid'}; + + my $itemnumber; if ( defined $sth->errstr ) { $error.="ERROR in _koha_new_item $query".$sth->errstr; } + else { + $itemnumber = $dbh->{'mysql_insertid'}; + } + return ( $itemnumber, $error ); } --- a/acqui/check_duplicate_barcode_ajax.pl +++ a/acqui/check_duplicate_barcode_ajax.pl @@ -0,0 +1,55 @@ +#!/usr/bin/perl + +# Frédérick Capovilla, 2011 - Libéo +# +# 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. + +use strict; +#use warnings; FIXME - Bug 2505 +use CGI; +use CGI::Cookie; +use JSON; +use C4::Auth; +use C4::Items; +use C4::Context; + +my $input = new CGI; +print $input->header('application/json'); + +# Check the user's permissions +my %cookies = fetch CGI::Cookie; +my $sessid = $cookies{'CGISESSID'}->value || $input->param('CGISESSID'); +my ($auth_status, $auth_sessid) = C4::Auth::check_cookie_auth($sessid, {acquisition => 'order_manage'}); +if ($auth_status ne "ok") { + print to_json({status => 'UNAUTHORIZED'}); + exit 0; +} + +my $json; + +#Check if the barcodes already exist. +my @barcodes = $input->param('barcodes'); +foreach my $barcode (@barcodes) { + my $existing_itemnumber = GetItemnumberFromBarcode($barcode); + if ($existing_itemnumber) { + $json->{status} = "DUPLICATES"; + push @{$json->{barcodes}}, $barcode; + } +} + +$json->{status} = 'OK' unless defined $json->{status}; +print to_json($json); + --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt @@ -46,26 +46,66 @@ function Check(ff) { } if ( ff.field_value ) { + var barcodes = []; var empty_item_mandatory = 0; for (i = 0; i < ff.field_value.length; i++) { //alert("i = " + i + " => " + ff.kohafield[i] ); if (ff.field_value[i].value.length == 0 && ff.mandatory[i].value == 1) { empty_item_mandatory++; } + if(ff.subfield[i].value == 'p') { + barcodes.push(ff.field_value[i].value); + } } if (empty_item_mandatory > 0) { ok = 1; _alertString += "\n- " + empty_item_mandatory + _(" item mandatory fields empty"); } + + // Check for duplicate barcodes in the form + barcodes = barcodes.sort(); + for(var i=0; i