অধ্যায় ১৪.২ — স্ট্যাটাস কোড
১. উদ্দেশ্য
travoBooks-এর সব entity-র stable enumerated status values। integration contracts-এর ভিত্তি।
২. Convention
- সর্বদা SCREAMING_SNAKE_CASE
- কখনো ইনডেক্স-ভিত্তিক comparison না — string code ব্যবহার করুন
- ভবিষ্যত versions স্ট্যাটাস যোগ করতে পারে; existing values কখনো পরিবর্তন হবে না
- API consumers should "tolerate unknown" — পুরাতন consumer নতুন status দেখলে default fallback
৩. Booking
DRAFT, HELD, PENDING_PAYMENT, PENDING_APPROVAL, ISSUED,
PARTIALLY_USED, COMPLETED, CANCELLED_BEFORE_ISSUE,
CANCELLED_AFTER_ISSUE, PARTIALLY_REFUNDED, EXPIRED
৪. Ticket
RESERVED, ISSUED, VOIDED, REFUNDED, PARTIALLY_REFUNDED,
EXCHANGED, FLOWN, EXPIRED
৫. EMD (Electronic Miscellaneous Document)
ISSUED, USED, REFUNDED, VOIDED, EXPIRED
৬. Invoice
DRAFT, ISSUED, PARTIALLY_PAID, PAID, OVERDUE,
VOIDED, WRITTEN_OFF
৭. Payment
INITIATED, AUTHORIZED, CAPTURED, APPLIED, RECONCILED,
FAILED, REFUNDED, CHARGEBACK, DISPUTED
৮. Payout
DRAFT, PENDING_APPROVAL, APPROVED, SENT, CONFIRMED,
FAILED, RECALLED
৯. Refund
REQUESTED, QUOTED, APPROVED, SUPPLIER_PROCESSING,
SUPPLIER_APPROVED, SUPPLIER_REJECTED,
PAYBACK_PENDING, PAYBACK_FAILED, COMPLETED,
REJECTED_BY_CUSTOMER
১০. Memo (ADM/ACM)
RECEIVED, UNLINKED, LINKED, UNDER_REVIEW,
DISPUTED, ACCEPTED, SETTLED_IN_BSP,
WITHDRAWN, WRITTEN_OFF
১১. Commission
ESTIMATED, ACCRUED, RECOGNISED, SETTLED,
RECONCILED, DISPUTED, RECALLED
১২. Period
Open, SoftClosed, Closed, Locked
(এটি mixed-case — historical reason)
১৩. Customer
PROSPECT, KYC_PENDING, ACTIVE, INACTIVE,
SUSPENDED, CREDIT_HOLD, SANCTIONS_HOLD
১৪. Supplier
PROSPECT, ONBOARDING, ACTIVE, INACTIVE,
SUSPENDED, BANK_HOLD
১৫. Import run
PENDING, RUNNING, COMPLETED, PARTIAL, FAILED, CANCELLED
১৬. Webhook delivery
PENDING, DELIVERED, RETRYING, FAILED, DEAD_LETTERED
১৭. JE
DRAFT, POSTED, REVERSED
JE itself simple — complexity period state-এ।
১৮. Reconciliation
Run status:
RUNNING, COMPLETED, FAILED
Match status:
MATCH_OK, COMMISSION_VARIANCE, AMOUNT_VARIANCE,
TAX_VARIANCE, NOT_FOUND_IN_OUR_BOOKS, NOT_FOUND_IN_BSP,
DUPLICATE, MANUAL_MATCH, RECONFIRMED
Exception status:
OPEN, IN_PROGRESS, RESOLVED, WRITTEN_OFF
১৯. Tax Return
DRAFT, FILED, PAID, AMENDED, OVERDUE
২০. Approval
PENDING, APPROVED, REJECTED, CANCELLED, EXPIRED
২১. ইন্টিগ্রেশন রুল
// ✓ সঠিক
if (booking.status === 'ISSUED') { ... }
if (['ISSUED', 'PARTIALLY_USED', 'COMPLETED'].includes(booking.status)) { ... }
// ✗ ভুল
if (booking.status_id === 5) { ... } // index unstable
if (booking.status > 3) { ... } // ordering arbitrary
২২. সাধারণ ফাঁদ
- ⚠️ Index-by-status — version upgrade-এ ভাঙবে
- ⚠️ "Tolerate unknown" না করা — new status crash
- ⚠️ Status-এর order compare — semantics নয়
- ⚠️ Status translation in UI কিন্তু code-level uppercase preserve না করা