document.addEventListener('DOMContentLoaded', function () { const input = document.getElementById('searchTransaksi'); const rows = document.querySelectorAll('table tbody tr'); input.addEventListener('input', function () { const keyword = this.value.toLowerCase(); rows.forEach(row => { const kodeTransaksi = row.cells[2].textContent.toLowerCase(); const kodeBarang = row.cells[3].textContent.toLowerCase(); const mitra = row.cells[4].textContent.toLowerCase(); const namaBarang = row.cells[5].textContent.toLowerCase(); const isMatch = [kodeTransaksi, kodeBarang, mitra, namaBarang].some(text => text.includes(keyword)); row.style.display = isMatch ? '' : 'none'; }); }); const form = document.getElementById('formFilterTanggal'); const tanggalMulai = document.getElementById('tanggalMulai'); const tanggalAkhir = document.getElementById('tanggalAkhir'); // Saat tanggal akhir berubah, kirim form otomatis tanggalAkhir.addEventListener('change', function () { if (tanggalMulai.value && tanggalAkhir.value) { form.submit(); } }); }); $(document).ready(function () { $('#searchTransaksi').on('input', function () { $('#exportSearchQuery').val($(this).val()); }); }); // Data dari backend (harus disediakan dari Blade) const barangsData = window.barangsData || {}; const suppliersData = window.suppliersData || {}; function konversiSatuanKeKg(satuan, qtyHistori) { switch (satuan) { case 'ton': return qtyHistori * 1000; case 'kg': return qtyHistori; case 'g': return qtyHistori / 1000; default: return qtyHistori; } } // --------------- CREATE MODAL --------------- const kategoriSelect = document.getElementById('kategori'); const barangSelect = document.getElementById('barang_id'); const supplierSelect = document.getElementById('supplier_id'); const qtyInput = document.getElementById('qtyHistori'); const satuanSelect = document.getElementById('satuan'); const jumlahRpInput = document.getElementById('jumlahRp'); function fillBarangOptions(kategori) { const tipe = kategori === 'pengeluaran' ? 'pendukung' : 'produk'; barangSelect.innerHTML = ''; if (barangsData[tipe]) { barangsData[tipe].forEach(barang => { const option = document.createElement('option'); option.value = barang.id; option.textContent = barang.nama; option.dataset.harga = barang.harga; barangSelect.appendChild(option); }); } jumlahRpInput.value = ''; } function fillSupplierOptions(kategori) { supplierSelect.innerHTML = ''; const tipe = kategori === 'pengeluaran' ? 'konsumen' : 'pemasok'; suppliersData[tipe]?.forEach(supplier => { const option = document.createElement('option'); option.value = supplier.id; option.textContent = supplier.nama; supplierSelect.appendChild(option); }); } function hitungJumlahRpCreate() { const hargaBarang = parseFloat(barangSelect.selectedOptions[0]?.dataset.harga || 0); const qty = parseFloat(qtyInput.value || 0); const satuan = satuanSelect.value; const qtyKg = konversiSatuanKeKg(satuan, qty); // Kardus const kardusSelect = document.getElementById('jenis_kardus'); const jumlahKardusInput = document.getElementById('jumlah_kardus'); const hargaKardus = parseFloat(kardusSelect?.selectedOptions[0]?.dataset.harga || 0); const jumlahKardus = parseFloat(jumlahKardusInput?.value || 0); const totalBarang = hargaBarang * qtyKg; const totalKardus = hargaKardus * jumlahKardus; jumlahRpInput.value = (totalBarang + totalKardus).toFixed(0); } if (kategoriSelect) { kategoriSelect.addEventListener('change', () => { fillBarangOptions(kategoriSelect.value); fillSupplierOptions(kategoriSelect.value); toggleInputKardus(kategoriSelect.value); }); barangSelect.addEventListener('change', hitungJumlahRpCreate); qtyInput.addEventListener('input', hitungJumlahRpCreate); satuanSelect.addEventListener('change', hitungJumlahRpCreate); document.getElementById('jenis_kardus')?.addEventListener('change', hitungJumlahRpCreate); document.getElementById('jumlah_kardus')?.addEventListener('input', hitungJumlahRpCreate); $('#createModal').on('show.bs.modal', () => { kategoriSelect.value = ''; barangSelect.innerHTML = ''; supplierSelect.innerHTML = ''; qtyInput.value = ''; satuanSelect.value = ''; jumlahRpInput.value = ''; }); } // --------------- EDIT MODAL --------------- const kategoriEdit = document.getElementById('editKategori'); const barangEdit = document.getElementById('editBarang'); const supplierEdit = document.getElementById('editSupplier'); const qtyInputEdit = document.getElementById('editQty'); const satuanEdit = document.getElementById('editSatuan'); const jumlahRpInputEdit = document.getElementById('editJumlahRp'); // Tambahkan listener agar saat kategori diubah saat edit, barang & supplier di-reload kategoriEdit?.addEventListener('change', function () { fillBarangOptionsEdit(this.value, barangEdit.value); fillSupplierOptionsEdit(this.value, supplierEdit.value); toggleInputKardusEdit(this.value); hitungJumlahRpEdit(); }); function fillBarangOptionsEdit(kategori, selectedId) { const tipe = kategori === 'pengeluaran' ? 'pendukung' : 'produk'; barangEdit.innerHTML = ''; if (barangsData[tipe]) { barangsData[tipe].forEach(barang => { const option = document.createElement('option'); option.value = barang.id; option.textContent = barang.nama; option.dataset.harga = barang.harga; if (barang.id == selectedId) option.selected = true; barangEdit.appendChild(option); }); } } function fillSupplierOptionsEdit(kategori, selectedId) { supplierEdit.innerHTML = ''; const tipe = kategori === 'pengeluaran' ? 'konsumen' : 'pemasok'; suppliersData[tipe]?.forEach(supplier => { const option = document.createElement('option'); option.value = supplier.id; option.textContent = supplier.nama; if (supplier.id == selectedId) option.selected = true; supplierEdit.appendChild(option); }); } function hitungJumlahRpEdit() { const hargaBarang = parseFloat(barangEdit.selectedOptions[0]?.dataset.harga || 0); const qty = parseFloat(qtyInputEdit.value || 0); const satuan = satuanEdit.value; const qtyKg = konversiSatuanKeKg(satuan, qty); // Kardus const kardusSelect = document.getElementById('edit_jenis_kardus'); const jumlahKardusInput = document.getElementById('edit_jumlah_kardus'); const hargaKardus = parseFloat(kardusSelect?.selectedOptions[0]?.dataset.harga || 0); const jumlahKardus = parseFloat(jumlahKardusInput?.value || 0); const totalBarang = hargaBarang * qtyKg; const totalKardus = hargaKardus * jumlahKardus; jumlahRpInputEdit.value = (totalBarang + totalKardus).toFixed(0); } function toggleInputKardus(kategori) { const showKardus = kategori === 'pemasukan'; const jenisKardusGroup = document.getElementById('group_jenis_kardus'); const jumlahKardusGroup = document.getElementById('group_jumlah_kardus'); jenisKardusGroup.style.display = showKardus ? 'block' : 'none'; jumlahKardusGroup.style.display = showKardus ? 'block' : 'none'; if (!showKardus) { document.getElementById('jenis_kardus').value = ''; document.getElementById('jumlah_kardus').value = ''; } } toggleInputKardus(''); // pastikan disembunyikan saat awal function toggleInputKardusEdit(kategori) { const show = kategori === 'pemasukan'; document.getElementById('edit_group_jenis_kardus').style.display = show ? 'block' : 'none'; document.getElementById('edit_group_jumlah_kardus').style.display = show ? 'block' : 'none'; if (!show) { document.getElementById('edit_jenis_kardus').value = ''; document.getElementById('edit_jumlah_kardus').value = ''; toggleInputKardusEdit(data.kategori); } } // toggleInputKardusEdit(''); // pastikan disembunyikan saat awal $('.btn-edit').on('click', function () { const data = this.dataset; fillBarangOptionsEdit(data.kategori, data.barang_id); fillSupplierOptionsEdit(data.kategori, data.supplier_id); kategoriEdit.value = data.kategori; qtyInputEdit.value = data.qty; satuanEdit.value = data.satuan; jumlahRpInputEdit.value = data.jumlahrp; document.getElementById('editWaktu').value = data.waktu; document.getElementById('formEdit').action = `/operator/transaksi/${data.id}`; // 🔧 Tunggu sampai opsi selesai dimuat setTimeout(() => { document.getElementById('edit_jenis_kardus').value = data.jenis_kardus_id || ''; document.getElementById('edit_jumlah_kardus').value = data.jumlah_kardus || ''; toggleInputKardusEdit(data.kategori); }, 50); // bisa 0–100ms, tergantung kompleksitas // Debug opsional console.log("Jenis Kardus ID:", data.jenis_kardus_id); console.log("Jumlah Kardus:", data.jumlah_kardus); console.log('Kategori:', kategori); console.log('Barang ID:', editBarang); console.log('BarangsData:', barangsData); console.log('Suppliers:', suppliersData); console.log('Selected Barang:', barangEdit.value); console.log('Selected Supplier:', supplierEdit.value); console.log('Qty:', qtyInputEdit.value); console.log('Satuan:', satuanEdit.value); console.log('Jumlah Rp:', jumlahRpInputEdit.value); console.log("Barang options:", $('#editBarang').html()); console.log("Supplier options:", $('#editSupplier').html()); console.log("Kategori:", kategoriEdit.value); console.log("Qty Input:", qtyInputEdit.value); console.log("Satuan:", satuanEdit.value); }); barangEdit?.addEventListener('change', hitungJumlahRpEdit); qtyInputEdit?.addEventListener('input', hitungJumlahRpEdit); satuanEdit?.addEventListener('change', hitungJumlahRpEdit);