|  | @ -32,7 +32,7 @@ class ProductAutoBarcode(models.Model): | 
			
		
	
		
		
			
				
					|  |  |     def create(self, vals): |  |  |     def create(self, vals): | 
			
		
	
		
		
			
				
					|  |  |         res = super(ProductAutoBarcode, self).create(vals) |  |  |         res = super(ProductAutoBarcode, self).create(vals) | 
			
		
	
		
		
			
				
					|  |  |         ean = generate_ean(str(res.id)) |  |  |         ean = generate_ean(str(res.id)) | 
			
		
	
		
		
			
				
					
					|  |  |         res.barcode = ean |  |  |         res.barcode = '21' + ean[2:] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |         return res |  |  |         return res | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | @ -68,19 +68,17 @@ def check_ean(eancode): | 
			
		
	
		
		
			
				
					|  |  |         int(eancode) |  |  |         int(eancode) | 
			
		
	
		
		
			
				
					|  |  |     except: |  |  |     except: | 
			
		
	
		
		
			
				
					|  |  |         return False |  |  |         return False | 
			
		
	
		
		
			
				
					
					|  |  |     return ean_checksum(eancode) == int(eancode[-1]) |  |  |     return ean_checksum(eancode) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | def generate_ean(ean): |  |  | def generate_ean(ean): | 
			
		
	
		
		
			
				
					|  |  |     """Creates and returns a valid ean13 from an invalid one""" |  |  |     """Creates and returns a valid ean13 from an invalid one""" | 
			
		
	
		
		
			
				
					|  |  |     if not ean: |  |  |     if not ean: | 
			
		
	
		
		
			
				
					|  |  |         return "0000000000000" |  |  |         return "0000000000000" | 
			
		
	
		
		
			
				
					
					|  |  |     ean = re.sub("[A-Za-z]", "0", ean) |  |  |     product_identifier = '00000000000' + ean | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |     ean = re.sub("[^0-9]", "", ean) |  |  |     ean = product_identifier[-11:] | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |     ean = ean[:13] |  |  |     check_number = check_ean(ean + '00') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |     if len(ean) < 13: |  |  |     return f'{ean}0{check_number}' | 
			
				
				
			
		
	
		
		
			
				
					|  |  |         ean = ean + '0' * (13 - len(ean)) |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     return ean[:-1] + str(ean_checksum(ean)) |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | class ProductTemplateAutoBarcode(models.Model): |  |  | class ProductTemplateAutoBarcode(models.Model): | 
			
		
	
	
		
		
			
				
					|  | @ -90,7 +88,7 @@ class ProductTemplateAutoBarcode(models.Model): | 
			
		
	
		
		
			
				
					|  |  |     def create(self, vals_list): |  |  |     def create(self, vals_list): | 
			
		
	
		
		
			
				
					|  |  |         templates = super(ProductTemplateAutoBarcode, self).create(vals_list) |  |  |         templates = super(ProductTemplateAutoBarcode, self).create(vals_list) | 
			
		
	
		
		
			
				
					|  |  |         ean = generate_ean(str(templates.id)) |  |  |         ean = generate_ean(str(templates.id)) | 
			
		
	
		
		
			
				
					
					|  |  |         templates.barcode = ean |  |  |         templates.barcode = '22' + ean[2:] | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |         return templates |  |  |         return templates | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | 
 |