176 lines
5.7 KiB
SQL
176 lines
5.7 KiB
SQL
-- SPJ Komite MySQL Database Schema
|
|
-- Database: db_spjkomite
|
|
|
|
-- Tabel untuk kode kegiatan
|
|
CREATE TABLE IF NOT EXISTS kode_kegiatan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
kode VARCHAR(100) NOT NULL UNIQUE,
|
|
uraian TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Tabel untuk pengaturan/manajemen
|
|
CREATE TABLE IF NOT EXISTS pengaturan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama_ketua_komite VARCHAR(255),
|
|
bendahara VARCHAR(255),
|
|
nama_tim_teknis_a VARCHAR(255),
|
|
jabatan_tim_teknis_a VARCHAR(255),
|
|
nama_tim_teknis_b VARCHAR(255),
|
|
jabatan_tim_teknis_b VARCHAR(255),
|
|
nama_tim_teknis_c VARCHAR(255),
|
|
jabatan_tim_teknis_c VARCHAR(255),
|
|
tahun_anggaran VARCHAR(10),
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Tabel untuk RKS (Rencana Kerja dan Syarat)
|
|
CREATE TABLE IF NOT EXISTS rks (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
pekerjaan TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Counter untuk nomor dokumen
|
|
CREATE TABLE IF NOT EXISTS nomor_counter (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tahun_anggaran VARCHAR(10) NOT NULL,
|
|
counter INT DEFAULT 0,
|
|
UNIQUE KEY unique_year (tahun_anggaran)
|
|
);
|
|
|
|
-- Tabel untuk pesanan (surat pesanan)
|
|
CREATE TABLE IF NOT EXISTS pesanan (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tanggal_pesanan DATE NOT NULL,
|
|
nomor_pesanan VARCHAR(255) NOT NULL,
|
|
penyedia VARCHAR(255) NOT NULL,
|
|
nama_jenis_barang VARCHAR(255) NOT NULL,
|
|
spesifikasi_teknis VARCHAR(500),
|
|
volume DECIMAL(10,2) NOT NULL,
|
|
satuan VARCHAR(50) NOT NULL,
|
|
keterangan TEXT,
|
|
waktu_pengerjaan INT NOT NULL,
|
|
batas_tanggal_pengerjaan DATE NOT NULL,
|
|
penerima_pesanan VARCHAR(255),
|
|
yang_memesan VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_pesanan (nomor_pesanan)
|
|
);
|
|
|
|
-- Tabel untuk BAP (Berita Acara Pemeriksaan)
|
|
CREATE TABLE IF NOT EXISTS bap (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_bap VARCHAR(255) NOT NULL UNIQUE,
|
|
pekerjaan TEXT NOT NULL,
|
|
tanggal_pemeriksaan DATE NOT NULL,
|
|
nama_tim_teknis_a VARCHAR(255),
|
|
nama_tim_teknis_b VARCHAR(255),
|
|
nama_tim_teknis_c VARCHAR(255),
|
|
jabatan_tim_teknis_a VARCHAR(255),
|
|
jabatan_tim_teknis_b VARCHAR(255),
|
|
jabatan_tim_teknis_c VARCHAR(255),
|
|
tujuan TEXT,
|
|
alamat_penyedia TEXT,
|
|
ketua_komite VARCHAR(255),
|
|
nomor_pesanan VARCHAR(255),
|
|
kode_kegiatan VARCHAR(100),
|
|
kode_sub_kegiatan VARCHAR(100),
|
|
kode_rekening VARCHAR(100),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_bap (nomor_bap),
|
|
INDEX idx_nomor_pesanan (nomor_pesanan)
|
|
);
|
|
|
|
-- Tabel untuk BAST (Berita Acara Serah Terima)
|
|
CREATE TABLE IF NOT EXISTS bast (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_bast VARCHAR(255) NOT NULL UNIQUE,
|
|
tanggal_bast DATE NOT NULL,
|
|
nomor_bap VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_bast (nomor_bast),
|
|
INDEX idx_nomor_bap (nomor_bap)
|
|
);
|
|
|
|
-- Tabel untuk Nota
|
|
CREATE TABLE IF NOT EXISTS nota (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor INT NOT NULL,
|
|
volume DECIMAL(10,2) NOT NULL,
|
|
satuan VARCHAR(50) NOT NULL,
|
|
nama_barang VARCHAR(255) NOT NULL,
|
|
harga_satuan DECIMAL(15,2) NOT NULL,
|
|
jumlah DECIMAL(15,2) NOT NULL,
|
|
nomor_bap VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_bap (nomor_bap)
|
|
);
|
|
|
|
-- Tabel untuk Foto Dokumentasi
|
|
CREATE TABLE IF NOT EXISTS foto (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_bap VARCHAR(255) NOT NULL,
|
|
related_id VARCHAR(255),
|
|
filename VARCHAR(255),
|
|
url LONGTEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_bap (nomor_bap)
|
|
);
|
|
|
|
-- Tabel untuk Aset Aplikasi (Logo dan KOP)
|
|
CREATE TABLE IF NOT EXISTS aset_aplikasi (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
tipe VARCHAR(50) NOT NULL UNIQUE,
|
|
data_url LONGTEXT,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Insert default aset_aplikasi rows
|
|
INSERT INTO aset_aplikasi (tipe, data_url)
|
|
VALUES ('logo', NULL), ('kop', NULL)
|
|
ON DUPLICATE KEY UPDATE tipe=tipe;
|
|
|
|
-- Tabel untuk Penyedia (Supplier) dengan KOP
|
|
CREATE TABLE IF NOT EXISTS penyedia (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nama VARCHAR(255) NOT NULL UNIQUE,
|
|
alamat TEXT,
|
|
kop_url LONGTEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Tabel untuk SPJ Lomba (Kegiatan Lomba - Pembayaran Non-Tunai)
|
|
CREATE TABLE IF NOT EXISTS spj_lomba (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
nomor_spj VARCHAR(255) NOT NULL UNIQUE,
|
|
tanggal DATE NOT NULL,
|
|
nama_kegiatan VARCHAR(500) NOT NULL,
|
|
jenis_pembayaran VARCHAR(100) NOT NULL,
|
|
penerima VARCHAR(255) NOT NULL,
|
|
nama_bank VARCHAR(100) NOT NULL,
|
|
nomor_rekening VARCHAR(50) NOT NULL,
|
|
atas_nama VARCHAR(255) NOT NULL,
|
|
nominal DECIMAL(15,2) NOT NULL,
|
|
keterangan TEXT,
|
|
bukti_transfer LONGTEXT,
|
|
kode_kegiatan VARCHAR(100),
|
|
kode_sub_kegiatan VARCHAR(100),
|
|
kode_rekening VARCHAR(100),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_nomor_spj (nomor_spj),
|
|
INDEX idx_tanggal (tanggal)
|
|
);
|
|
|
|
-- Insert default pengaturan row
|
|
INSERT INTO pengaturan (id, nama_ketua_komite, bendahara, tahun_anggaran)
|
|
VALUES (1, '', '', '2026')
|
|
ON DUPLICATE KEY UPDATE id=id;
|
|
|
|
-- Insert default counter for current year
|
|
INSERT INTO nomor_counter (tahun_anggaran, counter)
|
|
VALUES ('2026', 0)
|
|
ON DUPLICATE KEY UPDATE tahun_anggaran=tahun_anggaran;
|
|
|