diff --git a/product_barcode/__manifest__.py b/product_barcode/__manifest__.py index 765360018..f7c4988aa 100644 --- a/product_barcode/__manifest__.py +++ b/product_barcode/__manifest__.py @@ -22,7 +22,7 @@ { 'name': 'Product Barcode Generator', - 'version': '13.0.1.2.0', + 'version': '13.0.1.2.1', 'summary': 'Generates EAN13 Standard Barcode for Product.', 'category': 'Inventory', 'author': 'Cybrosys Techno solutions', diff --git a/product_barcode/models/product_form.py b/product_barcode/models/product_form.py index 6d25c0221..6b4cbd271 100644 --- a/product_barcode/models/product_form.py +++ b/product_barcode/models/product_form.py @@ -32,8 +32,7 @@ class ProductAutoBarcode(models.Model): def create(self, vals): res = super(ProductAutoBarcode, self).create(vals) ean = generate_ean(str(res.id)) - res.barcode = ean - print("res.barcode",res.barcode) + res.barcode = '21' + ean[2:] return res @@ -69,19 +68,17 @@ def check_ean(eancode): int(eancode) except: return False - return ean_checksum(eancode) == int(eancode[-1]) + return ean_checksum(eancode) def generate_ean(ean): """Creates and returns a valid ean13 from an invalid one""" if not ean: return "0000000000000" - ean = re.sub("[A-Za-z]", "0", ean) - ean = re.sub("[^0-9]", "", ean) - ean = ean[:13] - if len(ean) < 13: - ean = ean + '0' * (13 - len(ean)) - return ean[:-1] + str(ean_checksum(ean)) + product_identifier = '00000000000' + ean + ean = product_identifier[-11:] + check_number = check_ean(ean + '00') + return f'{ean}0{check_number}' class ProductTemplateAutoBarcode(models.Model): @@ -91,7 +88,7 @@ class ProductTemplateAutoBarcode(models.Model): def create(self, vals_list): templates = super(ProductTemplateAutoBarcode, self).create(vals_list) ean = generate_ean(str(templates.id)) - templates.barcode = ean + templates.barcode = '22' + ean[2:] return templates