Skip to content

Company

Entreprise / organisation. legal_name est la raison sociale (le nom utilisé sur les devis et factures). Une company peut être rattachée à 0, 1 ou plusieurs Contact via Contact.company_ids[] (relation N-N).

  • Path Firestore : users/{userId}/companies/{companyId}
  • Source TS : klapy-crm/src/types/index.ts

Interface

ts
interface Company {
  id: string;
  legal_name: string;
  industry?: CompanyIndustry;
  company_size?: CompanySize;
  email?: string;
  website?: string;
  phone?: string;
  siret?: string;
  address?: Address;
  notes?: string;
  created_at: Timestamp;
  updated_at: Timestamp;
}

Champs

ChampNotes
legal_nameObligatoire. Raison sociale, utilisée sur devis / factures
industryUne des valeurs de COMPANY_INDUSTRY
company_sizeUne des valeurs de COMPANY_SIZE (TPE / PME / ETI / Grand groupe)
emailEmail de contact générique (pas un contact-personne, voir Contact)
websiteURL ou nom de domaine. Le préfixe https:// est ajouté à l'affichage si manquant
phoneNuméro standard / accueil
siret14 chiffres, pas de validation à l'écriture
addressAdresse postale, voir sous-objet ci-dessous
notesTexte libre

Inline-create depuis le form Contact

Le form Contact peut créer une company à la volée via une variante allégée du form (legal_name + adresse minimum). La fiche complète peut ensuite être enrichie depuis /companies ou la detail pane. Aucun champ n'est requis hors legal_name, ce qui permet de stager des fiches incomplètes.

Constantes liées

COMPANY_SIZE

Brackets INSEE simplifiés (4 valeurs) : tpe (TPE), pme (PME), eti (ETI), large (Grand groupe). Granularité volontairement courte : un CRM de freelance n'a pas besoin de plus.

COMPANY_INDUSTRY

33 secteurs B2B couvrant la plupart des clients qu'un vidéaste freelance peut rencontrer (Aérospatiale, Architecture, Automobile, Beauté, Bâtiment, Conseil, Éducation, Énergie, Finance, Santé, IT/E-Commerce, Médias, Industrie, Public, Retail, Transport, Voyage…) plus other en filet de sécurité. Liste exhaustive : voir COMPANY_INDUSTRY_LABELS dans klapy-crm/src/types/index.ts.

Sous-objet Address

ts
interface Address {
  street?: string;
  city?: string;
  postal_code?: string;
  country?: string;
}

Tous les champs sont optionnels. Stocké en inline, jamais en document Firestore séparé.

Voir aussi

  • Contact : référence une Company via company_ids[] + primary_company_id
  • Opportunity : peut référencer un company_id (engagement professionnel vs particulier)
  • UserProfile : utilise aussi le sous-objet Address