Petit projet de démonstration pour comparer deux façons d'importer des clients dans Sage Intacct à partir d'un fichier CSV.
Montrer que ce n'est pas l'API Intacct qui est lente, mais le nombre d'appels (vérifier et créer ligne par ligne).
- .NET 10
- Compte Intacct avec accès Web Services
- Variables d'environnement configurées :
INTACCT_SENDER_ID
INTACCT_SENDER_PASSWORD
INTACCT_COMPANY_ID
INTACCT_USER_ID
INTACCT_USER_PASSWORD
Redémarrer le terminal ou l'IDE après les avoir définies.
cd IntacctUseCase
dotnet runLe script génère un CSV de test (20 lignes), exécute les deux méthodes, puis affiche un comparatif (appels API + durée).
| Étape | Action |
|---|---|
| 1 | Vérifier les contacts — 1 appel par ligne |
| 2 | Vérifier les clients — 1 appel par ligne |
| 3 | Créer les contacts manquants — 1 par 1 |
| 4 | Modifier les contacts existants — 1 par 1 |
| 5-6 | Créer / modifier les clients — par lots de 50 |
| Étape | Action |
|---|---|
| 1 | Charger tous les contacts — 1 à quelques appels |
| 2 | Charger tous les clients — 1 à quelques appels |
| 3 | Créer les contacts manquants — par lots de 50 |
| 4 | Modifier les contacts existants — par lots de 50 |
| 5 | Créer les nouveaux clients — par lots de 50 |
| 6 | Modifier les clients existants — par lots de 50 |
IntacctUseCase/
├── Program.cs # Point d'entrée
├── Models/DemoModels.cs # CustomerRow, ImportStats
└── Services/
├── CsvService.cs # Génération / lecture CSV (format Garanka)
├── ImportPlan.cs # Répartition créer / mettre à jour
├── LegacyImportService.cs # Méthode actuelle
├── OptimizedImportService.cs
└── IntacctDataService.cs # Appels Intacct partagés
Format aligné sur Garanka_CreateUpdateARCustomers.php (55 colonnes, séparateur ;).
Un fichier de test est généré dans data/demo_clients_20.csv à chaque exécution.
La méthode optimisée tourne après la méthode actuelle, sur les mêmes IDs. Au 2e passage, beaucoup de lignes seront des modifications, pas des créations.


