From b98c018f472a9f20aa07fc028548e333fabe70ad Mon Sep 17 00:00:00 2001 From: AjmalCybro Date: Tue, 25 Apr 2023 12:24:23 +0530 Subject: [PATCH] Apr 25 [UPDT] : Bug Fixed 'product_barcode' --- product_barcode/__manifest__.py | 2 +- product_barcode/models/product_form.py | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/product_barcode/__manifest__.py b/product_barcode/__manifest__.py index 65a903685..85802f98f 100644 --- a/product_barcode/__manifest__.py +++ b/product_barcode/__manifest__.py @@ -22,7 +22,7 @@ { 'name': 'Product Barcode Generator', - 'version': '15.0.1.1.1', + 'version': '15.0.1.1.2', 'summary': 'Generates EAN13 Standard Barcode for Product.', 'live_test_url': 'https://www.youtube.com/watch?v=0BrFcOEkWu4&feature=youtu.be', 'category': 'Inventory', diff --git a/product_barcode/models/product_form.py b/product_barcode/models/product_form.py index 3b88c6a9e..b8f9a49bc 100644 --- a/product_barcode/models/product_form.py +++ b/product_barcode/models/product_form.py @@ -32,7 +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 + res.barcode = '21' + ean[2:] return res @@ -68,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): @@ -90,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