/**
 * bad-debt-writeoff (wave-12) — DTOs, enums, and report types.
 */

export type BadDebtReason = 'bankruptcy' | 'collection_failed' | 'other'

export type VatReclaimStatus =
  | 'pending'
  | 'submitted'
  | 'approved'
  | 'rejected'
  | 'reversed'
  | 'cancelled'

export interface BadDebtVatReclaim {
  id: string
  tenantId: string
  invoiceId: string
  vatAmount: number
  status: VatReclaimStatus
  registeredLetterSentAt: string | null // ISO date
  itaSubmissionDate: string | null // ISO date
  itaReference: string | null
  resolvedAt: string | null // ISO datetime
  reversedAt: string | null // ISO datetime
  notes: string | null
  createdAt: string // ISO datetime
}

export interface WriteOffRequest {
  reason: BadDebtReason
  note?: string
  log_vat_reclaim: boolean
  write_off_date?: string // ISO date; defaults to today
}

export interface WriteOffResponse {
  invoiceId: string
  vatReclaimId?: string
}

export interface ReclaimPatchRequest {
  registered_letter_sent_at?: string
  ita_submission_date?: string
  ita_reference?: string
  status?: VatReclaimStatus
  notes?: string
}

export interface RecordRecoveryRequest {
  amount: number
  paidAt: string // ISO date
  source?: 'manual' | 'bank_transfer' | 'gateway' | 'other'
  reference?: string
  note?: string
}

export interface BadDebtReportInvoice {
  invoice_number: string
  customer_name: string
  amount: number
  vat_amount: number
  bad_debt_at: string
  vat_reclaim_status: VatReclaimStatus | null
  registered_letter_sent: boolean
}

export interface BadDebtReportData {
  year: number
  total_written_off: number
  total_vat_reclaimed: number
  by_reason: Record<BadDebtReason, number>
  invoices: BadDebtReportInvoice[]
}
