import { Commercial } from "./commercialType"

export interface Client {
  // ============================================
  // CHAMPS OBLIGATOIRES (sans ?)
  // ============================================
  numero: string
  intitule: string
  
  // ============================================
  // CHAMPS OPTIONNELS (avec ?)
  // ============================================
  type_tiers?: number
  qualite?: string | null
  classement?: string
  raccourci?: string | null

  siret?: string
  tva_intra?: string
  code_naf?: string

  contact?: string
  adresse?: string
  complement?: string
  code_postal?: string
  ville?: string
  region?: string
  pays?: string

  telephone?: string
  telecopie?: string
  email?: string
  site_web?: string

  facebook?: string | null
  linkedin?: string | null

  taux01?: number
  taux02?: number
  taux03?: number
  taux04?: number

  statistique01?: string | null
  statistique02?: string | null
  statistique03?: string | null
  statistique04?: string | null
  statistique05?: string | null
  statistique06?: string | null
  statistique07?: string | null
  statistique08?: string | null
  statistique09?: string | null
  statistique10?: string | null

  encours_autorise?: number
  assurance_credit?: number

  langue?: number
  commercial_code?: number
  lettrage_auto?: boolean
  est_actif?: boolean
  est_prospect?: boolean

  type_facture?: number
  bl_en_facture?: number
  saut_page?: number
  validation_echeance?: number
  controle_encours?: number

  exclure_relance?: boolean
  exclure_penalites?: boolean

  bon_a_payer?: number
  priorite_livraison?: number
  livraison_partielle?: number
  delai_transport?: number
  delai_appro?: number

  commentaire?: string | null

  section_analytique?: string
  mode_reglement_code?: number

  surveillance_active?: boolean
  coface?: string | null

  forme_juridique?: string | null
  effectif?: number | null

  sv_regularite?: string | null
  sv_cotation?: string | null
  sv_objet_maj?: string | null
  sv_chiffre_affaires?: number
  sv_resultat?: number

  compte_general?: string
  categorie_tarif?: number
  categorie_compta?: number
  
  // Contacts
  contacts?: Contacts[]

  commercial?: Commercial
}

export interface ClientRequest {
  // ========================================
  // INFORMATIONS OBLIGATOIRES (69 caractères max)
  // ========================================
  intitule: string // 69 characters max
  
  // ========================================
  // IDENTIFICATION (17 caractères max)
  // ========================================
  numero?: string // 17 characters max
  type_tiers?: number // [0-3] enum
  qualite?: string | null
  classement?: string | null
  raccourci?: string | null
  
  // ========================================
  // INFORMATIONS LÉGALES
  // ========================================
  siret?: string | null
  tva_intra?: string | null
  code_naf?: string | null
  
  // ========================================
  // CONTACT
  // ========================================
  contact?: string | null
  adresse?: string | null
  complement?: string | null
  code_postal?: string | null
  ville?: string | null
  region?: string | null
  pays?: string | null
  telephone?: string | null
  telecopie?: string | null
  email?: string | null
  site_web?: string | null
  portable?: string | null
  facebook?: string | null
  linkedin?: string | null
  
  // ========================================
  // CATÉGORIES & TARIFICATION
  // ========================================
  compte_general?: string | null
  categorie_tarifaire?: string | null
  categorie_comptable?: string | null
  
  // ========================================
  // TAUX (taux01 à taux04)
  // ========================================
  taux01?: number | null
  taux02?: number | null
  taux03?: number | null
  taux04?: number | null
  
  // ========================================
  // STATISTIQUES (statistique01 à statistique10)
  // ========================================
  statistique01?: string | null
  statistique02?: string | null
  statistique03?: string | null
  statistique04?: string | null
  statistique05?: string | null
  statistique06?: string | null
  statistique07?: string | null
  statistique08?: string | null
  statistique09?: string | null
  statistique10?: string | null
  
  // ========================================
  // DONNÉES FINANCIÈRES
  // ========================================
  encours_autorise?: number | null
  assurance_credit?: number | null
  
  // ========================================
  // PARAMÈTRES COMMERCIAUX
  // ========================================
  langue?: number | null
  commercial_code?: number | null
  lettrage_auto?: boolean | null
  est_actif?: boolean
  type_facture?: number | null
  est_prospect?: boolean
  bl_en_facture?: number | null
  saut_page?: number | null
  validation_echeance?: number | null
  controle_encours?: number | null
  
  // ========================================
  // RELANCES & PÉNALITÉS
  // ========================================
  exclure_relance?: number | null
  exclure_penalites?: number | null
  
  // ========================================
  // LIVRAISON
  // ========================================
  bon_a_payer?: number | null
  priorite_livraison?: number | null
  livraison_partielle?: number | null
  delai_transport?: number | null
  delai_appro?: number | null
  
  // ========================================
  // AUTRES INFORMATIONS
  // ========================================
  commentaire?: string | null
  section_analytique?: string | null
  mode_reglement_code?: number | null
  surveillance_active?: boolean | null
  coface?: string | null
  forme_juridique?: string | null
  effectif?: number | null
  
  // ========================================
  // DONNÉES STATISTIQUES FINANCIÈRES
  // ========================================
  sv_regularite?: string | null
  sv_cotation?: string | null
  sv_objet_maj?: string | null
  ca_annuel?: number | null
  sv_chiffre_affaires?: number | null
  sv_resultat?: number | null

}

export interface ClientUpdateRequest {
  // Tous les champs sont optionnels pour l'update sauf ceux que vous voulez rendre obligatoires
  intitule?: string
  type_tiers?: number
  qualite?: string | null
  classement?: string | null
  raccourci?: string | null
  siret?: string | null
  tva_intra?: string | null
  code_naf?: string | null
  contact?: string | null
  adresse?: string | null
  complement?: string | null
  code_postal?: string | null
  ville?: string | null
  region?: string | null
  pays?: string | null
  telephone?: string | null
  telecopie?: string | null
  email?: string | null
  site_web?: string | null
  portable?: string | null
  facebook?: string | null
  linkedin?: string | null
  compte_general?: string | null
  categorie_tarifaire?: string | null
  categorie_comptable?: string | null
  taux01?: number | null
  taux02?: number | null
  taux03?: number | null
  taux04?: number | null
  statistique01?: string | null
  statistique02?: string | null
  statistique03?: string | null
  statistique04?: string | null
  statistique05?: string | null
  statistique06?: string | null
  statistique07?: string | null
  statistique08?: string | null
  statistique09?: string | null
  statistique10?: string | null
  encours_autorise?: number | null
  assurance_credit?: number | null
  langue?: number | null
  commercial_code?: number | null
  lettrage_auto?: boolean | null
  est_actif?: boolean
  type_facture?: number | null
  est_prospect?: boolean
  bl_en_facture?: number | null
  saut_page?: number | null
  validation_echeance?: number | null
  controle_encours?: number | null
  exclure_relance?: number | null
  exclure_penalites?: number | null
  bon_a_payer?: number | null
  priorite_livraison?: number | null
  livraison_partielle?: number | null
  delai_transport?: number | null
  delai_appro?: number | null
  commentaire?: string | null
  section_analytique?: string | null
  mode_reglement_code?: number | null
  surveillance_active?: boolean | null
  coface?: string | null
  forme_juridique?: string | null
  effectif?: number | null
  sv_regularite?: string | null
  sv_cotation?: string | null
  sv_objet_maj?: string | null
  ca_annuel?: number | null
  sv_chiffre_affaires?: number | null
  sv_resultat?: number | null
}

export interface Contacts {
  numero: string
  contact_numero: number
  n_contact: number
  civilite: string
  nom: string
  prenom: string
  fonction: string
  service_code: number
  telephone: string
  portable: string | null
  telecopie: string | null
  email: string | null
  facebook: string | null
  linkedin: string | null
  skype: string | null
  est_defaut: boolean
}

export interface ContactRequest {
  civilite?: string
  nom: string
  prenom: string
  fonction?: string
  service_code?: number
  telephone?: string
  portable?: string
  telecopie?: string
  email?: string
  facebook?: string
  linkedin?: string
  skype?: string
  est_defaut?: boolean
  numero?: string
}


export interface ClientCreateResponse {
  data: {
    numero: string
  },
  message: string,
  success: boolean
}