defmodule SettlementCore do @moduledoc """ SettlementCore — public API entry-point. Delegates to `SettlementCore.Context` for all settlement domain operations. """ # ── Legacy settlements ────────────────────────────────────────────────────── defdelegate list_settlements(params \\ %{}), to: SettlementCore.Context defdelegate count_settlements(params \\ %{}), to: SettlementCore.Context defdelegate get_settlement!(id), to: SettlementCore.Context defdelegate get_settlement_by_id(settlement_id), to: SettlementCore.Context defdelegate get_settlement_by_settlement_id(settlement_id), to: SettlementCore.Context defdelegate create_settlement(attrs \\ %{}), to: SettlementCore.Context defdelegate update_settlement(settlement, attrs), to: SettlementCore.Context defdelegate get_settlement_summary(merchant_id \\ nil), to: SettlementCore.Context defdelegate generate_settlement_id(), to: SettlementCore.Context # ── AANI settlements ──────────────────────────────────────────────────────── defdelegate get_aani_settlement_by_merchant_and_date(merchant_tag, settlement_date), to: SettlementCore.Context defdelegate get_aani_settlement_by_batch(merchant_tag, bank_user_id, settlement_date, batch_number), to: SettlementCore.Context defdelegate get_unmatched_batches_for_request(merchant_tag, bank_user_id, settlement_date), to: SettlementCore.Context defdelegate create_aani_settlement(attrs), to: SettlementCore.Context # ── Batch numbers ─────────────────────────────────────────────────────────── defdelegate get_and_increment_batch_number(merchant_id, provider_id \\ nil), to: SettlementCore.Context defdelegate increment_batch_number_after_success(merchant_id, provider_id \\ nil), to: SettlementCore.Context defdelegate check_settlement_processed?(merchant_tag, merchant_id, batch_number, settlement_date), to: SettlementCore.Context # ── YSP summaries ────────────────────────────────────────────────────────── defdelegate create_ysp_summary(attrs), to: SettlementCore.Context # ── Settlement records processing ────────────────────────────────────────── defdelegate filter_unprocessed_settlements(settlements, settlement_date), to: SettlementCore.Context defdelegate record_settlements_batch(settlements, file_path, settlement_date), to: SettlementCore.Context defdelegate process_refund_settlement(filename, content, options \\ %{}), to: SettlementCore.Context # ── Transaction operations ───────────────────────────────────────────────── defdelegate list_transaction_operations(params \\ %{}), to: SettlementCore.Context defdelegate create_transaction_operation(attrs), to: SettlementCore.Context defdelegate get_transaction_operation_by_request_id(id), to: SettlementCore.Context defdelegate list_settlement_transactions(settlement_id, params \\ %{}), to: SettlementCore.Context defdelegate get_settlement_transaction_summary(settlement_id), to: SettlementCore.Context defdelegate get_settlement_transactions_stats(settlement_id), to: SettlementCore.Context # ── TID Master ───────────────────────────────────────────────────────────── defdelegate get_tid_master_by_tid(tid), to: SettlementCore.Context defdelegate get_tid_master_by_mid(mid), to: SettlementCore.Context defdelegate get_tid_master_by_mms_user_id(mms_user_id), to: SettlementCore.Context defdelegate upsert_tid_master(attrs), to: SettlementCore.Context defdelegate update_last_transaction(tid_master, date, amount), to: SettlementCore.Context # ── Settlement MIS (Finance approval workflow) ───────────────────────────── defdelegate list_settlement_mis(params \\ %{}), to: SettlementCore.Context defdelegate get_settlement_mis!(id), to: SettlementCore.Context defdelegate get_settlement_mis_for_date(date), to: SettlementCore.Context defdelegate create_settlement_mis(attrs), to: SettlementCore.Context defdelegate l1_approve_settlement_mis(mis, user_id, notes \\ nil), to: SettlementCore.Context defdelegate l2_approve_settlement_mis(mis, user_id, notes \\ nil), to: SettlementCore.Context defdelegate reject_settlement_mis(mis, user_id, reason), to: SettlementCore.Context defdelegate list_settlement_mis_items(settlement_mis_id), to: SettlementCore.Context # ── Merchant adjustments ─────────────────────────────────────────────────── defdelegate list_adjustments(params \\ %{}), to: SettlementCore.Context defdelegate get_adjustment!(id), to: SettlementCore.Context defdelegate create_adjustment(attrs), to: SettlementCore.Context defdelegate apply_adjustment(adj, mis_id), to: SettlementCore.Context defdelegate cancel_adjustment(adj, reason), to: SettlementCore.Context defdelegate count_pending_adjustments(), to: SettlementCore.Context # ── Payout batches ───────────────────────────────────────────────────────── defdelegate list_payout_batches(params \\ %{}), to: SettlementCore.Context defdelegate get_payout_batch!(id), to: SettlementCore.Context defdelegate list_payout_items(batch_id), to: SettlementCore.Context # ── Chargebacks ──────────────────────────────────────────────────────────── defdelegate list_chargebacks(params \\ %{}), to: SettlementCore.Context defdelegate get_chargeback!(id), to: SettlementCore.Context defdelegate create_chargeback(attrs), to: SettlementCore.Context defdelegate get_outstanding_chargebacks_for_mid(mid), to: SettlementCore.Context end