diff --git a/product_barcode/__manifest__.py b/product_barcode/__manifest__.py index c8a38c273..4ec3e1412 100644 --- a/product_barcode/__manifest__.py +++ b/product_barcode/__manifest__.py @@ -22,7 +22,7 @@ { 'name': 'Product Barcode Generator', - 'version': '14.0.1.0.0', + 'version': '14.0.2.0.0', '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..150134661 100644 --- a/product_barcode/models/product_form.py +++ b/product_barcode/models/product_form.py @@ -31,7 +31,15 @@ class ProductAutoBarcode(models.Model): @api.model def create(self, vals): res = super(ProductAutoBarcode, self).create(vals) - ean = generate_ean(str(res.id)) + barcode_id = res.id + barcode_search = False + while not barcode_search: + ean = generate_ean(str(barcode_id)) + if self.env['product.product'].search([('barcode', '=', ean)]): + barcode_search = False + barcode_id += 1 + else: + barcode_search = True res.barcode = ean return res @@ -80,6 +88,7 @@ def generate_ean(ean): ean = ean[:13] if len(ean) < 13: ean = ean + '0' * (13 - len(ean)) + print("barcode : ", ean[:-1] + str(ean_checksum(ean))) return ean[:-1] + str(ean_checksum(ean)) @@ -89,7 +98,15 @@ class ProductTemplateAutoBarcode(models.Model): @api.model def create(self, vals_list): templates = super(ProductTemplateAutoBarcode, self).create(vals_list) - ean = generate_ean(str(templates.id)) + barcode_id = templates.id + barcode_search = False + while not barcode_search: + ean = generate_ean(str(barcode_id)) + if self.env['product.product'].search([('barcode', '=', ean)]): + barcode_search = False + barcode_id += 1 + else: + barcode_search = True templates.barcode = ean return templates