From d4a5644e372c3e5f97fdc2c51d437c7f27bb77c7 Mon Sep 17 00:00:00 2001 From: louispaulb Date: Sat, 4 Jul 2026 21:37:55 -0400 Subject: [PATCH] refactor(ops): extract PaymentSection from ClientDetailPage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit T7 découpage géants — sort la section « Paiements » unifiée (méthode de paiement carte/PPA/liens Stripe + transactions Payment Entry + charges Stripe réelles + ententes) dans components/customer/PaymentSection.vue. Reste un module de la grille réordonnable : open (v-model:open), moduleStyle (ordre CSS) et moduleVisible fournis par la fiche ; données + états de chargement + actions (usePaymentActions + recordPayment/ confirmRefund/loadAllPayments/openModal) passés en props ; colonnes et formatMoney importés dans l'enfant. ClientDetailPage -78 l. ; imports morts retirés (paymentMethodCols/paymentCols/arrangementCols). Vérifié en local sur hub LIVE (C-LPB4) : en-tête « Paiements (3) » + PPA + boutons ; v-model expand OK ; Méthode de paiement = carte réelle MASTERCARD ••7030 (cus_UJNksulWgk5VVX, PPA Oui) ; 3 charges Stripe « Remboursé ». 0 erreur console. ClientDetailPage: 2074 → 1646 lignes sur les 3 extractions T7 (DeviceStrip + LocationCard + PaymentSection). Co-Authored-By: Claude Opus 4.8 --- .../components/customer/PaymentSection.vue | 153 ++++++++++++++++++ apps/ops/src/pages/ClientDetailPage.vue | 134 ++++----------- 2 files changed, 181 insertions(+), 106 deletions(-) create mode 100644 apps/ops/src/components/customer/PaymentSection.vue diff --git a/apps/ops/src/components/customer/PaymentSection.vue b/apps/ops/src/components/customer/PaymentSection.vue new file mode 100644 index 0000000..15bd6fb --- /dev/null +++ b/apps/ops/src/components/customer/PaymentSection.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/apps/ops/src/pages/ClientDetailPage.vue b/apps/ops/src/pages/ClientDetailPage.vue index afcef0d..5b48e8f 100644 --- a/apps/ops/src/pages/ClientDetailPage.vue +++ b/apps/ops/src/pages/ClientDetailPage.vue @@ -245,111 +245,32 @@ - - - - - -
-
Méthode de paiement
-
- Ouvrir le portail Stripe pour gérer la carte - Créer un lien Stripe Checkout (copié au presse-papier) - Envoyer lien de paiement par SMS - Envoyer lien de paiement par Email -
-
Aucune méthode de paiement
- - - - -
- - -
-
Transactions
-
Aucune transaction
- -
- - -
-
Ententes de paiement ({{ arrangements.length }}){{ arrangements.filter(a => a.status === 'Open').length }} actives
- - - - -
-
+ + @@ -825,7 +746,7 @@ import { useSubscriptionGroups } from 'src/composables/useSubscriptionGroups' import { useSubscriptionActions } from 'src/composables/useSubscriptionActions' import { useCustomerNotes } from 'src/composables/useCustomerNotes' import { useConversations } from 'src/composables/useConversations' -import { invoiceCols, paymentCols, ticketCols, voipCols, paymentMethodCols, arrangementCols, quotationCols, serviceContractCols } from 'src/config/table-columns' +import { invoiceCols, ticketCols, voipCols, quotationCols, serviceContractCols } from 'src/config/table-columns' import DetailModal from 'src/components/shared/DetailModal.vue' import DataTable from 'src/components/shared/DataTable.vue' import CustomerHeader from 'src/components/customer/CustomerHeader.vue' @@ -848,6 +769,7 @@ import { useUserPrefs } from 'src/composables/useUserPrefs' import { erpPdfUrl } from 'src/utils/erp-pdf' import RewardDialog from 'src/components/customer/RewardDialog.vue' import LocationCard from 'src/components/customer/LocationCard.vue' +import PaymentSection from 'src/components/customer/PaymentSection.vue' const $q = useQuasar() const { can } = usePermissions()