/**
 * Calcule le numéro de TVA intracommunautaire français
 * Format: FR + clé (2 chiffres) + SIREN (9 chiffres)
 */
export function calculateFrenchVAT(siren: string): string {
  // Nettoyer et valider
  const cleanSiren = siren.trim().replace(/\s/g, '');
  
  if (!/^\d{9}$/.test(cleanSiren)) {
    throw new Error(`SIREN invalide: ${siren}`);
  }
  
  // Calculer la clé
  const sirenNum = parseInt(cleanSiren, 10);
  const tvaKey = (12 + 3 * (sirenNum % 97)) % 97;
  
  // Former le numéro
  return `FR${tvaKey.toString().padStart(2, '0')}${cleanSiren}`;
}

export function validateFrenchVAT(vat: string): boolean {
  const match = vat.match(/^FR(\d{2})(\d{9})$/);
  if (!match) return false;
  
  const [, key, siren] = match;
  const sirenNum = parseInt(siren, 10);
  const expectedKey = (12 + 3 * (sirenNum % 97)) % 97;
  
  return parseInt(key, 10) === expectedKey;
}