defmodule DaProductApp.Repo.Migrations.CreateChargebackCases do use Ecto.Migration def change do create table(:chargeback_cases) do add :case_number, :string, null: false add :merchant_mid, :string, null: false add :merchant_id, :integer add :core_transaction_id, :integer add :rrn, :string add :auth_number, :string # Transaction details add :transaction_amount, :decimal, precision: 18, scale: 4, null: false add :transaction_currency, :string, size: 3, default: "AED" add :transaction_date, :date add :scheme_name, :string add :card_type_code, :string # Chargeback details add :chargeback_reason_code, :string, null: false add :chargeback_reason_description, :string add :scheme_case_reference, :string add :chargeback_date, :date, null: false add :response_due_date, :date # Recovery add :recovery_amount, :decimal, precision: 18, scale: 4 add :recovery_currency, :string, size: 3, default: "AED" # Lifecycle add :status, :string, null: false, default: "received" # received / representment / pre_arbitration / resolved / written_off add :resolution_date, :date add :resolution_notes, :text # Financial outcome add :financial_impact, :string # recovered / written_off # Settlement integration add :recovery_deducted_at, :naive_datetime add :payout_batch_id, :integer # Audit add :created_by, :integer add :updated_by, :integer timestamps(type: :naive_datetime) end create unique_index(:chargeback_cases, [:case_number]) create index(:chargeback_cases, [:merchant_mid]) create index(:chargeback_cases, [:core_transaction_id]) create index(:chargeback_cases, [:status]) create index(:chargeback_cases, [:chargeback_date]) create index(:chargeback_cases, [:response_due_date]) end end