D
Engineering

subscription_invoices

Schema collection subscription_invoices — invoice subscription dengan plan, addon, dan payment status.

Collection: subscription_invoices

Menyimpan invoice subscription toko — paket yang dibeli, addon, dan status pembayaran.

Struktur Dokumen

json
{
  "_id": "uuid-string",
  "store_id": "uuid-string",
  "package_id": "uuid-string",
  "plan": 1,
  "price": 100000,
  "status": "paid",
  "paid_at": "2026-06-25T14:30:00.000000Z",
  "expired_at": "2026-07-25T14:30:00.000000Z",
  "addon_invoices": [
    {
      "addon_id": "uuid-string",
      "price": 50000,
      "status": "paid"
    }
  ],
  "coupon_id": "uuid-string",
  "discount": 10000,
  "total": 140000,
  "payment_method": "bank_transfer",
  "payment_proof": "uploads/bukti-transfer/xxx.jpg",
  "notes": "Pembayaran via BCA",
  "created_at": "2026-06-25T14:00:00.000000Z",
  "updated_at": "2026-06-25T14:30:00.000000Z"
}

Field

FieldTypeDeskripsi
_idstring (UUID)Primary key
store_idstring (UUID)Foreign key ke stores._id
package_idstring (UUID)Foreign key ke packages._id
planintQuantity/duration multiplier (1, 2, 3, …)
priceintHarga paket (per unit)
statusstringStatus: pending, paid, expired, cancelled
paid_atDateTimeWaktu dibayar
expired_atDateTimeWaktu expiry subscription
addon_invoicesarrayDaftar addon yang dibeli
addon_invoices[].addon_idstringForeign key ke addons._id
addon_invoices[].priceintHarga addon
addon_invoices[].statusstringStatus addon invoice
coupon_idstringForeign key ke coupons._id (jika pakai coupon)
discountintJumlah diskon
totalintTotal bayar (price × plan + addons - discount)
payment_methodstringMetode pembayaran
payment_proofstringPath bukti transfer
notesstringCatatan admin

Relasi

RelasiTypeKe
storebelongsTostores via store_id
packagebelongsTopackages via package_id
paymenthasOnesubscription_payments via invoice_id

Query Umum

javascript
// Invoice pending
db.subscription_invoices.find({ status: "pending" })

// Invoice paid bulan ini
db.subscription_invoices.find({
  status: "paid",
  paid_at: { $gte: ISODate("2026-06-01T00:00:00Z") }
})

// Invoice by store
db.subscription_invoices.find({ store_id: "uuid-store" })