Commit 707b2289 by François C.

Merge branch '3404-ean8-products' into 'dev_cooperatic'

add js func to check for valid ean8 & check in relevant places

See merge request !188
parents 5f590324 3c8991d4
Pipeline #2289 passed with stage
in 1 minute 27 seconds
...@@ -455,6 +455,27 @@ function eanCheckDigit(s) { ...@@ -455,6 +455,27 @@ function eanCheckDigit(s) {
return (10 - (result % 10)) % 10; return (10 - (result % 10)) % 10;
} }
function isValidEAN8(ean) {
let answer = true;
let key = ean.substring(ean.length-1);
let digits = ean.substring(0, ean.length-1);
let checkSum = digits.split('').reduce(function(previousValue, currentValue, i) {
let temp_val = i % 2 == 0 ? parseInt(currentValue) * 3 : parseInt(currentValue);
return parseInt(previousValue) + temp_val;
}, 0);
let checkKey = 10 - checkSum % 10;
if (checkKey === 10) checkKey = 0;
if (checkKey != key) {
answer = false;
}
return answer;
}
function isValidEAN13(ean) { function isValidEAN13(ean) {
var answer = true; var answer = true;
var checkSum = ean.split('').reduce(function(p, v, i) { var checkSum = ean.split('').reduce(function(p, v, i) {
......
...@@ -2342,6 +2342,9 @@ function init_dom(partners_display_data) { ...@@ -2342,6 +2342,9 @@ function init_dom(partners_display_data) {
} else if (barcode.length == 12 && barcode.indexOf('0') !== 0) { } else if (barcode.length == 12 && barcode.indexOf('0') !== 0) {
// User may use a scanner which remove leading 0 // User may use a scanner which remove leading 0
barcode = '0' + barcode; barcode = '0' + barcode;
} else if (barcode.length >= 8) {
// For EAN8
barcode = barcode.substring(barcode.length-8);
} else { } else {
//manually submitted after correction //manually submitted after correction
var barcode_input = $('#search_input'); var barcode_input = $('#search_input');
......
...@@ -96,10 +96,12 @@ function barcode_analyzer(chars) { ...@@ -96,10 +96,12 @@ function barcode_analyzer(chars) {
} else if (barcode && barcode.length == 12 && barcode.indexOf('0') !== 0) { } else if (barcode && barcode.length == 12 && barcode.indexOf('0') !== 0) {
// User may use a scanner which remove leading 0 // User may use a scanner which remove leading 0
barcode = '0' + barcode; barcode = '0' + barcode;
} else if (barcode && barcode.length >= 8) {
// For EAN8
barcode = barcode.substring(barcode.length-8);
} else { } else {
//manually submitted after correction //manually submitted after correction
var barcode_input = $('#search_input'); var barcode_input = $('#search_input');
barcode = barcode_input.val(); barcode = barcode_input.val();
} }
...@@ -149,7 +151,7 @@ function select_product_from_bc(barcode) { ...@@ -149,7 +151,7 @@ function select_product_from_bc(barcode) {
var found = null, var found = null,
qty = null; qty = null;
if (isValidEAN13(barcode)) { if (isValidEAN13(barcode) || isValidEAN8(barcode)) {
var scannedProduct = barcodes.get_corresponding_odoo_product(barcode); var scannedProduct = barcodes.get_corresponding_odoo_product(barcode);
if (scannedProduct === null) { if (scannedProduct === null) {
...@@ -163,7 +165,7 @@ function select_product_from_bc(barcode) { ...@@ -163,7 +165,7 @@ function select_product_from_bc(barcode) {
} }
} }
} else { } else {
alert("Le code-barre " + barcode + " n'est pas reconnu comme un EAN13 valide.'"); alert("Le code-barre " + barcode + " n'est pas reconnu comme un EAN13 ou EAN8 valide.");
return -1; return -1;
} }
......
...@@ -600,6 +600,9 @@ $(document).ready(function() { ...@@ -600,6 +600,9 @@ $(document).ready(function() {
} else if (barcode.length == 12 && barcode.indexOf('0') !== 0) { } else if (barcode.length == 12 && barcode.indexOf('0') !== 0) {
// User may use a scanner which remove leading 0 // User may use a scanner which remove leading 0
barcode = '0' + barcode; barcode = '0' + barcode;
} else if (barcode.length >= 8) {
// For EAN8
barcode = barcode.substring(barcode.length-8);
} }
......
...@@ -778,6 +778,9 @@ $(document).ready(function() { ...@@ -778,6 +778,9 @@ $(document).ready(function() {
} else if (barcode.length == 12 && barcode.indexOf('0') !== 0) { } else if (barcode.length == 12 && barcode.indexOf('0') !== 0) {
// User may use a scanner which remove leading 0 // User may use a scanner which remove leading 0
barcode = '0' + barcode; barcode = '0' + barcode;
} else if (barcode.length >= 8) {
// For EAN8
barcode = barcode.substring(barcode.length-8);
} else { } else {
//manually submitted after correction //manually submitted after correction
barcode = barcode_input.val(); barcode = barcode_input.val();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment