Catatan Cak Edy

Life and Technology

  • About
  • Kebijakan Privasi
  • Kontak
  • Referensi

sistem-informasi

Memahami Transaksi Barang

01/07/2024

Saya mempunyai transaksi barang. Dengan alasan kemudahan maka barang keluar masuk saya tempatkan pada satu tabel saja yang saya namakan transaksi. Dengan satu tabel saya lebih mudah menjaga integritas data.

Semula saya akan membuat tiga tabel: transaksi_masuk, transaksi_keluar dan stock_opname. Namun setelah saya pikir, tarnsaksi_masuk dan keluar sepertinya lebih mudah dijadikan satu tabel saja. dan setelah saya pikir lebih matang lagi, transaksi_masuk, transaksi_keluar, dan stck_opname lebih baik dijadikan ke dalam satu tabel saja.

Ya, kalau mau berdebat pasti ada plus minusnya, namund alam kasus yang saya tangani, dimana transaksi tidak besar mungkin ini adalah desain terbaik.

Dengan bantuan OpenAI saya dapatkan hasil simulasi sbb:

Saya gunakan kode SQL untuk mysql dibawah 8 agar lebih kompatibel dengan semua versi MySQl. Untuk MySQL versi di bawah 8, Anda tidak dapat menggunakan window functions seperti SUM() OVER(), yang merupakan fitur yang diperkenalkan pada MySQL 8. Namun, Anda dapat mencapai hasil yang sama dengan menggunakan subquery atau join untuk menghitung stok awal dan stok akhir. Berikut adalah pendekatan alternatif menggunakan subquery:

Tentu, berikut adalah panduan untuk membuat tabel transaksi yang meliputi kategori barang masuk, barang keluar, stok opname tambah, dan stok opname kurang, beserta contoh data dan query SQL laporan untuk versi MySQL di bawah 8.

1. Buat Tabel Transaksi

Gunakan perintah berikut untuk membuat tabel transaksi:

CREATE TABLE transaksi (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    Tanggal DATE,
    Kode_Produk VARCHAR(50),
    Nama_Produk VARCHAR(100),
    Kategori INT, -- 1 untuk barang masuk, 2 untuk barang keluar, 3 untuk opname tambah, 4 untuk opname kurang
    Jumlah INT
);

2. Isi Tabel Transaksi dengan Data Dummy

Masukkan data dummy ke dalam tabel transaksi menggunakan perintah INSERT INTO.

-- Barang masuk
INSERT INTO transaksi (Tanggal, Kode_Produk, Nama_Produk, Kategori, Jumlah)
VALUES 
('2024-07-01', 'PROD001', 'Produk A', 1, 100),
('2024-07-02', 'PROD002', 'Produk B', 1, 150),
('2024-07-03', 'PROD001', 'Produk A', 1, 120);

-- Barang keluar
INSERT INTO transaksi (Tanggal, Kode_Produk, Nama_Produk, Kategori, Jumlah)
VALUES 
('2024-07-01', 'PROD001', 'Produk A', 2, 50),
('2024-07-02', 'PROD002', 'Produk B', 2, 70),
('2024-07-03', 'PROD001', 'Produk A', 2, 30);

-- Opname tambah
INSERT INTO transaksi (Tanggal, Kode_Produk, Nama_Produk, Kategori, Jumlah)
VALUES 
('2024-07-01', 'PROD001', 'Produk A', 3, 10),
('2024-07-02', 'PROD002', 'Produk B', 3, 20),
('2024-07-03', 'PROD001', 'Produk A', 3, 15);

-- Opname kurang
INSERT INTO transaksi (Tanggal, Kode_Produk, Nama_Produk, Kategori, Jumlah)
VALUES 
('2024-07-01', 'PROD001', 'Produk A', 4, 5),
('2024-07-02', 'PROD002', 'Produk B', 4, 8),
('2024-07-03', 'PROD001', 'Produk A', 4, 3);

3. Buat Laporan Stok Barang

Gunakan query SQL berikut untuk membuat laporan stok barang:

SELECT
    Tanggal,
    Nama_Produk,
    SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) AS barang_masuk,
    SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) AS barang_keluar,
    SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END) AS opname_tambah,
    SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS opname_kurang,
    SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) 
      - SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END)
      + SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END)
      - SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS stok_akhir
FROM
    transaksi
GROUP BY
    Tanggal, Nama_Produk
ORDER BY
    Tanggal, Nama_Produk;

Penjelasan Query Laporan Stok Barang

  • SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) AS barang_masuk: Menghitung total barang masuk.
  • SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) AS barang_keluar: Menghitung total barang keluar.
  • SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END) AS opname_tambah: Menghitung total opname tambah.
  • SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS opname_kurang: Menghitung total opname kurang.
  • SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) - SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) + SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END) - SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS stok_akhir: Menghitung stok akhir berdasarkan barang masuk, barang keluar, opname tambah, dan opname kurang.

Laporan Harian Stok Barang

Dengan query ini, Anda bisa mendapatkan laporan stok barang yang mencakup barang masuk, barang keluar, opname tambah, opname kurang, dan stok akhir untuk setiap produk pada setiap tanggal.

Untuk mendapatkan laporan harian yang mencakup jumlah barang masuk, jumlah barang keluar, dan sisa barang, Anda bisa menggunakan query SQL berikut. Query ini akan mengelompokkan data berdasarkan tanggal dan menghitung total barang masuk, barang keluar, serta menghitung sisa barang untuk setiap tanggal.

SELECT
    Tanggal,
    SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) AS barang_masuk,
    SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) AS barang_keluar,
    SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) 
      - SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END)
      + SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END)
      - SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS sisa_barang
FROM
    transaksi
GROUP BY
    Tanggal
ORDER BY
    Tanggal;

Penjelasan Query Laporan Harian

  • SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) AS barang_masuk: Menghitung total barang masuk pada setiap tanggal.
  • SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) AS barang_keluar: Menghitung total barang keluar pada setiap tanggal.
  • SUM(CASE WHEN Kategori = 1 THEN Jumlah ELSE 0 END) - SUM(CASE WHEN Kategori = 2 THEN Jumlah ELSE 0 END) + SUM(CASE WHEN Kategori = 3 THEN Jumlah ELSE 0 END) - SUM(CASE WHEN Kategori = 4 THEN Jumlah ELSE 0 END) AS sisa_barang: Menghitung sisa barang berdasarkan total barang masuk, barang keluar, opname tambah, dan opname kurang.

Dengan query ini, Anda bisa mendapatkan laporan harian yang menunjukkan jumlah barang masuk, barang keluar, dan sisa barang untuk setiap tanggal.

Posted in: Database Tagged: sistem-informasi

Donasi. Jika kamu terbantu dengan blog ini dan ingin berdonasi, silahkan berdonasi melalui link ini: Donasi

Kategori

  • Aplikasi (14)
  • Aplikasi Server (8)
  • Catatan (21)
  • Cerita Inspiratif (4)
  • Data Science (26)
  • Database (5)
  • Hardware (2)
  • Internet of Thing (6)
  • JavaScript (2)
  • Management (5)
  • Media (4)
  • Pendidikan (8)
  • PHP (12)
  • Programing (22)
  • Python (14)
  • Scientech (1)
  • Server (11)
  • Teknologi (50)
  • Uncategorized (57)
  • Utility (1)

Tulisan terbaru

  • Tailscale08/05/2025
  • Scrapping Text menggunakan DiDOM di PHP05/05/2025
  • Hardisk Penuh :(26/04/2025
  • Memperbaiki Mouse Bejat 226/04/2025
  • Instalasi VSCode Server Sendiri22/04/2025

cakedy.penamedia.com

  • Stuck
  • Masalah Masing-Masing
  • Kenaikan Emas yang Gila-gilaan
  • Bos Kecil
  • Sekolah vs Realitas

Copyright © 2025 Catatan Cak Edy.

Me WordPress Theme by themehall.com