gigafibre-fsm/docs/ERPNEXT_ITEM_DIFF_VS_LEGACY.md
louispaulb 41d9b5f316 feat: flow editor, Gemini QR scanner with offline queue, dispatch planning v2
Major additions accumulated over 9 days — single commit per request.

Flow editor (new):
- Generic visual editor for step trees, usable by project wizard + agent flows
- PROJECT_KINDS / AGENT_KINDS catalogs decouple UI from domain
- Drag-and-drop reorder via vuedraggable with scope isolation per peer group
- Chain-aware depends_on rewrite on reorder (sequential only — DAGs preserved)
- Variable picker with per-applies_to catalog (Customer / Quotation /
  Service Contract / Issue / Subscription), insert + copy-clipboard modes
- trigger_condition helper with domain-specific JSONLogic examples
- Global FlowEditorDialog mounted once in MainLayout, Odoo inline pattern
- Server: targo-hub flow-runtime.js, flow-api.js, flow-templates.js
- ERPNext: Flow Template/Run doctypes, scheduler, 5 seeded system templates
- depends_on chips resolve to step labels instead of opaque "s4" ids

QR/OCR scanner (field app):
- Camera capture → Gemini Vision via targo-hub with 8s timeout
- IndexedDB offline queue retries photos when signal returns
- Watcher merges late-arriving scan results into the live UI

Dispatch:
- Planning mode (draft → publish) with offer pool for unassigned jobs
- Shared presets, recurrence selector, suggested-slots dialog
- PublishScheduleModal, unassign confirmation

Ops app:
- ClientDetailPage composables extraction (useClientData, useDeviceStatus,
  useWifiDiagnostic, useModemDiagnostic)
- Project wizard: shared detail sections, wizard catalog/publish composables
- Address pricing composable + pricing-mock data
- Settings redesign hosting flow templates

Targo-hub:
- Contract acceptance (JWT residential + DocuSeal commercial tracks)
- Referral system
- Modem-bridge diagnostic normalizer
- Device extractors consolidated

Migration scripts:
- Invoice/quote print format setup, Jinja rendering
- Additional import + fix scripts (reversals, dates, customers, payments)

Docs:
- Consolidated: old scattered MDs → HANDOFF, ARCHITECTURE, DATA_AND_FLOWS,
  FLOW_EDITOR_ARCHITECTURE, BILLING_AND_PAYMENTS, CPE_MANAGEMENT,
  APP_DESIGN_GUIDELINES
- Archived legacy wizard PHP for reference
- STATUS snapshots for 2026-04-18/19

Cleanup:
- Removed ~40 generated PDFs/HTMLs (invoice_preview*, rendered_jinja*)
- .gitignore now covers invoice preview output + nested .DS_Store

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-22 10:44:17 -04:00

61 lines
4.4 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.

# ERPNext Item Master — Diff vs Legacy `gestionclient`
Tracks every **new Item** created in ERPNext that does **not** exist (by SKU or
semantic concept) in the legacy `gestionclient.product` table. Each entry lists
the rationale, so the migration audit trail stays intact as we re-model pricing
in the wizard.
Conventions:
- **Reused** = SKU matches legacy 1:1 (already imported in bulk).
- **Semantic reuse** = different SKU in wizard, but a legacy SKU covers the same
concept — wizard-constants points at the legacy SKU.
- **New** = ERPNext-only SKU, no legacy equivalent.
---
## New Items (wizard-generated lines with no legacy counterpart)
| ERPNext SKU | Name | Rate | Group | Why new |
|---|---|---|---|---|
| `TV-BASE` | Télévision de base | 19.95 $ | Télévision | Wizard simplifies legacy `TVBSKINNY`/`TVBSTANDARD`/`TVBEVO` (25/30/35 $) into a single flat base. |
| `TV-MIX5` | Bonus Mix 5 chaînes | 10.00 $ | Télévision | Positive-rate addon (vs legacy `RABTV_MIX5` rebate at 0 $). Wizard flattens "pick 5 thematic forfaits + get rebate" into a single "+10 $ for 5 picks" line. |
| `TV-MIX10` | Bonus Mix 10 chaînes | 17.50 $ | Télévision | Same pattern as TV-MIX5 — replaces legacy picking N TVF* packs + `RABTV_MIX10`. |
| `TV-PREMIUM-SUR` | Supplément chaîne premium | 3.00 $ | Télévision | Wizard surcharge per premium sport pick (RDS, TSN, Sportsnet, TVA Sports). Emitted as a line per premium group. No legacy equivalent — legacy had thematic forfaits at 20 $ (TVFSPORTFR/EN) instead. |
| `TV-ALC-OVER` | Chaînes additionnelles (à la carte) | 0.00 $ (rate computed per line) | Télévision | Overage line when channel picks exceed the Mix allotment. No legacy equivalent. |
| `REF-CREDIT-50` | Crédit parrainage | -50.00 $ | Rabais | One-time credit when a valid referral code is entered. Legacy used `CRPROGREC` (-21.74 $) with a different program. *Pre-existed in ERPNext.* |
| `EQ-WIFI-BOOST` | Booster WiFi (maillage) | 5.00 $ | Équipement | Mesh booster — no legacy equivalent (legacy sold UniFi APs at 160316 $, not a monthly rental). |
| `RAB-LOYAUTE` | Rabais Fidélité | -40.00 $ | Rabais | Flat fidélité rebate on FTTH80I to reach 39.95 $ promo. Legacy used `RAB_X` (-20 $) + other flags — wizard centralizes. |
| `FEE-INSTALL` | Frais d'installation | 99.95 $ | Frais | Flat install fee. Legacy model was `INSTFIBRES` 199 $ + `RABINS` -199 $ = 0 $ net with 24mo contract. Wizard simplifies. |
| `FEE-EXTRA` | Frais supplémentaire — installation | 0.00 $ (rate per line) | Frais | Per-step extra fees (émondage, creusage, etc.) from `EXTRA_FEE_PRESETS`. |
## Semantic reuse — wizard points at legacy SKUs
| Wizard concept | Legacy SKU reused | Rate | Notes |
|---|---|---|---|
| À la carte TV | `TELE_CARTE` | 0 $ | Legacy description: « Télévision à la carte » — exact match. Wizard uses this as the base for à-la-carte selections. |
| Téléphonie illimitée CA/US | `TELEPMENS` | 28.95 $ | Legacy description: « Téléphonie IP, options toutes incluses, Canada et É-U illimité ». Bundle discount (to reach ~10 $/mo) is applied manually, not auto-generated. |
| Portabilité téléphonique | `TELEPTRANS` | 40.00 $ | Legacy: « Transfert de numéro ». Wizard references only if port-in is requested. |
| Rabais combo 2 / 3 / 4 services | `RAB2X` / `RAB3X` / `RAB4X` | -5 / -10 / -15 $ | **Added manually** at the sales rep's discretion — no longer auto-inserted by the wizard. |
| Rabais engagement 24 mois | `RAB24M` | -15 $ | Legacy-only; reused directly. |
## Reused 1:1 (no diff)
- All `FTTH*I` SKUs (80, 150, 500, 1500, 3500, 8000)
- All `FTTB*I` SKUs (25, 50, 100, 300, 1000)
- All `TVF*` thematic forfaits (CRAVE, STARZ, SPORTEN, SPORTFR, SE, DECOU, STYLE, FILM, JEUNE, etc.)
- All `TVB*` base packages (SKINNY, STANDARD, EVO)
- Rebates: `RABTV_MIX5`, `RABTV_MIX10`, `RAB2X`, `RAB3X`, `RAB4X`, `RAB24M`, `RAB36M`, `RAB_X`, `RABINS`
- Fees: `ACTTELEP`, `INSTFIBRES`, `INSTFCAMP`, `CRINSTFIB`
- Phone: `TELEPMENS`, `TELEPTRANS`, `SERV911`, `TELEPMENSCR`
## Notable legacy SKUs explicitly NOT used by the wizard
- `TVBSKINNY` / `TVBSTANDARD` / `TVBEVO` — superseded by `TV-BASE`
- Individual `TVF*` thematic forfaits — wizard uses picker + Mix 5/10 instead
- `INSTFIBRES` + `RABINS` rebate mechanic — replaced by single `FEE-INSTALL`
- `RABTV_MIX5` / `RABTV_MIX10` rebate items — replaced by positive-rate `TV-MIX5` / `TV-MIX10`
---
**Last updated**: 2026-04-21 (wizard → legacy Item mapping audit).