$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 );
}
--- /dev/null
+#!/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);
+
}
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' && ff.field_value[i].value.length != 0) {
+ barcodes.push(ff.field_value[i].value);
+ }
}
if (empty_item_mandatory > 0) {
ok = 1;
_alertString +=
"\n- " + empty_item_mandatory + _(" item mandatory fields empty");
}
+
+ if(barcodes.length > 0) {
+ // Check for duplicate barcodes in the form
+ barcodes = barcodes.sort();
+ for(var i=0; i<barcodes.length-1; i++) {
+ if(barcodes[i] == barcodes[i+1]) {
+ ok = 1;
+ _alertString += "\n- " + _("The barcode ") + barcodes[i] + _(" is used more than once in the form. Every barcode must be unique");
+ }
+ }
+
+ // Check for duplicate barcodes in the database via an ajax call
+ $.ajax({
+ url: "/cgi-bin/koha/acqui/check_duplicate_barcode_ajax.pl",
+ async:false,
+ method: "post",
+ data: {barcodes : barcodes},
+ dataType: 'json',
+
+ error: function(xhr) {
+ alert("Error: \n" + xhr.responseText);
+ },
+ success: function(json) {
+ switch(json.status) {
+ case 'UNAUTHORIZED':
+ ok = 1;
+ _alertString += "\n- " + _("Error: Duplicate barcode verification failed. Insufficient user permissions.");
+ break;
+ case 'DUPLICATES':
+ ok = 1;
+ $.each(json.barcodes, function(index, barcode) {
+ _alertString += "\n- " + _("The barcode ") + barcode + _(" already exists in the database");
+ });
+ break;
+ }
+ },
+ });
+ }
}
-if (ok) {
+ if (ok) {
alert(_alertString);
- return false;
+ return false;
}
-ff.submit();
+ ff.submit();
}