namespace PowderCoating.Core.Enums;

public enum RefundStatus
{
    Pending = 0,   // Recorded — shop has not yet physically issued the refund
    Issued = 1,    // Refund has been sent to the customer
    Cancelled = 2
}

public enum CreditMemoStatus
{
    Active = 0,
    PartiallyApplied = 1,
    FullyApplied = 2,
    Voided = 3
}

public enum InvoiceStatus
{
    Draft = 0,
    Sent = 1,
    PartiallyPaid = 2,
    Paid = 3,
    Overdue = 4,
    Voided = 5,
    WrittenOff = 6
}

public enum PaymentMethod
{
    Cash = 0,
    Check = 1,
    CreditDebitCard = 2,
    BankTransferACH = 3,
    DigitalPayment = 4,
    StoreCredit = 5     // Refund issued as store credit (creates a CreditMemo)
}

public enum GiftCertificateStatus
{
    Active = 0,
    PartiallyRedeemed = 1,
    FullyRedeemed = 2,
    Expired = 3,
    Voided = 4
}

public enum OnlinePaymentStatus
{
    NotApplicable = 0,   // Online payments not enabled for this company
    Pending       = 1,   // Link generated, not yet paid
    PartiallyPaid = 2,   // Customer has made one or more partial payments
    Paid          = 3,   // Fully paid via online payment
    Refunded      = 4    // Online payment was refunded via Stripe
}

public enum OnlinePaymentSurchargeType
{
    None    = 0,
    Percent = 1,   // e.g. 2.9% of transaction
    Flat    = 2    // e.g. $1.50 flat fee
}

public enum StripeConnectStatus
{
    NotConnected = 0,
    Pending      = 1,   // OAuth started, not yet completed
    Active       = 2,   // Connected and ready to accept payments
    Disabled     = 3    // Manually disabled or deauthorized by the company
}

public enum GiftCertificateIssuedReason
{
    Sold = 0,
    Prize = 1,
    Promotional = 2,
    Goodwill = 3,
    Other = 4
}
