// Konstanta "enum" — karena SQLite tidak mendukung native enum, nilai divalidasi
// di layer aplikasi. Saat migrasi ke Postgres bisa dipromosikan ke enum asli.

export const ROLES = {
  SUPER_ADMIN: "super_admin",
  OWNER_APPROVER: "owner_approver",
  BRANCH_ADMIN: "branch_admin",
  COURIER: "courier",
} as const;
export type Role = (typeof ROLES)[keyof typeof ROLES];
export const ALL_ROLES = Object.values(ROLES);

export const ORDER_STATUS = {
  DRAFT: "draft",
  CONFIRMED: "confirmed",
  ASSIGNED: "assigned",
  ON_DELIVERY: "on_delivery",
  DELIVERED: "delivered",
  PARTIALLY_RETURNED: "partially_returned",
  FAILED_DELIVERY: "failed_delivery",
  CANCELLED: "cancelled",
} as const;
export type OrderStatus = (typeof ORDER_STATUS)[keyof typeof ORDER_STATUS];

export const ORDER_SOURCE = {
  OFFLINE: "offline",
  WHATSAPP: "whatsapp",
  APP_CUSTOMER: "app_customer",
} as const;

export const PAYMENT_STATUS = { UNPAID: "unpaid", PAID: "paid" } as const;

export const DELIVERY_STATUS = {
  WAITING: "waiting",
  ON_THE_WAY: "on_the_way",
  DELIVERED: "delivered",
  PARTIALLY_DELIVERED: "partially_delivered",
  FAILED: "failed",
} as const;
export type DeliveryStatus = (typeof DELIVERY_STATUS)[keyof typeof DELIVERY_STATUS];

export const FAILURE_REASONS = [
  "pelanggan_tidak_ada",
  "pelanggan_menolak",
  "alamat_tidak_ditemukan",
  "lainnya",
] as const;

export const MOVEMENT_TYPE = {
  IN: "in",
  OUT: "out",
  RETURN_GOOD: "return_good",
  RETURN_DAMAGED: "return_damaged",
  ADJUSTMENT: "adjustment",
} as const;
export type MovementType = (typeof MOVEMENT_TYPE)[keyof typeof MOVEMENT_TYPE];

export const PRICE_TIER = { OFFLINE: "offline", APP_CUSTOMER: "app_customer" } as const;

export const OVERRIDE_STATUS = {
  PENDING: "pending",
  APPROVED: "approved",
  REJECTED: "rejected",
} as const;
