L1 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
L2 - 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.
L3 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.
L4
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 Layar ini digunakan untuk menambah data jabatan ke dalam database.
L5
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”.
L6 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.
L7
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.
L8 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.
L9
Tampilan Layar View Pegawai Layar ini digunakan untuk menampilkan semua daftar pegawai yang ada di dalam database.
L10
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.
L11 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.
L12
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.
L13
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 Layar ini digunakan untuk menambah data Kecamatan ke dalam database.
L14
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.
L15 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.
L16
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 Layar ini digunakan untuk menambah data kode pos ke dalam database.
L17
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.
L18 Master Æ Wilayah Æ Kota
Tampilan Layar Add Kota Layar ini digunakan untuk menambah data Kota ke dalam database.
Tampilan Layar View Kota Layar ini digunakan untuk menampilkan semua daftar Kota yang ada di dalam database.
L19
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.
L20 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
L21
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.
L22 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 :
L23
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.
L24 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.
L25
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.
L26
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.
L27 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.
L28
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.
L29 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.
L30
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.
L31 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.
L32
Tampilan Layar View PO Layar ini digunakan untuk menampilkan data PO dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
L33
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.
L34 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.
L35
Tampilan Layar View Retur Jual Layar ini digunakan untuk menampilkan data retur pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user.
L36
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.
L37 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.
L38 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.
L39
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
L40 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.
L41
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
L42 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.
L43
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.
L44 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.
L45
Tampilan Layar View SJ Layar ini digunakan untuk menampilkan seluruh daftar SJ pelanggan dari database. Data ditampilkan berdasarkan rentang waktu yang ditentukan oleh user
L46 Laporan Æ Penjualan
Tampilan Layar Laporan Penjualan
L47 Laporan Æ Persediaan Barang
Tampilan Layar Laporan Persediaan Barang
L48 Laporan Æ Retur Jual
Tampilan Layar Laporan Retur Jual Laporan Æ Barang Masuk
Tampilan Layar Laporan Barang Jadi Masuk
L49 Laporan Æ Barang Keluar
Tampilan Layar Laporan Barang Keluar Layar Pencarian
Tampilan Layar Pencarian Wilayah
L50
Tampilan Layar Pencarian BPBJ
Tampilan Layar Pencarian Barang
L51
Tampilan Layar Pencarian Jabatan
Tampilan Layar Pencarian Kecamatan
L52
Tampilan Layar Pencarian Kelurahan
Layar Pencarian Kendaraan
L53
Tampilan Layar Pencarian Kode Pos
Tampilan Layar Pencarian Kota
L54
Tampilan Layar Pencarian Pegawai
Tampilan Layar Pencarian Pelanggan
L55
Tampilan Layar Pencarian PO
Tampilan Layar Pencarian RKD
L56
Tampilan Layar Pencarian SJ
Tampilan Layar Pencarian Tagihan
L57 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) )
L58 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),
L59 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),
L60 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 ( kodeBP CHAR(10) NOT NULL,
L61 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 (
L62 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),
L63 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) )
L64 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)
L65 ) 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) )
L66 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) SET @newCode = 'BRG' + REPLICATE('0',3 - LEN(@temp)) + @temp
L67 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
L68 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)
L69 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,
L70 @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, @kodeBP CHAR (10),
L71 @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)
L72 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 UPDATE SJ SET kodePegawai = @kodePegawai WHERE kodeSJ = @kodeSJ
L73 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
L74 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
L75 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 INSERT INTO BSTPJDetail(kodeBSTPJ,kodeBarang,qtyMasuk)
L76 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 IF NOT EXISTS (SELECT kodeSJ FROM SJ WHERE kodePO = @kodePO )
L77 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
L78 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), @tahun SMALLINT,
L79 @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 BEGIN
L80 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
L81 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 DELETE FROM Barang WHERE kodeBarang = @kodeBarang
L82 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 PRINT 'Update Gagal'
L83 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 @kodePos INT
L84 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 DELETE FROM FaxPlgn WHERE kodePelanggan = @kodePelanggan
L85 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))
L86 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
L87
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) CREATE INDEX PenagihanTglPenagihanInd ON Penagihan (tglPenagihan)
L88 CREATE INDEX PenagihanTglJatuhTempoInd ON Penagihan (tglJatuhTempo) CREATE INDEX PenagihanTglPembayaranInd ON Penagihan (tglPembayaran) CREATE INDEX PenagihanKodeKolektorInd ON Penagihan (kodeKolektor) CREATE INDEX PenagihanKodePegawaiTghInd ON Penagihan (kodePegawaiTgh) CREATE INDEX PenagihanKodePegawaiByrInd ON Penagihan (kodePegawaiByr) CREATE UNIQUE INDEX POKodePOInd ON PO (kodePO) CREATE INDEX POTanggalInd ON PO (tgl) CREATE INDEX POKodePegawaiInd ON PO (kodePegawai) CREATE UNIQUE INDEX PODetailKodePOKodeBarangInd ON PODetail (kodePO,kodeBarang) CREATE INDEX PODetailKodePOInd ON PODetail (kodePO) CREATE INDEX PODetailKodeBarangInd ON PODetail (kodeBarang) CREATE UNIQUE INDEX SJKodeSJInd ON SJ (kodeSJ) CREATE INDEX SJTanggalInd ON SJ (tgl) CREATE INDEX SJKodePOInd ON SJ (kodePO) CREATE INDEX SJKodePegawaiInd ON SJ (kodePegawai) CREATE INDEX SJKodePenagihanInd ON SJ (kodePenagihan) CREATE UNIQUE INDEX SJDetailKodeSJKodeBarangInd ON SJDetail (kodeSJ,kodeBarang) CREATE INDEX SJDetailKodeSJInd ON SJDetail (kodeSJ) CREATE INDEX SJDetailKodeBarangInd ON SJDetail (kodeBarang) CREATE UNIQUE INDEX BPBJKodeBPBJInd ON BPBJ (kodeBPBJ) CREATE INDEX BPBJTanggalInd ON BPBJ (tgl) CREATE INDEX BPBJKodeRKDInd ON BPBJ (kodeRKD) CREATE INDEX BPBJKodePegawaiInd ON BPBJ (kodePegawai) CREATE UNIQUE INDEX BPBJDetailKodeBPBJKodeBarangInd ON BPBJDetail (kodeBPBJ,kodeBarang) CREATE INDEX BPBJDetailKodeBPBJInd ON BPBJDetail (kodeBPBJ) CREATE INDEX BPBJDetailKodeBarangInd ON BPBJDetail (kodeBarang) CREATE UNIQUE INDEX BSTPJKodeBSTPJInd ON BSTPJ (kodeBSTPJ) CREATE INDEX BSTPJTanggalInd ON BSTPJ (tgl) CREATE INDEX BSTPJKodePegawaiInd ON BSTPJ (kodePegawai) CREATE UNIQUE INDEX BSTPJDetailKodeBSTPJKodeBarangInd ON BSTPJDetail (kodeBSTPJ,kodeBarang) CREATE INDEX BSTPJDetailKodeBSTPJInd ON BSTPJDetail (kodeBSTPJ) CREATE INDEX BSTPJDetailKodeBarangInd ON BSTPJDetail (kodeBarang) CREATE UNIQUE INDEX ReturJualKodeReturInd ON ReturJual (kodeReturJual) CREATE INDEX ReturJualTanggalInd ON ReturJual (tgl) CREATE INDEX ReturJualKodePelangganInd ON ReturJual (kodePelanggan) CREATE INDEX ReturJualKodePegawaiInd ON ReturJual (kodePegawai) CREATE UNIQUE INDEX ReturJualDetailKodeReturKodeBarangInd ON ReturJualDetail (kodeReturJual,kodeBarang) CREATE INDEX ReturJualDetailKodeReturInd ON ReturJualDetail (kodeReturJual) CREATE INDEX ReturJualDetailKodeBarangInd ON ReturJualDetail (kodeBarang)
L89 HAK AKSES USER
GRANT SELECT, INSERT, UPDATE, DELETE ON Jabatan TO Admin WITH GRANT OPTION GRANT SELECT ON Jabatan TO Distribusi GRANT SELECT ON Jabatan TO Gudang GRANT SELECT ON Jabatan TO Kasir GRANT SELECT ON Jabatan TO Keuangan GRANT SELECT ON Jabatan TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON Jabatan TO Personalia GRANT SELECT, INSERT, UPDATE, DELETE ON Barang TO Admin WITH GRANT OPTION GRANT SELECT ON Barang TO Distribusi GRANT SELECT, UPDATE ON Barang TO Gudang GRANT SELECT ON Barang TO Kasir GRANT SELECT ON Barang TO Keuangan GRANT SELECT ON Barang TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON Kota TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON Kota TO Distribusi GRANT SELECT ON Kota TO Penjualan GRANT SELECT, INSERT, UPDATE ON Kecamatan TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON Kecamatan TO Distribusi GRANT SELECT ON Kecamatan TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON Pos TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON Pos TO Distribusi GRANT SELECT ON Pos TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON Kelurahan TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON Kelurahan TO Distribusi GRANT SELECT ON Kelurahan TO Penjualan GRANT SELECT, INSERT, UPDATE ON Pegawai TO Admin WITH GRANT OPTION GRANT SELECT ON Pegawai TO Distribusi GRANT SELECT ON Pegawai TO Gudang GRANT SELECT ON Pegawai TO Kasir GRANT SELECT ON Pegawai TO Keuangan GRANT SELECT ON Pegawai TO Penjualan GRANT SELECT, INSERT, UPDATE ON Pegawai TO Personalia GRANT SELECT, INSERT, UPDATE, DELETE ON Pelanggan TO Admin WITH GRANT OPTION GRANT SELECT ON Pelanggan TO Distribusi GRANT SELECT ON Pelanggan TO Kasir GRANT SELECT ON Pelanggan TO Keuangan
L90 GRANT SELECT, INSERT, UPDATE, DELETE ON Pelanggan TO Penjualan GRANT SELECT, INSERT, DELETE ON TeleponPlgn TO Admin WITH GRANT OPTION GRANT SELECT ON TeleponPlgn TO Distribusi GRANT SELECT ON TeleponPlgn TO Kasir GRANT SELECT ON TeleponPlgn TO Keuangan GRANT SELECT, INSERT, DELETE ON TeleponPlgn TO Penjualan GRANT SELECT, INSERT, DELETE ON FaxPlgn TO Admin WITH GRANT OPTION GRANT SELECT ON FaxPlgn TO Distribusi GRANT SELECT ON FaxPlgn TO Kasir GRANT SELECT ON FaxPlgn TO Keuangan GRANT SELECT, INSERT, DELETE ON FaxPlgn TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON Kendaraan TO Admin WITH GRANT OPTION GRANT SELECT ON Kendaraan TO Distribusi GRANT SELECT ON Kendaraan TO Gudang GRANT SELECT, INSERT, UPDATE ON BP TO Admin WITH GRANT OPTION GRANT SELECT ON BP TO Distribusi GRANT SELECT ON BP TO Kasir GRANT SELECT ON BP TO Keuangan GRANT SELECT, INSERT, UPDATE ON BP TO Penjualan GRANT SELECT, INSERT ON BPDetail TO Admin WITH GRANT OPTION GRANT SELECT ON BPDetail TO Distribusi GRANT SELECT ON BPDetail TO Kasir GRANT SELECT ON BPDetail TO Keuangan GRANT SELECT, INSERT ON BPDetail TO Penjualan GRANT SELECT, INSERT, DELETE JadwalKirim TO Admin WITH GRANT OPTION GRANT SELECT ON JadwalKirim TO Distribusi GRANT SELECT ON JadwalKirim TO Gudang GRANT SELECT, INSERT, DELETE ON JadwalKirim TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON RKD TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON RKD TO Distribusi GRANT SELECT ON RKD TO Gudang GRANT SELECT, INSERT, UPDATE, DELETE ON PO TO Admin WITH GRANT OPTION GRANT SELECT ON PO TO Distribusi GRANT SELECT ON PO TO Kasir GRANT SELECT ON PO TO Keuangan GRANT SELECT, INSERT, UPDATE, DELETE ON PO TO Penjualan GRANT SELECT, INSERT, UPDATE ON PODetail TO Admin WITH GRANT OPTION GRANT SELECT ON PODetail TO Distribusi GRANT SELECT ON PODetail TO Kasir GRANT SELECT ON PODetail TO Keuangan
L91 GRANT SELECT, INSERT, UPDATE, DELETE ON PODetail TO Penjualan GRANT SELECT, INSERT, UPDATE ON Penagihan TO Admin WITH GRANT OPTION GRANT SELECT ON Penagihan TO Kasir GRANT SELECT ON Penagihan TO Keuangan GRANT SELECT, INSERT, UPDATE ON Penagihan TO Penjualan GRANT SELECT, INSERT, UPDATE ON SJ TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE ON SJ TO Distribusi GRANT SELECT ON SJ TO Kasir GRANT SELECT ON SJ TO Keuangan GRANT SELECT ON SJ TO Penjualan GRANT SELECT, INSERT, UPDATE ON SJDetail TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE ON SJDetail TO Distribusi GRANT SELECT ON SJDetail TO Kasir GRANT SELECT ON SJDetail TO Keuangan GRANT SELECT ON SJDetail TO Penjualan GRANT SELECT, INSERT, UPDATE ON BPBJ TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE ON BPBJ TO Distribusi GRANT SELECT ON BPBJ TO Gudang GRANT SELECT ON BPBJ TO Penjualan GRANT SELECT, INSERT, UPDATE ON BPBJDetail TO Admin WITH GRANT OPTION GRANT SELECT, INSERT ON BPBJDetail TO Distribusi GRANT SELECT, UPDATE ON BPBJDetail TO Gudang GRANT SELECT ON BPBJDetail TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJ TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJ TO Gudang GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJDetail TO Admin WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJDetail TO Gudang GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJ TO Admin WITH GRANT OPTION GRANT SELECT ON BSTPJ TO Distribusi GRANT SELECT, INSERT, UPDATE, DELETE ON BSTPJ TO Gudang GRANT SELECT ON BSTPJ TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON ReturJual TO Admin WITH GRANT OPTION GRANT SELECT ON ReturJual TO Distribusi GRANT SELECT, INSERT, UPDATE, DELETE ON ReturJual TO Gudang GRANT SELECT ON ReturJual TO Penjualan GRANT SELECT, INSERT, UPDATE, DELETE ON ReturJualDetail TO Admin WITH GRANT OPTION GRANT SELECT ON ReturJualDetail TO Distribusi GRANT SELECT, INSERT, UPDATE, DELETE ON ReturJualDetail TO Gudang GRANT SELECT ON ReturJualDetail TO Penjualan
L92 TRANSKRIP WAWANCARA
1. Perusahaan ini bergerak dibidang apa dan kapan didirikannya ? PT Mejisinar Kasih merupakan perusahaan yang bergerak di bidang Air Minum Dalam Kemasan (AMDK). Perusahaan ini didirikan pada tanggal 14 Juni 1990 dan beralamat di Jalan Raya Bogor Km. 26,6 Ciracas Jakarta 13069. Pada awalnya perusahaan ini berada dalam manajemen PT Astra Internasional, selama berada di bawah manajemen PT Astra, PT Mejisinar Kasih mulai berkembang menjadi perusahaan menengah dan produknya mulai dikenal oleh masyarakat. Pada tahun 1998 terjadi krisis moneter yang menyebabkan perusahaan ini terpaksa berhenti beroperasi selama 4 tahun, dan pada tahun 2002 PT Mejisinar Kasih berganti kepemilikan dan sudah tidak dibawah manajemen PT Astra Internasional lagi. 2. Apa visi dan misi perusahaan ini ? PT Mejisinar Kasih memiliki sebuah visi yaitu berkomitmen untuk selalu memenuhi harapan dan kepuasan pelanggan dalam hal mutu produk Air Minum Dalam Kemasan (AMDK) yang akan diberikan. Sedangkan misinya adalah bertekad untuk selalu memenuhi mutu produksi dan menjaga secara konsisten berdasarkan pada acuan Standar Nasional Indonesia (SNI) 01 – 3553 – 1996. 3. Perusahaan ini menjual produk apa saja ? Untuk saat ini PT Mejisinar Kasih sudah mempunyai dua buah merek dagang, yaitu Bonanza dan Osmosis. Masing – masing merek memproduksi produk air minum dalam kemasan gelas, botol, dan galon. 4. Bahan baku air yang digunakan berasal dari mana ? Bahan baku air yang digunakan berasal dari sumur dalam yang kemudian diproses kembali dengan menggunakan metode Reverse Osmosis. Metode ini digunakan untuk mengeluarkan partikel – partikel zat padat yang terlarut dalam air sehingga kadar TDS yang terkandung dalam air tersebut semakin kecil. 5. Proses bisnis apa saja yang terlibat pada saat transakski penjualan dilakukan ? Pada awalnya jika ada seseorang yang ingin menjadi pelanggan tetap kami (PT Mejisinar Kasih), maka ia harus melakukan proses pendaftaran terlebih dahulu kepada staff bagian pemasaran / distribusi. Proses ini dapat memakan waktu hingga satu minggu lamanya, karena staff bagian distribusi harus melakukan survei terhadap alamat calon pelanggan dan mengecek apakah jadwal pengiriman beserta barang – barang yang ingin dipesan dapat memenuhi kondisi yang ada. Setelah staff bagian distribusi menyatakan bahwa calon pelanggan tersebut dapat dilayani pesanannya, maka staff bagian penjualan akan menerbitkan BP (Bukti Pendaftaran) yang berisi
L93 data diri pelanggan beserta jadwal kirim, nama barang apa saja yang akan dikirim beserta harga dari masing – masing barang yang akan dikirim. Setiap hari staff bagian penjualan akan menerbitkan PO (Purchase Order) yang berisi daftar barang yang dipesan oleh pelanggan berdasarkan BP yang telah diterbitkan. PO tersebut kemuadian akan diberikan kepada bagian distribusi untuk dibuatkan RKD (Rencana Kerja Distribusi). RKD berisi daftar nama pelanggan yang akan dikirimkan pesanannya sesuai dengan PO yang ada. Bagian distribusi juga akan menerbitkan BPBJ (Bukti Pengeluaran Barang Jadi) dan SJ (Surat Jalan) yang kemudian akan diberikan kepada bagian gudang. Bagian gudang akan mempersiapkan barang untuk dimasukan kedalam kendaraan sesuai dengan daftar barang dan jumlah yang tertera di BPBJ. Kemudian staff bagian gudang akan menyerahkan kendaraan yang telah terisi barang kepada driver yang namanya tercantum dalam RKD beserta dengan seluruh SJ yang sebelumnya telah diberikan oleh staff bagian distribusi. Setelah itu driver akan mengirimkan barang kepada pelanggan sesuai dengan alamat pengiriman pelanggan masing – masing. Pelanggan dapat melakukan retur barang, dengan menukarkan barang yang rusak atau cacat kepada driver pada saat driver mengirimkan barang kepada pelanggan yang bersangkutan. Driver kemudian akan mengecek apakah barang tersebut dapat ditukarkan dengan yang baru, jika ternyata bisa maka barang yang diretur tersebut akan langsung ditukarkankan dengan yang baru jika masih tersedia kelebihan barang di dalam kendaraan. Setelah itu driver akan menerbitkan BR (Bukti Retur) yang berisi nama barang dan jumlah barang yang di tukar. Jika ternyata barang dikendaraan tidak tersedia maka, retur akan dilaksanakan pada pengiriman berikutnya. Staff bagian penjualan akan membuat SP (Surat Penagihan) untuk pelanggan berdasarkan jenis pembayaran (harian dan bulanan) yang telah ditentukan di BP. Untuk jenis pembayaran harian, staff bagian penjualan akan menerbitkan SP pada saat barang pesanan pelanggan dikirimkan bersama dengan SJ, hanya saja jumlah penagihan belum dicantumkan karena jumlah penagihan dihitung berdasarkan SJ milik pelanggan. Untuk jenis penagihan bulanan, staff bagian penjualan akan menerbitkan SP setiap akhir bulan dan akan diberikan kepada pelanggan yang bersangkutan. Staff bagian gudang akan menerima BSTPJ yang diberikan oleh staff bagian produksi pada saat bagian produksi mengirimkan barang jadi kedalam gudang barang jadi. 6. Apakah pesanan barang pelanggan dapat diubah ? Pesanan pelanggan dapat diubah dengan syarat harus dilakukan sehari sebelum pengiriman barang dan paling lambat jam 12.00 siang. Perubahan pesanan hanya pada jumlah barang yang dipesan bukan pada hari pengiriman barang.
L94 7. Berapa jumlah pelanggan yang ada saat ini , serta berapa jumlah rata – rata transaksi setiap harinya ? Saat ini pelanggan tetap kami berjumlah sekitar 500 pelanggan., dengan rata rata transaksi sebesar 150 transaksi setiap harinya. 8. Apa yang harus dilakukan jika pelanggan ingin menambah jumlah barang atau jenis barang yang ingin dikirimkan ? Pelanggan harus membuat BP baru dan harus mendapatkan persetujuan dari bagian distribusi, karena bagian distribusi harus melakukan pengecekan terlebih dahulu apakah permintaan pelanggan dapat dipenuhi atau tidak. 9. Permasalahan apa yang sedang dihadapi saat ini pada proses penjualan ? Staff bagian penjualan mengalami kesulitan pada saat membuat PO untuk pelanggan, karena harus mengecek jadwal pengiriman barang setiap pelanggan untuk mengetahui barang apa saja yang harus dikirimkan untuk pelanggan beserta jumlahnya. Staff bagian distribusi dan penjualan mengalami kesulitan untuk mengetahui persediaan barang pada gudang barang jadi, karena harus selalu menghubungi staff bagian gudang terlebih dahulu. Staff bagian penjualan mengalami kesulitan dalam menghitung tagihan milik pelanggan, dikarenakan harga barang untuk setiap pelanggan tidak selalu sama. Selain itu staff bagian penjualan juga tidak dapat langsung mengetahui tagihan mana yang telah melalui tanggal jatuh tempo. 10. Pada saat pengiriman barang kepada pelanggan, driver akan ditemani oleh siapa ? Pada saat mengirimkan barang untuk pelanggan, driver akan ditemani oleh dua orang asisten driver (helper) untuk membantu dalam mendistribusikan barang dari dalam kendaraan kepada pelanggan. 11. Apakah jumlah barang yang terdapat di PO milik pelanggan selalu sama dengan jumlah barang yang diterima oleh pelanggan ? Jumlah barangnya tidak selalu sama, terutama pada produk galon. Jumlah galon yang turun harus sama dengan jumlah galon kosong yang naik ke dalam kendaraan. Jika ternyata galon kosong milik pelanggan hanya berjumlah 5, padahal jumlah barang yang tertera pada PO adalah 7, maka jumlah barang yang diterima pelanggan tetap berjumlah 5. 12. Apakah jumlah barang di PO akan diperbaharui jika ternyata jumlah barang yang diterima oleh pelanggan tidak sama banyaknya ? Jumlah barang di PO tidak diperbaharui, karena jumlah barang yg terdapat di PO tersebut akan digunakan untuk analisa oleh bagian distribusi.
L95 13. Bagaimana cara driver mengambil barang dari gudang barang jadi ? Driver hanya dapat mengambil / membawa keluar barang dari gudang barang jadi jika sudah mendapatkan formulir BPBJ dari bagian gudang. 14. Bagaimana dengan penagihan untuk pelangan, apa yang akan dijadikan dasar biaya penagihan untuk pelanggan ? SJ (Surat Jalan) adalah dasar yang digunakan untuk melakukan perhitungan tagihan. Karena setiap kali barang diterima oleh pelanggan, maka driver akan mencatat jumlah barang yang diterima oleh pelangganm dan SJ tersebut akan ditandatangani oleh pelanggan. 15. Bagaimana cara pembayaran tagihan untuk masing – masing pelanggan ? Ada 2 jenis pembayaran yang berlaku di perusahaan ini, yaitu pembayaran lunas dan kredit. Pembayaran lunas dilakukan setiap kali ada pengiriman barang ke pelanggan, jadi pada saat akan dilakukan pengiriman barang diterbitkan pula SP. Sedangkan pembayaran kredit dilakukan setiap bulan, jadi setiap akhir bulan akan diterbitkan SP berdasarkan SJ.
L96 KODE POS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Kel. Pekojan Kec. Tambora Kel. Jembatan Lima Kec. Tambora Kel. Krendang Kec. Tambora Kel. Duri Selatan Kec. Tambora Kel. Duri Utara Kec. Tambora Kel. Kalianyar Kec. Tambora Kel. Jembatan Besi Kec. Tambora Kel. Angke Kec. Tambora Kel. Slipi Kec. Palmerah Kel. Kota Bambu Selatan Kec. Palmerah Kel. Kota Bambu Utara Kec. Palmerah Kel. Jati Pulo Kec. Palmerah Kel. Tomang Kec. Grogol Petamburan Kel. Grogol Kec. Grogol Petamburan Kel. Jelambar Kec. Grogol Petamburan Kel. Jelambar Baru Kec. Grogol Petamburan Kel. Wijaya Kusuma Kec. Grogol Petamburan Kel. Tanjung Duren Kec. Grogol Petamburan Kel. Tanjung Duren Utara Kec. Grogol Petamburan Kel. Kemanggisan Kec. Palmerah Kel. Palmerah Kec. Palmerah Kel. Duri Kepa Kec. Kebon Jeruk Kel. Kedoya Selatan Kec. Kebon Jeruk Kel. Kedoya Utara Kec. Kebon Jeruk Kel. Kebon Jeruk Kec. Kebon Jeruk Kel. Sukabumi Utara Kec. Kebon Jeruk Kel. Kelapa Dua Kec. Kebon Jeruk Kel. Sukabumi Selatan Kec. Kebon Jeruk Kel. Kembangan Barat Kec. Kembangan Kel. Kembangan Timur Kec. Kembangan
JAKARTA 11240 JAKARTA 11250 JAKARTA 11260 JAKARTA 11270 JAKARTA 11270 JAKARTA 11310 JAKARTA 11320 JAKARTA 11330 JAKARTA 11410 JAKARTA 11420 JAKARTA 11420 JAKARTA 11430 JAKARTA 11440 JAKARTA 11450 JAKARTA 11460 JAKARTA 11460 JAKARTA 11460 JAKARTA 11470 JAKARTA 11470 JAKARTA 11480 JAKARTA 11480 JAKARTA 11510 JAKARTA 11520 JAKARTA 11520 JAKARTA 11530 JAKARTA 11540 JAKARTA 11550 JAKARTA 11560 JAKARTA 11610 JAKARTA 11610