TAMPILAN LAYAR PROTOTIPE APLIKASI
Layar Utama
Tampilan Layar Utama
Layar ini akan muncul pada saat prototipe aplikasi dijalankan oleh user, jika user belum melakukan autentifikasi maka hanya menu File yang dapat diakses oleh user. Berikut ini daftar menu yang terdapat pada layar utama :
1. File • Login • Logout • Exit 2. Master • Barang • Jabatan • Kendaraan • Pegawai • Pelanggan • Wilayah - Kecamatan - Kelurahan
- Kode Pos - Kota 3. Transaksi • BP • BPBJ • BSTPJ • Pembayaran • Penagihan • PO • Retur Jual • RKD • Surat Jalan 4. Update • BPBJ • Surat Jalan 5. Laporan • Penjualan • Persediaan • Retur Jual • Barang Masuk • Barang Keluar File Æ Login
Tampilan Layar Login
User harus melakukan login dengan memasukan user id dan password yang telah disimpan di server. Server kemudian akan melakukan validasi terhadap user id dan password yang dimasukkan, jika hasilnya valid maka layar ini akan ditutup dan semua menu yang terdapat di layar utama akan diaktifkan.
File Æ Logout
Menu ini berguna untuk memutuskan koneksi dengan server sehingga tampilan layar utama akan seperti pada saat prototipe aplikasi baru dijalankan.
File Æ Exit
Menu ini digunakan untuk menutup prototipe aplikasi. Master Æ Barang
Tampilan Layar Add Barang
Layar ini digunakan untuk menambah data barang ke dalam database.
Tampilan Layar View Barang
Layar ini digunakan untuk menampilkan semua daftar barang yang ada di dalam database.
Tampilan Layar Update / Delete Barang
Layar ini digunakan untuk mengubah atau menghapus data barang berdasarkan kode barang yang dapat diperoleh dengan menggunakan tombol ”Cari”.
Master Æ Jabatan
Tampilan Layar Add Jabatan
Tampilan Layar View Jabatan
Layar ini digunakan untuk menampilkan semua daftar jabatan yang ada di dalam database.
Tampilan Layar Update / Delete Jabatan
Layar ini digunakan untuk mengubah atau menghapus data jabatan berdasarkan kode jabatan yang dapat diperoleh dengan menggunakan tombol ”Cari”.
Master Æ Kendaraan
Tampilan Layar Add Kendaraan
Layar ini digunakan untuk menambah data kendaraan ke dalam database.
Tampilan Layar View Kendaraan
Layar ini digunakan untuk menampilkan semua daftar kendaraan yang ada di dalam database.
Tampilan Layar Update / Delete Kendaraan
Layar ini digunakan untuk mengubah atau menghapus data kendaraan berdasarkan nomor polisi, user dapat mencari nomor polisi yang ingin diubah atau dihapus dengan menekan tombol ”Cari” sehingga layar pencarian kendaraan akan ditampilkan.
Master Æ Pegawai
Tampilan Layar Add Pegawai
Layar ini digunakan untuk menambah data pegawai ke dalam database. User dapat mengisi kelurahan, kecamatan, kode pos dan kota dengan menggunakan tombol ”Cari” sehingga layar pencarian kelurahan akan ditampilkan.
Tampilan Layar View Pegawai
Layar ini digunakan untuk menampilkan semua daftar pegawai yang ada di dalam database.
Tampilan Layar Update Pegawai
Layar ini digunakan untuk mengubah atau menghapus data pegawai berdasarkan kode pegawai, user dapat mencari pegawai yang ingin diubah atau dihapus dengan menekan tombol ”Cari” sehingga layar pencarian pegawai akan ditampilkan.
Master Æ Pelanggan
Tampilan Layar Add Pelanggan
Layar ini digunakan untuk menambah data pelanggan ke dalam database. User dapat mengisi kelurahan, kecamatan, kode pos dan kota di bagian pengiriman atau penagihan dengan menggunakan tombol ”Cari” sehingga layar pencarian kelurahan akan ditampilkan. Tombol ”Copy to Æ” digunakan untuk menduplikasi data dari alamat di bagian pengiriman ke bagian penagihan.
Tampilan Layar View Pelanggan
Layar ini digunakan untuk menampilkan semua daftar pelanggan yang ada di dalam database. Data pelanggan akan ditampilkan berdasarkan status yang dimiliki oleh pelanggan.
Tampilan Layar Update Pelanggan
Layar ini digunakan untuk mengubah atau menghapus data pelanggan berdasarkan kode pelanggan. User dapat mencari pelanggan yang ingin diubah atau dihapus dengan menggunakan tombol ”Cari” di samping kode pelanggan, sehingga layar pencarian pelanggan akan ditampilkan.
Master Æ Wilayah Æ Kecamatan
Tampilan Layar Add Kecamatan
Tampilan Layar View Kecamatan
Layar ini digunakan untuk menampilkan semua daftar Kecamatan yang ada di dalam database.
Tampilan Layar Update / Delete Kecamatan
Layar ini digunakan untuk mengubah atau menghapus data kecamatan berdasarkan kode Kecamatan, user dapat mencari Kecamatan yang ingin diubah atau dihapus dengan menggunakan tombol “Cari” sehingga layar pencarian Kecamatan akan ditampilkan.
Master Æ Wilayah Æ Kelurahan
Tampilan Layar Add Kelurahan
Layar ini digunakan untuk menambah data Kelurahan ke dalam database. Nama Kecamatan, kode pos, dan nama Kota dapat diperoleh dengan menggunakan tombol ”Cari” yang telah disediakan dimasing – masing bagian.
Tampilan Layar View Kelurahan
Layar ini digunakan untuk menampilkan semua daftar Kelurahan yang ada di dalam database.
Tampilan Layar Update / Delete Kelurahan
Layar ini digunakan untuk mengubah atau menghapus data Kelurahan berdasarkan kode Kelurahan, user dapat mencari Kelurahan yang ingin diubah atau dihapus dengan menggunakan tombol “Cari” sehingga layar pencarian Kelurahan akan ditampilkan. Master Æ Wilayah Æ Kode Pos
Tampilan Layar Add Kode Pos
Tampilan Layar View Kode Pos
Layar ini digunakan untuk menampilkan semua daftar kode pos yang ada di dalam database.
Tampilan Layar Update / Delete Kode Pos
Layar ini digunakan untuk mengubah atau menghapus data kode pos berdasarkan kode pos, user dapat mencari kode pos yang ingin diubah atau dihapus dengan menggunakan tombol “Cari” sehingga layar pencarian kode pos akan ditampilkan.
Master Æ Wilayah Æ Kota
Tampilan Layar Add Kota
Layar ini digunakan untuk menambah data Kota ke dalam database.
Tampilan Layar View Kota
Tampilan Layar Update / Delete Kota
Layar ini digunakan untuk mengubah atau menghapus data Kota berdasarkan kode Kota, user dapat mencari Kota yang ingin diubah atau dihapus dengan menekan tombol “Cari” sehingga layar pencarian Kota akan ditampilkan.
Transaksi Æ BP
Tampilan Layar Add BP
Layar ini digunakan untuk menambah data BP ke dalam database. Kode pelanggan bisa dicari dengan dua cara, yaitu dengan menggunakan tombol ”Cek” dan tombol “Cari”. Jika menggunakan tombol “Cek” user harus memasukan kode pelanggan terlebih dahulu dan setelah tombol ”Cek” ditekan maka nama pelanggan akan ditampilkan. Jika menggunakan tombol “Cari” maka akan ditampilkan layar pencarian pelanggan.
Pencarian kode barang prosesnya sama seperti proses pencarian kode pelanggan sebelumnya. Pada kontrol data, tombol ”Tambah” digunakan untuk menambahkan barang ke dalam daftar barang., tombol ”Hapus” digunakan untuk menghapus barang yang telah dipilih di daftar barang, tombol ”Reset” digunakan untuk membersihkan daftar barang, tombol ”Ubah Jml/Kirim” digunakan untuk mengubah jumlah kirim barang barang yang terdapat di daftar barang, sedangkan tombol ”Ubah Harga” digunakan untuk mengubah harga barang yang terdapat di daftar barang
Tampilan Layar View BP
Layar ini digunakan untuk menampilkan semua daftar BP milik pelanggan, data yang ditampilkan dapat dipilih berdasarkan status BP yang aktif, tidak aktif maupun kedua – duanya. Selain itu disediakan kotak pencarian yang bisa digunakan untuk mencari BP berdasarkan kode BP, kode pelanggan, dan semua BP. Setelah tombol “Tampil” ditekan maka akan dimunculkan data hasil pencarian di dalam grid yang sudah disediakan. Untuk menampilkan informasi lengkap terhadap BP, maka user hanya perlu melakukan double click pada baris yang dikehendaki.
Transaksi Æ BPBJ
Tampilan Layar Add BPBJ
Layar ini digunakan untuk menambah data BPBJ ke dalam database. Kode RKD dapat dicari dengan dua cara, yaitu dengan menggunakan tombol ”Cek” dan tombol “Cari”. Jika menggunakan tombol “Cek” user harus memasukan kode RKD terlebih dahulu dan setelah tombol ”Cek” ditekan maka informasi detail dari RKD akan ditampilkan. Jika menggunakan tombol “Cari” maka akan ditampilkan layar pencarian RKD.
Pada kontrol data terdapat tombol ”Ubah Qty Diberikan”, tombol ini berguna untuk mengubah kuantiti nilai barang yang dipilih pada informasi detail, tombol ”Beri Keterangan” berguna untuk menambahkan keterangan pada barang yang dipilih pada informasi detail, sedangkan tombol ”Cek Stok Barang” digunakan untuk mengecek berapakah stok barang yang ada pada gudang barang jadi dengan menampilkan kotak pesan dialog berikut :
Tampilan Layar View BPBJ
Layar ini digunakan untuk menampilkan semua daftar BPBJ yang ada di dalam database, data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
Transaksi Æ BSTPJ
Tampilan Layar Add BSTPJ
Layar ini digunakan untuk menambah data BSTPJ ke dalam database. Kode Barang dicari dengan menggunakan tombol “Cek” dan “Cari”. Jika mengguanakan tombol “Cari”, maka user harus memasukan kode barang terlebih dahulu. Setelah tombol ”Cek” ditekan maka nama barang akan ditampilkan. Jika menggunakan tombol ”Cari”, maka akan ditampilkan layar pencarian barang. Pada kontrol data, tombol ”Tambah” digunakan untuk menambahkan barang ke dalam daftar barang, tombol ”Ubah Qty” digunakan untuk mengubah kuantiti barang yang telah dipilih di daftar barang, tombol ”Hapus” digunakan untuk menghapus yang telah dipilih di daftar barang, sedangkan tombol ”Reset” digunakan untuk menghapus semua barang yang ada di daftar barang.
Tampilan Layar View BSTPJ
Layar ini digunakan untuk menampilkan semua data BSTPJ yang ada di dalam database, data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
Tampilan Layar Update / Delete BSTPJ
Layar ini digunakan untuk mengubah atau menghapus data BSTPJ berdasarkan kode BSTPJ. Kode BSTPJ dicari dengan menggunakan tombol “Cek” dan “Cari”. Jika menggunakan tombol ”Cek” maka user harus memasukan kode BSTPJ terlebih dahulu. Setelah menekan tombol ”Cek” maka nama barang akan ditampilkan. Jika menggunakan tombol ”Cari”, maka akan ditampilkan layar pencarian barang.
Pada kontrol data, tombol ”Tambah” digunakan untuk menambahkan dan meng-update barang ke dalam daftar barang, tombol ”Ubah Qty” digunakan untuk melakukan update terhadap kuantiti barang yang telah dipilih di daftar barang, tombol ”Hapus” digunakan untuk menghapus barang yang telah dipilih di daftar barang. Sedangkan tombol ”Delete” digunakan untuk menghapus BSTPJ berdasarkan kode BSTPJ.
Transaksi Æ Pembayaran
Tampilan Layar Add Pembayaran
Layar ini digunakan untuk menambah data pembayaran ke dalam database. Kode penagihan dan kode kolektor didapat dengan menggunakan tombol ”Cek” dan ”Cari”. Jika menggunakan tombol ”Cek” maka user harus memasukan kode penagihan dan kode kolektor terlebih dahulu. Setelah menekan tombol ”Cek” maka nama barang akan ditampilkan. Jika menggunakan tombol ”Cari”, akan ditampilkan layar pencarian penagihan dan pegawai.
Tampilan Layar View Pembayaran
Layar ini digunakan untuk menampilkan semua data pembayaran yang ada di dalam database, data ditampilkan berdasarkan rentang waktu yang telah ditentukan oleh user.
Transaksi Æ Penagihan
TampilanLayar Add Penagihan
Layar ini digunakan untuk menambah data penagihan milik pelanggan. User harus menentukan periode tagihan yang akan dibuat, selain itu user juga harus menentukan jenis pembayaran pelanggan. Tombol “Cari” digunakan untuk menampilkan layar pencarian pelanggan. Pada layar pencarian pelanggan, daftar pelanggan yang akan ditampilkan adalah hanya pelanggan yang belum dibuatkan penagihan. Tombol ”Hitung” digunakan untuk menghitung jumlah pembayaran setelah dikurangi discount dan ditambah pajak.
Tampilan Layar View Penagihan Bulanan
Layar ini digunakan untuk menampilkan data penagihan pelanggan dari database. Data penagihan ditampilkan berdasarkan status tagihan, jenis pembayaran dan rentang waktu yang telah ditentukan oleh user.
Transaksi Æ Purchase Order
Tampilan Layar Add PO
Layar ini digunakan untuk menambah data PO ke dalam database. User mencari kode Pelanggan yang akan dibuatkan PO dengan menggunakan tombol “Cari”, sehingga akan ditampilkan layar pencarian pelanggan. Data pelanggan yang muncul adalah hanya pelanggan yang mempunyai pesanan barang sesuai dengan jadwal pengiriman yang ada di BP. Pada kontrol data, tombol “Ubah Jml / Kirim” digunakan untuk mengubah jumlah kirim barang yang ada di informasi detail, tombol “Hapus” digunakan untuk menghapus barang yang ada di informasi detail, sedangkan tombol “Ubah ke Default” digunakan untuk mengembalikan pesanan barang sesuai dengan BP milik pelanggan.
Tampilan Layar View PO
Layar ini digunakan untuk menampilkan data PO dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
Tampilan Layar Update / Delete PO
Layar ini digunakan untuk mengubah atau menghapus data PO berdasarkan kode PO. Kode PO dicari dengan menggunakan tombol “Cek” dan “Cari”. Jika menggunakan tombol ”Cek” maka user harus memasukan kode PO terlebih dahulu. Setelah menekan tombol ”Cek” maka informasi tentang kode PO tersebut akan ditampilkan. Jika menggunakan tombol ”Cari”, maka akan ditampilkan layar pencarian PO. Pada kontrol data, tombol ”Ubah Jml / Kirim” digunakan untuk melakukan update jumlah barang yang ada di dalam informasi detail, sedangkan tombol ”Hapus” digunakan untuk menghapus barang yang telah dipilih. Tombol ”Delete” digunakan untuk menghapus PO berdasarkan kode PO.
Transaksi Æ Retur Jual
Tampilan Layar Add Retur Jual
Layar ini digunakan untuk menambah data retur ke dalam database. Kode penagihan dan kode kolektor didapat dengan menggunakan tombol ”Cek” dan ”Cari”. Jika menggunakan tombol ”Cek” maka user harus memasukan kode penagihan dan kode kolektor terlebih dahulu. Setelah menekan tombol ”Cek” maka nama barang akan ditampilkan. Jika menggunakan tombol ”Cari”, akan ditampilkan layar pencarian penagihan dan pegawai.
Tampilan Layar View Retur Jual
Layar ini digunakan untuk menampilkan data retur pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
Tampilan Layar Update / Delete Retur
Layar ini digunakan untuk mengubah atau menghapus data retur berdasarkan kode retur. Kode retur dan kode barang diisi dengan menggunakan tombol ”Cek” dan ”Cari”. Jika menggunakan tombol ”Cek” maka user harus memasukan kode penagihan dan kode kolektor terlebih dahulu. Setelah menekan tombol ”Cek” maka nama barang akan ditampilkan. Jika menggunakan tombol ”Cari”, akan ditampilkan layar pencarian retur dan barang. Pada layar ini semua field dapat diubah kecuali kode retur, kode pelanggan, dan nama pelanggan.
Transaksi Æ RKD
Tampilan Layar Add RKD
Layar ini digunakan untuk menambah data RKD ke dalam database. User dapat menampilkan daftar PO berdasarkan kode pelanggan, kelurahan pelanggan, kecamatan pelanggan, serta kode RKD lama dengan menggunakan tombol ”Cari” yang tersedia.. Setelah itu user menekan tombol ”Tampil” untuk menampilkan kode PO ke dalam daftar PO yang berada di sebelah kiri. Jika user meng-click kode PO yang terdapat di sebelah kiri, maka keterangan pelanggan untuk PO tersebut akan ditampilkan dan diberi warna latar yang sama dengan daftar PO sebelah kiri (warna kuning).
Untuk menambahkan daftar PO yang letaknya di sebelah kanan, maka user harus menekan tombol ”Tambah ke RKD”. Jika user meng-click kode PO yang terdapat di sebelah kanan, maka keterangan PO tersebut akan ditampilkan dan diberi warna latar yang sama dengan daftar PO di sebelah kanan (warna biru). Statistik PO digunakan untuk memberitahukan jumlah PO yang ada pada tanggal yang terdapat di ”Tgl. PO”, statistik ini terdiri dari ”Total All PO” yang memberikan informasi mengenai total seluruh PO pada tanggal tersebut, ”Handled PO” yang memberikan informasi mengenai jumlah PO yang sudah diproses pada tanggal tersebut, dan ”Remaining PO” yang memberikan informasi mengenai jumlah PO yang belum diproses pada tanggal tersebut.
Statistik barang berisi informasi jumlah semua barang yang ada di dalam daftar PO sebelah kanan.
Kendaraan dapat dipilih dengan menekan tombol ”Cari” di samping field nomor polisi untuk menampilkan layar pencarian kendaraan. Driver, helper 1, dan helper 2 diisi dengan menekan tombol ”Cari” di sampingnya untuk menampilkan layar pencarian pegawai. Untuk menghapus kode PO dari daftar PO di sebelah kanan, user dapat menggunakan tombol ”Remove” yang ada di kontrol operasi.
Tampilan Layar View RKD
Layar ini digunakan untuk menampilkan data RKD dari database. Data ditampilkan berdasarkan rentang waktu yang telah ditentukan oleh user. Jika user men-double click hasil data yang ditampilkan di tabel, maka informasi dari RKD tersebut akan ditampilkan.
Tampilan Layar Update RKD
Layar ini digunakan untuk mengubah atau menghapus data RKD berdasarkan kode RKD. Kode RKD diperoleh dengan menekan tombol ”Cari” yang ada di sebelah kanannya sehinggan layar pencarian RKD akan ditampilkan. Tombol ”Tambah dan Update ke RKD” digunakan untuk menambah PO ke dalam daftar PO sebelah kanan dan langsung disimpan ke dalam database. Tombol ”Update” digunakan untuk melakukan update RKD terhadap nomor polisi, tanggal RKD, Driver, Helper 1, dan Helper 2
Transaksi Æ Surat Jalan
Tampilan Layar Add SJ
Layar ini digunakan untuk menambah data SJ ke dalam database. User akan memilih RKD berdasarkan tanggal pembuatan RKD dan kemudian akan dimasukkan ke dalam daftar RKD dengan menekan tombol ”Tampil”. Untuk membuat SJ yang baru, user harus memilih kode RKD dari daftar RKD yang telah ditampilkan dan menekan tombol ”Generate SJ”, sehingga secara otomatis sistem akan membuatkan SJ yang kemudian akan dicetak dengan menggunakan tombol ”Print” dan ”Print All”. Tombol ”Print” digunakan untuk mencetak SJ tertentu dari daftar SJ, sedangkan tombol ”Print All” digunakan untuk mencetak semua SJ yang ada di daftar SJ.
Tampilan Layar View SJ
Layar ini digunakan untuk menampilkan menampilkan semua daftar SJ pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user
Update Æ BPBJ
Tampilan Layar Update BPBJ
Layar ini digunakan untuk mengubah data BPBJ berdasarkan kode BPBJ yang dapat dicari dengan menggunakan tombol “Cek” dan “Cari”. Jika user menggunakan tombol ”Cek” maka user harus memasukan kode BPBJ terlebih dahulu. Setelah menekan tombol ”Cek” maka informasi detail BPBJ akan ditampilkan. Jika menggunakan tombol ”Cari”, akan ditampilkan layar pencarian BPBJ.
Tampilan Layar View BPBJ
Layar ini digunakan untuk menampilkan semua daftar BPBJ yang ada di dalam database, data ditampilkan berdasarkan rentang waktu yang telah ditentukan oleh user.
Update Æ Surat Jalan
Tampilan Layar Update SJ
Layar ini digunakan untuk mengubah data SJ berdasarkan kode SJ yang dapat dicari dengan menggunakan tombol “Cek” dan “Cari”. Jika user menggunakan tombol ”Cek” maka user harus memasukan kode SJ terlebih dahulu. Setelah menekan tombol ”Cek” maka informasi detail SJ akan ditampilkan. Jika menggunakan tombol ”Cari”, maka akan ditampilkan layar pencarian SJ.
Tampilan Layar View SJ
Layar ini digunakan untuk menampilkan seluruh daftar SJ pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user
Laporan Æ Penjualan
Laporan Æ Persediaan Barang
Laporan Æ Retur Jual
Tampilan Layar Laporan Retur Jual Laporan Æ Barang Masuk
Laporan Æ Barang Keluar
Tampilan Layar Laporan Barang Keluar Layar Pencarian
Tampilan Layar Pencarian BPBJ
Tampilan Layar Pencarian Jabatan
Tampilan Layar Pencarian Kelurahan
Tampilan Layar Pencarian Kode Pos
Tampilan Layar Pencarian Pegawai
Tampilan Layar Pencarian PO
Tampilan Layar Pencarian SJ
CODING CREATE TABLE
CREATE TABLE Jabatan (
kodeJabatan CHAR(6) PRIMARY KEY NOT NULL, namaJabatan VARCHAR(30) UNIQUE NOT NULL,
CONSTRAINT P_kodeJabatan CHECK (LEN(kodeJabatan)=6),
CONSTRAINT cek_kodeJabatan CHECK (SUBSTRING(kodeJabatan,1,3) ='JBT'), CONSTRAINT cek_urutJabatan CHECK (CAST(SUBSTRING(kodeJabatan,4,3) AS INT) > 0 AND CAST(SUBSTRING(kodeJabatan,4,3) AS INT) <= 999)
)
CREATE TABLE Barang (
kodeBarang CHAR(6) PRIMARY KEY NOT NULL, namaBarang VARCHAR(30) UNIQUE NOT NULL, merek VARCHAR(30) NOT NULL,
satuan VARCHAR(30)NOT NULL, stok SMALLINT NOT NULL,
CONSTRAINT kodeBarang CHECK (LEN(kodeBarang)=6),
CONSTRAINT cek_kodeBarang CHECK (SUBSTRING (kodeBarang,1,3)='BRG'), CONSTRAINT cek_urutBarang CHECK (CAST(SUBSTRING(kodeBarang,4,3) AS INT) >= 0 AND CAST(SUBSTRING(kodeBarang,4,3) AS INT) <= 999),
CONSTRAINT cek_stokAkhir CHECK (stok >= 0) )
CREATE TABLE Kota (
kodeKota CHAR(6) PRIMARY KEY NOT NULL, namaKota VARCHAR(30) UNIQUE NOT NULL,
CONSTRAINT P_kodeKota CHECK (LEN(kodeKota)=6),
CONSTRAINT cek_kodeKota CHECK (SUBSTRING(kodeKota,1,3) ='KOT'), CONSTRAINT cek_urutKota CHECK (CAST(SUBSTRING(kodeKota,4,3) AS INT) > 0 AND CAST(SUBSTRING(kodeKota,4,3) AS INT) <= 999)
)
CREATE TABLE Kecamatan (
kodeKec CHAR(6) PRIMARY KEY NOT NULL, namaKec VARCHAR(30) NOT NULL,
CONSTRAINT P_kodeKec CHECK (LEN(kodeKec)=6),
CONSTRAINT cek_kodeKec CHECK (SUBSTRING(kodeKec,1,3) ='KEC'),
CONSTRAINT cek_urutKecamatan CHECK (CAST(SUBSTRING(kodeKec,4,3) AS INT) > 0 AND CAST(SUBSTRING(kodeKec,4,3) AS INT) <= 999)
CREATE TABLE Pos (
kodePos INT PRIMARY KEY NOT NULL,
CONSTRAINT P_kodePos CHECK (LEN(kodePos)=5) )
CREATE TABLE Kelurahan (
kodeKel CHAR(6) PRIMARY KEY NOT NULL, namaKel VARCHAR(30) NOT NULL,
kodeKec CHAR(6) NOT NULL, kodeKota CHAR(6) NOT NULL, kodePos INT NOT NULL,
FOREIGN KEY(kodeKec) REFERENCES kecamatan(kodeKec) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY(kodeKota) REFERENCES Kota(kodeKota) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY(kodePos) REFERENCES pos(kodePos) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodeKel CHECK (LEN(kodeKel)=6),
CONSTRAINT cek_kodeKel CHECK (SUBSTRING(kodeKel,1,3) ='KEL'),
CONSTRAINT cek_urutKelurahan CHECK (CAST(SUBSTRING(kodeKel,4,3) AS INT) > 0 AND CAST(SUBSTRING(kodeKel,4,3) AS INT) <= 999)
)
CREATE TABLE Pegawai (
kodePegawai CHAR(10) PRIMARY KEY NOT NULL, namaPegawai VARCHAR(30) NOT NULL,
alamatPegawai VARCHAR(100) NOT NULL, kodeKel CHAR(6) NOT NULL,
tglLahir DATETIME NOT NULL, jenisKelamin CHAR(1) NOT NULL, tglMasukKerja DATETIME NOT NULL, noTelepon VARCHAR(12),
noHP VARCHAR(12),
kodeJabatan CHAR(6) NOT NULL, statusPegawai BIT NOT NULL,
FOREIGN KEY (kodeKel) REFERENCES kelurahan(kodeKel) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (kodeJabatan) REFERENCES Jabatan(kodeJabatan) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodePegawai CHECK (LEN(kodePegawai)=10),
CONSTRAINT cek_kodePegawai CHECK (SUBSTRING(kodePegawai,1,3)= 'PGW'),
CONSTRAINT cek_tahunPegawai CHECK (CAST(SUBSTRING(kodePegawai,4,2) AS INT) >= 0 AND CAST(SUBSTRING(kodePegawai,4,2) AS INT) <= 99),
CONSTRAINT cek_bulanPegawai CHECK (CAST(SUBSTRING(kodePegawai,6,2) AS INT) > 0 AND CAST(SUBSTRING(kodePegawai,6,2) AS INT) < 13),
CONSTRAINT cek_urutPegawai CHECK (CAST(SUBSTRING(kodePegawai,8,3) AS INT) > 0 AND CAST(SUBSTRING(kodePegawai,8,3) AS INT) <= 999), CONSTRAINT cek_jenisKelamin CHECK (jenisKelamin = 'L' OR jenisKelamin = 'P')
)
CREATE TABLE Pelanggan (
kodePelanggan CHAR(10) PRIMARY KEY NOT NULL, namaPelanggan VARCHAR(30) NOT NULL,
alamatPengiriman VARCHAR(100) NOT NULL, kodeKelKirim CHAR(6) NOT NULL,
alamatPenagihan VARCHAR(100) NOT NULL, kodeKelTagih CHAR(6) NOT NULL,
NPWP VARCHAR(25),
statusPelanggan BIT NOT NULL,
CONSTRAINT P_kodePelanggan CHECK (LEN(kodePelanggan)=10), CONSTRAINT cek_kodePelanggan CHECK
(SUBSTRING(kodePelanggan,1,3)='PLG'), CONSTRAINT cek_tahunPelanggan CHECK
(CAST(SUBSTRING(kodePelanggan,4,2) AS INT) >= 0 AND CAST(SUBSTRING(kodePelanggan,4,2) AS INT) <= 99), CONSTRAINT cek_bulanPelanggan CHECK
(CAST(SUBSTRING(kodePelanggan,6,2) AS INT) > 0 AND CAST(SUBSTRING(kodePelanggan,6,2) AS INT) < 13), CONSTRAINT cek_urutPelanggan CHECK
(CAST(SUBSTRING(kodePelanggan,8,3) AS INT) > 0 AND CAST(SUBSTRING(kodePelanggan,8,3) AS INT) <= 999) )
CREATE TABLE TeleponPlgn (
noTelepon VARCHAR(12) NOT NULL, kodePelanggan CHAR(10) NOT NULL, PRIMARY KEY (noTelepon,kodePelanggan),
FOREIGN KEY (kodePelanggan) REFERENCES Pelanggan(kodePelanggan) ON UPDATE CASCADE ON DELETE CASCADE
)
CREATE TABLE FaxPlgn (
noFax VARCHAR(12) NOT NULL, kodePelanggan CHAR(10) NOT NULL, PRIMARY KEY (noFax,kodePelanggan),
FOREIGN KEY (kodePelanggan) REFERENCES Pelanggan(kodePelanggan) ON UPDATE CASCADE ON DELETE CASCADE
)
CREATE TABLE Kendaraan (
noPolisi VARCHAR(8) PRIMARY KEY NOT NULL, merekMobil VARCHAR(30) NOT NULL,
tipe VARCHAR(30) NOT NULL, tahun SMALLINT NOT NULL, kapasitasStd SMALLINT NOT NULL, kapasitasOpt SMALLINT NOT NULL, statusKendaraan BIT NOT NULL, keterangan VARCHAR(100),
CONSTRAINT P_noPolisi CHECK (LEN(noPolisi)>= 2), CONSTRAINT P_tahun CHECK (LEN(tahun)=4),
CONSTRAINT cek_kapasitasStd CHECK (kapasitasStd > 0), CONSTRAINT cek_kapasitasOpt CHECK (kapasitasOpt > 0) )
CREATE TABLE BP (
kodeBP CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
jenisPembayaran CHAR(1) NOT NULL, jmlPinjamanGalon SMALLINT NOT NULL, hargaPinjamanGalon MONEY NOT NULL, statusBP BIT NOT NULL,
kodePelanggan CHAR(10) NOT NULL, kodePegawai CHAR(10) NOT NULL,
FOREIGN KEY (kodePelanggan) REFERENCES Pelanggan(kodePelanggan) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_jmlPinjamanGalon CHECK (jmlPinjamanGalon >= 0), CONSTRAINT P_kodeBP CHECK (LEN(kodeBP)=10),
CONSTRAINT cek_transaksiBP CHECK (SUBSTRING(kodeBP,1,2)='BP'), CONSTRAINT cek_tahunBP CHECK (CAST(SUBSTRING(kodeBP,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeBP,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanBP CHECK (CAST(SUBSTRING(kodeBP,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeBP,5,2) AS INT) < 13),
CONSTRAINT cek_urutBP CHECK (CAST(SUBSTRING(kodeBP,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeBP,7,4) AS INT) <= 9999),
CONSTRAINT cek_jenisPembayaran CHECK (jenisPembayaran in ('L','K')) )
CREATE TABLE BPDetail (
kodeBarang CHAR(6) NOT NULL, hargaBarang MONEY NOT NULL, jmlDefaultKirim SMALLINT NOT NULL, PRIMARY KEY (kodeBP,kodeBarang),
FOREIGN KEY (kodeBP) REFERENCES BP(kodeBP) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang(kodeBarang) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_hargaBarang CHECK (hargaBarang > 0),
CONSTRAINT cek_jmlDefaultKirim CHECK (jmlDefaultKirim >= 0) )
CREATE TABLE JadwalKirim (
hariKirim VARCHAR(6) NOT NULL, kodeBP CHAR(10) NOT NULL, PRIMARY KEY (hariKirim,kodeBP),
FOREIGN KEY (kodeBP) REFERENCES BP(kodeBP) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT cek_hariKirim CHECK (hariKirim IN ('Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu')) )
CREATE TABLE RKD (
kodeRKD CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
keterangan VARCHAR(100),
kodePegawai CHAR(10) NOT NULL, kodeDriver CHAR(10) NOT NULL, kodeHelper1 CHAR(10) NOT NULL, kodeHelper2 CHAR(10) NOT NULL, kodeKendaraan VARCHAR(8) NOT NULL,
FOREIGN KEY (kodeKendaraan) REFERENCES Kendaraan(noPolisi) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodeRKD CHECK (LEN(kodeRKD)=10),
CONSTRAINT cek_transaksiRKD CHECK (SUBSTRING(kodeRKD,1,2)='RD'), CONSTRAINT cek_tahunRKD CHECK (CAST(SUBSTRING(kodeRKD,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeRKD,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanRKD CHECK (CAST(SUBSTRING(kodeRKD,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeRKD,5,2) AS INT) < 13),
CONSTRAINT cek_urutRKD CHECK (CAST(SUBSTRING(kodeRKD,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeRKD,7,4) AS INT) <= 9999)
)
CREATE TABLE PO (
kodePO CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
kodePegawai CHAR(10) NOT NULL, kodeRKD CHAR(10),
kodeBP CHAR(10) NOT NULL,
FOREIGN KEY (kodeRKD) REFERENCES RKD(kodeRKD) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (kodeBP) REFERENCES BP(kodeBP) ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodePO CHECK (LEN(kodePO)=10),
CONSTRAINT cek_transaksiPO CHECK (SUBSTRING(kodePO,1,2)='PO'), CONSTRAINT cek_tahunPO CHECK (CAST(SUBSTRING(kodePO,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodePO,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanPO CHECK (CAST(SUBSTRING(kodePO,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodePO,5,2) AS INT) < 13),
CONSTRAINT cek_urutPO CHECK (CAST(SUBSTRING(kodePO,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodePO,7,4) AS INT) <= 9999)
)
CREATE TABLE PODetail (
kodePO CHAR(10) NOT NULL, kodeBarang CHAR(6) NOT NULL, qtyDiminta SMALLINT NOT NULL, PRIMARY KEY (kodePO,kodeBarang),
FOREIGN KEY (kodePO) REFERENCES PO ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_qtyDiminta CHECK (qtyDiminta > 0) )
CREATE TABLE Penagihan (
kodePenagihan CHAR(10) PRIMARY KEY NOT NULL, tglPenagihan DATETIME NOT NULL,
tglJatuhTempo DATETIME NOT NULL, tglPembayaran DATETIME,
jumlah MONEY NOT NULL, disc FLOAT NOT NULL, ppn FLOAT NOT NULL,
totalPenagihan MONEY NOT NULL, statusTagih BIT NOT NULL,
kodePegawaiByr CHAR(10), kodePegawaiTgh CHAR(10), kodeKolektor CHAR(10),
CONSTRAINT P_kodePenagihan CHECK (LEN(kodePenagihan)=10), CONSTRAINT cek_transaksiTagih CHECK
(SUBSTRING(kodePenagihan,1,2)='PH'),
CONSTRAINT cek_tahunTagih CHECK (CAST(SUBSTRING(kodePenagihan,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodePenagihan,3,2) AS INT) <= 99), CONSTRAINT cek_bulanTagih CHECK (CAST(SUBSTRING(kodePenagihan,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodePenagihan,5,2) AS INT) < 13),
CONSTRAINT cek_urutTagih CHECK (CAST(SUBSTRING(kodePenagihan,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodePenagihan,7,4) AS INT) <= 9999)
)
CREATE TABLE SJ (
kodeSJ CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
totalDijual MONEY,
kodePegawai CHAR(10) NOT NULL, kodePO CHAR(10) UNIQUE NOT NULL, kodePenagihan CHAR(10),
FOREIGN KEY (kodePO) REFERENCES PO ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (kodePenagihan) REFERENCES Penagihan ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodeSJ CHECK (LEN(kodeSJ)=10),
CONSTRAINT cek_transaksiSJ CHECK (SUBSTRING(kodeSJ,1,2)='SJ'),
CONSTRAINT cek_tahunSJ CHECK (CAST(SUBSTRING(kodeSJ,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeSJ,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanSJ CHECK (CAST(SUBSTRING(kodeSJ,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeSJ,5,2) AS INT) < 13),
CONSTRAINT cek_urutSJ CHECK (CAST(SUBSTRING(kodeSJ,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeSJ,7,4) AS INT) <= 9999)
)
CREATE TABLE SJDetail (
kodeSJ CHAR(10) NOT NULL, kodeBarang CHAR(6) NOT NULL, qtyDijual SMALLINT,
jumlahDijual MONEY, keterangan VARCHAR(100),
PRIMARY KEY (kodeSJ,kodeBarang),
FOREIGN KEY (kodeSJ) REFERENCES SJ ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_qtyDijual CHECK (qtyDijual >= 0) )
CREATE TABLE BPBJ (
kodeBPBJ CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
kodeRKD CHAR(10) NOT NULL, kodePegawai CHAR(10) NOT NULL,
FOREIGN KEY (kodeRKD) REFERENCES RKD ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT P_kodeBPBJ CHECK (LEN(kodeBPBJ)=10),
CONSTRAINT cek_transaksiBPBJ CHECK (SUBSTRING(kodeBPBJ,1,2)='PB'), CONSTRAINT cek_tahunBPBJ CHECK (CAST(SUBSTRING(kodeBPBJ,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeBPBJ,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanBPBJ CHECK (CAST(SUBSTRING(kodeBPBJ,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeBPBJ,5,2) AS INT) < 13),
CONSTRAINT cek_urutBPBJ CHECK (CAST(SUBSTRING(kodeBPBJ,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeBPBJ,7,4) AS INT) <= 9999)
)
CREATE TABLE BPBJDetail (
kodeBPBJ CHAR(10) NOT NULL, kodeBarang CHAR(6) NOT NULL, qtyDiberikan SMALLINT NOT NULL, qtySisaBarang SMALLINT,
keterangan VARCHAR(100),
PRIMARY KEY (kodeBPBJ,kodeBarang),
FOREIGN KEY (kodeBPBJ) REFERENCES BPBJ ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_qtyDiberikan CHECK (qtyDiberikan > 0), CONSTRAINT cek_qtySisaBarang CHECK (qtyDiberikan >= 0) )
CREATE TABLE BSTPJ (
kodeBSTPJ CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
kodePegawai CHAR(10) NOT NULL,
CONSTRAINT P_kodeBSTPJ CHECK (LEN(kodeBSTPJ)=10),
CONSTRAINT cek_transaksiBSTPJ CHECK (SUBSTRING(kodeBSTPJ,1,2)='TB'), CONSTRAINT cek_tahunBSTPJ CHECK (CAST(SUBSTRING(kodeBSTPJ,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeBSTPJ,3,2) AS INT) <= 99),
CONSTRAINT cek_bulanBSTPJ CHECK (CAST(SUBSTRING(kodeBSTPJ,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeBSTPJ,5,2) AS INT) < 13),
CONSTRAINT cek_urutBSTPJ CHECK (CAST(SUBSTRING(kodeBSTPJ,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeBSTPJ,7,4) AS INT) <= 9999)
)
CREATE TABLE BSTPJDetail (
kodeBSTPJ CHAR(10) NOT NULL, kodeBarang CHAR(6) NOT NULL, qtyMasuk SMALLINT NOT NULL,
PRIMARY KEY (kodeBSTPJ,kodeBarang),
FOREIGN KEY (kodeBSTPJ) REFERENCES BSTPJ ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_qtyMasuk CHECK (qtyMasuk > 0) )
CREATE TABLE ReturJual (
kodeReturJual CHAR(10) PRIMARY KEY NOT NULL, tgl DATETIME NOT NULL,
kodePelanggan CHAR(10) NOT NULL, kodePegawai CHAR(10) NOT NULL,
FOREIGN KEY (kodePelanggan) REFERENCES Pelanggan ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT kodeReturJual CHECK (LEN(kodeReturJual)=10),
CONSTRAINT cek_transaksiRetur CHECK (SUBSTRING(kodeReturJual,1,2)='RJ'), CONSTRAINT cek_tahunRetur CHECK (CAST(SUBSTRING(kodeReturJual,3,2) AS INT) >= 0 AND CAST(SUBSTRING(kodeReturJual,3,2) AS INT) <= 99), CONSTRAINT cek_bulanRetur CHECK (CAST(SUBSTRING(kodeReturJual,5,2) AS INT) > 0 AND CAST(SUBSTRING(kodeReturJual,5,2) AS INT) < 13),
CONSTRAINT cek_urutRetur CHECK (CAST(SUBSTRING(kodeReturJual,7,4) AS INT) > 0 AND CAST(SUBSTRING(kodeReturJual,7,4) AS INT) <= 9999),
)
CREATE TABLE ReturJualDetail (
kodeReturJual CHAR(10) NOT NULL, kodeBarang CHAR(6) NOT NULL, qtyRetur SMALLINT NOT NULL, keterangan VARCHAR(100),
PRIMARY KEY (kodeReturJual,kodeBarang),
FOREIGN KEY (kodeReturJual) REFERENCES ReturJual ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (kodeBarang) REFERENCES Barang ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT cek_qtyRetur CHECK (qtyRetur > 0) )
CODING CREATE PROCEDURE
CREATE PROC insJabatan
@nmJabatan VARCHAR(30) AS
DECLARE @lastCode CHAR(6) DECLARE @newCode CHAR(6) DECLARE @temp CHAR(3)
IF NOT EXISTS (SELECT kodeJabatan FROM Jabatan) BEGIN
INSERT INTO Jabatan (kodeJabatan, namaJabatan) VALUES ('JBT001',@nmJabatan)
END ELSE BEGIN
SELECT TOP 1 @lastCode = kodeJabatan FROM Jabatan ORDER BY kodeJabatan DESC
SET @temp = CAST((CAST(SUBSTRING(@lastCode,4,3) AS INT) + 1) AS CHAR)
SET @newCode = 'JBT' + REPLICATE('0', 3 - LEN(@temp)) + CAST((@temp) AS CHAR)
INSERT INTO Jabatan (kodeJabatan, namaJabatan) VALUES (@newCode, @nmJabatan)
END
CREATE PROC insBarang
@nmBarang VARCHAR(30),
@merek CHAR(30),
@satuan CHAR(30),
@stok SMALLINT
AS
DECLARE @lastCode CHAR(6) DECLARE @newCode CHAR(6) DECLARE @temp CHAR(3)
IF NOT EXISTS (SELECT kodeBarang from Barang) BEGIN
INSERT INTO Barang(kodeBarang,namaBarang,merek,satuan,stok) VALUES ('BRG001',@nmBarang,@merek,@satuan,@stok)
END ELSE BEGIN
SELECT TOP 1 @lastCode = kodeBarang FROM Barang ORDER BY kodeBarang DESC
SET @temp = CAST((CAST(SUBSTRING(@lastCode,4,3) AS INT) + 1) AS CHAR)
INSERT INTO Barang(kodeBarang,namaBarang,merek,satuan,stok) VALUES (@newCode,@nmBarang,@merek,@satuan,@stok) END
CREATE PROC insKota
@nmKota VARCHAR(30) AS
DECLARE @lastCode CHAR(6) DECLARE @newCode CHAR(6) DECLARE @temp CHAR(3)
IF NOT EXISTS (SELECT kodeKota from Kota) BEGIN
INSERT INTO Kota VALUES ('KOT001',@nmKota) END
ELSE BEGIN
SELECT TOP 1 @lastCode = kodeKota FROM Kota ORDER BY kodeKota DESC
SET @temp = CAST((CAST(SUBSTRING(@lastCode,4,3) AS INT) + 1) AS CHAR)
SET @newCode = 'KOT' + REPLICATE('0', 3 - LEN(@temp)) + CAST((@temp) AS CHAR)
INSERT INTO Kota VALUES (@newCode,@nmKota) END
CREATE PROC insKecamatan
@nmKecamatan VARCHAR(30) AS
DECLARE @lastCode CHAR(6) DECLARE @newCode CHAR(6) DECLARE @temp CHAR(3)
IF NOT EXISTS (SELECT kodeKec from Kecamatan) BEGIN
INSERT INTO Kecamatan(kodeKec,namaKec) VALUES ('KEC001',@nmKecamatan)
END ELSE BEGIN
SELECT TOP 1 @lastCode = kodeKec FROM Kecamatan ORDER BY kodeKec DESC
SET @temp = CAST((CAST(SUBSTRING(@lastCode,4,3) AS INT) + 1) AS CHAR)
SET @newCode = 'KEC' + REPLICATE('0', 3 - LEN(@temp)) + CAST((@temp) AS CHAR)
INSERT INTO Kecamatan VALUES (@newCode,@nmKecamatan) END
CREATE PROC insKodePos @kodePos INT AS
INSERT INTO Pos(kodePos) VALUES(@kodePos) GO
CREATE PROC insKelurahan
@namaKel VARCHAR(30), @kodeKec CHAR(6),
@kodeKota CHAR(6),
@kodePos INT
AS
DECLARE @lastCode CHAR(6) DECLARE @newCode CHAR(6) DECLARE @temp CHAR(3)
IF NOT EXISTS (SELECT kodeKel from Kelurahan) BEGIN
INSERT INTO Kelurahan(kodeKel,namaKel,kodeKec,kodeKota,kodePos) VALUES ('KEL001',@namaKel,@kodeKec,@kodeKota,@kodePos) END
ELSE BEGIN
SELECT TOP 1 @lastCode = kodeKel FROM Kelurahan ORDER BY kodeKel DESC
SET @temp = CAST((CAST(SUBSTRING(@lastCode,4,3) AS INT) + 1) AS CHAR)
SET @newCode = 'KEL' + REPLICATE('0', 3 - LEN(@temp)) + CAST((@temp) AS CHAR)
INSERT INTO Kelurahan(kodeKel,namaKel,kodeKec,kodeKota,kodePos) VALUES (@newCode,@namaKel,@kodeKec,@kodeKota,@kodePos) END
CREATE PROC insPegawai
@kodePegawai CHAR(10), @namaPegawai VARCHAR(30), @alamatPegawai VARCHAR(100), @kodeKel CHAR(6), @tglLahir DATETIME, @jenisKelamin CHAR(1), @tglMasukKerja DATETIME, @noTelepon VARCHAR(12), @noHP VARCHAR(12), @kodeJabatan CHAR(6) AS
INSERT INTO Pegawai(kodePegawai, namaPegawai, alamatPegawai, kodeKel, tglLahir, jenisKelamin,tglMasukKerja,noTelepon,noHP,kodeJabatan,statusPegawai) VALUES(@kodePegawai,@namaPegawai,@alamatPegawai,@kodeKel,@tglLahir,@je nisKelamin,@tglMasukKerja,@noTelepon,@noHP,@kodeJabatan,1)
CREATE PROC insPelanggan @kodePelanggan CHAR(10), @namaPelanggan VARCHAR(30), @alamatPengiriman VARCHAR(100), @kodeKelKirim CHAR(6), @alamatPenagihan VARCHAR(100), @kodeKelTagih CHAR(6), @NPWP VARCHAR(25) AS
IF EXISTS (SELECT kodeKel FROM Kelurahan WHERE kodeKel = @kodeKelKirim) AND EXISTS (SELECT kodeKel FROM Kelurahan WHERE kodeKel =
@kodeKelTagih)
INSERT INTO Pelanggan(kodePelanggan, namaPelanggan, alamatPengiriman, kodeKelKirim,alamatPenagihan,kodeKelTagih,NPWP,statusPelanggan)
VALUES(@kodePelanggan,@namaPelanggan,@alamatPengiriman,@kodeKelKirim,@ alamatPenagihan,@kodeKelTagih,@NPWP,1)
CREATE PROC insTelpPlgn @noTelepon VARCHAR (12), @kodePelanggan CHAR(10)
AS
INSERT INTO TeleponPlgn(noTelepon,kodePelanggan) VALUES (@noTelepon,@kodePelanggan)
CREATE PROC insFaxPlgn @noFax VARCHAR (12), @kodePelanggan CHAR(10) AS
INSERT INTO FaxPlgn(noFax,kodePelanggan) VALUES (@noFax,@kodePelanggan) CREATE PROC insKendaraan
@noPolisi VARCHAR(8), @merekMobil VARCHAR(30), @tipe VARCHAR(30), @tahun SMALLINT, @kapasitasStd SMALLINT, @kapasitasOpt SMALLINT, @statusKendaraan BIT, @keterangan VARCHAR(100) AS INSERT INTO Kendaraan(noPolisi,merekMobil,tipe,tahun,kapasitasStd,kapasitasOpt,statusKendaraan,k eterangan) VALUES(@noPolisi, @merekMobil, @tipe, @tahun, @kapasitasStd,
@kapasitasOpt, @statusKendaraan,@keterangan) CREATE PROC insBP
@kodeBP CHAR(10),
@jenisPembayaran CHAR(1),
@jmlPinjamanGalon SMALLINT = 0, @hargaPinjamanGalon MONEY = 0,
@kodePelanggan CHAR(10),
@kodePegawai CHAR(10)
AS
DECLARE @lastActiveBP CHAR(10)
IF EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai)
BEGIN
BEGIN TRAN T_BP
SELECT @lastActiveBP = kodeBP from BP WHERE kodePelanggan = @kodePelanggan AND statusBP = 1
IF @lastActiveBP IS NOT NULL BEGIN
UPDATE BP SET statusBP = 0 WHERE kodeBP = @lastActiveBP DELETE FROM JadwalKirim where kodeBP = @lastActiveBP END
INSERT INTO BP(kodeBP, tgl, jenisPembayaran, jmlPinjamanGalon, hargaPinjamanGalon, statusBP,kodePelanggan,kodePegawai)
VALUES(@kodeBP,getdate(),@jenisPembayaran,@jmlPinjamanGalon,@hargaPinjama nGalon,1,@kodePelanggan,@kodePegawai)
IF @@ERROR <> 0 BEGIN
PRINT 'Insert Gagal' ROLLBACK TRAN T_BP END
ELSE
COMMIT TRAN T_BP END
CREATE PROC insBPDetail
@kodeBP CHAR(10), @kodeBarang CHAR(6), @hargaBarang MONEY, @jmlDefaultKirim SMALLINT AS
INSERT INTO BPDetail(kodeBP,kodeBarang,hargaBarang,jmlDefaultKirim) VALUES(@kodeBP,@kodeBarang,@hargaBarang,@jmlDefaultKirim) CREATE PROC insJadwalKirim
@hariKirim VARCHAR(6),
@kodeBP CHAR(10)
AS
INSERT INTO JadwalKirim(hariKirim,kodeBP) VALUES(@hariKirim,@kodeBP) CREATE PROC insPO
@kodePO CHAR(10),
@tgl DATETIME,
@kodePegawai CHAR(10) AS
IF EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai)
BEGIN
INSERT INTO PO(kodePO,tgl,kodePegawai,kodeBP) VALUES(@kodePO,@tgl,@kodePegawai,@kodeBP) END
CREATE PROC insPODetail
@kodePO CHAR(10), @kodeBarang CHAR(6),
@qtyDiminta SMALLINT AS
INSERT INTO PODetail(kodePO,kodeBarang,qtyDiminta) VALUES(@kodePO,@kodeBarang,@qtyDiminta)
CREATE PROC insRKD
@kodeRKD CHAR(10), @tgl DATETIME, @keterangan VARCHAR(100), @kodePegawai CHAR(10), @kodeDriver CHAR(10), @kodeHelper1 CHAR(10), @kodeHelper2 CHAR(10), @kodeKendaraan VARCHAR(8) AS
IF EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai) AND
EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodeDriver) AND
EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodeHelper1) AND
EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodeHelper2)
BEGIN
INSERT INTO RKD(kodeRKD, tgl,keterangan, kodePegawai, kodeDriver,
kodeHelper1,kodeHelper2,kodeKendaraan) VALUES(@kodeRKD, @tgl, @keterangan, @kodePegawai, @kodeDriver, @kodeHelper1, @kodeHelper2,@kodeKendaraan) END
CREATE PROC insSJ
@kodePegawai CHAR(10), @kodePO CHAR(10) AS
DECLARE @lastCode CHAR(10) DECLARE @newCode CHAR(10)
DECLARE @temp CHAR(4) DECLARE @bulan CHAR(2)
IF EXISTS ( SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai )
BEGIN
SET @lastCode = '0'
SELECT TOP 1 @lastCode = kodeSJ FROM SJ ORDER BY kodeSJ DESC IF CAST(MONTH(GETDATE()) AS CHAR(2)) < 10
SET @bulan ='0'+ CAST(MONTH(GETDATE()) AS CHAR(2)) ELSE
SET @bulan =CAST(MONTH(GETDATE()) AS CHAR(2)) IF @lastCode = '0' OR SUBSTRING(@lastCode,3,4) <>
(CAST(RIGHT(YEAR(GETDATE()),2) AS CHAR(2)) + @bulan) BEGIN
SET @newCode = 'SJ' + CAST(RIGHT(YEAR(GETDATE()),2) AS CHAR(2)) + @bulan + '0001'
INSERT INTO SJ(kodeSJ,tgl,totalDijual,kodePegawai,kodePO) VALUES(@newCode,getdate(),0,@kodePegawai,@kodePO) END
ELSE BEGIN
SET @temp = CAST((CAST(SUBSTRING(@lastCode,7,4) AS INT) + 1) AS CHAR)
SET @newCode = SUBSTRING(@lastCode,1,6) + REPLICATE('0', 4 - LEN(@temp)) + @temp
INSERT INTO SJ(kodeSJ,tgl,totalDijual,kodePegawai,kodePO) VALUES(@newCode,getdate(),0,@kodePegawai,@kodePO) END
END
CREATE PROC insSJDetail
@kodeSJ CHAR(10), @kodeBarang CHAR(6), @qtyDijual SMALLINT, @keterangan VARCHAR(100), @kodePegawai CHAR(10) AS
DECLARE @jumlahDijual MONEY DECLARE @totalDijual MONEY DECLARE @harga MONEY
IF EXISTS (SELECT c.kodeBarang FROM SJ a INNER JOIN PO b ON a.kodePO = b.kodePO INNER JOIN PODetail c ON b.kodePO = c.kodePO
WHERE c.kodeBarang = @kodeBarang and kodeSJ = @kodeSJ) AND EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai) BEGIN
BEGIN TRAN T_SJDetail
SELECT @harga = hargaBarang FROM SJ a INNER JOIN PO b ON a.kodePO = b.kodePO INNER JOIN
BP c ON b.kodeBP = c.kodeBP INNER JOIN BPDetail d ON c.kodeBP = d.kodeBP WHERE d.kodeBarang = @kodeBarang
AND a.kodeSJ = @kodeSJ
SET @jumlahDijual = @qtyDijual * @harga
INSERT INTO SJDetail(kodeSJ,kodeBarang,qtyDijual,jumlahDijual,keterangan) VALUES(@kodeSJ,@kodeBarang,@qtyDijual,@jumlahDijual,@keterangan) SELECT @totalDijual = SUM(jumlahDijual) FROM SJDetail WHERE kodeSJ = @kodeSJ
UPDATE SJ SET totalDijual = @totalDijual WHERE kodeSJ = @kodeSJ IF @@ERROR <> 0
BEGIN
PRINT 'Insert Gagal'
ROLLBACK TRAN T_SJDetail END
ELSE
COMMIT TRAN T_SJDetail END
CREATE PROC insPenagihan
@kodeTagih CHAR(10), @kodePelanggan CHAR(10), @disc FLOAT, @ppn FLOAT, @jumlah MONEY, @totalPenagihan MONEY, @kodePegawai CHAR(10) AS
DECLARE @kodeSJ CHAR(10) DECLARE @bulan SMALLINT DECLARE @tahun SMALLINT SET @bulan = MONTH(GETDATE()) SET @tahun = YEAR(GETDATE())
IF EXISTS ( SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai )
BEGIN
BEGIN TRAN T_Tagih INSERT INTO
Penagihan(kodePenagihan,tglPenagihan,tglJatuhTempo,jumlah,disc,ppn,totalPenagihan, statusTagih,kodePegawaiTgh,kodepegawaiByr) VALUES(@kodeTagih, getdate(), DATEADD(DAY,10,getdate()),0,@disc,@ppn,0,0,@kodePegawai,@kodePegawai)
DECLARE CUR1 CURSOR FOR
SELECT kodeSJ FROM SJ a INNER JOIN PO b ON a.kodePO = b.kodePO INNER JOIN BP c ON b.kodeBP = c.kodeBP
WHERE kodePelanggan = @kodePelanggan AND MONTH(a.tgl) = @bulan AND YEAR(a.tgl) = @tahun
OPEN CUR1
FETCH NEXT FROM CUR1 INTO @kodeSJ WHILE @@FETCH_STATUS = 0
BEGIN
IF @kodeSJ IS NOT NULL BEGIN
UPDATE SJ SET kodePenagihan = @kodeTagih WHERE kodeSJ = @kodeSJ
END
FETCH NEXT FROM CUR1 INTO @kodeSJ END
CLOSE CUR1
DEALLOCATE CUR1
UPDATE Penagihan SET jumlah = @jumlah , totalPenagihan = @totalPenagihan WHERE kodePenagihan = @kodeTagih
IF @@ERROR <> 0 BEGIN
PRINT 'Insert Gagal'
ROLLBACK TRAN T_Tagih END
ELSE
COMMIT TRAN T_Tagih END
CREATE PROC insBPBJ
@kodeBPBJ CHAR(10),
@kodeRKD CHAR(10),
@kodePegawai CHAR(10) AS
IF EXISTS ( SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai )
BEGIN
INSERT INTO BPBJ(kodeBPBJ,tgl,kodeRKD,kodePegawai) VALUES(@kodeBPBJ,getdate(),@kodeRKD,@kodePegawai) END
CREATE PROC insBPBJDetail
@kodeBPBJ CHAR(10), @kodeBarang CHAR(6), @qtyDiberikan SMALLINT, @qtySisaBarang SMALLINT = 0, @keterangan VARCHAR(50) AS
DECLARE @lastValue SMALLINT DECLARE @temp SMALLINT
SELECT @lastValue = stok from Barang WHERE kodeBarang=@kodeBarang SET @temp = @lastValue - @qtyDiberikan
IF(@temp > 0) BEGIN INSERT INTO BPBJDetail(kodeBPBJ,kodeBarang,qtyDiberikan,qtySisaBarang,keterangan) VALUES(@kodeBPBJ,@kodeBarang,@qtyDiberikan,@qtySisaBarang,@ketera ngan)
UPDATE Barang SET stok = @temp WHERE kodeBarang = @kodeBarang END
ELSE BEGIN
PRINT 'Stok akhir sudah tidak dapat memenuhi barang yang diminta' END
CREATE PROC insBSTPJ
@kodeBSTPJ CHAR(10), @kodePegawai CHAR(10) AS
IF EXISTS ( SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai )
BEGIN
INSERT INTO BSTPJ(kodeBSTPJ,tgl,kodePegawai) VALUES(@kodeBSTPJ,getdate(),@kodePegawai) END
CREATE PROC insBSTPJDetail
@kodeBSTPJ CHAR(10), @kodeBarang CHAR(6),
@qtyMasuk SMALLINT
AS
BEGIN TRAN T_BSTPJDetail DECLARE @lastValue SMALLINT DECLARE @temp SMALLINT
SELECT @lastValue = stok FROM Barang WHERE kodeBarang=@kodeBarang IF(@lastValue = 0)
BEGIN
SET @temp = @lastValue+@qtyMasuk END
ELSE BEGIN
SET @temp = @lastValue+@qtyMasuk END
VALUES(@kodeBSTPJ,@kodeBarang,@qtyMasuk)
UPDATE Barang SET stok=@temp WHERE kodeBarang=@kodeBarang IF @@ERROR <> 0
BEGIN
PRINT 'Insert Gagal'
ROLLBACK TRAN T_BSTPJDetail END
ELSE
COMMIT TRAN T_BSTPJDetail
CREATE PROC insReturJual
@kodeReturJual CHAR(10), @kodePelanggan CHAR(10), @kodePegawai CHAR(10) AS
IF EXISTS ( SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai )
BEGIN
INSERT INTO ReturJual(kodeReturJual,tgl,kodePelanggan,kodePegawai) VALUES(@kodeReturJual,getdate(),@kodePelanggan,@kodePegawai) END
GO
CREATE PROC insReturJualDetail
@kodeReturJual CHAR(10), @kodeBarang CHAR(6), @qtyRetur SMALLINT, @keterangan VARCHAR(100) AS
INSERT INTO ReturJualDetail(kodeReturJual,kodeBarang,qtyRetur,keterangan) VALUES(@kodeReturJual,@kodeBarang,@qtyRetur,@keterangan)
CREATE PROC updPO
@kodePO CHAR(10), @kodeRkd CHAR(10) AS
IF EXISTS(SELECT kodePO FROM PO WHERE kodePO = @kodePO AND kodeRKD IS NULL)
BEGIN
UPDATE PO SET kodeRKD = @kodeRKD WHERE kodePO = @kodePO END
CREATE PROC updPONULL @kodePO CHAR(10) AS
UPDATE PO SET kodeRKD = NULL WHERE kodePO = @kodePO CREATE PROC updPODetail
@kodePO CHAR(10), @kodeBarang CHAR(6),
@qtyDiminta INT,
@kodePegawai CHAR(10) AS
IF EXISTS(SELECT kodePO FROM PO WHERE kodePO = @kodePO AND kodeRKD IS NULL) AND
EXISTS (SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai)
BEGIN
BEGIN TRAN T_updPODetail
UPDATE PO SET kodePegawai = @kodePegawai WHERE kodePO = @kodePO
UPDATE PODetail SET qtyDiminta = @qtyDiminta WHERE kodePO = @kodePO AND kodeBarang = @kodeBarang
END
IF @@ERROR <> 0 BEGIN
PRINT 'Update Gagal'
ROLLBACK TRAN T_updPODetail END
ELSE
COMMIT TRAN T_updPODetail CREATE PROC updPenagihan
@kodePenagihan CHAR(10), @tglBayar DATETIME, @kodeKolektor CHAR(10), @kodePegawai CHAR(10) AS
UPDATE Penagihan SET tglPembayaran = @tglBayar, kodeKolektor = @kodeKolektor, kodePegawaiByr = @kodePegawai, statusTagih = 1 WHERE kodePenagihan = @kodePenagihan
CREATE PROC updPelanggan
@kodePelanggan CHAR(10), @namaPelanggan VARCHAR(30), @alamatPengiriman VARCHAR(100), @kodeKelKirim CHAR(6), @alamatPenagihan VARCHAR(100), @kodeKelTagih CHAR(6), @NPWP VARCHAR(25), @statusPelanggan BIT AS
UPDATE Pelanggan SET namaPelanggan = @namaPelanggan, alamatPengiriman = @alamatPengiriman, kodeKelKirim = @kodeKelKirim,
alamatPenagihan = @alamatPenagihan,kodeKelTagih = @kodeKelTagih, NPWP = @NPWP,statusPelanggan = @statusPelanggan
WHERE kodePelanggan = @kodePelanggan CREATE PROC updJabatan
@nmJabatan VARCHAR(30), @kodeJabatan CHAR(6) AS
UPDATE Jabatan SET namaJabatan = @nmJabatan WHERE kodeJabatan = @kodeJabatan
CREATE PROC updPegawai
@kodePegawai CHAR(10), @namaPegawai VARCHAR(30), @alamatPegawai VARCHAR(100), @kodeKel CHAR(6), @tglLahir DATETIME, @jenisKelamin CHAR(1), @tglMasukKerja DATETIME, @noTelepon VARCHAR(12), @noHP VARCHAR(12), @kodeJabatan CHAR(6), @statusPegawai BIT AS
UPDATE Pegawai SET namaPegawai = @namaPegawai, alamatPegawai = @alamatPegawai, kodeKel = @kodeKel, tglLahir = @tglLahir, jenisKelamin = @jenisKelamin, tglMasukKerja = @tglMasukKerja,
noTelepon = @noTelepon,noHP = @noHP,kodeJabatan = @kodeJabatan,statusPegawai = @statusPegawai WHERE kodePegawai = @kodePegawai
CREATE PROC updBarang
@kodeBarang CHAR(6), @nmBarang VARCHAR(30),
@merek CHAR(30),
@satuan CHAR(30) AS
UPDATE Barang SET namaBarang = @nmBarang, merek = @merek, satuan = @satuan WHERE kodeBarang = @kodeBarang
CREATE PROC updKendaraan
@noPolisi VARCHAR(8), @merekMobil VARCHAR(30), @tipe VARCHAR(30),
@kapasitasStd SMALLINT, @kapasitasOpt SMALLINT, @statusKendaraan BIT, @keterangan VARCHAR(100) AS
UPDATE Kendaraan SET merekMobil = @merekMobil, tipe = @tipe, tahun = @tahun, kapasitasStd = @kapasitasStd,
kapasitasOpt = @kapasitasOpt, statusKendaraan = @statusKendaraan, keterangan = @keterangan WHERE noPolisi = @noPolisi
CREATE PROC updRKD
@kodeRKD CHAR(10), @keterangan VARCHAR(100), @kodePegawai CHAR(10), @kodeDriver CHAR(10), @kodeHelper1 CHAR(10), @kodeHelper2 CHAR(10), @kodeKendaraan VARCHAR(8) AS
UPDATE RKD SET keterangan = @keterangan, kodePegawai = @kodePegawai ,kodeDriver = @kodeDriver,
kodeHelper1 = @kodeHelper1, kodeHelper2 = @kodeHelper2, kodeKendaraan = @kodeKendaraan WHERE kodeRKD = @kodeRKD
CREATE PROC updKodePos
@oldKodePos INT,
@newKodePos INT
AS
UPDATE Pos SET kodePos = @newKodePos WHERE kodePos = @oldKodePos CREATE PROC updBPBJDetail
@kodeBPBJ CHAR(10), @kodeBarang CHAR(6), @qtySisa int, @ket VARCHAR(100), @kodePegawai CHAR(10) AS
IF EXISTS(SELECT kodePegawai FROM Pegawai WHERE kodePegawai = @kodePegawai)
BEGIN
BEGIN TRAN T_updBPBJDetail
UPDATE BPBJ SET kodePegawai = @kodePegawai WHERE kodeBPBJ = @kodeBPBJ
UPDATE BPBJDetail SET qtySisaBarang = @qtySisa , keterangan = @ket WHERE kodeBPBJ = @kodeBPBJ AND kodeBarang = @kodeBarang IF @@ERROR <> 0
PRINT 'Update Gagal'
ROLLBACK TRAN T_updBPBJDetail END
ELSE
COMMIT TRAN T_updBPBJDetail END
CREATE PROC updKota
@kodeKota CHAR(6), @namaKota VARCHAR(30) AS
UPDATE Kota SET namaKota = @namaKota WHERE kodeKota = @kodeKota CREATE PROC updKecamatan
@kodeKec CHAR(6),
@namaKec CHAR(50)
AS
UPDATE Kecamatan SET namaKec = @namaKec WHERE kodeKec = @kodeKec CREATE PROC updKelurahan
@kodeKel CHAR(6), @namaKel VARCHAR(50), @kodeKec CHAR(6), @kodeKota CHAR(6), @kodePos INT AS
UPDATE Kelurahan SET namaKel = @namaKel,kodeKec = @kodeKec, kodeKota = @kodeKota, kodePos = @kodePos WHERE kodeKel = @kodeKel
CREATE PROC updBSTPJDetail
@kodeBSTPJ CHAR(10), @kodeBarang CHAR(6),
@newQty INT
AS
BEGIN TRAN T_updBSTPJDetail
IF EXISTS (SELECT kodeBarang FROM BSTPJDetail WHERE kodeBSTPJ = @kodeBSTPJ AND kodeBarang = @kodeBarang)
BEGIN
UPDATE Barang SET stok = stok - (SELECT qtyMasuk FROM BSTPJDetail WHERE kodeBSTPJ = @kodeBSTPJ AND kodeBarang = @kodeBarang) WHERE kodeBarang = @kodeBarang
UPDATE Barang SET stok = stok + @newQty WHERE kodeBarang = @kodeBarang
UPDATE BSTPJDetail SET qtyMasuk = @newQty WHERE kodeBSTPJ = @kodeBSTPJ AND kodeBarang = @kodeBarang
END ELSE
EXEC insBSTPJDetail @kodeBSTPJ,@kodeBarang,@newQty IF @@ERROR <> 0
BEGIN
PRINT 'Update Gagal'
ROLLBACK TRAN T_updBSTPJDetail END
ELSE
COMMIT TRAN T_updBSTPJDetail CREATE PROC updReturJual
@kodeReturJual CHAR(10), @kodeBarang CHAR(6),
@qtyRetur INT,
@keterangan VARCHAR(100) AS
BEGIN TRAN T_updReturJual
IF EXISTS (SELECT kodeBarang FROM ReturJualDetail WHERE kodeReturJual = @kodeReturJual AND kodeBarang = @kodeBarang)
UPDATE ReturJualDetail SET qtyRetur = @qtyRetur, keterangan = @keterangan WHERE kodeReturJual = @kodeReturJual
AND kodeBarang = @kodeBarang ELSE
EXEC insReturJualDetail @kodeReturJual,@kodeBarang,@qtyRetur,@keterangan IF @@ERROR <> 0
BEGIN
PRINT 'Update Gagal'
ROLLBACK TRAN T_updReturJual END
ELSE
COMMIT TRAN T_updReturJual CREATE PROC delPelanggan
@kodePlgn CHAR(10) AS
DELETE FROM Pelanggan WHERE kodePelanggan = @kodePlgn GO
CREATE PROC delJabatan
@kodeJabatan CHAR(6) AS
DELETE FROM Jabatan WHERE kodeJabatan = @kodeJabatan CREATE PROC delBarang
@kodeBarang CHAR(6) AS
CREATE PROC delKendaraan
@noPolisi VARCHAR(8) AS
DELETE FROM Kendaraan WHERE noPolisi = @noPolisi CREATE PROC delPO
@kodePO CHAR(10)
AS
IF EXISTS (SELECT kodePO FROM PO WHERE kodePO = @kodePO AND kodeRKD IS NULL)
BEGIN
DELETE FROM PO WHERE kodePO = @kodePO END
CREATE PROC delPODetail
@kodePO CHAR(10), @kodeBarang CHAR(6) AS
IF EXISTS (SELECT kodePO FROM PO WHERE kodePO = @kodePO AND kodeRKD IS NULL)
BEGIN
DELETE FROM PODetail WHERE kodePO = @kodePO AND kodeBarang = @kodeBarang
END
CREATE PROC delBSTPJ
@kodeBSTPJ CHAR(10) AS
BEGIN TRAN T_delBSTPJ
DECLARE @kodeBarang CHAR(10) DECLARE @qtyMasuk INT
DECLARE cur1 CURSOR FOR
SELECT kodeBarang, qtyMasuk FROM BSTPJDetail WHERE kodeBSTPJ = @kodeBSTPJ
OPEN cur1
FETCH NEXT FROM cur1 INTO @kodeBarang,@qtyMasuk WHILE (@@FETCH_STATUS <> 0)
BEGIN
UPDATE Barang SET stok = stok - @qtyMasuk WHERE kodeBarang = @kodeBarang
FETCH NEXT FROM cur1 INTO @kodeBarang,@qtyMasuk END
DELETE FROM BSTPJ WHERE kodeBSTPJ = @kodeBSTPJ IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN T_delBSTPJ END
ELSE
COMMIT TRAN T_delBSTPJ CREATE PROC delBSTPJDetail
@kodeBSTPJ CHAR(10), @kodeBarang CHAR(6) AS
BEGIN TRAN T_delBSTPJDetail
UPDATE Barang SET stok = stok - (SELECT qtyMasuk FROM BSTPJDetail WHERE kodeBSTPJ = @kodeBSTPJ
AND kodeBarang = @kodeBarang) WHERE kodeBarang = @kodeBarang
DELETE FROM BSTPJDetail WHERE kodeBSTPJ = @kodeBSTPJ AND kodeBarang = @kodeBarang
IF @@ERROR <> 0 BEGIN
PRINT 'Update Gagal'
ROLLBACK TRAN T_delBSTPJDetail END
ELSE
COMMIT TRAN T_delBSTPJDetail CREATE PROC delReturJual
@kodeReturJual CHAR(10) AS
DELETE FROM ReturJual WHERE kodeReturJual = @kodeReturJual CREATE PROC delReturJualDetail
@kodeReturJual CHAR(10), @kodeBarang CHAR(6) AS
DELETE FROM ReturJualDetail WHERE kodeReturJual = @kodeReturJual AND kodeBarang = @kodeBarang
CREATE PROC delKota
@kodeKota CHAR(6) AS
DELETE FROM Kota WHERE kodeKota = @kodeKota CREATE PROC delKecamatan
@kodeKecamatan CHAR(6) AS
DELETE FROM Kecamatan WHERE kodeKec = @kodeKecamatan CREATE PROC delPos
AS
DELETE FROM Pos WHERE kodePos = @kodePos CREATE PROC delKelurahan
@kodeKel CHAR(6)
AS
IF NOT EXISTS (SELECT kodeKelKirim FROM Pelanggan WHERE kodeKelKirim = @kodeKel)
AND NOT EXISTS (SELECT kodeKelTagih FROM Pelanggan WHERE kodeKelTagih = @kodeKel)
DELETE FROM Kelurahan WHERE kodeKel = @kodeKel CREATE PROC delTelpPlgn
@kodePelanggan CHAR(10) AS
DELETE FROM TeleponPlgn WHERE kodePelanggan = @kodePelanggan CREATE PROC delFaxPlgn
@kodePelanggan CHAR(10) AS
CODING CREATE TRIGGER
CREATE TRIGGER trgPegawai ON Pegawai
FOR UPDATE AS
IF UPDATE (kodePegawai) BEGIN
update BP set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update PO set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update Penagihan set kodePegawaiTgh = (select kodePegawai from inserted) where kodePegawaiTgh = (select kodePegawai from deleted)
update Penagihan set kodePegawaiByr = (select kodePegawai from inserted) where kodePegawaiByr = (select kodePegawai from deleted)
update Penagihan set kodeKolektor = (select kodePegawai from inserted) where kodeKolektor = (select kodePegawai from deleted)
update SJ set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update BSTPJ set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update ReturJual set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update BPBJ set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
update RKD set kodeDriver = (select kodePegawai from inserted) where kodeDriver = (select kodePegawai from deleted)
update RKD set kodeHelper1 = (select kodePegawai from inserted) where kodeHelper1 = (select kodePegawai from deleted)
update RKD set kodeHelper2 = (select kodePegawai from inserted) where kodeHelper2 = (select kodePegawai from deleted)
update RKD set kodePegawai = (select kodePegawai from inserted) where kodePegawai = (select kodePegawai from deleted)
END
CREATE TRIGGER trgPegawaiDel ON Pegawai
FOR DELETE AS
IF EXISTS (SELECT kodePegawai FROM BP WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM PO WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawaiTgh FROM Penagihan WHERE kodePegawaiTgh = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawaiByr FROM Penagihan WHERE kodePegawaiByr = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodeKolektor FROM Penagihan WHERE kodeKolektor = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM SJ WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM BSTPJ WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM ReturJual WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM BPBJ WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodeDriver FROM RKD WHERE kodeDriver = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodeHelper1 FROM RKD WHERE kodeHelper1 = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodeHelper2 FROM RKD WHERE kodeHelper2 = (SELECT kodePegawai FROM deleted))
OR EXISTS (SELECT kodePegawai FROM RKD WHERE kodePegawai = (SELECT kodePegawai FROM deleted))
BEGIN
INSERT INTO Pegawai SELECT * FROM deleted PRINT 'Kelurahan tidak dapat dihapus'
END
CREATE TRIGGER trgKelurahan ON Kelurahan
FOR UPDATE AS IF UPDATE (kodeKel)
BEGIN
update Pelanggan set kodeKelKirim = (select kodeKel from inserted) where kodeKelKirim = (select kodeKel from deleted)
update Pelanggan set kodeKelTagih = (select kodeKel from inserted) where kodeKelTagih = (select kodeKel from deleted)
END
CREATE TRIGGER trgKelurahanDel ON Kelurahan
FOR DELETE AS
IF EXISTS (SELECT kodeKelKirim FROM Pelanggan WHERE kodeKelKirim = (SELECT kodeKel FROM deleted))
OR EXISTS (SELECT kodeKelTagih FROM Pelanggan WHERE kodeKelTagih = (SELECT kodeKel FROM deleted))
BEGIN
INSERT INTO Kelurahan SELECT * FROM deleted
PRINT 'Kelurahan tidak dapat dihapus' END
CODING CREATE INDEX
CREATE UNIQUE INDEX KotaKodeKotaInd ON Kota (kodeKota) CREATE INDEX KotaNamaKotaInd ON Kota (namaKota)
CREATE UNIQUE INDEX KelurahanKodeKelInd ON Kelurahan (kodeKel) CREATE INDEX KelurahanNamaKelInd ON Kelurahan (namaKel)
CREATE UNIQUE INDEX PosKodePosInd ON Pos (kodePos)
CREATE UNIQUE INDEX KecamatanKodeKecInd ON Kecamatan (kodeKec) CREATE INDEX KecamatanNamaKecInd ON Kecamatan (namaKec)
CREATE UNIQUE INDEX PelangganKodePelangganInd ON Pelanggan (kodePelanggan)
CREATE INDEX PelangganNamaPelangganInd ON Pelanggan (namaPelanggan) CREATE UNIQUE INDEX TeleponPlgnNoTeleponInd ON TeleponPlgn (noTelepon) CREATE INDEX TeleponKodePelangganInd ON TeleponPlgn (kodePelanggan) CREATE UNIQUE INDEX FaxPlgnNoFaxInd ON FaxPlgn (noFax)
CREATE INDEX FaxPlgnKodePelangganInd ON FaxPlgn (kodePelanggan) CREATE UNIQUE INDEX JabatanKodeJabatanInd ON Jabatan (kodeJabatan) CREATE INDEX JabatanNamaJabatanInd ON Jabatan (namaJabatan)
CREATE UNIQUE INDEX PegawaiKodePegawaiInd ON Pegawai (kodePegawai) CREATE INDEX PegawaiNamaPegawaiInd ON Pegawai (namaPegawai)
CREATE UNIQUE INDEX BarangKodeBarangInd ON Barang (kodeBarang) CREATE INDEX BarangNamaBarangInd ON Barang (namaBarang)
CREATE UNIQUE INDEX KendaraanNoPolisiInd ON Kendaraan (noPolisi) CREATE UNIQUE INDEX RKDKodeRKDInd ON RKD (kodeRKD)
CREATE INDEX RKDTanggalInd ON RKD (tgl)
CREATE INDEX RKDKodeKendaraanInd ON RKD(kodeKendaraan) CREATE INDEX RKDKodeDriverInd ON RKD(kodeDriver)
CREATE INDEX RKDKodeHelper1Ind ON RKD(kodeHelper1) CREATE INDEX RKDKodeHelper2Ind ON RKD(kodeHelper2) CREATE INDEX RKDKodePegawaiInd ON RKD(kodePegawai) CREATE UNIQUE INDEX BPKodeBPInd ON BP (kodeBP) CREATE INDEX BPTanggalInd ON BP (tgl)
CREATE INDEX BPKodePelangganInd ON BP (kodePelanggan) CREATE INDEX BPKodePegawaiInd ON BP (kodePegawai)
CREATE UNIQUE INDEX BPDetailKodeBPKodeBarangInd ON BPDetail (kodeBP,kodeBarang)
CREATE INDEX BPDetailKodeBPInd ON BPDetail (kodeBP)
CREATE INDEX BPDetailKodeBarangInd ON BPDetail (kodeBarang)
CREATE UNIQUE INDEX JadwalKirimHariKirimKodeBPInd ON JadwalKirim (hariKirim,kodeBP)
CREATE INDEX JadwalKirimHariKirimInd ON JadwalKirim (hariKirim) CREATE INDEX JadwalKirimKodeBPInd ON JadwalKirim (kodeBP) CREATE UNIQUE INDEX PenagihanKodePenagihanInd ON Penagihan (kodePenagihan)