gigafibre-fsm/docs/LEGACY-ACCOUNTING-ANALYSIS.md
louispaulb 607ea54b5c refactor: reduce token count, DRY code, consolidate docs
Backend services:
- targo-hub: extract deepGetValue to helpers.js, DRY disconnect reasons
  lookup map, compact CAPABILITIES, consolidate vision.js prompts/schemas,
  extract dispatch scoring weights, trim section dividers across 9 files
- modem-bridge: extract getSession() helper (6 occurrences), resetIdleTimer(),
  consolidate DM query factory, fix duplicate username fill bug, trim headers
  (server.js -36%, tplink-session.js -47%, docker-compose.yml -57%)

Frontend:
- useWifiDiagnostic: extract THRESHOLDS const, split processDiagnostic into
  6 focused helpers (processOnlineStatus, processWanIPs, processRadios,
  processMeshNodes, processClients, checkRadioIssues)
- EquipmentDetail: merge duplicate ROLE_LABELS, remove verbose comments

Documentation (17 → 13 files, -1,400 lines):
- New consolidated README.md (architecture, services, dependencies, auth)
- Merge ECOSYSTEM-OVERVIEW into ARCHITECTURE.md
- Merge MIGRATION-PLAN + ARCHITECTURE-COMPARE + FIELD-GAP + CHANGELOG → MIGRATION.md
- Merge COMPETITIVE-ANALYSIS into PLATFORM-STRATEGY.md
- Update ROADMAP.md with current phase status
- Delete CONTEXT.md (absorbed into README)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 08:39:58 -04:00

578 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Analyse du système comptable legacy (facturation.targo.ca)
> Avril 2026 — Audit complet du système PHP/MariaDB pour migration vers ERPNext
---
## 1. Pages PHP activement utilisées (Apache access.log)
Classement par fréquence d'accès (logs récents) :
| Rang | Page (menu=) | Fichier PHP | Fonction | Accès |
|------|-------------|-------------|----------|-------|
| 1 | ticket_view | ticket_view.php | Consultation tickets | 47 964 |
| 2 | ticket_calendar | ticket_calendar.php | Calendrier dispatch tickets | 24 626 |
| 3 | client_view | client_view.php | Fiche client | 15 075 |
| 4 | client_list | client_list.php | Liste clients | 12 638 |
| 5 | ticket_open | ticket_open.php | Tickets ouverts | 6 571 |
| 6 | device_view | device_view.php | Fiche équipement | 3 664 |
| 7 | passwords_manager_list | passwords_manager_list.php | Gestionnaire de mots de passe | 3 662 |
| 8 | client_r | client_r.php | Recherche client | 2 731 |
| 9 | service_view | service_view.php | Détail service/abonnement | 1 898 |
| 10 | passwords_manager | passwords_manager.php | Mots de passe (détail) | 1 738 |
| 11 | invoice_view | invoice_view.php | Consultation facture | 1 231 |
| 12 | client_wizard | client_wizard.php | Wizard création client | 876 |
| 13 | pbx_list_pg | pbx_list_pg.php | Liste lignes PBX | 845 |
| 14 | ticket_new | ticket_new.php | Nouveau ticket | 839 |
| 15 | inventaire_remove | inventaire_remove.php | Retrait inventaire | 812 |
| 16 | fibre_adr_search | fibre_adr_search.php | Recherche adresse fibre | 751 |
| 17 | prorata | prorata.php | Calculateur pro-rata | 656 |
| 18 | payment_view | payment_view.php | Consultation paiement | 550 |
| 19 | payment_add | payment_add.php | Ajout paiement | 538 |
| 20 | tele_migration | tele_migration.php | Migration TV | 419 |
| 21 | invoice_add | invoice_add.php | Création facture | 338 |
| 22 | ticket_calendar_dispatch | ticket_calendar_dispatch.php | Dispatch calendrier | 291 |
| 23 | tele_channel_list | tele_channel_list.php | Liste chaînes TV | 268 |
| 24 | ticket_search | ticket_search.php | Recherche tickets | 158 |
| 25 | soumission | soumission.php | Soumissions/devis | 157 |
| 26 | inscription_add | inscription_add.php | Inscription client | 157 |
| 27 | cal_tax | rapport_tax.php | Rapport taxes | 152 |
| 28 | rapport_age_compte_payment | rapport_age_compte.php | Âge des comptes | 151 |
| 29 | raisecom_list | raisecom_list.php | Équipement Raisecom | 129 |
| 30 | client_add | client_add.php | Ajout client | 107 |
| 31 | report | report.php | Rapports généraux | 101 |
| 32 | task_generate_statement | task_generate_statement.php | Génération états de compte | 43 |
| 33 | service_add | service_add.php | Ajout service | 43 |
| 34 | accord_paiement | accord_paiement.php | Ententes de paiement | 25 |
| 35 | report_vente | report_vente.php | Rapport ventes mensuelles | 24 |
| 36 | invoice_credit | invoice_credit.php | Note de crédit | 23 |
| 37 | payment_accesd | payment_accesd.php | Paiement AccèsD | 14 |
| 38 | credit_creance | credit_creance.php | Crédit mauvaises créances | 10 |
---
## 2. Plan comptable complet (compta_comptes)
### Actifs
| # Compte | Description |
|----------|------------|
| 1000 | Encaisse PPA |
| 1001 | Encaisse Paiement direct |
| 1002 | Encaisse Carte de crédit |
| 1003 | Encaisse Comptant/Chèques |
| 1004 | Encaisse Ajustements |
| 1005 | Encaissement de crédit |
| 1050 | Petite caisse - bureau |
| 1060 | Petite caisse - service à la clientèle |
| 1100 | Caisse populaire |
| 1200 | Comptes à recevoir |
| 1205 | Provisions mauvaises créances |
### Passifs
| # Compte | Description |
|----------|------------|
| 2110 | Excédent |
| 2115 | Dépôt/Acompte client |
| 2300 | TPS perçue |
| 2305 | TPS payée |
| 2350 | TVQ perçue |
| 2355 | TVQ payée |
### Revenus (4000-4xxx)
| # Compte | Description |
|----------|------------|
| 4000 | Revenus autres |
| 4001 | Location espace cloud |
| 4010 | Honoraires |
| 4015 | Téléphonie |
| 4016 | Saisonniers (coupons-maraîchers) |
| 4017 | Installation et équipement fibre |
| 4018 | Équipement télé |
| 4019 | Mensualité télévision |
| 4020 | Mensualité fibre |
| 4021 | Mensualité Internet Haute-Vitesse sans fil |
| 4022 | Installation Internet Haute-Vitesse sans fil |
| 4023 | Équipement Internet Haute-Vitesse sans fil |
| 4024 | Téléchargement supplémentaire |
| 4025 | Garantie prolongée |
| 4026 | Section de Tour |
| 4027 | IP Fixe |
| 4028 | Frais d'activation |
| 4031 | Création de site Internet |
| 4041 | Nom de Domaine |
| 4042 | Hébergement |
| 4051 | Système Informatique |
| 4052 | Revenu - Service Informatique |
| 4054 | Pièces Informatiques |
| 4106 | Déplacement/temps technicien |
| 4250 | Intérêts et frais divers |
| 4260 | Frais divers taxables |
| 4300 | Temporaire |
### Dépenses / Charges
| # Compte | Description |
|----------|------------|
| 7575 | Frais PayPal |
| 7900 | Mauvaises créances |
| 7905 | Frais de recouvrement |
| 7910 | Déficit ou surplus de caisse |
---
## 3. Taxes — Configuration
### Taux de taxe
| ID | Nom | Taux | No. enregistrement |
|----|-----|------|-------------------|
| 1 | TPS | 5.0% | #834975559RT0001 |
| 2 | TVQ | 8.925% | #1213765929 (ancien) |
| 3 | TVQ | 8.5% | #1213765929 (ancien) |
| 4 | TVQ | 9.975% | #1213765929 (actuel) |
### Groupes de taxe
| ID | Nom | Taxes appliquées |
|----|-----|-----------------|
| 1 | Federal + Provincial (9.5%) | TPS (5%) + TVQ (9.975%) |
| 2 | Federal seulement | TPS (5%) |
| 3 | Aucune taxe | — |
| 4 | Provincial seulement | TVQ (8.5%) |
| 5 | Fed 5% + Prov 8.5% | TPS (5%) + TVQ (8.5%) |
### Comptes de taxe dans le journal
- **2300** = TPS perçue (CT sur vente, DT sur crédit)
- **2305** = TPS payée (DT sur achat)
- **2350** = TVQ perçue (CT sur vente, DT sur crédit)
- **2355** = TVQ payée (DT sur achat)
---
## 4. Codes de crédit
| ID | Description |
|----|------------|
| 1 | Raison inconnue |
| 2 | Correction d'une facture |
| 3 | Client sous garantie |
| 4 | Annulation Téléchargement supplémentaire |
| 5 | Entente prise |
---
## 5. Récurrence des services actifs
| Code | Fréquence | Services actifs |
|------|-----------|----------------|
| 0 | Annuel | 314 |
| 1 | Bi-mensuel | 43 |
| 2 | Mensuel | **37 435** |
| 3 | Charge unique | 255 |
| 4 | Aux 4 mois | 7 |
| 5 | Aux 6 mois | 1 471 |
| 6 | Aux 3 mois (trimestriel) | 98 |
---
## 6. Analyse détaillée des processus comptables
### 6.1 Facturation récurrente (task_charge_recurrent.php)
**Processus mensuel exécuté manuellement via l'interface web.**
**Étapes :**
1. L'opérateur choisit : date service ≤, date d'origine, date d'échéance
2. Option : surcharge de taxe, message à inclure sur les factures
3. Le script itère sur **tous les comptes** (`SELECT * FROM account`)
4. Pour chaque compte :
- Vérifie si une facture autobilling existe déjà pour cette date (dédoublonnage)
- Parcourt les `delivery` (points de livraison) → `service` (abonnements)
- Conditions de facturation :
- `date_next_invoice <= date_choisie`
- `service.status = 1` (actif)
- `account.status = 1` (actif)
- Calcule le prix : `quantité × prix_unitaire` (quantité basée sur la récurrence)
- Supporte le **hijack** de prix/description : prix custom par service
5. **Consommation excédentaire** (bandwidth overage) :
- Vérifie les quotas jour/nuit via `service_snapshot`
- Compare avec la consommation réelle (`conso_archive` ou `conso_radius_monthly2`)
- Si dépassement ≥ 1 GB : ajoute un item de facturation `HVGO × n GO × prix/GO`
6. **Frais de retard** :
- 2% du solde impayé des factures en souffrance
- Exception : clients VIP (1 mois de grâce), clients au recouvrement, clients avec PPA (pré-autorisé)
- Compte : 4250 (Intérêts et frais divers)
7. **Taxes** : Calculées selon le `tax_group` du client
8. **Écriture comptable** : Chaque facture génère :
- DT 1200 (Comptes à recevoir) = total
- CT [compte revenu selon produit] = sous-total par item
- CT 2300 (TPS perçue) = montant TPS
- CT 2350 (TVQ perçue) = montant TVQ
- Type écriture : `F` (Facture)
### 6.2 Création de facture manuelle (invoice_add.php)
Même logique comptable que la facturation récurrente, mais :
- L'opérateur saisit manuellement les items (SKU, description, prix, quantité)
- Le compte de revenu est déterminé par la catégorie du produit (`product_cat.num_compte`)
- Supporte un champ "dépense" (DT sur un compte spécifique, déduit du total)
- Options : sans taxe, surcharge de taxe, impression, envoi par email
- Écriture identique : DT 1200 + CT [revenus] + CT taxes
### 6.3 Note de crédit (invoice_credit.php)
**Logique inversée par rapport à la facture :**
- Items avec prix négatif (`unitary_price` = montant négatif)
- Écritures inversées :
- **CT 1200** (comptes à recevoir) = total du crédit
- **DT [compte revenu]** = montant par item
- **DT 2300** (TPS) = taxe TPS sur le crédit
- **DT 2350** (TVQ) = taxe TVQ sur le crédit
- Crée simultanément un `payment` de type `credit` pour le même montant
- `invoice.refund_status = 2` (Crédit)
- `invoice.billing_status = 1` (considéré comme payé)
- Associé à un `credit_code` pour catégoriser la raison
### 6.4 Paiement (payment_add.php)
**Méthodes de paiement :**
- PPA (pré-autorisé)
- Comptant
- Chèque
- Carte de crédit
- Paiement direct
- Crédit TARGO
**Processus :**
1. L'opérateur entre le client, montant, méthode, date
2. Le système affiche les factures impayées (via AJAX `payment_ajax_date.php`)
3. L'opérateur coche les factures à appliquer et les montants
4. L'excédent va dans le compte 2115 (Dépôt/Acompte client) ou 2110 (Excédent)
5. Met à jour `invoice.billed_amt` et `invoice.billing_status`
6. Crée les `payment_item` pour tracer l'application
### 6.5 Entente de paiement (accord_paiement.php)
**Fonctionnalités :**
- Création d'une entente avec : date accord, date paiement (échéance), montant, méthode
- Calcul automatique de la **date de coupure** basé sur la méthode :
- Comptant : +2 jours
- Chèque : +9 jours
- Carte crédit : +2 jours
- Paiement direct : +4 jours
- Indéfini : +3 jours
- Option "grâce férié" : +2 jours supplémentaires
- Envoi automatique d'email bilingue (FR/EN) au client via PHPMailer/Mailjet
- Statut : En attente / Respecté / Non respecté (forçable)
- BCC automatique à Comptabilite@targointernet.com
### 6.6 Crédit mauvaise créance (credit_creance.php)
**Pour radier les comptes irrécouvrables :**
1. L'opérateur spécifie le client et les factures à radier
2. Le système vérifie que le montant couvre exactement les factures
3. Reverse-engineer le montant hors taxe : `montant / (1 + somme_taux_taxes)`
4. Écritures :
- **CT 1200** (comptes à recevoir) = montant total
- **DT 2300** (TPS) = portion TPS
- **DT 2350** (TVQ) = portion TVQ
- **DT 7900** (mauvaises créances) = montant hors taxe
5. Marque les factures comme payées (billing_status = 1)
6. Crée un paiement de type `credit` pour tracer
### 6.7 État de compte (task_generate_statement.php)
**Processus de batch :**
1. Itère sur tous les comptes avec un solde impayé
2. Pour chaque compte : collecte les factures et paiements non soldés
3. Génère un PDF via DomPDF
4. Envoi par email (Mailjet SMTP) ou impression (lpr)
5. Message bilingue (FR/EN) avec liens vers le portail client
### 6.8 Soumissions/Devis (soumission.php)
**Fonctionnalités :**
- Création de devis avec items matériel et mensuels
- Sérialization PHP pour stocker les items (`serialize`/`unserialize`)
- Conversion en facture : crée automatiquement une facture + services mensuels
- Même logique comptable que `invoice_add.php`
- Création automatique de services récurrents pour les items mensuels
---
## 7. Rapports comptables
### 7.1 Rapport de ventes (report_vente.php)
- Sélection par intervalle de dates
- Pour chaque facture dans la période :
- Calcule le sous-total (`SUM(quantity × unitary_price)` de `invoice_item`)
- Récupère les taxes TPS/TVQ séparément de `invoice_tax`
- Sortie CSV : #Facture, #Client, SousTotal, TPS, TVQ, Total
### 7.2 Rapport de revenus par compte (report_revenu.php) — LE RAPPORT CLÉ
- Requête les comptes de revenus 4000-5000 dans `compta_comptes`
- Pour chaque mois dans l'intervalle sélectionné :
- `SELECT SUM(amount) FROM compta_journal_ecriture_detail d JOIN compta_journal_ecriture e WHERE d.num_compte = [compte] AND e.date_orig BETWEEN [début] AND [fin]`
- **CT** (crédit) = ajoute au revenu
- **DT** (débit) = soustrait du revenu (renversements, crédits)
- Génère un graphique stacked area (Google Charts) + CSV
### 7.3 Rapport de taxes (rapport_tax.php)
- Période mensuelle ou trimestrielle
- 4 comptes suivis :
- 2300 : TPS perçue (sur ventes)
- 2305 : TPS payée (sur achats)
- 2350 : TVQ perçue (sur ventes)
- 2355 : TVQ payée (sur achats)
- Revenu total des comptes 4000-6000
- Utilisé pour les déclarations TPS/TVQ
### 7.4 Rapport crédits/renversements (report_credit.php)
- Filtre les factures par `refund_status` :
- 1 = Renversement
- 2 = Crédit
- 3 = Remboursement
- Jointure avec `credit_code` pour la catégorisation
- Détails par client + totaux par type
### 7.5 Âge des comptes (rapport_age_compte.php)
- Buckets : Courant, 30 jours, 60 jours, 90 jours, 120+ jours
- Pour chaque compte actif :
- Calcule `total_amt - billed_amt` par bucket temporel
- Affiche le solde dû par tranche
### 7.6 Calculateur pro-rata (prorata.php)
- Outil manuel : saisie d'un intervalle de dates + montants
- Formule : `montant / jours_total_période × jours_dans_intervalle`
- Pas de logique automatisée — utilisé manuellement par le staff
---
## 8. Schéma de la double entrée comptable
```
FACTURE (vente):
DT 1200 (Comptes à recevoir) = TOTAL
CT [4xxx] (Revenu par catégorie) = Sous-total par item
CT 2300 (TPS perçue) = Taxe fédérale
CT 2350 (TVQ perçue) = Taxe provinciale
CRÉDIT/RENVERSEMENT:
CT 1200 (Comptes à recevoir) = TOTAL
DT [4xxx] (Revenu par catégorie) = Sous-total par item
DT 2300 (TPS perçue) = Taxe fédérale
DT 2350 (TVQ perçue) = Taxe provinciale
PAIEMENT:
CT 1200 (Comptes à recevoir) = Montant appliqué
DT [1000-1004] (Encaisse) = Selon méthode
DT 2115 (Dépôt client) = Excédent si applicable
MAUVAISE CRÉANCE:
CT 1200 (Comptes à recevoir) = TOTAL
DT 7900 (Mauvaises créances) = Montant hors taxe
DT 2300 (TPS) = Portion TPS
DT 2350 (TVQ) = Portion TVQ
```
---
## 9. Mapping vers ERPNext — Analyse de conformité
### ✅ Ce qu'ERPNext gère nativement
| Fonction legacy | Équivalent ERPNext | Notes |
|----------------|-------------------|-------|
| Invoice (facture) | Sales Invoice | Double entrée automatique |
| Invoice credit | Credit Note (return against) | Lié à la facture originale |
| Payment | Payment Entry | Application automatique aux factures |
| Tax groups | Sales Taxes and Charges Template | TPS + TVQ configurables |
| Chart of accounts | Chart of Accounts | Standard Canada (à personnaliser) |
| Account aging | Accounts Receivable report | Standard |
| Statement of Account | Statement of Account | Standard, envoi email |
| Product → revenue account | Item → Income Account (via Item Group) | Mapping par catégorie |
| Late fees | — | ⚠️ Pas natif, besoin custom |
| Pro-rata | — | Partiellement via Subscription |
### ⚠️ Ce qui nécessite du développement custom
| Fonction legacy | Complexité | Approche ERPNext |
|----------------|-----------|-----------------|
| **Facturation récurrente automatique** | Moyenne | ERPNext `Subscription` doctype — mais ne gère pas : hijack prix/desc par service, consommation bandwidth, frais de retard conditionnels |
| **Frais de retard (2% du solde)** | Moyenne | Script schedulé custom : requête AR aging, crée Sales Invoice pour frais |
| **Consommation excédentaire (bandwidth)** | Haute | Script custom : lire données RADIUS/conso, comparer quotas, créer items de facturation |
| **Hijack prix/description** | Basse | Utiliser `Subscription Plan` avec prix custom par abonnement (champ custom) |
| **Entente de paiement** | Moyenne | Doctype custom `Payment Agreement` avec workflow (statut, date coupure, email auto) |
| **Crédit mauvaise créance** | Basse | Journal Entry custom : DT 7900 + DT taxes + CT 1200 |
| **Soumissions → facture + services** | Moyenne | Quotation → Sales Invoice + création auto Subscription |
| **Rapport revenus par compte GL** | Basse | General Ledger report filtré par groupe de comptes |
| **Rapport taxes TPS/TVQ** | Basse | Tax report custom ou filtrage du GL |
| **Rapport crédits par code** | Basse | Custom report sur Credit Notes avec champ custom `credit_code` |
| **Calculateur pro-rata** | Basse | Déjà dans ERPNext pour les Subscriptions |
### ❌ Gaps critiques — ERPNext ne gère PAS nativement
1. **Facturation par point de livraison (delivery)** : Le legacy facture par "delivery" (adresse) avec des services distincts par delivery. ERPNext n'a pas ce concept — il faudrait soit un champ custom `service_location` sur les items de Subscription, soit un Subscription par adresse.
2. **Récurrences variées sur un même compte** : Un client peut avoir des services mensuels, semestriels et annuels. ERPNext `Subscription` ne supporte qu'une seule fréquence par subscription — il faudrait plusieurs Subscriptions par client.
3. **Période comptable fermée** : Le legacy a une variable `$month_close` / `$year_close` qui empêche de créer des écritures dans les périodes fermées. ERPNext a le concept d'`Accounting Period` mais la vérification est différente.
4. **Encaisse séparée par méthode de paiement** : Comptes 1000-1004 distincts (PPA, direct, carte, comptant). ERPNext utilise un seul compte bancaire par défaut — il faut créer des Mode of Payment avec des comptes distincts.
5. **Inventaire des mots de passe** (passwords_manager) : Aucun équivalent dans ERPNext — outil externe nécessaire (Vault, Bitwarden, etc.)
---
## 10. Scénarios complexes de facturation
### Scénario : Contrat 24 mois avec crédits récurrents
**Legacy (tel que décrit par l'opérateur) :**
```
Client signe Internet 100Mbps à 79.95$/mois × 24 mois
+ Crédit récurrent -20$/mois × 12 mois (promotion)
+ Crédit installation -10$/mois × 24 mois (amortissement installation)
= Mois 1-12 : 79.95 - 20 - 10 = 49.95$/mois
= Mois 13-24 : 79.95 - 10 = 69.95$/mois
= Mois 25+ : 79.95$/mois
Résiliation anticipée au mois 18 :
- Pénalité : solde restant des crédits d'installation (6 × 10$ = 60$)
- Frais de résiliation : selon conditions
```
**Implémentation dans le legacy :**
- Service principal avec `hijack_price` = 79.95
- Service crédit promotion avec `hijack_price` = -20, `actif_until` = date+12 mois
- Service crédit installation avec `hijack_price` = -10, `actif_until` = date+24 mois
- La résiliation anticipe est gérée manuellement (pas automatisée)
**Approche ERPNext proposée :**
- `Subscription` principal : item Internet 100Mbps, prix 79.95
- `Subscription Plan` avec `Pricing Rule` ou items de crédit négatifs
- Champs custom sur Subscription : `engagement_months`, `engagement_start`
- Script de résiliation custom : calcule la pénalité selon les mois restants
- ⚠️ Nécessite un développement custom significatif
### Scénario : Client avec plusieurs adresses et services mixtes
```
Client TARGO-1234 :
├── Adresse 1 (123 rue Principale)
│ ├── Internet Fibre 100Mbps (mensuel)
│ ├── Téléphonie VoIP (mensuel)
│ └── TV Premium (mensuel)
├── Adresse 2 (456 av. du Parc)
│ ├── Internet Sans-fil (semestriel)
│ └── IP Fixe (annuel)
└── Adresse 3 (789 ch. du Lac - saisonnier)
└── Internet Fibre 50Mbps (6 mois : mai-octobre)
```
**Legacy :** Chaque adresse = 1 `delivery`, chaque item = 1 `service` avec sa propre `date_next_invoice`
**ERPNext :** Nécessite 5+ Subscriptions avec des fréquences différentes, toutes liées au même Customer. Les items doivent référencer la Service Location. La facture unique mensuelle qui regroupe tout n'est pas le comportement par défaut d'ERPNext.
---
## 11. Tables legacy non migrées — Priorité
### Priorité CRITIQUE (comptabilité)
| Table | Records | Description | Migration |
|-------|---------|-------------|-----------|
| compta_journal_ecriture | ~500K+ | Écritures comptables | → GL Entry |
| compta_journal_ecriture_detail | ~1.5M+ | Détails écritures | → GL Entry |
| compta_comptes | 37 | Plan comptable | → Chart of Accounts ✅ |
| compta_setup | 1 | Période fermée | → Accounting Period |
| invoice | ~500K+ | Factures | → Sales Invoice (partiel ✅) |
| invoice_item | ~2M+ | Items de facture | → Sales Invoice Item |
| invoice_tax | ~1M+ | Taxes par facture | → Sales Taxes and Charges |
| payment | ~200K+ | Paiements | → Payment Entry |
| payment_item | ~400K+ | Application paiements | → Payment Entry Reference |
| credit_code | 5 | Codes de crédit | → Custom DocType |
| tax_group | 5 | Groupes de taxe | → Sales Taxes Template ✅ |
| tax | 4 | Taux de taxe | → Tax template ✅ |
### Priorité HAUTE (opérations)
| Table | Description | Migration |
|-------|-------------|-----------|
| service | Abonnements actifs | → Subscription |
| delivery | Points de livraison | → Service Location (partiel ✅) |
| product | Catalogue produits | → Item (partiel ✅) |
| product_cat | Catégories + comptes de revenu | → Item Group |
| product_translate | Traductions produits | → Item (description champ) |
| accord_paiement | Ententes de paiement | → Custom DocType |
| soumission | Devis/soumissions | → Quotation |
| deposit | Bordereaux de dépôt | → Bank Transaction |
### Priorité MOYENNE (support)
| Table | Description | Migration |
|-------|-------------|-----------|
| ticket / ticket_response | Tickets support | → Issue (partiel ✅) |
| account_note | Notes client | → Comment |
| attachments | Pièces jointes | → File |
| bon_travail | Bons de travail | → Work Order / Dispatch Job |
| inventaire | Inventaire équipement | → Service Equipment (partiel ✅) |
| passwords_manager | Mots de passe réseau | → Outil externe |
### Priorité BASSE (legacy/obsolète)
| Table | Description | Notes |
|-------|-------------|-------|
| conso_archive | Consommation bandwidth | Historique, pas de migration active |
| conso_radius_monthly2 | Consommation RADIUS | Historique |
| service_snapshot | Snapshots quotas | Historique |
| invoice_call | Appels interurbains | Fonction potentiellement obsolète |
| invoice_msg_template | Templates messages facture | → Print Format |
| staff | Personnel | → Employee ✅ |
| phone | Lignes téléphoniques | → Voix / PBX |
| ip | Adresses IP | → Service Equipment |
---
## 12. Recommandations — Ordre de migration
### Phase 1 : Fondations comptables
1. Mapper le plan comptable legacy → ERPNext Chart of Accounts
2. Configurer les taxes TPS/TVQ avec les bons comptes
3. Configurer les Mode of Payment avec comptes d'encaisse séparés (1000-1004)
4. Créer les Item Groups avec les comptes de revenu correspondants
### Phase 2 : Import historique
1. Importer les factures historiques (invoice → Sales Invoice)
2. Importer les paiements historiques (payment → Payment Entry)
3. Vérifier la balance de migration (comptes à recevoir)
### Phase 3 : Processus récurrents
1. Développer le module de facturation récurrente custom (basé sur Subscription mais avec les spécificités Targo)
2. Intégrer les frais de retard automatiques
3. Développer les ententes de paiement (custom doctype)
### Phase 4 : Rapports
1. Valider que le GL report reproduit le rapport de revenus
2. Développer le rapport de taxes TPS/TVQ
3. Adapter le rapport d'âge des comptes
### Phase 5 : Fonctionnalités avancées
1. Consommation excédentaire bandwidth
2. Soumissions → facturation automatique
3. Crédits mauvaises créances
4. Migration des données de consommation historiques (si nécessaire)