Anda di halaman 1dari 123

1

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Dengan semakin maju dan berkembangnya ilmu pengetahuan dan

teknologi khususnya teknologi informasi pada saat ini, maka kita dipacu dan

dituntut untuk selalu dapat mengetahui dan mengikuti perkembangan ilmu

pengetahuan dan teknologi informasi yang ada. Ilmu pengetahuan dan

teknologi informasi sekarang ini sudah menjadi tuntutan bagi setiap aspek

dunia industri.

Melihat dari fakta yang ada tersebut, PT OTICS Indonesia yang

beralamat di EJIP Industial Park Plot 5C-1 Cikarang Selatan – Bekasi 17550

yang bergerak dibidang industri manufacturing otomotive menyadari bahwa

teknologi informasi bagi perusahaannya sangatlah dibutuhkan dalam hal ini

khususnya oleh bagian expandable. Karena memiliki teknologi informasi

yang berkualitas adalah aset yang paling berharga bagi setiap perusahaan

dalam menjalankan kegiatan operasionalnya.

Dari waktu ke waktu jumlah line produksi di PT OTICS Indonesia terus

bertambah, sehingga jumlah permintaan barang penunjang produksi yang

dilakukan oleh bagian produksi pun semakin meningkat baik jumlah maupun

jenisnya. Perkembangan ini mempengaruhi sistem inventory barang

penunjang produksi yang ada pada bagian expandable PT OTICS Indonesia.


2

Dalam penginputan data dan pembuatan laporan inventory pun sampai

saat ini masih menggunakan sistem berkas (menggunakan Microsoft Excell)

sehingga terkadang membutuhkan waktu yang cukup lama dan menyulitkan.

Dengan demikian dapat disimpulkan bahwa bagian expandable PT OTICS

Indonesia membutuhkan suatu sistem inventory yang terkomputerisasi secara

optimal agar manajemen datanya pun dapat berlangsung optimal.

Berdasarkan latar belakang tersebut di atas, maka judul dalam penulisan

Tugas Akhir (TA) ini yaitu Pembuatan Aplikasi Sistem Inventory Barang

Penunjang Produksi pada PT OTICS Indonesia.

2.2 Perumusan Masalah

Adapun perumusan masalah yang terjadi pada sistem yang telah ada

adalah:

a. Kesulitan dalam menentukan safety stock atas barang penunjang

produksi, sehingga bagian produksi sering mengeluh karena produksi

terganggu akibat kehabisan barang penunjang produksi.

b. Kesulitan dalam menentukan user atas barang penunjang produksi.

c. Tidak adanya penanggungjawab pengambilan barang penunjang

produksi, sebagai contoh: semua operator bebas mengambil barang–

barang penunjang produksi.

d. Banyak terjadi ketidak akuratan data permintaan barang, data laporan

pengeluaran barang bulanan dan data jumlah stok barang yang dimiliki,

seperti: duplikasi data, penyelewengan data hingga hilangnya suatu data .


3

e. Sulitnya proses pembuatan laporan stok barang bulanan, laporan

pengeluaran barang bulanan dan form pemesanan barang, sehingga

laporan tidak akurat dan tidak menggambarkan kejadian yang sebenarnya.

1.3 Maksud dan Tujuan

1.3.1 Maksud

Maksud dari penulisan laporan Tugas Akhir ini ialah:

1. Untuk mengetahui sistem dan metode yang digunakan dalam proses

inventory barang penunjang produksi pada PT OTICS Indonesia.

2. Pembuatan aplikasi sistem inventory barang penunjang produksi

pada PT OTICS Indonesia.

1.3.2 Tujuan

Tujuan dari penulisan laporan Tugas Akhir ini adalah :

1. Menentukan safety stock dan user atas barang penunjang produksi.

2. Membuat penanggungjawab pengambilan barang penunjang

produksi.

3. Mempermudah proses akurasi data permintaan barang, data laporan

pengeluaran barang bulanan dan data jumlah stok barang yang

dimiliki sehingga tidak terjadi duplikasi data, penyelewengan data

hingga hilangnya suatu data.

4. Sistem inventory yang terkomputerisasi memudahkan dalam

pelaporan.
4

1.4 Sasaran

Adapun sasaran dari penulisan laporan Tugas Akhir ini yaitu

memudahkan petugas bagian expandable dan bagian produksi untuk

mengakses informasi sistem inventory barang penunjang produksi. Sehingga

bisa terjadi efisiensi dan efektifitas waktu kerja dalam ruang lingkup

inventory barang penunjang produksi.

1.5 Metodologi Penelitian

1.5.1 Jenis Data

Jenis data yang dipakai dalam penelitian ini yaitu berupa data

primer dan data sekunder.

a. Data Primer

Data primer adalah data kualitatif, seperti data hasil

wawancara, data hasil observasi dan data tentang inventory barang

penunjang produksi pada PT OTICS Indonesia.

b. Data Sekunder

Data primer yang telah diperoleh kemudian diolah menjadi data

sekunder. Studi Kepustakaan dilakukan untuk mengumpulkan

informasi dan teknik bagaimana cara mengolah dan menyajikan

informasi dari data primer. Informasi dan teknik tersebut diperoleh

dari beberapa buku referensi. Data sekunder yang dihasilkan adalah


5

Diagram Alir Data Sistem Berjalan yang digunakan untuk

pembahasan Hasil Observasi.

1.5.2 Teknik Pengumpulan Data

a. Data Primer

Data primer diperoleh dengan beberapa teknik pengumpulan

data berikut:

1. Observasi, dilakukan dengan cara menghubungi karyawan yang

berhubungan langsung dengan sistem untuk mempelajari sistem

berjalan.

2. Wawancara, dilakukan untuk mendukung metode observasi,

dilakukan wawancara atau tanya jawab secara langsung kepada

karyawan yang berkaitan sehingga data yang terkumpul lebih

akurat.

b. Data Sekunder

Untuk mendapatkan data sekunder, dilaksanakan studi

kepustakaan dengan mengumpulkan teori yang berasal dari sistem

berjalan dan keterangan lainnya yang bertujuan untuk melengkapi

pengetahuan terhadap sistem yang akan digunakan.

1.5.3 Teknik Evaluasi

Data yang diperoleh dari hasil observasi dan wawancara tentang

semua kegiatan atau proses inventori barang penunjang produksi pada

PT OTICS Indonesia baik pada data primer dan data sekunder, data-
6

data tersebut akan dianalisis dan dilakukan perbandingan antara konsep

dengan penelitian serta hasilnya akan diuraikan secara deskriptif.

1.6 Ruang Lingkup Penelitian

Batasan yang diteliti tentang proses inventory barang penunjang

produksi pada PT OTICS Indonesia. Mulai dari analisis kebutuhan terhadap

barang penunjang produksi hingga pembuatan laporan inventory. Waktu

yang dibutuhkan untuk penelitian yaitu selama 5 hari dimulai dari awal

penelitian tanggal 10 Nopember 2008 – 14 Nopember 2008.

1.7 Sistematika Penulisan

Dalam penyusunan tugas akhir ini, pokok-pokok permasalahan dibagi

menjadi lima bab dan akan diperinci menjadi beberapa sub bab. Secara garis

besar keterangan pokok permasalahan tersebut digolongkan sebagai berikut:

BAB I PENDAHULUAN

Bab ini menjelaskan tentang latar belakang masalah, maksud dan

tujuan dari penelitian, sasaran, metodologi penelitian yang

digunakan, ruang lingkup penelitian, dan sistematika penulisan

yang digunakan.

BAB II LANDASAN TEORI

Menjelaskan tentang konsep dasar sistem dan peralatan pendukung

sistem berupa Data Flow Diagram (DFD), Entity Relationship

Diagram (ERD) dan Normalisasi.


7

BAB III HASIL OBSERVASI

Dalam bab ini dibahas tentang objek observasi yang dibahas,

struktur organisasi, hasil observasi berupa prosedur sistem

berjalan, spesifikasi dokumen masukan dan keluaran, DFD sistem

berjalan serta permasalahan pokok yang terjadi.

BAB IV RANCANGAN SISTEM USULAN

Bab ini memaparkan tentang sistem usulan, prosedur sistem

usulan, DFD sistem usulan, spesifikasi sistem usulan, normalisasi,

spesifikasi file, ERD, spesifikasi sistem komputer yang berisi

tentang perangkat keras dan perangkat lunak.

BAB V PENUTUP

Memaparkan tentang berbagai kesimpulan mengenai hasil dari

penelitian dan perancangan sistem yang dilaksanakan secara

singkat dan jelas. Selain itu juga memaparkan tentang saran dan

usulan yang mungkin berguna bagi bagian expandable di PT

OTICS Indonesia sehingga menuju ke arah yang lebih maju dalam

sistem inventory barang penunjang produksi.


8

BAB II

LANDASAN TEORI

2.1 Konsep Dasar Sistem

2.1.1 Pengertian Sistem

Ada beberapa definisi sistem yang dikemukakan oleh para ahli, sebagai

contoh salah satunya adalah sistem adalah suatu kesatuan yang terdiri dari dua

atau lebih komponen atau subsistem yang berinteraksi untuk mencapai suatu

tujuan (Jogiyanto, 1999).

Pengertian sistem inventory barang penunjang produksi itu sendiri

yaitu rangkaian dari beberapa divisi yang saling terhubung, berinteraksi dan

bekerjasama untuk pencapaian tujuan pengelolaan inventory barang penunjang

produksi di PT OTICS Indonesia.

2.1.2 Karakteristik Sistem

Suatu sistem memiliki karakteristik atau sifat-sifat tertentu, antara

lain (Jogiyanto, 1999):

a. Komponen Sistem (Components)

Suatu sistem terdiri dari dua atau lebih komponen yang saling

bekerja sama membentuk suatu kesatuan. Komponen sistem itu

sendiri dapat berupa subsistem atau bagian dari sistem. Setiap

subsistem mempunyai sifat-sifat dari sistem untuk mengoperasikan

suatu fungsi tertentu dan mempengaruhi proses sistem secara

keseluruhan.
9

Komponen sistem yang ada di bagian expandable adalah

petugas expandable dan para penanggungjawab pengambilan

barang penunjang produksi yang bertugas di bagian produksi yang

mewakili divisinya masing-masing.

b. Masukan Sistem (Input)

Masukan sistem atau input adalah data, alat, metode atau

energi yang akan diolah sehingga menghasilkan keluaran.

Masukan yang ada berupa data barang penunjang produksi,

data user (penanggungjawab pengambilan) barang penunjang

produksi, data supplier dan data kartu stok barang..

c. Proses (Process)

Suatu sistem dapat mempunyai suatu bagian pengolah yang

akan merubah masukan menjadi keluaran. Proses yang terjadi

adalah dengan menginput data barang penunjang produksi,

kalkulasi perhitungan jumlah pengambilan dan sisa stok barang,

selain itu pengelolaan kearsipan juga merupakan bagian dari proses

yang berlangsung di bagian expandable PT OTICS Indonesia.

d. Keluaran Sistem (Output)

Keluaran sistem atau output adalah hasil yang didapat dari

pengolahan masukan sistem. Keluaran sistem dapat berupa masukan

untuk subsistem yang lain.

Keluaran yang nantinya digunakan untuk informasi ke bagian

produksi, bagian accounting, bagian purchasing dan bagian


10

expandable itu sendiri, yaitu antara lain; laporan stok barang

bulanan dan laporan pengeluaran barang bulanan.

e. Tujuan dan Sasaran (Goal & Objectives)

Tujuan dan sasaran dari suatu sistem sangat penting untuk

menentukan masukan sistem yang diperlukan dan keluaran sistem

yang dihasilkan. Bila suatu sistem tidak mempunyai sasaran, maka

operasi sistem tidak akan ada manfaatnya. Suatu sistem dinyatakan

berhasil jika mengenai sasaran atau tujuannya.

Tujuan yang diharapkan nantinya dengan data yang saling

terintegrasi, dapat memudahkan pengguna aplikasi dalam

pekerjaannya maupun dalam pengaksesan informasi mengenai

keberadaan barang penunjang produksi.

f. Penghubung (Interface)

Merupakan media penghubung atau interface antara satu

subsistem dengan subsistem yang lainnya. Dengan adanya

penghubung itu dimungkinkan adanya sumber-sumber daya

mengalir dari satu subsistem ke subsistem yang lainnya. Keluaran

(output) dari satu subsistem akan menjadi masukan (input) untuk

subsistem yang lain melalui penghubung.

g. Batas Sistem (Boundary)

Merupakan daerah atau area yang membatasi sistem dengan

sistem yang lain atau dengan lingkungan luar sistem. Batas suatu

sistem menunjukkan ruang lingkup (scope) dari sistem tersebut.


11

Batas sistem yang dibuat adalah inventory barang penunjang

produksi serta kearsipan barang penunjang produksi, di luar itu

sudah merupakan lingkungan luar sistem.

h. Lingkungan Luar Sistem (Environment)

Lingkungan luar adalah apapun diluar batas sistem yang

mempengaruhi operasi sistem. Lingkungan luar dapat bersifat

menguntungkan dan juga merugikan operasi sistem.

2.1.3 Klasifikasi Sistem

Sistem dapat diklasifikasikan dari berbagai sudut pandang,

diantaranya adalah (Jogiyanto, 1999):

a. Sistem Abstrak dan Sistem Fisik (Abstrack System and Physical


System).

Sistem Abstrak : sistem yang berupa pemikiran atau ide-ide,

ataupun gagasan yang tidak tampak secara fisik.

Sistem Fisik : sistem yang komponen-komponennya nyata secara

fisik atau dapat diidentifikasi.

b. Sistem Alamiah dan Sistem Buatan Manusia (Natural System and


Human-Made System).

Sistem Alamiah : sistem yang terjadi secara alamiah atau

melalui proses alam, tanpa campur tangan

dan keikut sertaan manusia.

Sistem Buatan Manusia : sistem yang dibuat atau dirancang oleh

manusia.

c. Sistem Tertutup dan Sistem Terbuka (Closed System and Open


System).
12

Sistem Tertutup : sistem yang tidak berhubungan dan tidak

terpengaruh dengan lingkungan luarnya.

Sistem Terbuka : sistem yang berhubungan dan terpengaruh

dengan lingkungan luarnya.

d. Sistem Tertentu dan Sistem Tak Tentu (Deterministic System and


Probabilistic System)

Sistem Tertentu : sistem yang interaksi diantara bagian-bagiannya

terdeteksi dengan pasti, sehingga keluaran dari

sistem dapat ditentukan atau diprediksi.

Sistem Tak Tentu: sistem yang outputnya tidak dapat ditentukan

atau diprediksi

2.1.4 Pengguna Sistem

Setiap sistem tentunya memiliki user atau pengguna, dalam hal ini

sistem inventory barang penunjang produksi digunakan oleh bagian

expandable PT OTICS Indonesia.

2.1.5 Keunggulan Sistem

Sistem yang akan saya buat yaitu berupa sistem aplikasi yang akan

mengelola perhitungan dan jenis barang penunjang produksi dan line

produksi pengguna suatu barang penunjang produksi. Sistem ini

menitikberatkan atau memfokuskan pada pembuatan database yang

pada awal kurang optimal. Yang menjadi keunggulan pada sistem yang

akan saya buat ini adalah, terciptanya suatu database yang

memungkinkan untuk menangani sistem inventory yang ada dan selain


13

itu pada sistem ini juga akan diterapkan multiuser system yaitu sistem

yang memungkinkan dapat diakses oleh banyak user atau pengguna

yang memiliki masing-masing hak akses.

2.1.6 Pendekatan Implementasi

Dalam melaksanakan kegiatan analisa, dilakukan pendekatan

implementasi. Pendekatan ini adalah kegiatan operasional yang

diterapkan berdasarkan prosedur ataupun aturan yang telah dibuat.

Penganalisis sistem mempunyai beberapa pendekatan untuk

implementasi yang dianggap perlu untuk perbaikan atau perubahan

manfaat komputer.

Supaya implementasi dapat berjalan dengan baik, dilakukan

beberapa pendekatan guna mempermudah penerapan sistem yang

dikehendaki. Pendekatan tersebut terbagi menjadi empat, yaitu:

Pendekatan pertama untuk implementasi yaitu mengenai perpindahan

manfaat komputer dan bertanggung jawab kepada kelompok atau

departemen disemua kegiatan dengan bantuan komputer yang

terdistribusi.

Pendekatan kedua adalah memakai strategi berbeda untuk pelatihan

pemakai dan personnel, mencakup dengan cara membawa mereka pada

tingkatnya sendiri, menggunakan sebagai teknik pelatihan dan

menjamin bahwa setiap pemakai mengerti peraturan baru apa pun yang

harus dia ambil karena sistem informasi yang baru.


14

Pendekatan ketiga adalah memilih sebuah strategi perubahan.

Penganalisis sistem perlu untuk menimbang situasi dan mengusulkan

rencana perubahan yang tepat untuk organisasi dan sistem informasi

tertentu.

Pendekatan keempat meliputi penilaian sistem informasi baru atau

modifikasi. Penganalisis perlu untuk merumuskan hasil ukuran untuk

menilai sistem. Penilaian berasal dari pemakai, manajemen, dan

penganalisis sendiri.

Implementasi terdiri dari beberapa model di antaranya adalah

(Jogiyanto, 1999):

a. Model Sistem Terdistribusi

Model dengan konsep sistem terdistribusi dapat dilakukan dengan

berbagai cara. Di sini akan diambil dalam pengertian luas sehinggga

meliputi workstation yang dapat berhubungan satu sama lain dan

processor data. dan juga konfigurasi arsitektur hierarki yang berbeda

dari processor data yang berhubungan satu sama yang lain dan

memiliki kemampuan penyimpanan data berbeda.

b. Model Teknologi Clients/Server

Model Clients/Server, perhitungan Clients/Server, teknologi

Clients/Server, dan arsitektur Clients/Server merujuk pada sebuah

model rancangan yang dapat dipandang sebagai aplikasi yang

berjalan pada Local Area Network (LAN). Dalam bagian yang sangat

mendasar, yang dapat menggambarkan permintaan Clients/Server


15

mengeksekusinya atau memenuhinya dalam beberapa cara

permintaan. Komputer pada jaringan diprogramkan untuk melakukan

pekerjaan secara efisien dengan membagi perintah pengolahan antara

Clients/Server.

c. Model Groupware

Karena banyak pekerjaan organisasi diselesaikan secara aktual dalam

kelompok atau departement, maka sekarang terdapat perpindahan

yang sangat kuat untuk mengembangkan perangkat lunak khusus

yang disebut ”groupware” yang mendukung orang-orang yang

bekerja bersama dalam organisasi.

Ada 5 (lima) Strategi Konversi dari sistem lama ke sistem yang

baru antara lain (Henry C. Lucas, 1982):

a. Perubahan Langsung

Konversi dengan perubahan langsung berarti bahwa pada tanggal yang

telah ditetapkan, sistem lama dihentikan dan sistem baru dipasangkan

untuk digunakan.

b. Konversi Paralel

Konversi paralel mengacu pada menjalankan sistem lama dan

sistem baru pada waktu yang sama, secara paralel.

c. Konversi Berangsur-angsur

Konversi berangsur-angsur atau bertahap berusaha untuk

menggabungkan segi terbaik dua rencana di atas, tanpa

mengandung resiko banyak. Dalam rencana ini, jatah transaksi


16

yang ditangani oleh sistem baru dinaikkan berangsur-angsur,

seperti dalam sistem bertahap.

d. Konversi Prototipe Modular

Konversi prototipe modular menggunakan bangunan modular,

operasional prototipe untuk mengubah dari sistem lama ke sistem

baru dalam cara berangsur-angsur. Selama masing-masing modul

dimodifikasi, disahkan dan digunakan.

e. Konversi Terdistribusi

Konversi terdistribusi mengacu kepada situasi di mana banyak

instalasi dari sistem yang diniatkan, seperti kasus perbankan atau

monopoli. Satu keseluruhan konversi dikerjakan (dari salah satu

dari tempat pendekatan yang telah dijelaskan di atas) pada satu

sistem. Jika konversi diselesaikan dengan sukses, konversi lain

dikerjakan sistem lain.

Implementasi yang akan dipergunakan adalah model implementasi

Groupware, karena model ini setiap tim (divisi) dapat bekerja sama

dengan tim (divisi) yang lain untuk menerapkan sistem.

Sedangkan strategi implementasi yang dipergunakan adalah

Strategi Konversi Paralel sehingga kedua sistem dapat dijalankan

secara bersama-sama untuk periode waktu yang telah ditentukan, dan

kehandalan hasil keduanya dapat diperiksa dan diperbandingkan. Jika

hasil yang sama dapat diperoleh maka sistem baru dipasangkan dan

digunakan, sedangkan sistem lama dihentikan.


17

2.2 Peralatan Pendukung

2.2.1 Data Flow Diagram (DFD)

a. Pengertian DFD

DFD atau Diagram Alir Data adalah suatu diagram yang

menggambarkan sistem, baik manual, terkomputerisasi atau

gabungan dari keduanya yang penggambarannya dalam bentuk

elemen-elemen data yang saling berelasi atau berhubungan dan

digambarkan menurut aturan mainnya (Chris Gane dan Trish

Sarson, 1979).

b. Simbol-simbol DFD

1. Kesatuan Luar (External Entity)

Simbol yang digunakan untuk menggambarkan asal atau

sumber dan tujuan data adalah persegi. Merupakan kesatuan di

lingkungan luar sistem yang dapat berupa orang, departemen,

organisasi, atau sistem lainnya yang berada di lingkungan

luarnya yang akan memberikan input atau menerima output dari

sistem.

Gambar: Lihat di daftar simbol.

2. Arus Data (Data Flow)

Disimbolkan dengan tanda panah dan digunakan untuk

menggambarkan aliran data yang berjalan. Arus data dapat

mengalir di antara proses, data store dan external entity. Arus

data dapat berbentuk masukan untuk sistem atau hasil dari


18

proses suatu sistem. Arus data sebaiknya diberi nama yang jelas

dan mempunyai arti dan dituliskan disamping garis panahnya.

Gambar: Lihat di daftar simbol.

Ada beberapa konsep yang perlu diperhatikan dalam

penggambaran arus data, antara lain:

a. Konsep Paket Data (Packet of Data)

Apabila ada dua atau lebih data yang mengalir dari

sumber yang sama menuju ke tujuan yang sama maka harus

dianggap sebagai suatu arus data yang tunggal. Hal ini

dikarenakan dua atau lebih data tersebut mengalir bersama-

sama sebagai satu paket. Data yang mengalir bersama harus

ditunjukkan sebagai satu arus data, walaupun misalnya

terdiri atas beberapa dokumen.

b. Konsep Data Menyebar (Diverging Data Flow)

Arus data yang menyebar menunjukkan sejumlah

tembusan dari arus data dari sumber yang sama menuju

tujuan yang berbeda.

c. Konsep Arus Data Mengumpul (Converging Data Flow)

Arus data yang mengumpul menunjukkan beberapa arus

data yang berbeda dari sumber yang berbeda menuju ke

tujuan yang sama.

d. Konsep Sumber dan Tujuan Arus Data (Source and


Destination Data Flow)
19

Setiap sumber data harus menuju pada satu tujuan.

Suatu arus data harus dihasilkan oleh satu proses atau

menuju ke suatu proses.

3. Proses (Process)

Digunakan untuk menggambarkan proses pengolahan atau

transformasi data. Proses adalah kegiatan atau kerja yang

dilakukan oleh orang, mesin atau komputer dari hasil suatu arus

data yang masuk ke dalam proses untuk dihasilkan arus data

yang keluar dari proses. Proses pada DFD disimbolkan dengan

lingkaran.

Gambar: Lihat di daftar simbol.

4. Simpanan Data (Data Store)

Digunakan untuk menggambarkan arus data yang sudah

disimpan atau diarsipkan. Simpanan Data dapat berupa file atau

database di sistem komputer, arsip atau catatan manual, suatu

agenda atau buku atau suatu kotak tempat data. Disimbolkan

dengan sepasang garis horizontal paralel yang tertutup disalah

satu ujungnya.

Gambar: Lihat di daftar simbol.

c. Aturan Main dalam Pembuatan DFD

1. Tidak boleh menghubungkan antara External Entity dengan

External Entity lainnya secara langsung.


20

2. Tidak boleh menghubungkan antara Data Store dengan Data

Store lainnya secara langsung.

3. Tidak boleh menghubungkan antara Data Store dengan External

Entity secara langsung atau sebaliknya.

4. Setiap Proses harus ada Data Flow yang masuk dan Data Flow

yang keluar.

d. Tahapan Proses Pembuatan DFD

1. Diagram Konteks

Digunakan untuk menggambarkan sumber serta tujuan data

yang akan diproses atau diagram yang menggambarkan sistem

secara global dari keseluruhan sistem yang ada.

2. Diagram Nol

Digunakan untuk menggambarkan tahap-tahap proses yang

ada di dalam Diagram Konteks (penjabaran secara rinci).

3. Diagram Detail

Digunakan untuk menggambarkan arus data secara lebih

rinci atau lebih detail lagi dari tahapan proses yang ada di dalam

Diagram Nol.

2.2.2 Entity Relational Diagram (ERD)

a. Pengertian ERD

ERD adalah diagram yang menguraikan hubungan antar entitas

dalam suatu sistem (Howe D.R, 1991).

b. Simbol-simbol ERD
21

1. Entitas (Entity)

Suatu objek yang dapat dibedakan dengan objek lainnya.

Gambar: Lihat di daftar simbol.

2. Relationship

Hubungan yang terjadi antara satu entitas atau lebih yang hanya

berupa konseptual bukan fisik.

Gambar: Lihat di daftar simbol.

3. Atribut

Karakteristik dari Entity atau Relationship yang menyediakan

penjelasan detail tentang Entity atau Relationship tersebut.

Gambar: Lihat di daftar simbol.

2.2.3 Normalisasi

a. Pengertian Normalisasi

Normalisasi adalah proses untuk mengubah suatu relasi yang

memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang

tidak memiliki masalah tersebut (Jogiyanto, 1999)..

b. Bentuk Normalisasi

a. Unnormalized

Mencantumkan semua field data yang ada. Menuliskan

semua data yang akan direkam dengan tidak mengikuti suatu

format tertentu, bagian yang sama tidak perlu dituliskan.

b. First Normal Form (1 NF)


22

c. Memisah-misahkan data pada field-field yang tepat dan bernilai

atomic, seluruh record/row harus lengkap adanya dan tidak ada

field yang berulang.

d. Second Normal Form (2 NF)

Menentukan atau mencari kunci-kunci field yang dapat

digunakan sebagai acuan dalam pencarian dan sifatnya unik dan

dapat mewakili field lain yang menjadi anggotanya.

e. Third Normal Form (3 NF).

Setiap atribut bukan kunci haruslah bergantung hanya pada

primary key dan pada primary key secara menyeluruh.

f. Kemungkinan normalisasi yang akan saya buat pada sistem ini

yaitu sampai dengan normalisasi tingkat ke 3 (tiga) karena pada

tingkat tersebut tingkat unnormalized dapat diatasi.


23

BAB III
HASIL OBSERVASI

3.1 Objek Observasi

3.1.1. Profil Perusahaan

PT OTICS Indonesia merupakan perusahaan swasta PMA Jepang

bertempat di EJIP Industrial Park, Cikarang Selatan Bekasi 17550, yang

berdiri pada tahun 1997 dan mulai beroperasi pada tahun 1999. PT OTICS

Indonesia bergerak dibidang otomotive yaitu memproduksi spare part untuk

kendaraan beroda dua, beroda empat dan kendaraan berat serta perahu

berkecepatan tinggi (speed boat). OTICS sendiri adalah singkatan dari Odai

Technology International Customer Satisfaction.

PT OTICS Indonesia memiliki beberapa departemen produksi

diantaranya, Production Departement 1 (PD-1) yang terbagi menjadi,

Production Group 1, terdiri dari Production Group 1-1 dan Production

Group 1-2 yang memproduksi cam shaft untuk mobil Xenia Daihatsu dan

Avanza Toyota, memproduksi rocker arm untuk mobil taruna Daihatsu dan

lifter valve untuk mobil kijang Innova IMV/Toyota. Production Group 2

terdiri dari Production Group 2-1 dan Production Group 2-2 yang

memproduksi rocker arm untuk kendaraan berat dan speed boat, fork gear

untuk sepeda motor Smash Suzuki dan Jupiter Yamaha dan rocker arm

untuk sepeda motor Jupiter MX dan Vixion Yamaha. Production Group 3

yang memproduksi balance shaft, drive gear dan spacer untuk mobil kijang

Innova IMV/Toyota.
24

Kemudian Production Departement 2 (PD-2) yang terbagi menjadi:

Production Group 4-1 dan Production Group 4-2 yang memproduksi

common rail untuk mobil Nissan dan Mitshubishi DENSO Thailand. Dan

beberapa departemen seperti departemen Engineering Work Departement

(EWD) yang terdiri dari Maintenance (MTC) dan Engineering (ENG),

Quality Assurance Departement (QAD), Production Control Departement

(PCD), Departemen Purchasing (PCH), Departemen Accounting (ACC),

Departemen Personel and General Affairs (PGA).

Obyek observasi yang dibahas di dalam Tugas Akhir ini adalah pada

bagian expandable atau bagian yang mengatur inventory barang penunjang

produksi seperti: sarung tangan, masker, sikat besi, gerinda potong, baterai

9V, saringan oli dan minyak, kain majun dan lain-lain.

3.1.2 Visi dan Misi

Visi perusahaan adalah kami berdedikasi untuk ikut serta dalam

mengembangkan produk baru yang berwawasan lingkungan dengan

kemampuan kreatifitas dan keterampilan kami, serta kontribusi yang

positif untuk semua sektor.

Misi perusahaan adalah PT OTICS Indonesia akan

memelihara keselarasan antara aktifitas manusia dengan alam, dan

akan menyediakan produk-produk untuk mencapai keseimbangan

ekologi yang sesuai.


25

3.1.3 Struktur Organisasi

Stephen P. Robbins (1994 : 6) mengungkapkan bahwa “Struktur

organisasi menetapkan bagaimana tugas akan dibagi, siapa melapor

kepada siapa, dan mekanisme koordinasi yang formal serta pola interaksi

yang akan diikuti”.

Gambar 3.1. Struktur Organisasi

3.1.4 Job Description (Gambaran Pekerjaan)

1. Bagian Cutting Tools

a. Membuat laporan pemakaian cutting tools.

b. Membuat laporan inventori cutting tools dan pengadaan tools.

c. Membuat laporan harian kondisi cutting tools di gudang dan di

line.

d. Mengirim cutting tools ke line.

e. Mengkontrol regrinding tools.

f. Penanggung jawab gudang cutting tools.


26

2. Bagian Expandable

a. Memasukan data form pemesanan barang, membuat dan

mengkontrol form pemesanan pembelian.

b. Memasukan data surat jalan barang penunjang produksi.

c. Mengontrol pengiriman barang penunjang produksi dari

supplier.

d. Mengecek barang dan mendata kedatangan barang.

e. Mengontrol pengeluaran dan stok barang penunjang produksi.

f. Mendata daftar supplier dan daftar harga barang.

g. Membuat laporan stok barang bulanan.

h. Membuat laporan pengeluaran barang bulanan.

3. Bagian Invoice

a. Mengontrol pengiriman cutting tools dari supplier.

b. Memasukan data memasukan data surat jalan cutting tools.

c. Mengontrol inventory dan pengadaan barang penunjang

produksi dan cutting tools.

d. Mengecek invoice dan kelengkapannya sesuai aturan

departemen Accounting.

3.2. Hasil Observasi

3.2.1. Proses Sistem Berjalan

Pada sistem informasi bagian expandable pada PT OTICS

Indonesia terdapat beberapa prosedur, yaitu:


27

a. Prosedur Pemesanan Pembelian Barang ke Supplier

Pemesanan pembelian dilakukan satu bulan sekali setiap

awal bulan sesuai dangan hasil laporan dari gudang expandable,

jika barang telah berkurang atau mendekati batas jumlah yang telah

ditetapkan. Pada prosedur pemesanan pembelian barang, petugas

expandable melaporkan hasil laporan beserta form pemesanan

barang ke leader Purchasing untuk meminta persetujuan

pemesanan pembelian barang, setelah disetujui petugas expandable

langsung membuat form pemesanan pembelian sesuai dengan

tanggal kedatangan yang diminta dan memesan barang ke

supplier. Setelah itu menunggu kedatangan barang, bila barang

sudah datang tagihan dari supplier baru bisa diserahkan ke bagian

Accounting.

b. Prosedur Penerimaan Barang dari Supplier dan Prosedur

Pengecekan Barang

Dalam prosedur penerimaan, barang disertai surat jalan yang

diterima sesuai form pemesanan pembelian. Surat jalan akan

disimpan dilampirkan bersamaan form pemesanan pembelian.

Semua barang yang akan diterima gudang expandable langsung

dicek oleh petugas expandable yang juga merangkap sebagai

petugas incaming. Apabila barang yang dipesan terdapat kerusakan

atau tidak sesuai dengan pemesanan barang purchase order maka

petugas expandable akan mengembalikan barang yang telah


28

diterima tersebut beserta surat jalan yang telah diterima ke supplier,

tetapi bila barang yang diterima sesuai dan tidak terdapat kerusakan

petugas expandable akan menyimpannya di gudang dan diberi kartu

stok barang dan delivery order surat jalan disimpan bersamaan

dengan arsip form pemesanan pembelian asli di arsip khusus form

pemesanan pembelian.

c. Prosedur Pengiriman Barang

Dalam prosedur pengiriman, barang yang diterima dan sesuai

form pemesanan pembelian tersebut langsung dikirim oleh petugas

expandable yang juga merangkap sebagai petugas incaming ke

gudang expandable untuk diberi kartu stok barang dan disimpan di

rak barang penunjmng produksi.

d. Prosedur Pengeluaran Barang dari Gudang

Prosedur pengeluaran barang dari gudang expandable dilakukan

oleh para karyawan bagian produksi, mereka biasanya meminta

barang ke gudang sesuai dengan jenis barang yang dibutuhkan

secara manual. Artinya para karyawan bagian produksi meminta

barang yang dibutuhkan langsung ke petugas expandable disertai

dengan form permintaan barang, kemudian karyawan mendapatkan

barang sesuai permintaannya dari petugas expandable. Dan petugas

expandable menyimpan data form permintaan barang sebagai bukti

pengeluaran barang untuk dilampirkan bersamaan dengan laporan


29

barang penunjang produksi untuk memudahkan dalam penghitungan

pengeluaran barang.

d. Prosedur Pelaporan

Seluruh kegiatan pelaporan dilaporkan ke leader

Purchasing,

prosedur pelaporan dilakukan dan dilaporkan oleh petugas

expandable merangkap incaming setiap satu bulan.

Adapun laporan-laporan yang diberikan sebagai berikut:

1. Laporan Stok Barang Bulanan

Adalah merupakan laporan stok barang yang masih ada di

gudang expandable. Data yang dilaporkan diambil dari data

kartu stok barang dan dilaporkan setiap satu bulan.

2. Laporan Pengeluaran Barang Bulanan

Adalah merupakan laporan yang dibuat oleh petugas

expandable merangkap incaming pada saat barang yang telah

dicek disimpan ke gudang. Data yang dilaporkan diambil dari

data kartu stok barang dan dilaporkan setiap satu bulan.

3.2.2. Spesifikasi Dokumen Masukan dan Keluaran

Setelah dilakukan analisa, ditemukan beberapa dokumen

yang dijadikan sebagai dokumen masukan dan keluaran.

Dokumen Masukan terdiri dari:

1. Form Pemesanan Pembelian

Form pemesanan pembelian adalah surat atau berkas yang


30

dibuat sebagai pengantar oleh pihak perusahaan (bagian

purchasing) untuk pemesanan barang ke supplier dan

digunakan sebagai data awal yang akan dimasukkan

ke

dalam arsip khusus seluruh form pemesanan pembelian

Gambar: Lihat di daftar lampiran

2. Surat Jalan

Surat jalan adalah surat atau berkas pengantar yang dikirim

oleh Supplier ke perusahaan pada saat mengirimkan barang

yang dipesan. Dokumen akan disimpan pada arsip

penerimaan barang.

Gambar: Lihat di daftar lampiran

3. Kartu Stok Barang

Kartu stok barang adalah merupakan alat untuk mencapai

inventory just in time, yaitu memberikan barang yang sesuai

dengan barang yang dibutuhkan, sesuai jumlahnya dan pada

waktu yang tepat.

Gambar: Lihat di daftar lampiran

4. Form Permintaan Barang

Form permintaan barang adalah surat atau berkas yang

diberikan oleh karyawan bagian produksi kepada petugas

expandable pada saat mengambil barang digudang.

Gambar: Lihat di daftar lampiran


31

a. Dokumen Keluaran terdiri dari:

1. Laporan Stok Barang Bulanan

Laporan Stok Barang Bulanan adalah laporan tentang berapa

total jumlah setiap barang yang masih ada di gudang

expandable. Laporan dibuat oleh petugas expandable

merangkap incaming untuk dilaporkan ke leader purchasing.

Gambar: Lihat di daftar lampiran

2. Laporan Pengeluaran Barang Bulanan

Laporan pengeluaran barang adalah laporan mengenai barang

apa saja yang keluar dari gudang expandable yang dibuat

oleh petugas expandable merangkap incaming untuk

dilaporkan ke leader Purchasing.

Gambar: Lihat di daftar lampiran

3.2.3. Data Flow Diagram (DFD) Sistem Berjalan

a. Diagram Konteks Sistem Berjalan


32

Gambar 3.2 Diagram Konteks Sistem Berjalan


b. Diagram Nol Sistem Berjalan

Gambar 3.3 Diagram Nol Sistem Berjalan


33

c. Diagram Rinci 2.0 Sistem Berjalan

Gambar 3.4 Diagram Rinci 2.0 Sistem Berjalan

d. Diagram Rinci 4.0 Sistem Berjalan

Gambar 3.5 Diagram Rinci 4.0 Sistem Berjalan


34

e. Diagram Rinci 5.0 Sistem Berjalan

Gambar 3.6 Diagram Rinci 5.0 Sistem Berjalan

3.2.4. Permasalahan Pokok

Dari hasil observasi yang dilakukan terdapat beberapa

kelemahan yang ada dalam sistem:

1. Kesulitan pencarian pada barang yang kehabisan stock karena

database yang ada belum optimal pada sistem inventory tersebut.

2. Proses pengolahan data untuk perhitungan daftar barang atau

stock yang tersedia tidak bisa dilakukan secara cepat.

3. Banyak berkas yang harus dilampirkan pada saat pembuatan

laporan.
35

4. Banyak terjadi ketidak akuratan data permintaan barang, data

laporan pengeluaran barang bulanan dan data jumlah stok barang

yang dimiliki, seperti: duplikasi data, penyelewengan data hingga

hilangnya suatu data.

5. Kurangnya pengontrolan atas barang yang keluar.


36

BAB IV

RANCANGAN SISTEM USULAN

4.1 Sistem Usulan

Sebuah sistem inventori yang belum terkomputerisasi seperti yang saat

ini berjalan di departemen Purchasing memiliki beberapa kesulitan seperti

lambatnya proses pencarian data, lambatnya proses perhitungan nilai stok

barang, ketidak akuratan data permintaan barang, data laporan pengeluaran

barang bulanan dan data jumlah stok barang dan lain-lain.

Untuk mengatasi kesulitan-kesulitan yang terjadi pada sistem yang

sedang berjalan tersebut maka dibuatlah rancangan suatu sistem usulan

yang bertujuan untuk mengurangi bahkan menghilangkan permasalahan

yang terjadi sebelumnya dengan membuat sistem usulan yang

terkomputerisasi dengan beberapa metode antara lain:

1. Memisahkan sistem pengolahan data dengan database, sehingga

pengolahan data terpisah dan tidak menjadi satu.

2. Membuat database baru untuk menampung hasil pengolahan data yang

dapat digunakan dalam operasional.

Sehingga sistem aplikasi usulan yang dihasilkan dapat berguna dalam

hal:

a. Mempermudah dalam pengolahan data.


37

b. Memudahkan proses akurasi data permintaan barang, data laporan

data laporan pengeluaran barang bulanan dan data jumlah stok

barang yang dimiliki sehingga tidak terjadi duplikasi data,

penyelewengan data hingga hilangnya suatu data.

c. Menghasilkan informasi yang benar.

d. Mempermudah proses pencarian data dan informasi barang.

e. Memudahkan dalam penginputan data barang masuk ke gudang dan

data barang keluar dari gudang.

f. Memudahkan dalam pengontrolan pengambilan barang.

g. Memudahkan dalam pembuatan pelaporan, seperti laporan stok

barang, laporan permintaan barang dan laporan pengeluaran

barang.

4.2 Prosedur Sistem Usulan

4.2.1 Proses Sistem usulan

a. Prosedur Pemesanan Pembelian Barang ke Supplier

Pemesanan pembelian dilakukan jika barang telah

berkurang berkurang atau mendekati batas jumlah yang telah

ditetapkan. Pada prosedur pemesanan pembelian, petugas

expandable melaporkan hasil laporan beserta form pemesanan

barang ke leader Purchasing untuk meminta persetujuan

pemesanan pembelian, setelah disetujui leader

Purchasing
38

langsung membuat form pemesanan pembelian barang sesuai

dengan kedatangan yang diminta dan memesan barang

ke

supplier. Setelah itu menunggu kedatangan barang, bila

barang sudah datang tagihan dari supplier baru bisa

diserahkan ke bagian accounting.

b. Prosedur Penerimaan Barang dari Supplier (Delivery Order)

dan Prosedur Pengecekan Barang.

Dalam prosedur penerimaan, barang yang diterima harus

disertai surat jalan yang sesuai dengan form pemesanan

pembelian. Semua barang yang akan diserahkan kepada

petugas expandable langsung dicek oleh petugas incaming.

Apabila barang yang dipesan terdapat kerusakan atau tidak

sesuai dengan form pemesanan pembelian maka petugas

incaming akan mengembalikan barang yang telah diterima

tersebut beserta surat jalan yang telah diterima ke supplier,

tetapi bila barang yang diterima sesuai dan tidak

terdapat

kerusakan petugas incamin g akan menyerahkan kepada

petugas expandable yang kemudian langsung disimpan di

gudang dan diberi kartu stok barang. Surat jalan disimpan

bersamaan dengan arsip form pemesanan pembelian asli oleh

petugas incaming di file penerimaan barang yang secara


39

otomatis akan mengubah stok barang yang ada di gudang

expandable.

c. Prosedur Pengiriman Barang ke Gudang Expandable

Proseduser pengiriman barang ke gudang expandable

dilakukan oleh petugas incaming. Barang tersebut diserahkan

ke petugas expandable dan kemudian barang langsung

diberikan kartu stok barang dan langsung disimpan di rak

inventory.

d. Prosedur pengeluaran barang dari Gudang Expandable

Prosedur pengeluaran barang dari gudang

expandable

dilakukan oleh para karyawan bagian produksi yang

sebelumnya didaftarkan di dalam data user, mereka meminta

barang ke gudang sesuai dengan jenis barang yang

dibutuhkan secara langsung ke petugas expandable disertai

dengan form permintaan barang, kemudian

karyawan

mendapatkan barang beserta salinan form permintaan

barang

dari petugas expandable. Dan petugas

expandable
40

menyimpan form permintaan barang di file pengeluaran

barang dan secara otomatis program akan mengubah stok

barang yang ada di gudang expandable.

e. Prosedur Pelaporan

Seluruh kegiatan pelaporan dilaporkan ke leader

Purchasing, prosedur pelaporan dilakukan dan dilaporkan

oleh petugas expandable.

Adapun laporan-laporan yang diberikan sebagai berikut:

1. Laporan Stok Barang Mingguan

Adalah merupakan laporan stok barang yang

masih ada di gudang expandable. Laporan ini

dilaporkan setiap minggu berdasarkan data dari

kartu stok barang dan data dari file barang.

2. Laporan Penerimaan Barang Mingguan

Adalah merupakan laporan penerimaan barang dari

supplier yang diterima di gudang expandable.

Laporan ini dilaporkan setiap minggu berdasarkan

data dari file penerimaan barang.

3. Laporan Pengeluaran Barang Harian

Adalah merupakan laporan pengeluaran barang dari

gudang expandable. Laporan ini dilaporkan setiap

hari berdasarkan data dari file pengeluaran barang.

4. Laporan Bulanan
41

Merupakan laporan bulanan yang diambil dari

file

penerimaan barang, file pengeluaran barang dan

file barang yang dihimpun selama satu bulan.

4.3 Data Flow Diagram (DFD) Sistem Usulan

a. Diagram Konteks Sistem Usulan

Gambar 4.1 Diagram Konteks Sistem Usulan


42

b. Diagram Nol Sistem Usulan


43

Gambar 4.2 Diagram Nol Sistem Usulan

c. Diagram Rinci 2.0 Sistem Usulan

Gambar 4.3 Diagram Rinci 2.0 Sistem Usulan

d. Diagram Rinci 4.0 Sistem Usulan


44

Gambar 4.4 Diagram Rinci 4.0 Sistem Usulan

e. Diagram Rinci 5.0 Sistem Usulan


45

Gambar 4.5 Diagram Rinci 5.0 Sistem Usulan

4.4 Normaliasasi

Diperlukan proses normalisasi dalam merancang database

untuk kepentingan program yang akan dipakai pada system usulan,


kode_barang
nama_barang
berikut adalahtype
normalisasi pada perancangan database sistem usulan
maker
stok
a. UnNormalize Form (UNF)
stok_min
kode_user
nama_user
line
grup
produksi
kode_supplier
nama_supplier
alamat
kota
no_telp
no_fax
nama_sales
no_transkeluar
tanggal_keluar
kode_barang
kode_user
jumlah_keluar
total_jumlah_keluar
no_transmasuk
no_delivery_order
tanggal_masuk
kode_barang
kode_user
jumlah_masuk
total_jumlah_masuk
46

Tabel 4.1 Tabel UNF


kode_barang
nama_barang
typeForm (1NF)
b. First Normalize
maker
stok
stok_min
kode_user
nama_user
line
grup
produksi
kode_supplier
nama_supplier
alamat
kota
no_telp
no_fax
nama_sales
no_transkeluar
tanggal_keluar
jumlah_keluar
total_jumlah_keluar
no_transmasuk
no_delivery_order
tanggal_masuk
jumlah_masuk
total_jumlah_masuk

Keterangan :
= Candidat Key
47

Tabel 4.2 Tabel 1NF

c. Second Normalize Form (2NF)

Barang Penerimaan_Barang
kode_barang no_transmasuk
nama_barang no_delivery_order
type tanggal_masuk
maker kode_barang
supplier kode_supplier
stok jumlah_masuk
stok_min total_jumlah_masuk

User
kode_user
nama_user
line
grup
produksi

Suppier
Pengeluaran_barang
kode_supplier
nama_supplier no_transkeluar
alamat tanggal_keluar
kota kode_barang
no_telp kode_user
no_fax jumlah_keluar
nama_sales total_jumlah_keluar

Keterangan :
= Primary Key
48

Tabel 4.3 Tabel 2NF


49

c. Third Normalize Form (3NF)

Barang
kode_barang
nama_barang
type Header_Penerimaan
maker no_transmasuk
stok no_delivery_order
stok_min tanggal_masuk
kode_supplier
total_jumlah_masuk

Detail_Penerimaan
no_transmasuk
kode_barang
User jumlah_masuk
kode_user
nama_user
line
grup
produksi

Header_Pengeluaran
no_transkeluar
tanggal_keluar
kode_user
total_jumlah_keluar

Suppier
Detail_Pengeluaran
kode_supplier
nama_supplier no_transkeluar
alamat kode_barang
kota jumlah_keluar
no_telp
no_fax Keterangan :
nama_sales = Primary Key
= Primary Key

Tabel 4.4 Tabel 3NF


50

4.5 Entity Relationship Diagram (ERD) Sistem Usulan

kode_barang
no_transmasuk
nama_barang
M M no_delivery_order
type
Barang diisi Header_Penerimaan tanggal_masuk
maker
kode_supplier
stok 1
total_jumlah_masuk
stok_min

kode_supplier

nama_supplier

M alamat

memiliki Suppier kota

no_telp

no_fax

nama_sales

1
no_transmasuk
Detail_Penerimaan kode_barang

jumlah_masuk

kode_user
no_transkeluar
nama_user
1 M tanggal_keluar
line User mengambil Header_Pengeluaran
kode_user
grup
M total_jumlah_keluar
produksi

memiliki

M no_transkeluar

Detail_Pengeluaran kode_barang

jumlah_keluar

Gambar 4.6 Entity Relationship Diagram (ERD) Sistem Usulan


51

4.6 Spesifikasi File

a. File Barang

Nama File : File Barang

Fungsi : Untuk menyimpan data barang

Tipe : File Master

Media : Hard Disk

Kunci Field : kode_barang

Tabel 4.6. Spesifikasi File Barang

b. File User

Nama File : File User

Fungsi : Untuk menyimpan data user

Tipe : File Master

Media : Hard Disk

Kunci Field : kode_user


52

Tabel 4.7. Spesifikasi File User

c. File Supplier

Nama File : File Supplier

Fungsi : Untuk menyimpan data supplier

Tipe : File Master

Media : Hard Disk

Kunci Field : kode_supplier

Tabel 4.8. Spesifikasi File Supplier

d. File Header Penerimaan

Nama File : File Header_Penerimaan


53

Fungsi: Untuk menyimpan data header penerimaan

Tipe : File Penerimaan Header

Media : Hard Disk

Kunci Field : no_transmasuk

Tabel 4.9. Spesifikasi File Header Penerimaan

e. File Detail Penerimaan

Nama File : File Detail_Penerimaan

Fungsi : Untuk menyimpan data detail penerimaan

Tipe : File Penerimaan Detail

Media : Hard Disk

Kunci Field : -

Tabel 4.10. Spesifikasi File Detail Penerimaan

f. File Header Pengeluaran

Nama File : File Header_Pengeluaran

Fungsi : Untuk menyimpan data header pengeluaran


54

Tipe : File Pengeluaran Header

Media : Hard Disk

Kunci Field : no_transkeluar

Tabel 4.11. Spesifikasi File Header Penerimaan

g. File Detail Pengeluaran

Nama File : File Detail_Pengeluaran

Fungsi : Untuk menyimpan data detail pengeluaran

Tipe : File Pengeluaran Detail

Media : Hard Disk

Kunci Field : -

Tabel 4.12. Spesifikasi File Detail Pengeluaran


55

4.7 Konfigurasi Sistem Komputer

.4.7.1 Umum

Karena sistem usulan yang dibuat berbasis komputer, maka

sangatlah diperlukan perangkat keras dan perangkat lunaknya untuk

dapat mendukung sistem tersebut. Berikut adalah perangkat keras dan

perangkat lunak yang diusulkan yang minimal dapat digunakan.

4.7.2 Perangkat Keras (Hardware) Minimal

1. Processor : 500 Mhz atau yang setara

2. RAM : 128 MB

3. Hard Disk : 20 GB

4. Floppy Disk : 1,44 MB (3,5”)

5. Mouse : PS/2 Compatible Port

6. Keyboard : Standard 101/102 keys

7. CD-ROM : 52 x Max

8. Monitor : 15”

9. Printer : Dot Matrix, Deskjet

10. Built in LAN Connection

4.7.3 Perangkat Lunak (Software) Minimal

1. Microsoft Windows 2000.

2. VB 6.0 Run Time.

4.7.4 Rekomendasi

1. Perangkat Lunak (Software)


56

a. Sistem Operasi : Microsoft Windows

XP Profesional Service Pack atau Microsoft

Windows 98 (client). Microsoft Windows NT

4.0, Microsoft Windows 2000 (server)

b. Sistem Program : VB 6.0 Run Time

c. Database : Microsoft Access 2000

d. Perangkat Lunak Tambahan : Crystal Report

2. Perangkat Keras (Hardware)

a. Processor : 1,70 GHZ

b. RAM : 256 MB (DDR) PC2100

c. Hard Disk : 40 GB

d. Floppy Disk: 1,44 MB (3,5”)

e. Mouse : PS/2 Compatible Port Buffetech (Scroll Lock)

f. Keyboard : Standard 101/102 keys

g. CD-ROM : 52x Max

h. Monitor : 15”

i. Printer : Dot Matrix, Deskjet

j. Built in LAN connection


57

BAB V

PENUTUP

5.1. Kesimpulan

Dengan dibuatnya aplikasi dan sistem inventory barang penunjang

produksi diharapkan mampu mengatasi masalah yang ada pada sistem

berjalan, karena sistem ini memiliki beberapa kelebihan yang dapat

dimanfaatkan oleh bagian expandable untuk meningkatkan kinerja

pekerjaan dan produktivitas bagian expandable, kelebihan-kelebihan

tersebut diantaranya:

1. Sistem baru ini memiliki database yang dapat melakukan proses

pencarian data baik data barang, data user pengambil barang, data

supplier, data penerimaan barang maupun data pengeluaran barang

expandable.

2. Sistem baru ini dapat melakukan pengolahan dan penyimpanan data.

3. Sistem baru ini dapat melakukan proses perhitungan nilai stok barang

secara otomatis, cepat dan akurat..

4. Sistem baru yang memiliki database terkomputerisasi ini dapat

melakukan proses manipulasi data dan menyajikan serta memberikan

informasi secara tercetak menggunakan laporan otomatis seperti:

laporan stok barang mingguan, laporan penerimaan barang mingguan,

laporan pengeluaran barang harian, laporan bulanan dan request from

kepada yang membutuhkan.


58

5.2. Saran

Sistem baru yang saya buat ini tentunya masih cukup sederhana dan

disesuaikan dengan kondisi dari bagian expandable PT. OTICS Indonesia.

Begitu pula dalam media penyimpanan datanya masih menggunakan hard

disk pada personnel computer. Oleh karena itu, ada beberapa saran yang

dapat disampaikan untuk pemeliharaan dan perbaikan agar sistem berjalan

dengan baik dan dapat dipergunakan dengan dalam jangka waktu yang

cukup lama sampai sistem ini usang, antara lain:

1. Sebaiknya penyimpanan data diletakkan pada server agar dapat diakses

oleh pengguna sistem dengan optimal.

2. Pemberian pelatihan kepada pengguna sistem karena umumnya masih

awam dengan sistem yang baru ini dan mereka belum terbiasa.

3. Sistem yang baru ini tidak dapat melakukan kalkulasi perhitungan

pengeluaran biaya pembelian barang expandable di masing-masing

departemen.

4. Selalu lakukan back-up data minimal sebulan sekali.

5. Selalu melakukan perawatan terhadap hardware dan software yang

mendukung sistem ini.

6. Memberikan informasi kepada pihak pembuat sistem untuk selalu dapat

mengembangkan sistem.
59

DAFTAR PUSTAKA

Jogiyanto H.M. Analisa dan Desain Sistem Informasi: Pendekatan

Terstruktur Teori dan Praktek Aplikasi Bisnis, Yogyakarta: Penerbit

Andi, 1999.

Henry C. Lucas, Jr. Information Systems Concepts for Management. Tokyo:

International Student Edition, 1982.

Chris Gane and Trish Sarson, Structured Systems Analysis: Tools and Techniques,

NJ: Prentice-Hall, 1979.

Howe D.R., DataAnalysis for Database Design, London: Edward Arnold, 1991.

Rusmawan, Uus, Merancang Koneksi Database Dalam Visual Basic 6.0, Jakarta:

Elex Media Komputindo, 2005.

Rusmawan, Uus, Mengolah Database dengan SQL dan Crystal Report

Dalam

Visual Basic 6.0, Jakarta: Elex Media Komputindo, 2005.

Alam, M. Agus J., Belajar Sendiri Microsoft Visual Basic Versi 6.0, Jakarta: Elex

Media Komputindo, 1999.


60

DAFTAR LAMPIRAN

3.2.1. Form Pemesanan Pembelian


61

Gambar 3.2.1 Form Pemesanan Pembelian


3.2.2. Surat Jalan

Gambar 3.2.2 Surat Jalan


62

3.2.3. Kartu Stok Barang

Gambar 3.2.3 Kartu stok Barang


63

3.2.4. Form Pemintaan Barang


64

Gambar 3.2.4 Form Permintaan Barang


3.2.5. Laporan Pengeluaran Barang Bulanan

Gambar 3.2.5 Laporan Pengeluaran Barang Bulanan


65

3.2.6. Laporan Stok Barang Bulanan

Gambar 3.2.6 Laporan Stok Barang Bulanan


66

4.2.1. Laporan Stok Barang

Gambar 4.2.1 Laporan Stok Barang


67

4.2.2. Laporan Penerimaan Barang Harian

Gambar 4.2.2 Laporan Penerimaan Barang Harian


68

4.2.3. Laporan Pengeluaran Barang Harian

Gambar 4.2.3 Laporan Pengeluaran Barang Harian


69

4.2.4. Laporan Bulanan


70

Gambar 4.2.4 Laporan Bulanan

4.2.5. Form Menu Utama

Gambar 4.2.5 Form Menu Utama

Listing Program Form Menu Utama


Option Explicit
Private Sub Form_Load()
Dim SHari As String
Dim AHari As Variant

AHari = Array("Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu")


SHari = AHari(Abs(Weekday(Date$) - 1))

sb.Panels.Item(2) = SHari & ", " & Format$(Date$, "dd/MM/yyyy")


sb.Panels.Item(3) = Format$(Time$, "hh:mm:ss")
End Sub

Private Sub Form_Resize()


imglogo.Left = (Me.Width - imglogo.Width) / 2
End Sub
71

Private Sub mnuexit_Click()


tutupkoneksi
End
End Sub

Private Sub mnul_barang_Click()


frmcetak_barang.Show vbModal
End Sub

Private Sub mnul_penerimaan_Click()


frmcetak_penerimaan.Show vbModal
End Sub

Private Sub mnul_pengeluaran_Click()


frmcetak_pengeluaran.Show vbModal
End Sub

Private Sub mnul_supplier_Click()


frmcetak_supplier.Show vbModal
End Sub

Private Sub mnul_user_Click()


frmcetak_user.Show vbModal
End Sub

Private Sub mnulogout_Click()


frmlogin.Show
Me.Visible = False
End Sub

Private Sub mnum_barang_Click()


frmbarang.Show vbModal
End Sub

Private Sub mnum_supplier_Click()


frmsupplier.Show vbModal
End Sub

Private Sub mnum_user_Click()


frmuser.Show vbModal
End Sub

Private Sub mnum_userlogin_Click()


frml_user.Show vbModal
End Sub
72

Private Sub mnut_penerimaan_Click()


frmpenerimaan.Show vbModal
End Sub

Private Sub mnut_pengeluaran_Click()


frmpengeluaran.Show vbModal
End Sub

Private Sub tb_ButtonClick(ByVal Button As MSComctlLib.Button)


Select Case Button.Key
Case "fkeluar"
mnuexit_Click
Case "flogoff"
mnulogout_Click
Case "mbarang"
mnum_barang_Click
Case "msupplier"
mnum_supplier_Click
Case "muser"
mnum_user_Click
Case "muser_login"
mnum_userlogin_Click
Case "tpenerimaan"
mnut_penerimaan_Click
Case "tpengeluaran"
mnut_pengeluaran_Click
End Select
End Sub

Private Sub tmrjam_Timer()


sb.Panels.Item(3) = Format$(Time$, "hh:mm:ss")
End Sub
73

4.2.6. Form Master Barang

Gambar 4.2.6 Form Master Barang

Listing Program Form Master Barang


Option Explicit
Dim rsdata_list As New clsdata_list
Dim rsfilter_list As New clsfilter_list

Sub hapus_data()
Dim rshapus_data As New ADODB.Recordset
rshapus_data.CursorLocation = adUseClient

strsqlnya = "DELETE FROM barang" & _


" WHERE barang.kode_barang = '" &
Replace(lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"
rshapus_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic
Set rshapus_data = Nothing

MsgBox "Data terhapus...!!!", vbInformation, "Information"


74

''Hapus List yang data nya di hapus


lvwbarang.ListItems.Remove (Val(lblke.Caption))

''Jika Jumlah list kosong maka berhenti


If lvwbarang.ListItems.Count = 0 Then
lblke.Caption = "0"
Exit Sub
End If

If Val(lblke.Caption) > lvwbarang.ListItems.Count Then _


lblke.Caption = Val(lblke.Caption) - 1

AutoFitListView lvwbarang
''load_records
End Sub

Sub update_data()
If CSng(txtstok.Text) < CSng(txtmin.Text) Then
MsgBox "Stok barang lebih kecil dari stok minimal...!!!", vbCritical, "Critic"
txtstok.SetFocus
SendKeys "{Home}+{End}"
Else
strsqlnya = "UPDATE barang SET kode_barang = '" & Replace(txtkode.Text,
"'", "^") & _
"', nama_barang = '" & Replace(txtbarang.Text, "'", "^") & _
"', type = '" & Replace(txttipe.Text, "'", "^") & _
"', maker = '" & Replace(txtmarker.Text, "'", "^") & _
"', stok = " & CSng(txtstok.Text) & _
", stok_min = " & CSng(txtmin.Text) & _
" WHERE barang.kode_barang = '" &
Replace(lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"

Dim rsupdate_data As New ADODB.Recordset


rsupdate_data.CursorLocation = adUseClient

rsupdate_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1) = Replace(txtkode.Text,
"^", "'")
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(2) =
Replace(txtbarang.Text, "^", "'")
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(3) = Replace(txttipe.Text,
"^", "'")
75

lvwbarang.ListItems(Val(lblke.Caption)).SubItems(4) =
Replace(txtmarker.Text, "^", "'")
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(5) = Replace(txtstok.Text,
"^", "'")
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(6) = Replace(txtmin.Text,
"^", "'")

AutoFitListView lvwbarang

Set rsupdate_data = Nothing


End If
End Sub

Sub simpan_data()
If CSng(txtstok.Text) < CSng(txtmin.Text) Then
MsgBox "Stok barang lebih kecil dari stok minimal...!!!", vbCritical, "Critic"
txtstok.SetFocus
SendKeys "{Home}+{End}"
Else
If cari_data_redudansi("barang", "kode_barang", Replace(txtkode.Text, "'",
"^"), 1) = False Then
Dim rssimpan_data As New ADODB.Recordset
rssimpan_data.CursorLocation = adUseClient
strsqlnya = "INSERT INTO barang VALUES ('" & Replace(txtkode.Text,
"'", "^") & "', '" & _
Replace(txtbarang.Text, "'", "^") & "', '" & Replace(txttipe.Text, "'",
"^") & "', '" & _
Replace(txtmarker.Text, "'", "^") & "', " & CSng(txtstok.Text) & ", "
& CSng(txtmin.Text) & ")"

rssimpan_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_data = Nothing

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwbarang.ListItems.Add(lvwbarang.ListItems.Count + 1, , , 1, 18).Text =
Empty
lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(1) =
Replace(txtkode.Text, "^", "'")
lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(2) =
Replace(txtbarang.Text, "^", "'")
lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(3) =
Replace(txttipe.Text, "^", "'")
lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(4) =
Replace(txtmarker.Text, "^", "'")
76

lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(5) =
Replace(txtstok.Text, "^", "'")
lvwbarang.ListItems(lvwbarang.ListItems.Count).SubItems(6) =
Replace(txtmin.Text, "^", "'")

lblke.Caption = lvwbarang.ListItems.Count
AutoFitListView lvwbarang

hidupin_tombol
Else
MsgBox "Kode barang sudah di gunakan...!!!", vbCritical, "Critic"
txtkode.SetFocus
SendKeys "{Home}+{End}"
End If
End If
End Sub

Sub load_records()
Dim rsbarang As New ADODB.Recordset

rsdata_list.select_rsbarang rsbarang
hitung_kolom_listview lvwbarang, lvwbarang.ColumnHeaders.Count,
rsbarang.Fields.Count + 1
ListHeaders lvwbarang, "barang"

If rsbarang.RecordCount > 0 Then


isi_list_view Me, lvwbarang, rsbarang, rsbarang.Fields.Count
AutoFitListView lvwbarang

lblke.Caption = lvwbarang.ListItems.Count
Else
lvwbarang.ListItems.Clear
lblke.Caption = "0"
End If

Set rsbarang = Nothing


End Sub

Sub filter_records()
Dim rsbarang As New ADODB.Recordset

rsfilter_list.filter_rsbarang rsbarang, Replace(txtfilter.Text, "'", "^")


hitung_kolom_listview lvwbarang, lvwbarang.ColumnHeaders.Count,
rsbarang.Fields.Count + 1
ListHeaders lvwbarang, "user"
77

If rsbarang.RecordCount > 0 Then


isi_list_view Me, lvwbarang, rsbarang, rsbarang.Fields.Count
AutoFitListView lvwbarang
lblke.Caption = lvwbarang.ListItems.Count
Else
lvwbarang.ListItems.Clear
lblke.Caption = "0"
End If

Set rsbarang = Nothing


End Sub

Sub show_record_to_form()
''Kode
txtkode.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1)
''Nama Barang
txtbarang.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(2)
''Tipe
txttipe.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(3)
''Maker
txtmarker.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(4)
''Stok
txtstok.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(5)
''Stok Min
txtmin.Text = lvwbarang.ListItems(Val(lblke.Caption)).SubItems(6)
End Sub

Private Sub cmdadd_Click()


kosongkan_teks Me

''Matiin tombol
cmdfirst.Enabled = False
cmdprev.Enabled = False
cmdnext.Enabled = False
cmdlast.Enabled = False

cmddelete.Enabled = False
cmdadd.Enabled = False

cmdfilter.Enabled = False
cmdall_records.Enabled = False

txtkode.SetFocus
End Sub

Private Sub cmdall_records_Click()


78

load_records
End Sub

Private Sub cmdcancel_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
hidupin_tombol
End If
If Val(lblke.Caption) <> 0 Then
show_record_to_form
Else
kosongkan_teks Me
End If
End Sub

Private Sub cmddelete_Click()


If lvwbarang.ListItems.Count > 0 Then
prosedur_hapus_data Me
lblke_Change
End If
End Sub

Private Sub cmdekspor_Click()


If str_form = "frmpenerimaan" Then
If lvwbarang.ListItems.Count > 0 Then
frmpenerimaan.txtkode_barang.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1)
frmpenerimaan.txtbarang.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(2)
frmpenerimaan.txtstok.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(5)
Unload Me
End If
ElseIf str_form = "frmpengeluaran" Then
If lvwbarang.ListItems.Count > 0 Then
frmpengeluaran.txtkode_barang.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(1)
frmpengeluaran.txtbarang.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(2)
frmpengeluaran.txtstok.Text =
lvwbarang.ListItems(Val(lblke.Caption)).SubItems(5)
Unload Me
End If
End If
End Sub
79

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdfilter_Click()


If Len(Trim(txtfilter.Text)) > 0 Then filter_records
End Sub

Private Sub cmdfirst_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then _
lblke.Caption = "1"
End Sub

Private Sub cmdlast_Click()


lblke.Caption = lvwbarang.ListItems.Count
End Sub

Private Sub cmdnext_Click()


If Val(lblke.Caption) <> lvwbarang.ListItems.Count Then
lblke.Caption = Val(lblke.Caption) + 1
End If
End Sub

Private Sub cmdprev_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then
lblke.Caption = Val(lblke.Caption) - 1
End If
End Sub

Private Sub cmdsave_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
prosedur_simpan_data Me
Else
If lvwbarang.ListItems.Count > 0 Then _
prosedur_update_data Me
End If
End Sub

Private Sub Form_Load()


load_records

SetListViewColor lvwbarang, Picture1, vbWhite, vbLightGreen


End Sub

Sub hidupin_tombol()
80

cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
''cmdexit.Enabled = True
cmdadd.Enabled = True

cmdfilter.Enabled = True
cmdall_records.Enabled = True
End Sub

Sub AutoFitListView(ByVal lvw As ListView)


Dim r As Long
Dim C As Long
Dim cell_wid As Single
Dim col_wid As Single
Dim s_spasi As Single
Dim str_spasi As String

For C = 1 To lvw.ColumnHeaders.Count
col_wid = 0
For r = 1 To lvw.ListItems.Count
If C > 1 Then
cell_wid = TextWidth(lvw.ListItems(r).SubItems(C - 1))
Else
cell_wid = TextWidth(lvw.ListItems(C).Text) + 500
End If

If col_wid < cell_wid Then col_wid = cell_wid

cell_wid = TextWidth(lvw.ColumnHeaders(C).Text) + 500


If col_wid < cell_wid Then col_wid = cell_wid
Next r

lvw.ColumnHeaders(C).Width = col_wid + 200


Next C
End Sub

Private Sub lblke_Change()


If lblke.Caption <> "0" Then
show_record_to_form

cmdfirst.Enabled = True
cmdprev.Enabled = True
81

cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
cmdcancel.Enabled = True

sb_record Me, lblke.Caption, lvwbarang.ListItems.Count


Else
kosongkan_teks Me
sb_record Me, "0", "0"
End If
End Sub

Private Sub lvwbarang_Click()


If cmdadd.Enabled = False Then Exit Sub
If lvwbarang.ListItems.Count > 0 Then _
lblke.Caption = lvwbarang.SelectedItem.Index
End Sub

Private Sub lvwbarang_ColumnClick(ByVal ColumnHeader As


MSComctlLib.ColumnHeader)
If cmdadd.Enabled = False Then Exit Sub
Dim colVar As ColumnHeader
' If the ListView is already sorted by the clicked column, _
' just reverse the order. Otherwise, sort the clicked column ascending.
If lvwbarang.Sorted = True And ColumnHeader.SubItemIndex =
lvwbarang.SortKey Then
If lvwbarang.SortOrder = lvwAscending Then
lvwbarang.SortOrder = lvwDescending
Else
lvwbarang.SortOrder = lvwAscending
End If
Else
lvwbarang.Sorted = True
lvwbarang.SortKey = ColumnHeader.SubItemIndex
lvwbarang.SortOrder = lvwAscending
End If
'Now, use the sort information to update the up _
or down arrows on the columnheader
For Each colVar In lvwbarang.ColumnHeaders
If colVar.SubItemIndex = lvwbarang.SortKey Then
If lvwbarang.SortOrder = lvwDescending Then
colVar.Icon = 64
Else
colVar.Icon = 65
End If
82

Else
colVar.Icon = 0
End If
Next colVar
lblke_Change
End Sub

Private Sub txtmin_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Then Exit Sub
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Sub

Private Sub txtstok_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Then Exit Sub
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Sub
83

4.2.7. Form Master User

Gambar 4.2.7 Form Master User

Listing Program Form Master User


Option Explicit
Dim rsdata_list As New clsdata_list
Dim rsfilter_list As New clsfilter_list

Sub hapus_data()
Dim rshapus_data As New ADODB.Recordset
rshapus_data.CursorLocation = adUseClient

strsqlnya = "DELETE FROM m_user" & _


" WHERE m_user.kode_user = '" &
Replace(lvwuser.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"
rshapus_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic
Set rshapus_data = Nothing

MsgBox "Data terhapus...!!!", vbInformation, "Information"


84

''Hapus List yang data nya di hapus


lvwuser.ListItems.Remove (Val(lblke.Caption))

''Jika Jumlah list kosong maka berhenti


If lvwuser.ListItems.Count = 0 Then
lblke.Caption = "0"
Exit Sub
End If

If Val(lblke.Caption) > lvwuser.ListItems.Count Then _


lblke.Caption = Val(lblke.Caption) - 1

AutoFitListView lvwuser
End Sub

Sub update_data()
strsqlnya = "UPDATE m_user SET kode_user = '" & Replace(txtkode.Text, "'",
"^") & _
"', nama_user = '" & Replace(txtuser.Text, "'", "^") & _
"', line = '" & Replace(txtline.Text, "'", "^") & _
"', grup = '" & Replace(txtgrup.Text, "'", "^") & _
"', produksi = '" & Replace(txtproduksi.Text, "'", "^") & _
"' WHERE m_user.kode_user = '" &
Replace(lvwuser.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"

Dim rsupdate_data As New ADODB.Recordset


rsupdate_data.CursorLocation = adUseClient

rsupdate_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(1) = Replace(txtkode.Text,
"^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(2) = Replace(txtuser.Text,
"^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(3) = Replace(txtline.Text,
"^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(4) = Replace(txtgrup.Text,
"^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(5) =
Replace(txtproduksi.Text, "^", "'")

AutoFitListView lvwuser
85

Set rsupdate_data = Nothing


End Sub

Sub simpan_data()
If cari_data_redudansi("m_user", "kode_user", Replace(txtkode.Text, "'", "^"), 1)
= False Then
Dim rssimpan_data As New ADODB.Recordset
rssimpan_data.CursorLocation = adUseClient
strsqlnya = "INSERT INTO m_user VALUES ('" & Replace(txtkode.Text, "'",
"^") & "', '" & _
Replace(txtuser.Text, "'", "^") & "', '" & Replace(txtline.Text, "'", "^") &
"', '" & _
Replace(txtgrup.Text, "'", "^") & "', '" & Replace(txtproduksi.Text, "'",
"^") & "')"

rssimpan_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_data = Nothing

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwuser.ListItems.Add(lvwuser.ListItems.Count + 1, , , 1, 18).Text = Empty


lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(1) =
Replace(txtkode.Text, "^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(2) =
Replace(txtuser.Text, "^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(3) =
Replace(txtline.Text, "^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(4) =
Replace(txtgrup.Text, "^", "'")
lvwuser.ListItems(lvwuser.ListItems.Count).SubItems(5) =
Replace(txtproduksi.Text, "^", "'")

lblke.Caption = lvwuser.ListItems.Count
AutoFitListView lvwuser

hidupin_tombol
Else
MsgBox "Kode user sudah di gunakan...!!!", vbCritical, "Critic"
txtkode.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub

Sub load_records()
Dim rsuser As New ADODB.Recordset
86

rsdata_list.select_rsuser rsuser
hitung_kolom_listview lvwuser, lvwuser.ColumnHeaders.Count,
rsuser.Fields.Count + 1
ListHeaders lvwuser, "user"

If rsuser.RecordCount > 0 Then


isi_list_view Me, lvwuser, rsuser, rsuser.Fields.Count
AutoFitListView lvwuser

lblke.Caption = lvwuser.ListItems.Count
Else
lvwuser.ListItems.Clear
lblke.Caption = "0"
End If

Set rsuser = Nothing


End Sub

Sub filter_records()
Dim rsuser As New ADODB.Recordset

rsfilter_list.filter_rsuser rsuser, Replace(txtfilter.Text, "'", "^")


hitung_kolom_listview lvwuser, lvwuser.ColumnHeaders.Count,
rsuser.Fields.Count + 1
ListHeaders lvwuser, "user"

If rsuser.RecordCount > 0 Then


isi_list_view Me, lvwuser, rsuser, rsuser.Fields.Count
AutoFitListView lvwuser
lblke.Caption = lvwuser.ListItems.Count
Else
lvwuser.ListItems.Clear
lblke.Caption = "0"
End If

Set rsuser = Nothing


End Sub

Sub show_record_to_form()
''Kode
txtkode.Text = lvwuser.ListItems(Val(lblke.Caption)).SubItems(1)
''Nama User
txtuser.Text = lvwuser.ListItems(Val(lblke.Caption)).SubItems(2)
''Line
txtline.Text = lvwuser.ListItems(Val(lblke.Caption)).SubItems(3)
87

''Grup
txtgrup.Text = lvwuser.ListItems(Val(lblke.Caption)).SubItems(4)
''Produksi
txtproduksi.Text = lvwuser.ListItems(Val(lblke.Caption)).SubItems(5)
End Sub

Private Sub cmdadd_Click()


kosongkan_teks Me

''Matiin tombol
cmdfirst.Enabled = False
cmdprev.Enabled = False
cmdnext.Enabled = False
cmdlast.Enabled = False

cmddelete.Enabled = False
cmdadd.Enabled = False

cmdfilter.Enabled = False
cmdall_records.Enabled = False

txtkode.SetFocus
End Sub

Private Sub cmdall_records_Click()


load_records
End Sub

Private Sub cmdcancel_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
hidupin_tombol
End If
If Val(lblke.Caption) <> 0 Then
show_record_to_form
Else
kosongkan_teks Me
End If
End Sub

Private Sub cmddelete_Click()


If lvwuser.ListItems.Count > 0 Then
prosedur_hapus_data Me
lblke_Change
End If
End Sub
88

Private Sub cmdekspor_Click()


If lvwuser.ListItems.Count > 0 Then
frmpengeluaran.txtkode_user.Text =
lvwuser.ListItems(Val(lblke.Caption)).SubItems(1)
frmpengeluaran.txtuser.Text =
lvwuser.ListItems(Val(lblke.Caption)).SubItems(2)
Unload Me
End If
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdfilter_Click()


If Len(Trim(txtfilter.Text)) > 0 Then filter_records
End Sub

Private Sub cmdfirst_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then _
lblke.Caption = "1"
End Sub

Private Sub cmdlast_Click()


lblke.Caption = lvwuser.ListItems.Count
End Sub

Private Sub cmdnext_Click()


If Val(lblke.Caption) <> lvwuser.ListItems.Count Then
lblke.Caption = Val(lblke.Caption) + 1
End If
End Sub

Private Sub cmdprev_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then
lblke.Caption = Val(lblke.Caption) - 1
End If
End Sub

Private Sub cmdsave_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
prosedur_simpan_data Me
Else
If lvwuser.ListItems.Count > 0 Then _
89

prosedur_update_data Me
End If
End Sub

Private Sub Form_Load()


load_records

SetListViewColor lvwuser, Picture1, vbWhite, vbLightGreen


End Sub

Sub hidupin_tombol()
cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
cmdadd.Enabled = True

cmdfilter.Enabled = True
cmdall_records.Enabled = True
End Sub

Sub AutoFitListView(ByVal lvw As ListView)


Dim r As Long
Dim C As Long
Dim cell_wid As Single
Dim col_wid As Single
Dim s_spasi As Single
Dim str_spasi As String

For C = 1 To lvw.ColumnHeaders.Count
col_wid = 0
For r = 1 To lvw.ListItems.Count
If C > 1 Then
cell_wid = TextWidth(lvw.ListItems(r).SubItems(C - 1))
Else
cell_wid = TextWidth(lvw.ListItems(C).Text) + 500
End If

If col_wid < cell_wid Then col_wid = cell_wid

cell_wid = TextWidth(lvw.ColumnHeaders(C).Text) + 500


If col_wid < cell_wid Then col_wid = cell_wid
Next r
90

lvw.ColumnHeaders(C).Width = col_wid + 200


Next C
End Sub

Private Sub lblke_Change()


If lblke.Caption <> "0" Then
show_record_to_form

cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
cmdcancel.Enabled = True

sb_record Me, lblke.Caption, lvwuser.ListItems.Count


Else
kosongkan_teks Me
sb_record Me, "0", "0"
End If
End Sub

Private Sub lvwuser_Click()


If cmdadd.Enabled = False Then Exit Sub
If lvwuser.ListItems.Count > 0 Then _
lblke.Caption = lvwuser.SelectedItem.Index
End Sub

Private Sub lvwuser_ColumnClick(ByVal ColumnHeader As


MSComctlLib.ColumnHeader)
If cmdadd.Enabled = False Then Exit Sub
Dim colVar As ColumnHeader
' If the ListView is already sorted by the clicked column, _
' just reverse the order. Otherwise, sort the clicked column ascending.
If lvwuser.Sorted = True And ColumnHeader.SubItemIndex = lvwuser.SortKey
Then
If lvwuser.SortOrder = lvwAscending Then
lvwuser.SortOrder = lvwDescending
Else
lvwuser.SortOrder = lvwAscending
End If
Else
lvwuser.Sorted = True
lvwuser.SortKey = ColumnHeader.SubItemIndex
lvwuser.SortOrder = lvwAscending
91

End If
'Now, use the sort information to update the up _
or down arrows on the columnheader
For Each colVar In lvwuser.ColumnHeaders
If colVar.SubItemIndex = lvwuser.SortKey Then
If lvwuser.SortOrder = lvwDescending Then
colVar.Icon = 64
Else
colVar.Icon = 65
End If
Else
colVar.Icon = 0
End If
Next colVar
lblke_Change
End Sub
92

4.2.8. Form Master Supplier

Gambar 4.2.8 Form Master Supplier

Listing Program Form Master Supplier


Option Explicit
Dim rsdata_list As New clsdata_list
Dim rsfilter_list As New clsfilter_list

Sub hapus_data()
Dim rshapus_data As New ADODB.Recordset
rshapus_data.CursorLocation = adUseClient

strsqlnya = "DELETE FROM supplier" & _


" WHERE supplier.kode_supplier = '" &
Replace(lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"
rshapus_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic
Set rshapus_data = Nothing

MsgBox "Data terhapus...!!!", vbInformation, "Information"


93

''Hapus List yang data nya di hapus


lvwsupplier.ListItems.Remove (Val(lblke.Caption))

''Jika Jumlah list kosong maka berhenti


If lvwsupplier.ListItems.Count = 0 Then
lblke.Caption = "0"
Exit Sub
End If

If Val(lblke.Caption) > lvwsupplier.ListItems.Count Then _


lblke.Caption = Val(lblke.Caption) - 1

AutoFitListView lvwsupplier
End Sub

Sub update_data()
strsqlnya = "UPDATE supplier SET kode_supplier = '" & Replace(txtkode.Text,
"'", "^") & _
"', nama_supplier = '" & Replace(txtsupplier.Text, "'", "^") & _
"', alamat = '" & Replace(txtalamat.Text, "'", "^") & _
"', kota = '" & Replace(txtkota.Text, "'", "^") & _
"', no_telp = '" & Replace(txttelp.Text, "'", "^") & _
"', no_fax = '" & Replace(txtfax.Text, "'", "^") & _
"', nama_sales = '" & Replace(txtsales.Text, "'", "^") & _
"' WHERE supplier.kode_supplier = '" &
Replace(lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(1), "'", "^") & "'"

Dim rsupdate_data As New ADODB.Recordset


rsupdate_data.CursorLocation = adUseClient

rsupdate_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(1) =
Replace(txtkode.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(2) =
Replace(txtsupplier.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(3) =
Replace(txtalamat.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(4) =
Replace(txtkota.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(5) =
Replace(txttelp.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(6) =
Replace(txtfax.Text, "^", "'")
94

lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(7) =
Replace(txtsales.Text, "^", "'")

AutoFitListView lvwsupplier

Set rsupdate_data = Nothing


End Sub

Sub simpan_data()
If cari_data_redudansi("supplier", "kode_supplier", Replace(txtkode.Text, "'",
"^"), 1) = False Then
Dim rssimpan_data As New ADODB.Recordset
rssimpan_data.CursorLocation = adUseClient
strsqlnya = "INSERT INTO supplier VALUES ('" & Replace(txtkode.Text, "'",
"^") & "', '" & _
Replace(txtsupplier.Text, "'", "^") & "', '" & Replace(txtalamat.Text, "'",
"^") & "', '" & _
Replace(txtkota.Text, "'", "^") & "', '" & Replace(txttelp.Text, "'", "^")
& "', '" & _
Replace(txtfax.Text, "'", "^") & "', '" & Replace(txtsales.Text, "'", "^")
& "')"

rssimpan_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_data = Nothing

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwsupplier.ListItems.Add(lvwsupplier.ListItems.Count + 1, , , 1, 18).Text =
Empty
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(1) =
Replace(txtkode.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(2) =
Replace(txtsupplier.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(3) =
Replace(txtalamat.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(4) =
Replace(txtkota.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(5) =
Replace(txttelp.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(6) =
Replace(txtfax.Text, "^", "'")
lvwsupplier.ListItems(lvwsupplier.ListItems.Count).SubItems(7) =
Replace(txtsales.Text, "^", "'")

lblke.Caption = lvwsupplier.ListItems.Count
95

AutoFitListView lvwsupplier
hidupin_tombol
Else
MsgBox "Kode supplier sudah di gunakan...!!!", vbCritical, "Critic"
txtkode.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub

Sub load_records()
Dim rssupplier As New ADODB.Recordset

rsdata_list.select_rssupplier rssupplier
hitung_kolom_listview lvwsupplier, lvwsupplier.ColumnHeaders.Count,
rssupplier.Fields.Count + 1
ListHeaders lvwsupplier, "supplier"

If rssupplier.RecordCount > 0 Then


isi_list_view Me, lvwsupplier, rssupplier, rssupplier.Fields.Count
AutoFitListView lvwsupplier

lblke.Caption = lvwsupplier.ListItems.Count
Else
lvwsupplier.ListItems.Clear
lblke.Caption = "0"
End If

Set rssupplier = Nothing


End Sub

Sub filter_records()
Dim rssupplier As New ADODB.Recordset

rsfilter_list.filter_rssupplier rssupplier, Replace(txtfilter.Text, "'", "^")


hitung_kolom_listview lvwsupplier, lvwsupplier.ColumnHeaders.Count,
rssupplier.Fields.Count + 1
ListHeaders lvwsupplier, "supplier"

If rssupplier.RecordCount > 0 Then


isi_list_view Me, lvwsupplier, rssupplier, rssupplier.Fields.Count
AutoFitListView lvwsupplier
lblke.Caption = lvwsupplier.ListItems.Count
Else
lvwsupplier.ListItems.Clear
lblke.Caption = "0"
End If
96

Set rssupplier = Nothing


End Sub

Sub show_record_to_form()
''Kode
txtkode.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(1)
''Nama Supplier
txtsupplier.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(2)
''ALamat
txtalamat.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(3)
''Kota
txtkota.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(4)
''No Telp
txttelp.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(5)
''No Fax
txtfax.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(6)
''Nama Sales
txtsales.Text = lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(7)
End Sub

Private Sub cmdadd_Click()


kosongkan_teks Me

''Matiin tombol
cmdfirst.Enabled = False
cmdprev.Enabled = False
cmdnext.Enabled = False
cmdlast.Enabled = False

cmddelete.Enabled = False
cmdadd.Enabled = False

cmdfilter.Enabled = False
cmdall_records.Enabled = False

txtkode.SetFocus
End Sub

Private Sub cmdall_records_Click()


load_records
End Sub

Private Sub cmdcancel_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
97

hidupin_tombol
End If
If Val(lblke.Caption) <> 0 Then
show_record_to_form
Else
kosongkan_teks Me
End If
End Sub

Private Sub cmddelete_Click()


If lvwsupplier.ListItems.Count > 0 Then
prosedur_hapus_data Me
lblke_Change
End If
End Sub

Private Sub cmdekspor_Click()


If lvwsupplier.ListItems.Count > 0 Then
frmpenerimaan.txtkode_supplier.Text =
lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(1)
frmpenerimaan.txtsupplier.Text =
lvwsupplier.ListItems(Val(lblke.Caption)).SubItems(2)
Unload Me
End If
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdfilter_Click()


If Len(Trim(txtfilter.Text)) > 0 Then filter_records
End Sub

Private Sub cmdfirst_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then _
lblke.Caption = "1"
End Sub

Private Sub cmdlast_Click()


lblke.Caption = lvwsupplier.ListItems.Count
End Sub

Private Sub cmdnext_Click()


If Val(lblke.Caption) <> lvwsupplier.ListItems.Count Then
lblke.Caption = Val(lblke.Caption) + 1
98

End If
End Sub

Private Sub cmdprev_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then
lblke.Caption = Val(lblke.Caption) - 1
End If
End Sub

Private Sub cmdsave_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
prosedur_simpan_data Me
Else
If lvwsupplier.ListItems.Count > 0 Then _
prosedur_update_data Me
End If
End Sub

Private Sub Form_Load()


load_records

SetListViewColor lvwsupplier, Picture1, vbWhite, vbLightGreen


End Sub

Sub hidupin_tombol()
cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
cmdadd.Enabled = True

cmdfilter.Enabled = True
cmdall_records.Enabled = True
End Sub

Sub AutoFitListView(ByVal lvw As ListView)


Dim r As Long
Dim C As Long
Dim cell_wid As Single
Dim col_wid As Single
Dim s_spasi As Single
Dim str_spasi As String
99

For C = 1 To lvw.ColumnHeaders.Count
col_wid = 0
For r = 1 To lvw.ListItems.Count
If C > 1 Then
cell_wid = TextWidth(lvw.ListItems(r).SubItems(C - 1))
Else
cell_wid = TextWidth(lvw.ListItems(C).Text) + 500
End If

If col_wid < cell_wid Then col_wid = cell_wid

cell_wid = TextWidth(lvw.ColumnHeaders(C).Text) + 500


If col_wid < cell_wid Then col_wid = cell_wid
Next r

lvw.ColumnHeaders(C).Width = col_wid + 200


Next C
End Sub

Private Sub lblke_Change()


If lblke.Caption <> "0" Then
show_record_to_form

cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmddelete.Enabled = True
cmdcancel.Enabled = True

sb_record Me, lblke.Caption, lvwsupplier.ListItems.Count


Else
kosongkan_teks Me
sb_record Me, "0", "0"
End If
End Sub

Private Sub lvwsupplier_Click()


If cmdadd.Enabled = False Then Exit Sub
If lvwsupplier.ListItems.Count > 0 Then _
lblke.Caption = lvwsupplier.SelectedItem.Index
End Sub

Private Sub lvwsupplier_ColumnClick(ByVal ColumnHeader As


MSComctlLib.ColumnHeader)
100

If cmdadd.Enabled = False Then Exit Sub


Dim colVar As ColumnHeader
' If the ListView is already sorted by the clicked column, _
' just reverse the order. Otherwise, sort the clicked column ascending.
If lvwsupplier.Sorted = True And ColumnHeader.SubItemIndex =
lvwsupplier.SortKey Then
If lvwsupplier.SortOrder = lvwAscending Then
lvwsupplier.SortOrder = lvwDescending
Else
lvwsupplier.SortOrder = lvwAscending
End If
Else
lvwsupplier.Sorted = True
lvwsupplier.SortKey = ColumnHeader.SubItemIndex
lvwsupplier.SortOrder = lvwAscending
End If
'Now, use the sort information to update the up _
or down arrows on the columnheader
For Each colVar In lvwsupplier.ColumnHeaders
If colVar.SubItemIndex = lvwsupplier.SortKey Then
If lvwsupplier.SortOrder = lvwDescending Then
colVar.Icon = 64
Else
colVar.Icon = 65
End If
Else
colVar.Icon = 0
End If
Next colVar
lblke_Change
End Sub

Private Sub txtfax_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Or KeyAscii = 45 Then Exit Sub
If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0
End Sub

Private Sub txttelp_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Or KeyAscii = 45 Then Exit Sub
If IsNumeric(Chr$(KeyAscii)) = False Then KeyAscii = 0
End Sub
101

4.2.9. Form Transaksi Penerimaan Barang

Gambar 4.2.9 Form Transaksi Penerimaan Barang

Listing Program Form Transaksi Penerimaan Barang


Option Explicit

Dim rsdata_list As New clsdata_list


Dim rsfilter_list As New clsfilter_list

Sub simpan_data()
If cari_data_redudansi("header_penerimaan", "no_transmasuk",
CStr(txtpenerimaan.Text), 2) = False Then
''''SIMPAN DATA HEADER PENERIMAAN
==========================================================
Dim rssimpan_data As New ADODB.Recordset
rssimpan_data.CursorLocation = adUseClient

strsqlnya = "INSERT INTO header_penerimaan VALUES (" &


CSng(txtpenerimaan.Text) & ", '" & _
Replace(txtdelivery.Text, "'", "^") & "', '" & Format$(txttanggal.Value,
"dd/MM/yyyy") & "', '" & _
102

Replace(txtkode_supplier.Text, "'", "^") & "', " & CSng(txttotal.Text) &


")"

rssimpan_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_data = Nothing

''''-------------------------------------------------------------------------------------------------
-------------

''''SIMPAN DATA HEADER PENERIMAAN


==========================================================
Dim i As Integer
For i = 1 To Val(Val(lvwdpenerimaan.ListItems.Count))
Dim rssimpan_detail As New ADODB.Recordset
rssimpan_detail.CursorLocation = adUseClient

strsqlnya = "INSERT INTO detail_penerimaan VALUES (" &


CSng(txtpenerimaan.Text) & ", '" & _
lvwdpenerimaan.ListItems(i).SubItems(1) & "', " & _
CSng(lvwdpenerimaan.ListItems(i).SubItems(4)) & ")"
rssimpan_detail.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_detail = Nothing

''Update Stok Barang


Dim rsupdate_barang As New ADODB.Recordset
rsupdate_barang.CursorLocation = adUseClient

strsqlnya = "UPDATE barang SET stok = " &


Val(lvwdpenerimaan.ListItems(i).SubItems(4)) +
Val(lvwdpenerimaan.ListItems(i).SubItems(3)) & _
" WHERE kode_barang = '" &
lvwdpenerimaan.ListItems(i).SubItems(1) & "'"
rsupdate_barang.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rsupdate_barang = Nothing


Next i

''''-------------------------------------------------------------------------------------------------
-------------

MsgBox "Data tersimpan...!!!", vbInformation, "Information"

lvwhpenerimaan.ListItems.Add(lvwhpenerimaan.ListItems.Count + 1, , , 1,
18).Text = Empty
103

lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(1) =
txtpenerimaan.Text
lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(2) =
Replace(txtdelivery.Text, "^", "'")
lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(3) =
Format$(txttanggal.Value, "dd/MM/yyyy")
lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(4) =
Replace(txtkode_supplier.Text, "^", "'")
lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(5) =
Replace(txtsupplier.Text, "^", "'")
lvwhpenerimaan.ListItems(lvwhpenerimaan.ListItems.Count).SubItems(6) =
txttotal.Text

lblke.Caption = lvwhpenerimaan.ListItems.Count
AutoFitListView lvwhpenerimaan

hidupin_tombol
End If
End Sub

Sub load_records()
Dim rshpenerimaan As New ADODB.Recordset

rsdata_list.select_rshpenerimaan rshpenerimaan
hitung_kolom_listview lvwhpenerimaan, lvwhpenerimaan.ColumnHeaders.Count,
rshpenerimaan.Fields.Count + 1
ListHeaders lvwhpenerimaan, "hpenerimaan"

If rshpenerimaan.RecordCount > 0 Then


isi_list_view Me, lvwhpenerimaan, rshpenerimaan, rshpenerimaan.Fields.Count
AutoFitListView lvwhpenerimaan

lblke.Caption = lvwhpenerimaan.ListItems.Count
Else
lvwhpenerimaan.ListItems.Clear
lblke.Caption = "0"
End If

Set rshpenerimaan = Nothing


End Sub

Sub filter_records()
Dim rshpenerimaan As New ADODB.Recordset

rsfilter_list.filter_rshpenerimaan rshpenerimaan, Replace(txtfilter(0).Text, "'", "^")


104

hitung_kolom_listview lvwhpenerimaan, lvwhpenerimaan.ColumnHeaders.Count,


rshpenerimaan.Fields.Count + 1
ListHeaders lvwhpenerimaan, "hpenerimaan"

If rshpenerimaan.RecordCount > 0 Then


isi_list_view Me, lvwhpenerimaan, rshpenerimaan, rshpenerimaan.Fields.Count
AutoFitListView lvwhpenerimaan
lblke.Caption = lvwhpenerimaan.ListItems.Count
Else
lvwhpenerimaan.ListItems.Clear
lvwdpenerimaan.ListItems.Clear
lblke.Caption = "0"
End If

Set rshpenerimaan = Nothing


End Sub

Sub show_record_to_form()
''''SHOW RECORD HEADER
PENERIMAAN===============================================
======
''No Penerimaan
txtpenerimaan.Text = lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(1)
''Delivery
txtdelivery.Text = lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(2)
''Tanggal
txttanggal.Value = lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(3)
''Kode Supplier
txtkode_supplier.Text =
lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(4)
''Supplier
txtsupplier.Text = lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(5)
''Jumlah
txttotal.Text = lvwhpenerimaan.ListItems(Val(lblke.Caption)).SubItems(6)
''''---------------------------------------------------------------------------------

''''SHOW RECORD DETAIL


PENERIMAAN===============================================
If Len(Trim$(txtpenerimaan.Text)) = 0 Then Exit Sub
Dim rsdpenerimaan As New ADODB.Recordset

rsdata_list.select_rsdpenerimaan rsdpenerimaan, CSng(txtpenerimaan.Text)


hitung_kolom_listview lvwdpenerimaan, lvwdpenerimaan.ColumnHeaders.Count,
rsdpenerimaan.Fields.Count + 1
ListHeaders lvwdpenerimaan, "dpenerimaan"
105

If rsdpenerimaan.RecordCount > 0 Then


isi_list_view Me, lvwdpenerimaan, rsdpenerimaan, rsdpenerimaan.Fields.Count
AutoFitListView lvwdpenerimaan
Else
lvwdpenerimaan.ListItems.Clear
End If

Set rsdpenerimaan = Nothing


''''---------------------------------------------------------------------------------
End Sub

Sub input_list(strkode As String, strjumlah As String)


If Len(Trim$(strkode)) = 0 Then
MsgBox "Data list tidak bisa di input...!!!", vbCritical, "Critic"
txtfilter(2).SetFocus
SendKeys "{Home}+{End}"
Else
If Len(Trim$(strjumlah)) = 0 Then
txtjumlah.SetFocus
SendKeys "{Home}+{End}"
MsgBox "Data list tidak bisa di input...!!!", vbCritical, "Critic"
Else
lvwdpenerimaan.ListItems.Add(lvwdpenerimaan.ListItems.Count + 1, , , 1,
18).Text = Empty
lvwdpenerimaan.ListItems(lvwdpenerimaan.ListItems.Count).SubItems(1) =
txtkode_barang.Text
lvwdpenerimaan.ListItems(lvwdpenerimaan.ListItems.Count).SubItems(2) =
txtbarang.Text
lvwdpenerimaan.ListItems(lvwdpenerimaan.ListItems.Count).SubItems(3) =
txtstok.Text
lvwdpenerimaan.ListItems(lvwdpenerimaan.ListItems.Count).SubItems(4) =
txtjumlah.Text
AutoFitListView lvwdpenerimaan

txttotal.Text = Val(txttotal.Text) + Val(txtjumlah.Text)

txtjumlah.Text = Empty
txtfilter(2).SetFocus
SendKeys "{Home}+{End}"
End If
End If
End Sub
Private Sub cmdadd_Click()
kosongkan_teks Me

''Matiin tombol
106

cmdfirst.Enabled = False
cmdprev.Enabled = False
cmdnext.Enabled = False
cmdlast.Enabled = False

cmdadd.Enabled = False

cmdfilter.Enabled = False
cmdall_records.Enabled = False

Dim rsnopenerimaan As New ADODB.Recordset


rsdata_list.select_nopenerimaan rsnopenerimaan
If IsNull(rsnopenerimaan(0)) = False Then
txtpenerimaan.Text = Val(rsnopenerimaan(0)) + 1
Else
txtpenerimaan.Text = 1
End If

Set rsnopenerimaan = Nothing

lvwdpenerimaan.ListItems.Clear
txtdelivery.SetFocus
End Sub

Private Sub cmdall_records_Click()


load_records
End Sub

Private Sub cmdbarang_Click()


str_form = Me.Name
frmbarang.cmdekspor.Visible = True
frmbarang.Show vbModal
End Sub

Private Sub cmdcancel_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
hidupin_tombol
End If
If Val(lblke.Caption) <> 0 Then
show_record_to_form
Else
kosongkan_teks Me
End If
End Sub
107

Private Sub cmddetail_barang_Click()


If Len(Trim$(txtkode_barang.Text)) = 0 Then Exit Sub
Dim rsbarang As New ADODB.Recordset

rsfilter_list.filter_rsbarang rsbarang, Replace(txtkode_barang.Text, "'", "^")

MsgBox "Kode Barang : " & Chr(13) & rsbarang(0) & Chr(13) & Chr(13) & _
"Barang : " & Chr(13) & rsbarang(1) & Chr(13) & Chr(13) & _
"Tipe : " & Chr(13) & rsbarang(2) & Chr(13) & Chr(13) & _
"Maker : " & Chr(13) & rsbarang(3) & Chr(13) & Chr(13) & _
"Stok : " & Chr(13) & rsbarang(4) & Chr(13) & Chr(13) & _
"Stok Min : " & Chr(13) & rsbarang(5), vbInformation, "Information"

Set rsbarang = Nothing


End Sub

Private Sub cmddetail_supplier_Click()


If Len(Trim$(txtkode_supplier.Text)) = 0 Then Exit Sub
Dim rssupplier As New ADODB.Recordset

rsfilter_list.filter_rssupplier rssupplier, Replace(txtkode_supplier.Text, "'", "^")

MsgBox "Kode supplier : " & Chr(13) & rssupplier(0) & Chr(13) & Chr(13) & _
"Supplier : " & Chr(13) & rssupplier(1) & Chr(13) & Chr(13) & _
"Alamat : " & Chr(13) & rssupplier(2) & Chr(13) & Chr(13) & _
"Kota : " & Chr(13) & rssupplier(3) & Chr(13) & Chr(13) & _
"No Telp : " & Chr(13) & rssupplier(4) & Chr(13) & Chr(13) & _
"No Fax : " & Chr(13) & rssupplier(5) & Chr(13) & Chr(13) & _
"Sales : " & Chr(13) & rssupplier(6), vbInformation, "Information"

Set rssupplier = Nothing


End Sub

Private Sub cmdenter_Click()


input_list txtkode_barang.Text, txtjumlah.Text
End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdfilter_Click()


If Len(Trim(txtfilter(0).Text)) > 0 Then filter_records
End Sub

Private Sub cmdfirst_Click()


108

If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then _


lblke.Caption = "1"
End Sub

Private Sub cmdlast_Click()


lblke.Caption = lvwhpenerimaan.ListItems.Count
End Sub

Private Sub cmdnext_Click()


If Val(lblke.Caption) <> lvwhpenerimaan.ListItems.Count Then
lblke.Caption = Val(lblke.Caption) + 1
End If
End Sub

Private Sub cmdprev_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then
lblke.Caption = Val(lblke.Caption) - 1
End If
End Sub

Private Sub cmdsave_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
If Len(Trim$(txtdelivery.Text)) = 0 Then Exit Sub
If Len(Trim$(txtkode_supplier.Text)) = 0 Then Exit Sub
If lvwdpenerimaan.ListItems.Count = 0 Then Exit Sub
simpan_data
End If
End Sub

Private Sub cmdsupplier_Click()


frmsupplier.cmdekspor.Visible = True
frmsupplier.Show vbModal
End Sub

Private Sub Form_Load()


load_records

SetListViewColor lvwhpenerimaan, Picture1, vbWhite, vbLightGreen

ListHeaders lvwdpenerimaan, "dpenerimaan"


SetListViewColor lvwdpenerimaan, Picture1, vbWhite, vbLightGreen
End Sub

Sub hidupin_tombol()
cmdfirst.Enabled = True
109

cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmdadd.Enabled = True

cmdfilter.Enabled = True
cmdall_records.Enabled = True
End Sub

Sub AutoFitListView(ByVal lvw As ListView)


Dim r As Long
Dim C As Long
Dim cell_wid As Single
Dim col_wid As Single
Dim s_spasi As Single
Dim str_spasi As String

For C = 1 To lvw.ColumnHeaders.Count
col_wid = 0
For r = 1 To lvw.ListItems.Count
If C > 1 Then
cell_wid = TextWidth(lvw.ListItems(r).SubItems(C - 1))
Else
cell_wid = TextWidth(lvw.ListItems(C).Text) + 500
End If

If col_wid < cell_wid Then col_wid = cell_wid

cell_wid = TextWidth(lvw.ColumnHeaders(C).Text) + 500


If col_wid < cell_wid Then col_wid = cell_wid
Next r

lvw.ColumnHeaders(C).Width = col_wid + 200


Next C
End Sub

Private Sub lblke_Change()


If lblke.Caption <> "0" Then
show_record_to_form

cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True
110

cmdcancel.Enabled = True

sb_record Me, lblke.Caption, lvwhpenerimaan.ListItems.Count


Else
kosongkan_teks Me
sb_record Me, "0", "0"
End If
End Sub

Private Sub lvwdpenerimaan_ColumnClick(ByVal ColumnHeader As


MSComctlLib.ColumnHeader)
If cmdadd.Enabled = False Then Exit Sub
Dim colVar As ColumnHeader
' If the ListView is already sorted by the clicked column, _
' just reverse the order. Otherwise, sort the clicked column ascending.
If lvwdpenerimaan.Sorted = True And ColumnHeader.SubItemIndex =
lvwdpenerimaan.SortKey Then
If lvwdpenerimaan.SortOrder = lvwAscending Then
lvwdpenerimaan.SortOrder = lvwDescending
Else
lvwdpenerimaan.SortOrder = lvwAscending
End If
Else
lvwdpenerimaan.Sorted = True
lvwdpenerimaan.SortKey = ColumnHeader.SubItemIndex
lvwdpenerimaan.SortOrder = lvwAscending
End If
'Now, use the sort information to update the up _
or down arrows on the columnheader
For Each colVar In lvwdpenerimaan.ColumnHeaders
If colVar.SubItemIndex = lvwdpenerimaan.SortKey Then
If lvwdpenerimaan.SortOrder = lvwDescending Then
colVar.Icon = 64
Else
colVar.Icon = 65
End If
Else
colVar.Icon = 0
End If
Next colVar
End Sub

Private Sub txtfilter_KeyUp(Index As Integer, KeyCode As Integer, Shift As


Integer)
If Index = 1 Then
If Len(Trim$(txtfilter(1).Text)) = 0 Then Exit Sub
111

Dim rssupplier As New ADODB.Recordset

rsfilter_list.filter_rssupplier rssupplier, Replace(txtfilter(1).Text, "'", "^")

If rssupplier.RecordCount > 0 Then


txtkode_supplier.Text = rssupplier(0)
txtsupplier.Text = rssupplier(1)
Else
txtkode_supplier.Text = Empty
txtsupplier.Text = Empty
End If

Set rssupplier = Nothing


ElseIf Index = 2 Then
If Len(Trim$(txtfilter(2).Text)) = 0 Then Exit Sub
Dim rsbarang As New ADODB.Recordset

rsfilter_list.filter_rsbarang rsbarang, Replace(txtfilter(2).Text, "'", "^")

If rsbarang.RecordCount > 0 Then


txtkode_barang.Text = rsbarang(0)
txtbarang.Text = rsbarang(1)
txtstok.Text = rsbarang(4)
Else
txtkode_barang.Text = Empty
txtbarang.Text = Empty
txtstok.Text = Empty
End If

Set rsbarang = Nothing


End If
End Sub

Private Sub txtjumlah_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Then Exit Sub

If KeyAscii = 13 Then
input_list txtkode_barang.Text, txtjumlah.Text
End If

If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0


End Sub
112

4.2.10. Form Transasi Pengeluaran Barang

Gambar 4.2.10 Form Transaksi Pengeluaran Barang

Listing Program Form Transaksi Penerimaan Barang


Option Explicit

Dim rsdata_list As New clsdata_list


Dim rsfilter_list As New clsfilter_list

Sub simpan_data()
If cari_data_redudansi("header_pengeluaran", "no_transkeluar",
CStr(txtpengeluaran.Text), 2) = False Then
''''SIMPAN DATA HEADER PENERIMAAN
==========================================================
======================
Dim rssimpan_data As New ADODB.Recordset
rssimpan_data.CursorLocation = adUseClient
113

strsqlnya = "INSERT INTO header_pengeluaran VALUES (" &


CSng(txtpengeluaran.Text) & ", '" & _
Format$(txttanggal.Value, "dd/MM/yyyy") & "', '" & _
Replace(txtkode_user.Text, "'", "^") & "', " & CSng(txttotal.Text) & ")"

rssimpan_data.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_data = Nothing

''''-------------------------------------------------------------------------------------------------
-------------

''''SIMPAN DATA HEADER PENERIMAAN


==========================================================
======================
Dim i As Integer
For i = 1 To Val(Val(lvwdpengeluaran.ListItems.Count))
Dim rssimpan_detail As New ADODB.Recordset
rssimpan_detail.CursorLocation = adUseClient

strsqlnya = "INSERT INTO detail_pengeluaran VALUES (" &


CSng(txtpengeluaran.Text) & ", '" & _
lvwdpengeluaran.ListItems(i).SubItems(1) & "', " & _
CSng(lvwdpengeluaran.ListItems(i).SubItems(4)) & ")"
rssimpan_detail.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rssimpan_detail = Nothing

''Update Stok Barang


Dim rsupdate_barang As New ADODB.Recordset
rsupdate_barang.CursorLocation = adUseClient

strsqlnya = "UPDATE barang SET stok = " &


Val(lvwdpengeluaran.ListItems(i).SubItems(3)) -
Val(lvwdpengeluaran.ListItems(i).SubItems(4)) & _
" WHERE kode_barang = '" &
lvwdpengeluaran.ListItems(i).SubItems(1) & "'"
rsupdate_barang.Open strsqlnya, conn, adOpenDynamic, adLockOptimistic

Set rsupdate_barang = Nothing


Next i

''''-------------------------------------------------------------------------------------------------
-------------

MsgBox "Data tersimpan...!!!", vbInformation, "Information"


114

lvwhpengeluaran.ListItems.Add(lvwhpengeluaran.ListItems.Count + 1, , , 1,
18).Text = Empty
lvwhpengeluaran.ListItems(lvwhpengeluaran.ListItems.Count).SubItems(1) =
txtpengeluaran.Text
lvwhpengeluaran.ListItems(lvwhpengeluaran.ListItems.Count).SubItems(2) =
Format$(txttanggal.Value, "dd/MM/yyyy")
lvwhpengeluaran.ListItems(lvwhpengeluaran.ListItems.Count).SubItems(3) =
Replace(txtkode_user.Text, "^", "'")
lvwhpengeluaran.ListItems(lvwhpengeluaran.ListItems.Count).SubItems(4) =
Replace(txtuser.Text, "^", "'")
lvwhpengeluaran.ListItems(lvwhpengeluaran.ListItems.Count).SubItems(5) =
txttotal.Text

lblke.Caption = lvwhpengeluaran.ListItems.Count
AutoFitListView lvwhpengeluaran

hidupin_tombol
End If
End Sub

Sub load_records()
Dim rshpengeluaran As New ADODB.Recordset

rsdata_list.select_rshpengeluaran rshpengeluaran
hitung_kolom_listview lvwhpengeluaran,
lvwhpengeluaran.ColumnHeaders.Count, rshpengeluaran.Fields.Count + 1
ListHeaders lvwhpengeluaran, "hpengeluaran"

If rshpengeluaran.RecordCount > 0 Then


isi_list_view Me, lvwhpengeluaran, rshpengeluaran,
rshpengeluaran.Fields.Count
AutoFitListView lvwhpengeluaran

lblke.Caption = lvwhpengeluaran.ListItems.Count
Else
lvwhpengeluaran.ListItems.Clear
lblke.Caption = "0"
End If

Set rshpengeluaran = Nothing


End Sub

Sub filter_records()
Dim rshpengeluaran As New ADODB.Recordset
115

rsfilter_list.filter_rshpengeluaran rshpengeluaran, Replace(txtfilter(0).Text, "'",


"^")
hitung_kolom_listview lvwhpengeluaran,
lvwhpengeluaran.ColumnHeaders.Count, rshpengeluaran.Fields.Count + 1
ListHeaders lvwhpengeluaran, "hpengeluaran"

If rshpengeluaran.RecordCount > 0 Then


isi_list_view Me, lvwhpengeluaran, rshpengeluaran,
rshpengeluaran.Fields.Count
AutoFitListView lvwhpengeluaran
lblke.Caption = lvwhpengeluaran.ListItems.Count
Else
lvwhpengeluaran.ListItems.Clear
lvwdpengeluaran.ListItems.Clear
lblke.Caption = "0"
End If

Set rshpengeluaran = Nothing


End Sub

Sub show_record_to_form()
''''SHOW RECORD HEADER
PENGELUARAN=============================================
========
''No Pengeluaran
txtpengeluaran.Text =
lvwhpengeluaran.ListItems(Val(lblke.Caption)).SubItems(1)
''Tanggal
txttanggal.Value = lvwhpengeluaran.ListItems(Val(lblke.Caption)).SubItems(2)
''Kode User
txtkode_user.Text = lvwhpengeluaran.ListItems(Val(lblke.Caption)).SubItems(3)
''User
txtuser.Text = lvwhpengeluaran.ListItems(Val(lblke.Caption)).SubItems(4)
''Jumlah
txttotal.Text = lvwhpengeluaran.ListItems(Val(lblke.Caption)).SubItems(5)
''''---------------------------------------------------------------------------------

''''SHOW RECORD DETAIL


PENGELUARAN=============================================
========
If Len(Trim$(txtpengeluaran.Text)) = 0 Then Exit Sub
Dim rsdpengeluaran As New ADODB.Recordset

rsdata_list.select_rsdpengeluaran rsdpengeluaran, CSng(txtpengeluaran.Text)


hitung_kolom_listview lvwdpengeluaran,
lvwdpengeluaran.ColumnHeaders.Count, rsdpengeluaran.Fields.Count + 1
116

ListHeaders lvwdpengeluaran, "dpenerimaan"

If rsdpengeluaran.RecordCount > 0 Then


isi_list_view Me, lvwdpengeluaran, rsdpengeluaran,
rsdpengeluaran.Fields.Count
AutoFitListView lvwdpengeluaran
Else
lvwdpengeluaran.ListItems.Clear
End If

Set rsdpengeluaran = Nothing


''''---------------------------------------------------------------------------------
End Sub

Sub input_list(strkode As String, strjumlah As String)


If Len(Trim$(strkode)) = 0 Then
MsgBox "Data list tidak bisa di input...!!!", vbCritical, "Critic"
txtfilter(2).SetFocus
SendKeys "{Home}+{End}"
Else
If Len(Trim$(strjumlah)) = 0 Then
txtjumlah.SetFocus
SendKeys "{Home}+{End}"
MsgBox "Data list tidak bisa di input...!!!", vbCritical, "Critic"
Else
If CSng(txtstok.Text) < CSng(strjumlah) Then
txtjumlah.SetFocus
SendKeys "{Home}+{End}"
MsgBox "Data list tidak bisa di input...!!!", vbCritical, "Critic"
Else
lvwdpengeluaran.ListItems.Add(lvwdpengeluaran.ListItems.Count + 1, , ,
1, 18).Text = Empty

lvwdpengeluaran.ListItems(lvwdpengeluaran.ListItems.Count).SubItems(1) =
txtkode_barang.Text

lvwdpengeluaran.ListItems(lvwdpengeluaran.ListItems.Count).SubItems(2) =
txtbarang.Text

lvwdpengeluaran.ListItems(lvwdpengeluaran.ListItems.Count).SubItems(3) =
txtstok.Text

lvwdpengeluaran.ListItems(lvwdpengeluaran.ListItems.Count).SubItems(4) =
txtjumlah.Text
AutoFitListView lvwdpengeluaran
117

txttotal.Text = Val(txttotal.Text) + Val(txtjumlah.Text)

txtjumlah.Text = Empty
txtfilter(2).SetFocus
SendKeys "{Home}+{End}"
End If
End If
End If
End Sub
Private Sub cmdadd_Click()
kosongkan_teks Me

''Matiin tombol
cmdfirst.Enabled = False
cmdprev.Enabled = False
cmdnext.Enabled = False
cmdlast.Enabled = False

cmdadd.Enabled = False

cmdfilter.Enabled = False
cmdall_records.Enabled = False

Dim rsnopengeluaran As New ADODB.Recordset


rsdata_list.select_nopengeluaran rsnopengeluaran
If IsNull(rsnopengeluaran(0)) = False Then
txtpengeluaran.Text = Val(rsnopengeluaran(0)) + 1
Else
txtpengeluaran.Text = 1
End If

Set rsnopengeluaran = Nothing

lvwdpengeluaran.ListItems.Clear
txttanggal.SetFocus
End Sub

Private Sub cmdall_records_Click()


load_records
End Sub

Private Sub cmdbarang_Click()


str_form = Me.Name
frmbarang.cmdekspor.Visible = True
frmbarang.Show vbModal
End Sub
118

Private Sub cmdcancel_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
hidupin_tombol
End If
If Val(lblke.Caption) <> 0 Then
show_record_to_form
Else
kosongkan_teks Me
End If
End Sub

Private Sub cmddetail_barang_Click()


If Len(Trim$(txtkode_barang.Text)) = 0 Then Exit Sub
Dim rsbarang As New ADODB.Recordset

rsfilter_list.filter_rsbarang rsbarang, Replace(txtkode_barang.Text, "'", "^")

MsgBox "Kode Barang : " & Chr(13) & rsbarang(0) & Chr(13) & Chr(13) & _
"Barang : " & Chr(13) & rsbarang(1) & Chr(13) & Chr(13) & _
"Tipe : " & Chr(13) & rsbarang(2) & Chr(13) & Chr(13) & _
"Maker : " & Chr(13) & rsbarang(3) & Chr(13) & Chr(13) & _
"Stok : " & Chr(13) & rsbarang(4) & Chr(13) & Chr(13) & _
"Stok Min : " & Chr(13) & rsbarang(5), vbInformation, "Information"

Set rsbarang = Nothing


End Sub

Private Sub cmddetail_user_Click()


If Len(Trim$(txtkode_user.Text)) = 0 Then Exit Sub
Dim rsuser As New ADODB.Recordset

rsfilter_list.filter_rsuser rsuser, Replace(txtkode_user.Text, "'", "^")

MsgBox "Kode user : " & Chr(13) & rsuser(0) & Chr(13) & Chr(13) & _
"User : " & Chr(13) & rsuser(1) & Chr(13) & Chr(13) & _
"Line : " & Chr(13) & rsuser(2) & Chr(13) & Chr(13) & _
"Grup : " & Chr(13) & rsuser(3) & Chr(13) & Chr(13) & _
"Produksi : " & Chr(13) & rsuser(4), vbInformation, "Information"

Set rsuser = Nothing


End Sub

Private Sub cmdenter_Click()


input_list txtkode_barang.Text, txtjumlah.Text
119

End Sub

Private Sub cmdexit_Click()


Unload Me
End Sub

Private Sub cmdfilter_Click()


If Len(Trim(txtfilter(0).Text)) > 0 Then filter_records
End Sub

Private Sub cmdfirst_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then _
lblke.Caption = "1"
End Sub

Private Sub cmdlast_Click()


lblke.Caption = lvwhpengeluaran.ListItems.Count
End Sub

Private Sub cmdnext_Click()


If Val(lblke.Caption) <> lvwhpengeluaran.ListItems.Count Then
lblke.Caption = Val(lblke.Caption) + 1
End If
End Sub

Private Sub cmdprev_Click()


If Val(lblke.Caption) <> 0 And Val(lblke.Caption) <> 1 Then
lblke.Caption = Val(lblke.Caption) - 1
End If
End Sub

Private Sub cmdsave_Click()


''Jika record di tambah maka hidup tombol
If cmdadd.Enabled = False Then
If Len(Trim$(txtkode_user.Text)) = 0 Then Exit Sub
If lvwdpengeluaran.ListItems.Count = 0 Then Exit Sub
simpan_data
End If
End Sub

Private Sub cmduser_Click()


frmuser.cmdekspor.Visible = True
frmuser.Show vbModal
End Sub

Private Sub Form_Load()


120

load_records

SetListViewColor lvwhpengeluaran, Picture1, vbWhite, vbLightGreen

ListHeaders lvwdpengeluaran, "dpenerimaan"


SetListViewColor lvwdpengeluaran, Picture1, vbWhite, vbLightGreen
End Sub

Sub hidupin_tombol()
cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmdadd.Enabled = True

cmdfilter.Enabled = True
cmdall_records.Enabled = True
End Sub

Sub AutoFitListView(ByVal lvw As ListView)


Dim r As Long
Dim C As Long
Dim cell_wid As Single
Dim col_wid As Single
Dim s_spasi As Single
Dim str_spasi As String

For C = 1 To lvw.ColumnHeaders.Count
col_wid = 0
For r = 1 To lvw.ListItems.Count
If C > 1 Then
cell_wid = TextWidth(lvw.ListItems(r).SubItems(C - 1))
Else
cell_wid = TextWidth(lvw.ListItems(C).Text) + 500
End If

If col_wid < cell_wid Then col_wid = cell_wid

cell_wid = TextWidth(lvw.ColumnHeaders(C).Text) + 500


If col_wid < cell_wid Then col_wid = cell_wid
Next r

lvw.ColumnHeaders(C).Width = col_wid + 200


Next C
End Sub
121

Private Sub lblke_Change()


If lblke.Caption <> "0" Then
show_record_to_form

cmdfirst.Enabled = True
cmdprev.Enabled = True
cmdnext.Enabled = True
cmdlast.Enabled = True

cmdcancel.Enabled = True

sb_record Me, lblke.Caption, lvwhpengeluaran.ListItems.Count


Else
kosongkan_teks Me
sb_record Me, "0", "0"
End If
End Sub

Private Sub lvwdpengeluaran_ColumnClick(ByVal ColumnHeader As


MSComctlLib.ColumnHeader)
If cmdadd.Enabled = False Then Exit Sub
Dim colVar As ColumnHeader
' If the ListView is already sorted by the clicked column, _
' just reverse the order. Otherwise, sort the clicked column ascending.
If lvwdpengeluaran.Sorted = True And ColumnHeader.SubItemIndex =
lvwdpengeluaran.SortKey Then
If lvwdpengeluaran.SortOrder = lvwAscending Then
lvwdpengeluaran.SortOrder = lvwDescending
Else
lvwdpengeluaran.SortOrder = lvwAscending
End If
Else
lvwdpengeluaran.Sorted = True
lvwdpengeluaran.SortKey = ColumnHeader.SubItemIndex
lvwdpengeluaran.SortOrder = lvwAscending
End If
'Now, use the sort information to update the up _
or down arrows on the columnheader
For Each colVar In lvwdpengeluaran.ColumnHeaders
If colVar.SubItemIndex = lvwdpengeluaran.SortKey Then
If lvwdpengeluaran.SortOrder = lvwDescending Then
colVar.Icon = 64
Else
colVar.Icon = 65
End If
122

Else
colVar.Icon = 0
End If
Next colVar
End Sub

Private Sub txtfilter_KeyUp(Index As Integer, KeyCode As Integer, Shift As


Integer)
If Index = 1 Then
If Len(Trim$(txtfilter(1).Text)) = 0 Then Exit Sub
Dim rsuser As New ADODB.Recordset

rsfilter_list.filter_rsuser rsuser, Replace(txtfilter(1).Text, "'", "^")

If rsuser.RecordCount > 0 Then


txtkode_user.Text = rsuser(0)
txtuser.Text = rsuser(1)
Else
txtkode_user.Text = Empty
txtuser.Text = Empty
End If

Set rsuser = Nothing


ElseIf Index = 2 Then
If Len(Trim$(txtfilter(2).Text)) = 0 Then Exit Sub
Dim rsbarang As New ADODB.Recordset

rsfilter_list.filter_rsbarang rsbarang, Replace(txtfilter(2).Text, "'", "^")

If rsbarang.RecordCount > 0 Then


txtkode_barang.Text = rsbarang(0)
txtbarang.Text = rsbarang(1)
txtstok.Text = rsbarang(4)
Else
txtkode_barang.Text = Empty
txtbarang.Text = Empty
txtstok.Text = Empty
End If

Set rsbarang = Nothing


End If
End Sub

Private Sub txtjumlah_KeyPress(KeyAscii As Integer)


If KeyAscii = 8 Then Exit Sub
123

If KeyAscii = 13 Then
input_list txtkode_barang.Text, txtjumlah.Text
End If

If IsNumeric(Chr(KeyAscii)) = False Then KeyAscii = 0


End Sub

Anda mungkin juga menyukai