Halo, Admin Gudang! ๐
Kelola data stok barang, pantau barang masuk dan keluar, serta periksa perputaran valuasi rupiah gudang secara instan.
Rp 0
Modal Fisik di rak gudang saat ini
Rp 0
+0% potensi margin kotor
0 Unit
Tersebar dalam 0 SKU kategori barang
0 Item
Stok berada di bawah batas minimum (Min. Stok)
Analisis Valuasi Rupiah Gudang (10 Terbesar & 10 Terkecil)
Kalkulasi otomatis berdasarkan Stok Fisik ร Nilai HPP (Rupiah) per barang.
| Peringkat | Barang | Kategori | Stok Fisik | HPP Satuan | Harga Jual | Total Valuasi (HPP ร Stok) | Status Stok |
|---|
| Barang | Kategori | Stok Fisik | HPP (Beli) | Harga Jual | Total Nilai HPP | Margin | Aksi (CRUD) |
|---|
Pencatatan Barang Masuk
Tambahkan stok dari supplier/pembelian baru secara otomatis.
Pencatatan Barang Keluar
Kurangi stok saat pengiriman ke customer atau penggunaan internal.
Riwayat Transaksi Mutasi Stok
Log lengkap arus keluar-masuk barang secara kronologis.
| Waktu | Tipe Mutasi | Nama Barang | Jumlah Unit | Harga Satuan | Total Transaksi | Keterangan / Tujuan |
|---|
Panduan Menghubungkan ke XAMPP & Visual Studio Code
Gunakan skrip di bawah ini untuk membuat database MySQL dan file PHP backend di laptop Anda.
Nyalakan XAMPP
Buka XAMPP Control Panel, klik tombol Start pada modul Apache dan MySQL.
Buat Database MySQL
Buka browser, akses localhost/phpmyadmin, buat database baru bernama db_inventory dan import skrip SQL di bawah.
Buka di VS Code
Simpan folder proyek di dalam C:/xampp/htdocs/inventory/ lalu akses di browser via localhost/inventory.
database_inventory.sql
-- 1. Buat Database
CREATE DATABASE IF NOT EXISTS `db_inventory` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `db_inventory`;
-- 2. Tabel Master Barang (Termasuk HPP dan Harga Jual)
CREATE TABLE IF NOT EXISTS `barang` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`kode_barang` VARCHAR(30) NOT NULL UNIQUE,
`nama_barang` VARCHAR(150) NOT NULL,
`kategori` VARCHAR(50) NOT NULL,
`stok` INT NOT NULL DEFAULT 0,
`min_stok` INT NOT NULL DEFAULT 5,
`satuan` VARCHAR(20) NOT NULL DEFAULT 'Pcs',
`hpp` DECIMAL(15,2) NOT NULL DEFAULT 0.00,
`harga_jual` DECIMAL(15,2) NOT NULL DEFAULT 0.00,
`foto_url` TEXT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- 3. Tabel Mutasi Transaksi (Barang Masuk & Keluar)
CREATE TABLE IF NOT EXISTS `mutasi_stok` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`kode_transaksi` VARCHAR(50) NOT NULL,
`barang_id` INT NOT NULL,
`tipe` ENUM('masuk', 'keluar') NOT NULL,
`jumlah` INT NOT NULL,
`harga_satuan` DECIMAL(15,2) NOT NULL,
`total_rupiah` DECIMAL(15,2) NOT NULL,
`keterangan` VARCHAR(255) NULL,
`tanggal` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`barang_id`) REFERENCES `barang`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
-- 4. Sample Data Awal
INSERT INTO `barang` (`kode_barang`, `nama_barang`, `kategori`, `stok`, `min_stok`, `satuan`, `hpp`, `harga_jual`, `foto_url`) VALUES
('BRG-001', 'Laptop Asus Vivobook 14', 'Elektronik', 15, 3, 'Unit', 7200000.00, 8500000.00, 'https://images.unsplash.com/photo-1496181133206-80ce9b88a853?w=150&auto=format&fit=crop&q=80'),
('BRG-002', 'Monitor Samsung 24 Inch IPS', 'Elektronik', 25, 5, 'Unit', 1350000.00, 1690000.00, 'https://images.unsplash.com/photo-1527443224154-c4a3942d3acf?w=150&auto=format&fit=crop&q=80'),
('BRG-003', 'Kertas HVS PaperOne A4 80gr', 'ATK & Kantor', 120, 20, 'Rim', 48000.00, 58000.00, 'https://images.unsplash.com/photo-1586075010923-2dd4570fb338?w=150&auto=format&fit=crop&q=80'),
('BRG-004', 'Kopi Arabika Premium 1Kg', 'FMCG', 40, 10, 'Pack', 110000.00, 145000.00, 'https://images.unsplash.com/photo-1559056199-641a0ac8b55e?w=150&auto=format&fit=crop&q=80');
koneksi.php
<?php
// koneksi.php - Koneksi Database MySQL menggunakan PDO
$host = "localhost";
$user = "root";
$password = "";
$dbname = "db_inventory";
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
} catch (PDOException $e) {
die("Koneksi Database Gagal: " . $e->getMessage());
}
?>