26 lines
		
	
	
		
			685 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			685 B
		
	
	
	
		
			Python
		
	
	
	
	
	
def generate_ean13_checksum(ean12):
 | 
						|
    if len(ean12) != 12:
 | 
						|
        return None
 | 
						|
    digits = [int(digit) for digit in ean12]
 | 
						|
    odd_sum = sum(digits[::2])
 | 
						|
    even_sum = sum(digits[1::2])
 | 
						|
    total = odd_sum + 3 * even_sum
 | 
						|
    checksum = 10 - (total % 10)
 | 
						|
    if checksum == 10:
 | 
						|
        checksum = 0
 | 
						|
    return checksum
 | 
						|
 | 
						|
 | 
						|
def generate_barcode(product_id: int):
 | 
						|
    product_id = str(product_id)
 | 
						|
    # 4 - D
 | 
						|
    # 6 - E
 | 
						|
    # 5 - N
 | 
						|
    # 2 - C
 | 
						|
    # 4652 - DENCO_C (C - CRM)
 | 
						|
    supplier_part = 4652_5
 | 
						|
    article_part = product_id.ljust(7, '0')
 | 
						|
    barcode = f'{supplier_part}{article_part}'
 | 
						|
    checksum_code = generate_ean13_checksum(barcode)
 | 
						|
    return f'{barcode}{checksum_code}'
 |