Stok Opname — Branché
Hitung stok per lokasi, cocokkan dengan data sistem, dan unduh hasilnya. Data tersimpan real-time di Supabase.
⚙ Pengaturan sinkronisasi SKU master (Google Sheets)
Belum punya URL-nya? Buka Google Sheet data master SKU kamu → Extensions → Apps Script → tempel kode berikut →
Deploy → New deployment → Web app (Execute as: Me, Who has access: Anyone) → salin URL yang dihasilkan.
Kode ini otomatis ambil semua tab/halaman di file Sheets kamu — masing-masing tab muncul sebagai tab terpisah di halaman "Master SKU" pada dashboard. Tab mana pun yang punya kolom "sku" otomatis ikut dipakai untuk pencarian di Stok Opname & Print Label.
Pastikan tab yang isinya data produk punya kolom yang mengandung kata "sku", kolom nama produk (mis. "SKU", "Nama Produk"), dan opsional kolom "Harga" kalau mau dipakai di Print Label.
Kalau URL Apps Script kamu sudah ada dari sebelumnya, edit ulang kodenya lalu Deploy → Manage deployments → Edit (ikon pensil) → New version, supaya URL-nya tetap sama.
function doGet(e){var ss=SpreadsheetApp.getActiveSpreadsheet();var result={};ss.getSheets().forEach(function(sh){var d=sh.getDataRange().getValues();if(d.length<1){result[sh.getName()]=[];return;}var h=d[0].map(String);var rows=d.slice(1).map(function(r){var o={};h.forEach(function(k,i){o[k]=r[i];});return o;});result[sh.getName()]=rows;});var json=JSON.stringify(result);var cb=e&&e.parameter&&e.parameter.callback;if(cb){return ContentService.createTextOutput(cb+'('+json+')').setMimeType(ContentService.MimeType.JAVASCRIPT);}return ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JSON);}function doPost(e){var body=JSON.parse(e.postData.contents);var ss=SpreadsheetApp.getActiveSpreadsheet();Object.keys(body).forEach(function(sheetName){var sh=ss.getSheetByName(sheetName);if(!sh)sh=ss.insertSheet(sheetName);var rowsData=body[sheetName];sh.clearContents();if(!rowsData.length)return;var headers=Object.keys(rowsData[0]);var out=[headers];rowsData.forEach(function(row){out.push(headers.map(function(h){return row[h]!==undefined?row[h]:'';}));});sh.getRange(1,1,out.length,headers.length).setValues(out);});return ContentService.createTextOutput(JSON.stringify({ok:true})).setMimeType(ContentService.MimeType.JSON);}
Kode ini otomatis ambil semua tab/halaman di file Sheets kamu — masing-masing tab muncul sebagai tab terpisah di halaman "Master SKU" pada dashboard. Tab mana pun yang punya kolom "sku" otomatis ikut dipakai untuk pencarian di Stok Opname & Print Label.
Pastikan tab yang isinya data produk punya kolom yang mengandung kata "sku", kolom nama produk (mis. "SKU", "Nama Produk"), dan opsional kolom "Harga" kalau mau dipakai di Print Label.
Kalau URL Apps Script kamu sudah ada dari sebelumnya, edit ulang kodenya lalu Deploy → Manage deployments → Edit (ikon pensil) → New version, supaya URL-nya tetap sama.
Alternatif: blok semua data master SKU di Google Sheets (termasuk header), copy, lalu tempel di sini:
🏬 Kelola Lokasi Gudang
Scan barang
0
Total unit terhitung
0
SKU unik
-
Lokasi aktif
Hasil hitung stok
| SKU | Produk | Lokasi | Qty | Petugas |
|---|
Cocokkan dengan stok sistem
Unggah file Excel/CSV stok sistem dari sumber manapun (Jubelio, export manual, dll) — kamu bisa pilih sendiri kolom mana yang dipakai.
Tambah Jam Denda Manual
Untuk denda jam yang sedang berjalan/sudah ada sebelumnya, tanpa harus lewat konfirmasi kesalahan per SKU.
Input Penggunaan Jam Denda
Petugas yang punya denda jam input di sini setiap kali jam dendanya sudah dipakai/ditebus.
Rekap Utang Jam
Setiap 1 pcs selisih stok = 8 jam denda, dibagi rata ke petugas yang ditetapkan dari tabel "Cocokkan dengan stok sistem" di atas. Klik nama petugas untuk lihat riwayat penggunaan jamnya.
| Nama Petugas | Total Jam | Terpakai | Sisa | Aksi |
|---|