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