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}'
|