From 3ab2cdeae2b74ed03350e73a8935855d63ac5d2f Mon Sep 17 00:00:00 2001 From: AjmalCybro Date: Tue, 25 Apr 2023 12:23:09 +0530 Subject: [PATCH] Apr 25 [UPDT] : Bug Fixed 'product_barcode' --- product_barcode/__manifest__.py | 2 +- product_barcode/models/product_form.py | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/product_barcode/__manifest__.py b/product_barcode/__manifest__.py index 2019cd987..a52b9779a 100644 --- a/product_barcode/__manifest__.py +++ b/product_barcode/__manifest__.py @@ -22,7 +22,7 @@ { 'name': 'Product Barcode Generator', - 'version': '16.0.1.0.0', + 'version': '16.0.1.0.1', '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..15c92d1fd 100644 --- a/product_barcode/models/product_form.py +++ b/product_barcode/models/product_form.py @@ -21,7 +21,6 @@ ############################################################################# import math -import re from odoo import api, models @@ -30,9 +29,10 @@ class ProductAutoBarcode(models.Model): @api.model def create(self, vals): + """generate barcode when create new product""" 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): @@ -88,10 +86,8 @@ class ProductTemplateAutoBarcode(models.Model): @api.model def create(self, vals_list): + """generate barcode number when create new product""" templates = super(ProductTemplateAutoBarcode, self).create(vals_list) ean = generate_ean(str(templates.id)) - templates.barcode = ean + templates.barcode = '22' + ean[2:] return templates - - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: