diff --git a/frappe-setup/setup_dispatch_custom_fields.py b/frappe-setup/setup_dispatch_custom_fields.py index 9eb4299..32c8f2e 100644 --- a/frappe-setup/setup_dispatch_custom_fields.py +++ b/frappe-setup/setup_dispatch_custom_fields.py @@ -24,6 +24,10 @@ FIELDS = [ {"description": "1.0 = normal · 1.10 = +10% (plus lent) · 0.90 = -10% (plus rapide)"}), ("Dispatch Technician", "skills", "Compétences", "Data", None, None, "tech_group", {"description": "Séparées par des virgules, ex: fibre,cuivre,aerien"}), + ("Dispatch Technician", "skill_levels", "Niveaux de compétence (JSON)", "Small Text", None, None, "skills", + {"description": "Maîtrise 1-5 par compétence (JSON, ex: {\"installation\":4}). Distinct de l'efficacité (=vitesse). Édité dans la grille Planification."}), + ("Dispatch Technician", "skill_eff", "Efficacité par compétence (JSON)", "Small Text", None, None, "skill_levels", + {"description": "Facteur de vitesse PAR compétence (JSON, ex: {\"installation\":0.9}). Défaut = efficacité globale. Édité dans la grille Planification."}), ("Dispatch Technician", "cost_salary_h", "Salaire horaire ($/h)", "Float", None, "0", "efficiency", {}), ("Dispatch Technician", "cost_charges_pct", "Charges sociales (%)", "Float", None, "0", "cost_salary_h", {}), ("Dispatch Technician", "cost_other_h", "Autres coûts/h ($ véhicule, outils, frais)", "Float", None, "0", "cost_charges_pct", {}), @@ -38,6 +42,10 @@ FIELDS = [ ("Dispatch Job", "booking_status", "Statut RDV", "Select", "À planifier\nProposé\nConfirmé\nAnnulé\nÀ reporter", "À planifier", "booking_prefs", {}), ("Dispatch Job", "booking_token", "Jeton RDV client", "Data", None, None, "booking_status", {"read_only": 1, "no_copy": 1}), + # ── Dispatch Job : pont de synchro avec la DB legacy (osTicket) ── + ("Dispatch Job", "legacy_ticket_id", "ID ticket legacy (pont)", "Data", None, None, "ticket_id", + {"read_only": 1, "no_copy": 1, "search_index": 1, + "description": "ID du ticket osTicket legacy (table `ticket`). Renseigné par le pont legacy→dispatch (lib/legacy-dispatch-sync.js) → idempotence : 1 ticket legacy = 1 Dispatch Job."}), # ── Service Contract : installation financée (conformité CRTC 2026-43, pas de clawback) ── ("Service Contract", "monthly_regular", "Forfait — prix original (barré)", "Currency", None, None, "monthly_rate", {"description": "Prix mensuel de référence barré (marketing). Le montant facturé reste monthly_rate. Vide/≤ = aucun barré."}),