/**
 * Static table column definitions for ClientDetailPage tables.
 */
import { decodeHtml } from 'src/composables/useFormatters'

export const invoiceCols = [
  { name: 'name', label: 'N°', field: 'name', align: 'left' },
  { name: 'posting_date', label: 'Date', field: 'posting_date', align: 'left', sortable: true },
  { name: 'grand_total', label: 'Total', field: 'grand_total', align: 'right', sortable: true },
  { name: 'outstanding_amount', label: 'Solde', field: 'outstanding_amount', align: 'right' },
  { name: 'status', label: 'Statut', field: 'status', align: 'center' },
]

// Les paiements affichent posting_date (date de transaction réelle, standard comptable),
// PAS `creation` (horodatage d'import ERPNext) qui faisait apparaître des paiements rétro-importés
// à la date du batch (ex. débits avril/mai affichés « 12 juin »).

export const paymentCols = [
  { name: 'name', label: 'N°', field: 'name', align: 'left' },
  { name: 'posting_date', label: 'Date', field: 'posting_date', align: 'left', sortable: true },
  { name: 'paid_amount', label: 'Montant', field: 'paid_amount', align: 'right' },
  { name: 'mode_of_payment', label: 'Mode', field: 'mode_of_payment', align: 'left' },
  { name: 'reference_no', label: 'Référence', field: 'reference_no', align: 'left' },
  { name: 'actions', label: '', field: () => '', align: 'center', style: 'width:40px;padding:0' },
]

export const invItemCols = [
  { name: 'item_name', label: 'Article', field: r => decodeHtml(r.item_name || r.item_code), align: 'left' },
  { name: 'qty', label: 'Qte', field: 'qty', align: 'center' },
  { name: 'rate', label: 'Prix unit.', field: 'rate', align: 'right' },
  { name: 'amount', label: 'Montant', field: 'amount', align: 'right' },
]

export const voipCols = [
  { name: 'did', label: 'DID', field: 'did', align: 'left' },
  { name: 'status', label: 'Statut', field: 'status', align: 'center' },
  { name: 'service_location', label: 'Adresse', field: 'service_location', align: 'left' },
  { name: 'e911_civic_number', label: '911 Adresse', field: r => r.e911_civic_number ? `${r.e911_civic_number} ${r.e911_street_name || ''}`.trim() : '', align: 'left' },
  { name: 'e911_synced', label: '911 Sync', field: 'e911_synced', align: 'center' },
  { name: 'sip_user', label: 'SIP', field: 'sip_user', align: 'left' },
]

export const paymentMethodCols = [
  { name: 'provider', label: 'Fournisseur', field: 'provider', align: 'left' },
  { name: 'is_auto_ppa', label: 'PPA', field: r => r.is_auto_ppa || r.stripe_ppa_enabled ? 'Oui' : 'Non', align: 'center' },
  { name: 'detail', label: 'Détail', field: r => {
    if (r.provider === 'Stripe') return r.stripe_customer_id || ''
    if (r.provider === 'Paysafe') return r.paysafe_profile_id || ''
    if (r.provider === 'Bank Draft') return r.ppa_institution ? `${r.ppa_institution}-${r.ppa_branch}` : (r.ppa_name || '')
    return ''
  }, align: 'left' },
  { name: 'stripe_card', label: 'Carte', field: r => {
    // stripe_cards is enriched by targo-hub from Stripe API
    if (r.stripe_cards?.length) {
      const c = r.stripe_cards[0]
      return `${(c.brand || '').toUpperCase()} •••• ${c.last4} (${c.exp_month}/${c.exp_year})`
    }
    return ''
  }, align: 'left' },
]

export const arrangementCols = [
  { name: 'name', label: 'N°', field: 'name', align: 'left' },
  { name: 'status', label: 'Statut', field: 'status', align: 'center' },
  { name: 'total_amount', label: 'Montant', field: 'total_amount', align: 'right' },
  { name: 'date_agreed', label: 'Convenu', field: 'date_agreed', align: 'left', sortable: true },
  { name: 'date_due', label: 'Échéance', field: 'date_due', align: 'left' },
  { name: 'note', label: 'Note', field: 'note', align: 'left' },
]

export const quotationCols = [
  { name: 'name', label: 'N°', field: 'name', align: 'left' },
  { name: 'transaction_date', label: 'Date', field: 'transaction_date', align: 'left', sortable: true },
  { name: 'grand_total', label: 'Total', field: 'grand_total', align: 'right' },
  { name: 'custom_po_number', label: 'PO', field: 'custom_po_number', align: 'left' },
  { name: 'status', label: 'Statut', field: 'status', align: 'center' },
]

export const serviceContractCols = [
  { name: 'name', label: 'N°', field: 'name', align: 'left' },
  { name: 'contract_type', label: 'Type', field: 'contract_type', align: 'left' },
  { name: 'start_date', label: 'Début', field: 'start_date', align: 'left', sortable: true },
  { name: 'duration_months', label: 'Durée', field: 'duration_months', align: 'right' },
  { name: 'monthly_rate', label: 'Mensuel', field: 'monthly_rate', align: 'right' },
  { name: 'total_benefit_value', label: 'Avantages', field: 'total_benefit_value', align: 'right' },
  { name: 'status', label: 'Statut', field: 'status', align: 'center' },
]

export const ticketCols = [
  { name: 'important', label: '', field: 'is_important', align: 'center', style: 'width:20px;padding:0 2px' },
  { name: 'legacy_id', label: '', field: 'legacy_ticket_id', align: 'right', style: 'width:48px;padding:0 4px' },
  { name: 'subject', label: 'Sujet', field: 'subject', align: 'left' },
  { name: 'assigned', label: '', field: 'assigned_staff', align: 'center', style: 'width:48px;padding:0 2px' },
  { name: 'opening_date', label: '', field: 'opening_date', align: 'left', style: 'width:76px;white-space:nowrap;padding:0 4px' },
  { name: 'priority', label: '', field: 'priority', align: 'center', style: 'width:24px;padding:0 2px' },
  { name: 'status', label: '', field: 'status', align: 'center', style: 'width:64px;padding:0 4px' },
]
