Modul terbesar di codebase — OrderController 2.987 baris, Order/Main.vue 9.668 baris. Alur pembuatan, status, observer, invoice, dan integrasi service.
Modul Order adalah modul terbesar di dazoapp. Mencakup pembuatan order, status flow, pembayaran, invoice, shipping, export, dan integrasi ke engine WhatsApp & backend Go.
File kunci
File
Baris
Peran
app/Http/Controllers/OrderController.php
2.987
CRUD order, status, shipping, invoice, export
resources/js/Pages/Order/Main.vue
9.668
UI utama — 8 modal + 2 tab + dashboard
app/Models/Order.php
57
Model MongoDB, UUID, $guarded = []
app/Models/OrderItem.php
41
Item per order, snapshot produk embed
app/Models/OrderPayment.php
26
Bukti pembayaran, soft-delete
app/Observers/OrderObserver.php
192
Trigger saat payment_status → paid
app/Enums/StatusOrder.php
33
Enum status (tidak dipakai sebagai validasi)
app/Exports/OrdersExport.php
81
Export Excel
Model Order
MongoDB, $guarded = [] (mass-assignment terbuka), PK UUID di boot().
OrderItem menyimpan snapshot produk di embedded document (product, item_product). Pola umum MongoDB untuk freeze state produk saat order dibuat. Field: order_id, product_id, qty, normal_price, real_price, variant_product, total_price, weight.
Status — dua dimensi terpisah
Order punya dua field status yang berbeda:
status (status order)
Enum app/Enums/StatusOrder.php mendefinisikan 6 nilai, tapi tidak dipakai sebagai validasi. Controller bebas tulis string:
Nilai
Kapan di-set
pending
Produk fisik tanpa courier
process
Produk digital, atau fisik + courier
delivery
Saat number_receipt diisi (createOrder)
complete
Manual via change_order_status
complained
Via change_order_status_multiple — gabung jadi 'complete,complained'
cancel, refund
Manual
payment_status (status pembayaran)
Nilai
Kapan di-set
unpaid
Default saat create
confirmed
Manual
paid
Pemicu OrderObserver — transisi ke paid trigger deposit wallet + decrement stok + kirim link digital
Kirim link produk digital — DigitalProductService::sendProductLink()
OrderController — method utama
CRUD
Method
Baris
Fungsi
createOrder
:1612
Buat order + order items + update stok + kirim WA delivery
updateOrder
:2088
Update info order dari halaman detail
updateOrderColumn
:3266
Update 1 kolom (inline edit)
Status update
Method
Baris
Fungsi
Observer?
change_order_status
:1192
Ubah status tunggal + sync followUp
—
change_order_status_multiple
:1224
Bulk ubah status — khusus complained
—
change_payment_status
:1260
Ubah payment_status tunggal
Tidak (mass update)
change_payment_status_multiple
:1280
Bulk ubah payment_status
Ya (save())
Shipping
Method
Baris
Fungsi
update_shipping
:1482
Update data shipping
update_address
:1571
Update alamat
upload_resi
:2716
Upload nomor resi (massal/single)
generate_shippinglabel
:3275
PDF label via labellayout_1.blade.php
Invoice & export
Method
Baris
Fungsi
invoice
:1307
Render HTML invoice
invoicePdf
:1335
Stream PDF via DomPDF
export
:1352
Export semua order ke PDF
exportExcel
:1363
Export Excel via OrdersExport
Route
Web (routes/web.php)
Method
Path
Fungsi
GET
/orders
Halaman utama
GET
/orders/create
Form buat order
GET
/orders/detail/{id}
Halaman detail
GET
/orders/{id}
Invoice HTML
GET
/orders/export
Export PDF
GET
/orders/export-order-excel
Export Excel
API (routes/api.php)
Prefix /order:
Method
Path
Fungsi
POST
/order/create
Buat order
POST
/order/change_order_status
Ubah status
POST
/order/change_payment_status
Ubah payment status (tunggal)
POST
/order/change_payment_status_multiple
Bulk payment status
POST
/order/upload_resi
Upload resi
PUT
/order/update_order_column
Inline edit
POST
/order/list
List paginate
Invoice
Blade: resources/views/invoice.blade.php (705 baris). Dipakai oleh invoice() (HTML) dan invoicePdf() (PDF stream).
Field ditampilkan: logo store, barcode order_number, data customer, tabel item, metode pembayaran (bank/QR/COD), kurir & resi, total. Ada widget tracking Rajaongkir di footer.
Integrasi service eksternal
Backend Go (url_api)
Method
Endpoint
Fungsi
createOrder
POST {url_api}send_image
Kirim gambar
createOrder
POST {url_api}send_message
Kirim pesan WA ke pembeli
Engine WhatsApp (url_engine)
Method
Endpoint
Fungsi
updateDataSource
POST {url_engine}update-chatlist
Sync chat list
deviceInfo
POST {url_engine}deviceinfo
Ambil info device
createNotif
POST {url_engine}push-notif
Push notif ke device
God component — Order/Main.vue
Struktur tingkat tinggi (9.668 baris):
2 tab via currentTab: overview_data (laporan) + order_data (tabel)
8 modal: Create Order, Cetak Label, Detail, Ubah Status Transaksi, Ubah Status Pembayaran, Input Resi, Export Data, Scan Barcode
Sub-komponen yang sudah diekstrak: hanya components/FollowUpModal.vue + components/FollowUpTabsDropdowns.vue