/**
 * EAN-13 generator для e2e: префикс "20" (внутренний магазинный, как и
 * в src/food-market.web/src/lib/barcode.ts), 10 цифр payload + checksum.
 * Использует индекс шага вместо рандома, чтобы прогон был детерминированным
 * и легче отлавливать дубликаты в отчёте.
 */

function ean13Checksum(twelve: string): number {
  let sum = 0
  for (let i = 0; i < 12; i++) {
    const d = twelve.charCodeAt(i) - 48
    sum += i % 2 === 0 ? d : d * 3
  }
  return (10 - (sum % 10)) % 10
}

/**
 * Сгенерировать валидный EAN-13. Префикс "20" — резерв для внутренних
 * штрихкодов магазина (in-store). Тело: timestamp.slice(-7) + index в
 * 3-значной форме, итого 10 цифр payload. Получаем 13-значный код с
 * контрольной суммой.
 */
export function generateEan13(index: number): string {
  const ts = Date.now().toString().slice(-7)
  const idx = String(index).padStart(3, '0')
  const body = '20' + ts + idx
  return body + ean13Checksum(body).toString()
}
