Skip to main content

title: “Distribution Tracking” description: “Sistem tracking distribusi, shipment management, batch recall, dan surat jalan di SNISHOP ERP.”

Distribution Tracking

Distribution Tracking Distribution Tracking adalah modul logistik end-to-end yang mengelola pengiriman dari gudang ke partner atau customer. Modul ini mencakup 8 status pengiriman, integrasi dengan 7 logistic provider, mesin recall batch untuk produk bermasalah, dan generate surat jalan untuk dokumentasi fisik. Sistem ini dirancang untuk bisnis F&B manufacturing yang membutuhkan visibilitas penuh atas setiap batch produk yang keluar dari gudang — mulai dari picking, packing, shipping, hingga delivery confirmation. Jika terjadi masalah kualitas pada batch tertentu, fitur batch recall memungkinkan identifikasi dan penarikan produk secara terstruktur.

Arsitektur Komponen

Entity Relationship Diagram

Entity & Model

DistributionShipment

Entitas utama yang merepresentasikan setiap pengiriman produk dari gudang ke customer/distributor. Setiap shipment terhubung dengan Sales Order, melacak batch produk untuk keperluan recall, dan terintegrasi dengan modul Finance melalui invoice_id dan finance_record_id.

DistributionReturn

Entitas yang mengelola proses retur pengiriman dari customer/distributor. Setiap return terhubung dengan shipment asal, melalui proses QC, karantina, dan disposisi akhir.

LotBatch

Entitas yang merepresentasikan setiap batch/lot produksi atau penerimaan bahan baku. LotBatch merupakan tulang punggung traceability — setiap produk yang diproduksi, disimpan, dikirim, atau direcall dapat dilacak melalui nomor lot.

WarehouseLocation

Entitas yang mendefinisikan lokasi-lokasi gudang, toko, transit, dan virtual dalam sistem ERP. Setiap shipment memiliki origin dan destination yang merujuk ke WarehouseLocation.

QualityCase

Entitas yang menangani kasus kualitas yang menyebabkan penahanan (hold/quarantine) batch produk. QualityCase menjadi trigger utama untuk proses recall pada Distribution Tracking.

Status Pipelines & Lifecycle Diagrams

Shipment Status Lifecycle

Distribution Return Lifecycle

Quarantine Status Lifecycle (DistributionReturn)

Lot Batch Status Lifecycle

Quality Case Lifecycle

QuinnOrder Fulfillment Lifecycle

Enum Reference Tables

DistributionShipment Status

Customer Type

Logistic Providers

Distribution Return Status

Distribution Return Quarantine Status

Distribution Return QC Status

Lot Batch Status

Lot Batch Quality Status

Lot Batch Item Type

Lot Batch Expiry Alert Status

Lot Batch Cost Status

Lot Batch Identity Status

Quality Case Reason

Quality Case Status

Warehouse Location Type

Quality Check Overall Status

Quality Check Expiry Date Check

Quality Check Checklist Result

QuinnOrder Status

QuinnOrder Payment Status

QuinnOrder Fulfillment Status

QuinnOrder Reservation Status

Partnership Application Type

Partnership Application Status

Sequence Diagrams

Flow Pembuatan Shipment (Create Shipment)

Flow Tracking & Status Update

Flow Batch Recall

Flow Distribution Return

Flow Surat Jalan Generation

Fitur Utama

1. Shipment Management

Sistem membuat shipment baru dengan langkah-langkah terstruktur: validasi stok, pemilihan batch FIFO, pengisian data penerima, pemilihan logistik, dan integrasi ke modul Finance. FIFO Batch Selection: Sistem secara otomatis memilih batch tertua (First In, First Out) untuk memastikan produk yang dikirim memiliki sisa shelf life maksimal. Ini kritis untuk bisnis F&B karena berkaitan langsung dengan keamanan pangan dan kepuasan customer. Idempotency & Data Integrity: Setiap shipment creation menggunakan idempotency key yang tersimpan di field metadata untuk mencegah duplikasi, terutama penting saat integrasi dengan API logistik pihak ketiga.

2. Surat Jalan (Delivery Order)

Surat Jalan adalah dokumen fisik yang menyertai pengiriman. Sistem menggenerate preview surat jalan yang bisa dicetak:

3. Batch Recall Engine

recallEngine.js (280 baris) adalah modul kritis yang menangani penarikan batch produk bermasalah. Sistem ini digunakan ketika ada laporan kualitas negatif pada batch tertentu dan terhubung langsung dengan entitas QualityCase. Risk Levels: Recall Flow: CSV Manifest Export: Untuk risk level HIGH dan CRITICAL, sistem mengexport CSV manifest yang berisi:

4. Tracking & ETA

Setiap shipment memiliki estimasi waktu tiba (ETA) yang bisa diupdate berdasarkan status:

5. Distribution Return Management

Modul retur mengelola proses pengembalian barang dari customer/distributor secara terstruktur:
  1. Pengajuan Retur: Customer mengajukan retur dengan menyebutkan item, quantity, dan alasan
  2. Penerimaan Fisik: Barang diterima di gudang, dicatat lokasi penerimaannya (received_location_id)
  3. Inspeksi QC: Barang melalui inspeksi Quality Control (qc_status: pending)
  4. Karantina: Barang dikarantina sementara menunggu hasil QC (quarantine_status: quarantined)
  5. Disposisi: Keputusan akhir — approved (kembali ke stok), rejected (write-off), atau conditional

6. Multi-Tenant & Row-Level Security

Semua entitas Distribution Tracking menggunakan Row-Level Security (RLS) berbasis company_id. Akses data dibatasi berdasarkan:
  • Company scoping: User hanya melihat data dari active_company_id mereka
  • Creator access: User yang membuat record dapat mengakses record tersebut
  • Admin override: User dengan role admin memiliki akses penuh

Cara Akses

Dari sidebar, klik menu B2B > Distribution Tracking.

Flow Penggunaan

Admin / Gudang

  1. Buka halaman Distribution Tracking dari sidebar
  2. Klik “Buat Pengiriman” untuk shipment baru
  3. Pilih produk dan jumlah yang akan dikirim
  4. Sistem otomatis memilih batch tertua (FIFO)
  5. Isi detail penerima dan alamat
  6. Pilih logistic provider dan input tracking number
  7. Print surat jalan untuk menyertai pengiriman
  8. Update status secara berkala seiring progres pengiriman

Batch Recall (Quality Issue)

  1. Terima laporan kualitas negatif pada batch tertentu
  2. Aktifkan recallEngine dengan batch number
  3. Sistem assess risk level (LOW/MEDIUM/HIGH/CRITICAL)
  4. Untuk HIGH/CRITICAL: export CSV manifest penerima terdampak
  5. Hubungi penerima untuk arrange return/pickup
  6. Update status shipment ke returned atau recalled
  7. Quarantine stock yang dikembalikan
  8. Buat DistributionReturn untuk proses retur formal

Retur Barang

  1. Customer/distributor mengajukan permintaan retur
  2. Sistem membuat DistributionReturn dengan status requested
  3. Jadwalkan penerimaan barang di gudang
  4. Terima barang fisik, update status ke received
  5. Inspeksi QC terhadap barang retur
  6. Tentukan disposisi: approved, rejected, atau conditional
  7. Update stok sesuai disposisi akhir
  8. Tutup proses retur (status: closed)

Integrasi Cross-Module

Detail Integrasi

RBAC Permission Matrix

Berdasarkan Row-Level Security (RLS) yang didefinisikan pada setiap entitas: Catatan RBAC:
  • Admin: Akses penuh ke semua operasi CRUD pada semua entitas dalam perusahaan.
  • Owner (Creator): Khusus DistributionShipment dan DistributionReturn, user yang membuat record memiliki akses penuh terlepas dari company_id.
  • Same Company: User dalam company yang sama dapat mengakses data selama company_id pada data cocok dengan active_company_id user dan tidak null atau kosong.
  • Semua entitas menggunakan isolasi multi-tenant berdasarkan company_id untuk mencegah kebocoran data antar perusahaan.

Tips

  • Selalu gunakan FIFO batch selection untuk memastikan shelf life produk optimal di tangan partner
  • Update status shipment secara real-time — partner bergantung pada informasi ini untuk perencanaan penerimaan
  • Untuk batch recall, mulai dari risk assessment sebelum mengambil aksi — tidak semua isu memerlukan CRITICAL level
  • Export CSV manifest secara berkala untuk audit trail dan compliance
  • Gunakan internal fleet untuk area lokal guna mengontrol kualitas pengiriman langsung
  • Manfaatkan field metadata untuk menyimpan idempotency key saat integrasi dengan API pihak ketiga
  • Selalu verifikasi HACCP sebelum melepas batch untuk pengiriman — field haccp_verified pada LotBatch adalah gate utama
  • Untuk retur, pastikan proses QC dilakukan sebelum disposisi — gunakan quarantine_status untuk melacak status karantina
  • Monitor expiry_alert_status pada LotBatch secara proaktif untuk mencegah pengiriman produk mendekati kadaluarsa
  • Gunakan cost_status pada LotBatch untuk memastikan kelengkapan pencatatan HPP sebelum shipment diinvoice ke Finance