Skip to Content

Goods Receipt (Penerimaan Barang)

CodePUR-GR
ModulePurchasing
TypeTransaction document
StatusImplemented
PriorityP0 — MVP
ProcessProcure-to-Pay, langkah 2
API[URL Postman]

1. Overview

Goods Receipt (GR) adalah dokumen yang mencatat barang yang benar-benar diterima sebuah toko dari supplier. GR bisa dibuat dari Purchase Order (PO) yang sudah diajukan, atau tanpa PO untuk barang yang datang tanpa pesanan formal. Staf mencatat waktu penerimaan, alamat penerimaan, identitas pengirim, bukti penerimaan, dan per produk: qty dikirim, qty ditolak, serta qty diterima. GR ditetapkan penanggung jawabnya (PIC); hanya PIC yang bisa mengajukan dan membatalkan GR. GR yang sudah diajukan memperbarui status PO dan menjadi sumber baris tagihan (Bill). GR bisa dicetak sebagai PDF kapan saja.

Hasil yang diharapkan: setiap barang yang masuk ke toko tercatat sesuai jumlah yang sebenarnya diterima, selisih dengan pesanan terlihat, dan supplier hanya ditagihkan untuk barang yang layak diterima.

2. Problem

Di banyak toko retail, penerimaan barang hanya diperiksa sekilas, lalu surat jalan supplier disimpan tanpa dicatat di sistem. Akibatnya:

  • Barang yang kurang kirim, rusak, atau salah kirim tidak tercatat, sehingga baru ketahuan saat stock opname atau saat tagihan dibayar.
  • Tidak ada hubungan yang jelas antara pesanan, barang yang datang, dan tagihan; staf harus mencocokkannya secara manual.
  • Tidak jelas siapa yang menerima barang dan kapan, sehingga selisih sulit ditelusuri.
  • Toko membayar sesuai jumlah yang dikirim supplier, bukan jumlah yang benar-benar diterima.

3. Goals & Non-goals

Goals

  • Penerimaan barang cepat dicatat saat barang datang. Indikator: GR dari PO terisi otomatis dari baris PO, staf cukup menyesuaikan qty.
  • Barang yang ditolak tercatat terpisah dari barang yang diterima. Indikator: setiap baris punya qty dikirim, qty ditolak, dan qty diterima.
  • Status PO mengikuti penerimaan. Indikator: status PO berubah menjadi Diterima Sebagian atau Diterima saat GR diajukan.
  • GR menjadi sumber tagihan. Indikator: Bill dibuat dari GR yang diajukan, dengan qty mengikuti qty diterima.

Non-goals

  • Quality control bertingkat atau inspeksi per batch (cukup qty ditolak)
  • Pencatatan nomor batch, tanggal kedaluwarsa, atau serial number
  • Retur barang ke supplier
  • Penerimaan dari sumber selain supplier, misalnya transfer antar toko atau retur pelanggan (struktur data sudah menyiapkan origin_type, tetapi belum dipakai)
  • Batas toleransi over-receive (lihat BR-11)
  • Revisi GR setelah Diajukan (batalkan dan buat baru)

4. User Scenarios

RoleScenario
Staf GudangTruk supplier datang membawa pesanan; membuat GR dari PO, memeriksa barang, mencatat qty ditolak untuk barang yang rusak, lalu mengajukan GR
Staf GudangSupplier mengirim barang yang dipesan lewat telepon tanpa PO; membuat GR tanpa PO dengan memilih supplier secara manual
Kepala TokoMenetapkan PIC pada GR Draf yang dibuat staf lain agar GR bisa diajukan
Staf PurchasingSupplier hanya mengirim sebagian; setelah GR pertama diajukan, PO menjadi Diterima Sebagian, lalu GR berikutnya dibuat saat sisa barang datang
PICGR yang sudah diajukan ternyata salah catat; membatalkan GR dengan alasan, lalu membuat GR baru
Staf FinanceMembuat tagihan dari GR yang sudah diajukan (lihat PRD Bill)

5. User Flow

Penjelasan tiap langkah pada diagram:

  1. Isi wizard — Dari daftar GR, staf klik Tambah Baru. Wizard terdiri dari 3 langkah:

    • Umum: toko terisi otomatis dari toko aktif (read-only); alamat penerimaan terisi otomatis dari alamat pengiriman default toko. Switch Buat dari Pesanan Pembelian aktif secara default:

      • Jika aktif, staf memilih PO (hanya PO toko aktif berstatus Diajukan, Diterima Sebagian, atau Diterima), dan supplier terisi otomatis dari PO (read-only).
      • Jika nonaktif, pilihan PO dinonaktifkan dan staf memilih supplier secara manual.

      Tanggal estimasi diterima tampil sebagai informasi (dari PO; tanpa PO berisi hari ini). Tanggal & waktu penerimaan default saat ini, dan penanggung jawab default pengguna yang sedang login. Staf juga bisa mengisi penanggung jawab pengirim, nomor polisi kendaraan pengirim, bukti penerimaan (gambar atau dokumen, bisa lebih dari satu), dan catatan.

    • Produk: jika GR dibuat dari PO, daftar produk terisi otomatis dari semua baris PO dengan qty dikirim sama dengan qty pesan. Staf menyesuaikan qty, serta menambah, mengubah, atau menghapus baris lewat dialog: cari produk berdasarkan nama atau barcode (satu pilihan per kemasan/UoM), isi qty dikirim dan qty ditolak. Qty diterima dihitung otomatis.

    • Tinjauan: ringkasan seluruh isian sebelum disimpan.

    Pratinjau PDF tersedia di setiap langkah.

  2. Data valid? — Validasi per langkah saat klik Selanjutnya, dan validasi BE saat Simpan. Error BE ditampilkan di langkah Tinjauan dan pada field terkait.

  3. Draf — GR tersimpan dengan status Draf, dan staf diarahkan ke daftar GR. Draf bisa diubah (header dan baris), ditetapkan PIC-nya, atau dihapus. Stok belum berubah.

  4. Diajukan — PIC klik Ajukan Penerimaan dan mengonfirmasi. GR tidak dapat diubah lagi; tercatat siapa dan kapan mengajukan. Stok toko bertambah sebesar qty diterima, dan GR kini bisa dirujuk oleh Bill.

  5. Status PO diperbarui — Jika GR merujuk PO, BE membandingkan akumulasi qty diterima dari semua GR yang diajukan dengan qty pesan tiap baris, lalu mengubah status PO menjadi Diterima Sebagian atau Diterima (lihat PRD Purchase Order).

  6. Bill — Staf membuat tagihan yang merujuk GR ini. Proses penagihan dijelaskan di PRD Bill.

  7. Selesai — Saat Bill dibuat dari GR ini, BE mengubah status GR menjadi Selesai. GR tidak bisa dipilih lagi untuk Bill lain dan tidak bisa dibatalkan.

  8. Dibatalkan — PIC klik Batalkan Penerimaan pada GR Diajukan dan wajib mengisi alasan.

Alternative paths

Jalur alternatif adalah kejadian di luar alur normal di atas, misalnya pengguna berubah pikiran, barang yang datang tidak sesuai, atau data berubah. Setiap jalur ini harus punya perilaku yang jelas agar FE dan BE tidak menebak:

  • Perubahan setelah Diajukan — tidak bisa. Batalkan (selama belum dibuat Bill) lalu buat GR baru.
  • GR belum punya PIC — tombol Ajukan nonaktif untuk semua pengguna. Tetapkan PIC dulu lewat Edit Draf atau aksi tetapkan PIC di daftar.
  • Pengguna bukan PIC — tombol Ajukan dan Batalkan tampil tetapi nonaktif.
  • Barang datang tanpa PO — nonaktifkan switch Buat dari Pesanan Pembelian, lalu pilih supplier secara manual.
  • Barang rusak atau tidak sesuai — isi qty ditolak; hanya qty diterima yang menambah stok dan ditagihkan di Bill.
  • GR Draf tidak jadi dipakai — hapus (satuan atau massal). Draf tidak dibatalkan, tetapi dihapus.
  • Toko tidak aktif — GR hanya bisa dilihat dan dicetak; semua aksi ubah disembunyikan.

6. User Stories

Prioritas: P0 wajib untuk rilis, P1 penting, P2 kalau sempat.

US-01 — Membuat GR dari PO (P0)

Sebagai staf gudang, saya ingin membuat penerimaan barang dari PO, agar barang yang datang langsung dicocokkan dengan pesanan.

IDKriteria penerimaan
AC-01.1Saat pengguna dengan izin create membuka Tambah Baru di toko aktif, wizard Umum → Produk → Tinjauan tampil dengan toko aktif terisi (read-only), tanggal & waktu penerimaan saat ini, dan penanggung jawab berisi pengguna yang login (jika terdaftar sebagai karyawan).
AC-01.2Alamat penerimaan terisi otomatis dengan alamat pengiriman default toko; jika tidak ada, alamat pertama toko.
AC-01.3Switch Buat dari Pesanan Pembelian aktif secara default. Pilihan PO hanya berisi PO toko aktif berstatus Diajukan, Diterima Sebagian, atau Diterima, dengan label nomor PO dan keterangan tanggal pesanan.
AC-01.4Saat PO dipilih, supplier terisi otomatis dari PO (read-only) dan tanggal estimasi diterima tampil dari PO.
AC-01.5Saat PO dipilih dan daftar produk masih kosong, daftar produk terisi otomatis dari semua baris PO: produk dan kemasan, qty pesan, qty dikirim sama dengan qty pesan, dan qty ditolak 0. Baris yang sudah ada tidak ditimpa.
AC-01.6Saat switch diubah, pilihan PO dan supplier dikosongkan.
AC-01.7Saat Selanjutnya diklik dan field wajib di langkah itu kosong, pengguna tidak bisa pindah langkah dan error tampil di field terkait.
AC-01.8Saat Simpan berhasil, GR tersimpan berstatus Draf, toast sukses tampil, dan pengguna diarahkan ke daftar GR.
AC-01.9Saat BE menolak penyimpanan, pesan error tampil di langkah Tinjauan dan pada field terkait.
AC-01.10Saat pengguna meninggalkan wizard dengan isian yang belum disimpan, muncul konfirmasi perubahan belum disimpan.

US-02 — Membuat GR tanpa PO (P0)

Sebagai staf gudang, saya ingin mencatat barang yang datang tanpa PO, agar semua barang masuk tetap tercatat.

IDKriteria penerimaan
AC-02.1Saat switch Buat dari Pesanan Pembelian dinonaktifkan, pilihan PO nonaktif dan supplier wajib dipilih dari master Supplier. Supplier nonaktif tampil tetapi tidak bisa dipilih.
AC-02.2Produk ditambahkan manual lewat dialog; baris tidak tertaut ke PO dan qty pesan kosong.
AC-02.3Tanggal estimasi diterima menampilkan tanggal hari ini sebagai informasi (tidak disimpan).

US-03 — Mencatat qty per produk (P0)

Sebagai staf gudang, saya ingin mencatat qty dikirim dan qty ditolak per produk, agar hanya barang yang layak yang dianggap diterima.

IDKriteria penerimaan
AC-03.1Dialog produk menyediakan pencarian berdasarkan nama atau barcode (pilihan mode pencarian). Setiap kemasan produk tampil sebagai pilihan terpisah dengan label [UoM] nama produk dan keterangan [SKU] Barcode: .... Produk nonaktif tampil tetapi tidak bisa dipilih.
AC-03.2Saat produk dipilih, UoM terisi dari kemasan terpilih. Jika produk tersebut ada di PO yang dipilih, baris ditautkan ke baris PO dan qty pesan tampil (read-only).
AC-03.3Qty dikirim wajib diisi, minimal 0,01, dengan default 1. Qty ditolak minimal 0, dengan default 0.
AC-03.4Qty diterima dihitung otomatis sebagai qty dikirim dikurangi qty ditolak, tidak pernah negatif, dan read-only.
AC-03.5Tombol simpan pada dialog nonaktif sampai ada perubahan isian.

US-04 — Mengubah GR Draf (P0)

Sebagai staf gudang, saya ingin mengubah GR yang masih Draf, agar kesalahan bisa diperbaiki sebelum diajukan.

IDKriteria penerimaan
AC-04.1Tombol Ubah Data hanya tampil pada GR Draf untuk pengguna dengan izin update di toko aktif.
AC-04.2Tab Umum disimpan sekaligus: alamat penerimaan, sumber penerimaan dan PO, tanggal & waktu penerimaan, penanggung jawab, penanggung jawab pengirim, nomor polisi kendaraan, bukti penerimaan, dan catatan. Toko dan supplier tampil read-only.
AC-04.3Saat switch Buat dari Pesanan Pembelian dinonaktifkan dan disimpan, tautan GR ke PO dilepas.
AC-04.4Baris di tab Produk ditambah, diubah, dan dihapus satu per satu, dan langsung tersimpan.
AC-04.5Saat URL edit dibuka pada GR yang bukan Draf, halaman kembali ke tampilan detail read-only.
AC-04.6Tab yang sedang dibuka tetap sama saat berpindah dari detail ke edit.

US-05 — Menetapkan penanggung jawab (P0)

Sebagai kepala toko, saya ingin menetapkan PIC pada GR, agar jelas siapa yang berwenang mengajukan dan membatalkan GR.

IDKriteria penerimaan
AC-05.1PIC bisa dipilih lebih dari satu dari daftar karyawan toko, saat membuat GR, saat mengubah Draf, atau lewat tombol tambah di kolom Penanggung Jawab pada daftar.
AC-05.2Tombol tambah PIC di daftar hanya tampil pada GR Draf untuk pengguna dengan izin assign di toko aktif. Dialog tetapkan PIC mewajibkan minimal satu karyawan.

US-06 — Mengajukan GR (P0)

Sebagai PIC, saya ingin mengajukan GR, agar penerimaan barang berlaku, stok bertambah, dan status PO diperbarui.

IDKriteria penerimaan
AC-06.1Tombol Ajukan Penerimaan tampil pada GR Draf untuk pengguna dengan izin submit, dan hanya aktif jika pengguna adalah PIC GR tersebut.
AC-06.2Setelah konfirmasi, status menjadi Diajukan, serta tercatat siapa dan kapan mengajukan.
AC-06.3Jika GR merujuk PO, status PO diperbarui otomatis sesuai BR-10.
AC-06.4Pada GR Diajukan, tombol Ubah Data dan aksi baris tidak tampil.

US-07 — Membatalkan GR (P0)

Sebagai PIC, saya ingin membatalkan GR yang salah catat, agar penerimaan tersebut tidak dihitung.

IDKriteria penerimaan
AC-07.1Tombol Batalkan Penerimaan tampil pada GR Diajukan untuk pengguna dengan izin cancel, dan hanya aktif jika pengguna adalah PIC.
AC-07.2Dialog pembatalan mewajibkan alasan; tombol konfirmasi nonaktif selama alasan kosong.
AC-07.3Setelah dibatalkan, status menjadi Dibatalkan; alasan, siapa, dan kapan tersimpan. Stepper status menampilkan jalur Draf → Diajukan → Dibatalkan.

US-08 — Daftar dan pencarian GR (P0)

Sebagai owner, saya ingin melihat dan menyaring GR, agar cepat menemukan penerimaan barang tertentu.

IDKriteria penerimaan
AC-08.1Default menampilkan GR toko aktif; filter lanjutan: toko, rentang tanggal penerimaan, supplier, dan status; pencarian dengan kata kunci.
AC-08.2Kolom: nomor penerimaan, toko, nomor PO, tanggal pesanan, tanggal & waktu penerimaan, penanggung jawab, supplier, dibuat oleh, dan status.
AC-08.3Urutan default tanggal & waktu penerimaan terbaru di atas, dengan paginasi. Kolom yang bisa diurutkan: nomor penerimaan dan tanggal & waktu penerimaan.
AC-08.4Baris bisa diperluas untuk melihat daftar produk GR tanpa membuka detail.
AC-08.5Aksi baris: Cetak, Lihat, Ubah (hanya Draf), Hapus (hanya Draf), sesuai izin.

US-09 — Menghapus GR Draf (P0)

Sebagai staf gudang, saya ingin menghapus Draf yang tidak jadi dipakai, agar daftar tetap bersih.

IDKriteria penerimaan
AC-09.1Aksi Hapus hanya tersedia pada GR Draf untuk pengguna dengan izin delete di toko aktif, setelah konfirmasi.
AC-09.2Hapus massal tersedia dari baris yang dipilih di daftar.

US-10 — Mencetak GR (P1)

Sebagai staf gudang, saya ingin mencetak GR sebagai PDF, agar bisa ditandatangani sebagai bukti serah terima barang.

IDKriteria penerimaan
AC-10.1Pratinjau PDF tersedia dari wizard buat GR, halaman detail/edit, dan aksi Cetak di daftar, pada status apa pun.
AC-10.2Saat mengedit Draf, pratinjau PDF memakai isian tab Umum terbaru yang belum disimpan.
AC-10.3Sebelum GR disimpan, nomor GR di PDF tampil kosong (”-”).
AC-10.4PDF GR berstatus Draf dan Dibatalkan diberi watermark status.
AC-10.5PDF memuat kolom tanda tangan penanggung jawab (PIC pertama).

US-11 — Riwayat aktivitas (P1)

Sebagai owner, saya ingin melihat log aktivitas GR, agar tahu siapa mengubah apa dan kapan.

IDKriteria penerimaan
AC-11.1Log aktivitas tersedia per GR (di detail) dan untuk seluruh GR (di daftar).

7. Document Structure

Header

FieldRequiredDefaultNotes
Nomor GROtomatisDibuat BEKosong di pratinjau sebelum disimpan
TokoYaToko aktifRead-only; tidak bisa diubah setelah dibuat
Alamat penerimaanYaAlamat pengiriman default tokoDari alamat toko
Sumber penerimaanYaDari POSwitch di UI, tidak disimpan; menentukan PO atau supplier yang wajib diisi
Pesanan pembelian (PO)Wajib jika dari POPO toko aktif berstatus Diajukan, Diterima Sebagian, atau Diterima (BR-04)
SupplierWajib jika tanpa POSupplier POTidak bisa diubah setelah dibuat (BR-06)
Tanggal estimasi diterimaDari PO, atau hari iniInformasi saja, tidak disimpan
Tanggal & waktu penerimaanYaSaat ini
Penanggung jawab (PIC)TidakPengguna yang loginMulti-pilih dari karyawan toko; wajib sebelum Ajukan (BR-02)
Penanggung jawab pengirimTidakNama sopir atau kurir supplier
Nomor polisi kendaraan pengirimTidak
Bukti penerimaanTidakGambar atau dokumen, bisa lebih dari satu (mis. foto surat jalan)
CatatanTidakTampil di PDF
StatusOtomatisDrafLihat bagian 8

Lines

FieldRequiredDefaultNotes
UrutanOtomatisUrutan ditambahkan
Produk + kemasanYaDari baris PO (jika dari PO)Dari inventaris produk toko; satu pilihan per kemasan; cari nama atau barcode
Baris POOtomatisBaris PO dengan produk yang samaKosong jika tanpa PO atau produk tidak ada di PO (BR-08)
UoMOtomatisUoM kemasan terpilih
Qty pesanOtomatisQty baris PORead-only; kosong jika tidak tertaut PO
Qty dikirimYaQty pesan (dari PO), atau 1Minimal 0,01
Qty ditolakTidak0Minimal 0
Qty diterimaOtomatisQty dikirim − qty ditolak, minimal 0 (BR-07)

Totals: GR tidak memuat harga; nilai uang dicatat di Bill. Jejak yang disimpan: dibuat / diajukan / dibatalkan (dengan alasan) oleh siapa dan kapan, serta Bill yang merujuk GR ini.

8. Status Lifecycle

StatusLabel UIMeaningEditableNext status
draftDrafSedang disusun, belum berlaku; stok belum berubahSemua field dan baris, kecuali toko dan supplierDiajukan, atau dihapus
submittedDiajukanBerlaku; stok bertambah dan bisa dirujuk BillTidakSelesai, Dibatalkan
closedSelesaiSudah dirujuk BillTidak
cancelledDibatalkanDibatalkan sebelum dirujuk BillTidak

9. Permissions & Actions

Permissions

Akses berbasis permission (bukan role tetap). Semua aksi ubah juga mensyaratkan toko aktif; pada toko tidak aktif, GR hanya bisa dilihat dan dicetak.

ActionPermissionSyarat tambahan
Lihat daftarpurchase:goods-receipt:list:any atau :list:store
Lihat detailpurchase:goods-receipt:view:any atau :view:store
Buat GRpurchase:goods-receipt:create:storeToko aktif
Ubah Draf / tambah barispurchase:goods-receipt:update:store (+ create:store untuk tambah baris)Toko aktif
Hapus Draf / hapus barispurchase:goods-receipt:delete:storeToko aktif
Tetapkan PIC (dari daftar)purchase:goods-receipt:assign:storeToko aktif
Ajukanpurchase:goods-receipt:submit:storeToko aktif, pengguna adalah PIC
Batalkanpurchase:goods-receipt:cancel:storeToko aktif, pengguna adalah PIC

FE menyembunyikan aksi yang tidak diizinkan dan menonaktifkan aksi jika pengguna bukan PIC; BE tetap menolaknya. Keduanya harus konsisten.

Actions by status (✓ tersedia)

ActionDrafDiajukanSelesaiDibatalkan
Ubah header dan baris
Tetapkan PIC
Hapus
Ajukan
Batalkan
Dirujuk Bill
Cetak / pratinjau PDF
Lihat log aktivitas

10. Business Rules

Aturan bisnis adalah ketentuan yang berlaku di semua layar dan semua aksi pada GR, siapa pun yang melakukannya. FE memakainya sebagai validasi di form, BE memakainya sebagai sumber kebenaran; jika keduanya berbeda, perilaku BE yang dianggap benar dan FE menyesuaikan.

  • BR-01 GR milik satu toko dan dibuat pada toko aktif pengguna. Aksi ubah hanya bisa dilakukan saat toko aktif.
  • BR-02 Ajukan dan Batalkan hanya boleh dilakukan oleh karyawan yang ditetapkan sebagai PIC GR tersebut, dan memiliki permission aksi terkait. Pembuat GR saja tidak cukup.
  • BR-03 Hanya GR Draf yang bisa diubah, ditetapkan PIC-nya, dan dihapus. Setelah Diajukan, isi GR terkunci permanen.
  • BR-04 GR dari PO hanya bisa merujuk PO toko yang sama dengan status Diajukan, Diterima Sebagian, atau Diterima. Toko dan supplier GR mengikuti PO, sehingga store_id dan supplier_id tidak dikirim FE.
  • BR-05 GR tanpa PO wajib memilih supplier yang aktif.
  • BR-06 Toko dan supplier tidak bisa diubah setelah GR dibuat. Tautan ke PO masih bisa diganti atau dilepas selama Draf.
  • BR-07 Qty dikirim minimal 0,01 dan qty ditolak minimal 0. Qty diterima = qty dikirim − qty ditolak, dan tidak pernah negatif.
  • BR-08 Baris yang produknya ada di PO ditautkan ke baris PO tersebut, dan qty pesan diambil dari baris PO. Produk yang tidak ada di PO tetap boleh ditambahkan tanpa tautan.
  • BR-09 Stok toko bertambah saat GR diajukan, sebesar qty diterima. GR Draf tidak mengubah stok.
  • BR-10 Saat GR yang merujuk PO diajukan, BE memperbarui status PO berdasarkan akumulasi qty diterima dari semua GR yang diajukan: sebagian terpenuhi menjadi Diterima Sebagian, seluruh baris terpenuhi menjadi Diterima.
  • BR-11 Qty dikirim tidak dibatasi oleh qty pesan atau sisa qty. Kelebihan penerimaan diizinkan dan terlihat di modul Item Pembelian; belum ada batas toleransi.
  • BR-12 Batalkan hanya dari status Diajukan dan wajib menyertakan alasan. GR yang sudah Selesai tidak bisa dibatalkan.
  • BR-13 Hanya GR berstatus Diajukan yang bisa dipilih di Bill. Satu GR hanya bisa dirujuk oleh satu Bill, dan statusnya menjadi Selesai saat Bill dibuat.
  • BR-14 Semua perubahan dan transisi status dicatat di log aktivitas: aksi, pengguna, dan waktu.

11. Edge Cases

Edge case adalah kondisi yang jarang terjadi tetapi pasti muncul di operasional nyata, biasanya karena data berubah setelah GR dibuat atau karena dua hal terjadi bersamaan. Perilaku yang diharapkan ditetapkan di sini agar tidak diputuskan sendiri-sendiri saat implementasi. Baris bertanda Perlu konfirmasi BE belum terlihat perilakunya dari FE dan perlu disepakati.

IDCaseExpected behavior
EC-01GR Draf belum punya PICTombol Ajukan nonaktif untuk semua pengguna sampai PIC ditetapkan
EC-02Pengguna bukan PIC membuka GRTombol Ajukan dan Batalkan tampil tetapi nonaktif
EC-03URL edit dibuka pada GR non-DrafTampil read-only dan diarahkan ke halaman detail
EC-04Toko aktif berstatus tidak aktifHalaman tambah/ubah menampilkan halaman toko tidak aktif; di daftar dan detail semua aksi ubah disembunyikan
EC-05Pengguna tidak ditugaskan ke toko mana punHalaman GR menampilkan halaman toko belum ditetapkan
EC-06GR kedua untuk PO Diterima SebagianDaftar produk terisi dengan qty dikirim sebesar qty pesan penuh, bukan sisa qty; staf menyesuaikan sesuai barang yang datang. Sisa qty per baris bisa dilihat di modul Item Pembelian
EC-07Barang diterima melebihi qty pesanDiizinkan (BR-11); baris PO ditandai over-received di modul Item Pembelian
EC-08Qty ditolak lebih besar dari qty dikirimFE menampilkan qty diterima 0. Perlu konfirmasi BE: data seperti ini sebaiknya ditolak
EC-09Produk yang tidak ada di PO ditambahkan ke GR dari PODiizinkan; baris tidak tertaut ke PO dan qty pesan kosong
EC-10Produk yang sama dengan kemasan berbedaTiap kemasan adalah baris terpisah. Tautan ke baris PO dicocokkan berdasarkan produk, sehingga kemasan lain dari produk yang sama ikut tertaut ke baris PO pertama dengan produk tersebut
EC-11Switch sumber penerimaan diubah saat membuat GRPO dan supplier dikosongkan; baris produk yang sudah ada tidak ikut dihapus
EC-12Tautan PO diganti saat mengubah DrafBaris produk yang sudah ada tidak ikut diganti. Baris baru yang ditambahkan dari tab Produk tidak otomatis ditautkan ke baris PO; staf perlu memeriksa ulang daftar produk
EC-13GR disimpan sebagai Draf tanpa baris produkDiizinkan saat simpan Draf. Perlu konfirmasi BE: Ajukan sebaiknya ditolak jika GR belum punya baris
EC-14GR Diajukan dibatalkanPerlu konfirmasi BE: penambahan stok dibalik dan status PO dihitung ulang tanpa GR ini
EC-15Bill Draf yang merujuk GR dihapusPerlu konfirmasi BE: GR kembali berstatus Diajukan agar bisa ditagihkan lagi

12. API Contract

Daftar endpoint per aksi. Detail request dan response ada di Postman (lihat metadata API).

ActionMethodEndpointRef
Daftar GR (filter, cari, paginasi)GET/api/goods-receipts/paginateUS-08
Daftar GR ringkas (cursor)GET/api/goods-receipts/cursor
Daftar GR per toko (untuk Bill)GET/api/stores/:id/goods-receipts/cursorBR-13
Detail GRGET/api/goods-receipts/:idUS-04
Buat GR (header + baris)POST/api/goods-receiptsUS-01, US-02
Ubah header GR DrafPUT/api/goods-receipts/:idUS-04
Hapus GR DrafDELETE/api/goods-receipts/:idUS-09
Hapus GR Draf massalDELETE/api/goods-receipts/bulkUS-09
Daftar baris GRGET/api/goods-receipts/:id/itemsUS-04
Detail baris GRGET/api/goods-receipts/:id/items/:item_idUS-04
Tambah barisPOST/api/goods-receipts/:id/itemsUS-04
Ubah barisPUT/api/goods-receipts/:id/items/:item_idUS-04
Hapus barisDELETE/api/goods-receipts/:id/items/:item_idUS-04
Tetapkan PICPATCH/api/goods-receipts/:id/assignUS-05
AjukanPATCH/api/goods-receipts/:id/submitUS-06
BatalkanPATCH/api/goods-receipts/:id/cancelUS-07
Log aktivitas semua GRGET/api/goods-receipts/activity-logs/cursorUS-11
Log aktivitas satu GRGET/api/goods-receipts/:id/activity-logs/cursorUS-11

Lookup yang dipakai form GR

ActionMethodEndpointRef
Alamat toko (alamat penerimaan)GET/api/stores/:id/addressesAC-01.2
PO per toko (filter status)GET/api/stores/:id/purchase-orders/cursorAC-01.3
Supplier (tanpa PO)GET/api/suppliers/cursorAC-02.1
Karyawan toko (PIC)GET/api/stores/:id/employees/cursorUS-05
Inventaris produk toko (cari nama / barcode)GET/api/stores/:id/product-inventories/cursorAC-03.1

13. Dependencies

PRD terkait

  • Purchase Order — PO yang dirujuk GR; status PO berubah saat GR diajukan (BR-10).
  • Bill — tagihan yang dibuat dari GR Diajukan; GR menjadi Selesai saat dirujuk (BR-13).
  • Item Pembelian (Purchase Order Lines) — qty dipesan, diterima, sisa, dan over-received per baris PO (EC-06, EC-07).

Master data

  • Toko — toko aktif, status aktif, alamat, dan karyawan (PIC).
  • Supplier — supplier untuk GR tanpa PO, beserta status aktifnya.
  • Produk & Inventaris Produk — kemasan/UoM, barcode, dan status aktif per toko.

Efek ke modul lain

  • Inventory — stok toko bertambah sebesar qty diterima saat GR diajukan (BR-09).
  • Purchase Order — status Diterima Sebagian / Diterima ditetapkan dari GR yang diajukan (BR-10).
  • Bill — hanya GR Diajukan yang muncul sebagai pilihan di form Bill (BR-13).
  • Setiap perubahan tercatat di log aktivitas (BR-14).
Last updated on