// Comptes de revenu ERPNext + correspondance item_group → compte.
// Les Item Groups ERPNext n'ont PAS de compte de revenu configuré (item_group_defaults vide),
// donc on résout ici, côté client, par correspondance de NOM (item_group ↔ nom de compte 4xxx).
// N'inclut que les correspondances À HAUTE CONFIANCE (le nom du groupe = le nom du compte).
// Les groupes ambigus (Quincaillerie, Câbles, Accessoires, Internet générique…) ne sont PAS mappés :
// ils retombent sur le compte par défaut, signalé « à vérifier » dans l'UI.
// À terme : configurer item_group_defaults dans ERPNext pour que TOUT (wizard, sync F) résolve pareil.

export const DEFAULT_INCOME_ACCOUNT = '4020 - Mensualité fibre - T'

// item_group (valeur exacte ERPNext) → compte de revenu (name ERPNext)
export const INCOME_ACCOUNT_BY_GROUP = {
  'Mensualités fibre': '4020 - Mensualité fibre - T',
  'Mensualités sans fil': '4021 - Mensualité Internet Haute-Vitesse sans fil - T',
  'Mensualités télévision': '4019 - Mensualité télévision - T',
  'Installation et équipement fibre': '4017 - Installation et équipement fibre - T',
  'Equipement internet fibre': '4017 - Installation et équipement fibre - T',
  'Equipement internet sans fil': '4023 - Équipement Internet Haute-Vitesse sans fil - T',
  'Installation et équipement internet sans fil': '4022 - Installation Internet Haute-Vitesse sans fil - T',
  'Installation et équipement télé': '4018 - Équipement télé - T',
  Téléphonie: '4015 - Téléphonie - T',
  'Adresse IP Fixe': '4027 - IP Fixe - T',
  'Téléchargement supplémentaire': '4024 - Téléchargement supplémentaire - T',
  'Frais divers taxables': '4260 - Frais divers taxables - T',
  Frais: '4260 - Frais divers taxables - T',
  'Intérêts et frais divers': '4250 - Intérêts et frais divers - T',
  "Frais d'activation": "4028 - Frais d'activation - T",
  'Garantie prolongée': '4025 - Garantie prolongée - T',
  'Pièces informatique': '4054 - Pièces Informatiques - T',
  'Services informatique': '4052 - Revenu - Service Informatique - T',
  Hébergement: '4042 - Hébergement - T',
  'Nom de domaine': '4041 - Nom de Domaine - T',
  Technicien: '4106 - Déplacement/temps technicien - T',
  Honoraires: '4010 - Honoraires - T',
  'Création de site Internet': '4031 - Création de site Internet - T',
  'Location espace cloud': '4001 - Location espace cloud - T',
  'Section de Tour': '4026 - Section de Tour - T',
  'Saisonniers (coupons-maraîchers)': '4016 - Saisonniers (coupons-maraîchers) - T',
}

// Options pour le sélecteur « compte de revenu » (avancé) — principaux comptes 4xxx.
export const INCOME_ACCOUNT_OPTIONS = [
  { label: '4020 · Mensualité fibre', value: '4020 - Mensualité fibre - T' },
  { label: '4021 · Mensualité HV sans fil', value: '4021 - Mensualité Internet Haute-Vitesse sans fil - T' },
  { label: '4019 · Mensualité télévision', value: '4019 - Mensualité télévision - T' },
  { label: '4015 · Téléphonie', value: '4015 - Téléphonie - T' },
  { label: '4017 · Installation et équipement fibre', value: '4017 - Installation et équipement fibre - T' },
  { label: '4022 · Installation HV sans fil', value: '4022 - Installation Internet Haute-Vitesse sans fil - T' },
  { label: '4023 · Équipement HV sans fil', value: '4023 - Équipement Internet Haute-Vitesse sans fil - T' },
  { label: '4018 · Équipement télé', value: '4018 - Équipement télé - T' },
  { label: '4027 · IP Fixe', value: '4027 - IP Fixe - T' },
  { label: '4024 · Téléchargement supplémentaire', value: '4024 - Téléchargement supplémentaire - T' },
  { label: "4028 · Frais d'activation", value: "4028 - Frais d'activation - T" },
  { label: '4025 · Garantie prolongée', value: '4025 - Garantie prolongée - T' },
  { label: '4260 · Frais divers taxables', value: '4260 - Frais divers taxables - T' },
  { label: '4250 · Intérêts et frais divers', value: '4250 - Intérêts et frais divers - T' },
  { label: '4054 · Pièces informatiques', value: '4054 - Pièces Informatiques - T' },
  { label: '4052 · Service informatique', value: '4052 - Revenu - Service Informatique - T' },
  { label: '4042 · Hébergement', value: '4042 - Hébergement - T' },
  { label: '4041 · Nom de domaine', value: '4041 - Nom de Domaine - T' },
  { label: '4106 · Déplacement/temps technicien', value: '4106 - Déplacement/temps technicien - T' },
  { label: '4010 · Honoraires', value: '4010 - Honoraires - T' },
  { label: '4031 · Création de site Internet', value: '4031 - Création de site Internet - T' },
  { label: '4001 · Location espace cloud', value: '4001 - Location espace cloud - T' },
  { label: '4000 · Revenus autres', value: '4000 - Revenus autres - T' },
]

// Libellé court d'un compte (« 4020 · Mensualité fibre ») pour l'affichage.
export function incomeAccountLabel (account) {
  if (!account) return ''
  const opt = INCOME_ACCOUNT_OPTIONS.find(o => o.value === account)
  if (opt) return opt.label
  // repli : « 4020 - Mensualité fibre - T » → « 4020 · Mensualité fibre »
  return account.replace(/ - T$/, '').replace(' - ', ' · ')
}

// Résout le compte de revenu d'un produit d'après son item_group.
// Renvoie { account, confident } — confident=false ⇒ repli sur le défaut (à vérifier).
export function resolveIncomeAccount (itemGroup) {
  const hit = INCOME_ACCOUNT_BY_GROUP[(itemGroup || '').trim()]
  return hit ? { account: hit, confident: true } : { account: DEFAULT_INCOME_ACCOUNT, confident: false }
}
