• Tidak ada hasil yang ditemukan

TAMPILAN LAYAR PROTOTIPE APLIKASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "TAMPILAN LAYAR PROTOTIPE APLIKASI"

Copied!
96
0
0

Teks penuh

(1)

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

(2)

- 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.

(3)

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.

(4)

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

(5)

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”.

(6)

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.

(7)

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.

(8)

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.

(9)

Tampilan Layar View Pegawai

Layar ini digunakan untuk menampilkan semua daftar pegawai yang ada di dalam database.

(10)

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.

(11)

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.

(12)

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.

(13)

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

(14)

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.

(15)

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.

(16)

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

(17)

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.

(18)

Master Æ Wilayah Æ Kota

Tampilan Layar Add Kota

Layar ini digunakan untuk menambah data Kota ke dalam database.

Tampilan Layar View Kota

(19)

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.

(20)

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

(21)

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.

(22)

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 :

(23)

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.

(24)

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.

(25)

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.

(26)

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.

(27)

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.

(28)

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.

(29)

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.

(30)

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.

(31)

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.

(32)

Tampilan Layar View PO

Layar ini digunakan untuk menampilkan data PO dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.

(33)

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.

(34)

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.

(35)

Tampilan Layar View Retur Jual

Layar ini digunakan untuk menampilkan data retur pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.

(36)

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.

(37)

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.

(38)

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.

(39)

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

(40)

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.

(41)

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

(42)

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.

(43)

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.

(44)

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.

(45)

Tampilan Layar View SJ

Layar ini digunakan untuk menampilkan seluruh daftar SJ pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user

(46)

Laporan Æ Penjualan

(47)

Laporan Æ Persediaan Barang

(48)

Laporan Æ Retur Jual

Tampilan Layar Laporan Retur Jual Laporan Æ Barang Masuk

(49)

Laporan Æ Barang Keluar

Tampilan Layar Laporan Barang Keluar Layar Pencarian

(50)

Tampilan Layar Pencarian BPBJ

(51)

Tampilan Layar Pencarian Jabatan

(52)

Tampilan Layar Pencarian Kelurahan

(53)

Tampilan Layar Pencarian Kode Pos

(54)

Tampilan Layar Pencarian Pegawai

(55)

Tampilan Layar Pencarian PO

(56)

Tampilan Layar Pencarian SJ

(57)

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)

(58)

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),

(59)

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),

(60)

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 (

(61)

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 (

(62)

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),

(63)

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) )

(64)

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)

(65)

)

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) )

(66)

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)

(67)

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

(68)

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)

(69)

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,

(70)

@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,

(71)

@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)

(72)

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

(73)

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

(74)

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

(75)

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

(76)

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

(77)

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

(78)

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),

(79)

@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

(80)

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

(81)

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

(82)

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

(83)

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

(84)

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

(85)

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))

(86)

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

(87)

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)

Referensi

Dokumen terkait

Hasil penelitian ini menunjukkan bahwa hubungan antara kemampuan metakognisi terhadap penguasaan konsep kimia siswa, efikasi diri terhadap penguasaan

Mengetahui apakah layak atau tidak rencana investasi pembangunan perumahan di Kelurahan Mojosongo, Kecamatan Jebres, Kota Surakarta dari kajian ekonomi4.

Oleh Tim Yuri, pesan harapan itu dijadikan sebagai kriteria penilaian yang kemudian dirinci menjadi lima kriteria meliputi harus memenuhi ketentuan apa yang

Jika karyawan memiliki persepsi yang baik akan sistem penilaian kinerja dalam arti memahami dan menyetujui sistem penilaian kinerja yang diterapkan perusahaan dan

Badan Hukum Indonesia dapat menyelenggarakan salah satu atau beberapa bagian dari Jasa Kebandarudaraan sebagaimana disebutkan dalam pasal 3 dibawah Badan Usaha

Terdakwa telah pernah dihukum Pengadilan Negeri Surabaya pada Agustus 1992 selama 2 bulan penjara dan dihukum lagi oleh Pengadilan Negeri Jakarta Utara selama 55 hari untuk

Gerakan politik yang lain yang dilakukan ICMI ialah mendesak pemerintah MPR DPR dan pemerintah untuk segera melaksanakan Tap MPR yang mengamanatkan penghentian kerja sama dengan

Kepuasan kerja adalah keadaan emosional pegawai home industry kasur lantai Jelita dimana terjadi titik temu antara balas jasa dari perusahaan dengan nilai tingkat balas