Part1
Joko Purnomo | 2:45 AM | 9comments
Kali ini saya akan proses pembuatan aplikasi Penjualan Point Of Sales (POS) yang
sederhana dengan menggunakan delphi. Disini saya menggunakan DELPHI XE2
tapi prosesnya sama bagi pengguna delphi versi lain. Sebelum praktek sedikit saya
jelaskan apa itu POS. POS adalah aplikasi penjualan yang digunakan untuk
memanajemen penjualan atau toko-toko kecil, biasanya POS berisi modul-modul
yang terdapat pada aplikasi guna untuk memanajemen datanya. Misal:
Data Barang
Data Pelangan
Data Pengguna
Data Supplier
Transaksi Pembelian
Transaksi Penjualan
Laporan Penjualan
Laporan Pembelian
Kalau untuk aplikasi POS yang berharga mahal mungkin modulnya lebih banyak dari
itu ada juga yang bisa terkoneksi internet dengan menggunakan web service.
Karena ini nanti akan membahas aplikasi POS yang sederhana, maka saya batasi
masalah agar pembahasan nanti tidak meluas. Modul-modul diatas yang nantinya
saya gunakan untuk membuat aplikasi POS.
Tahap-tahap yang perlu dilakukan pertama adalah membuat database POS nya.
Database yang nanti saya gunakan adalah MySQL. Untuk yang belum mengetahui
bagaimana membuat database menggunakan MySQL bisa merujuk ke
halaman Membuat Database Dengan MySQL. Kita akan membuat database dengan
alamat,
notelepon,
kodebarang,
hargabeli,
Perancangan database sudah selesai. Desain database dapat dilihat pada gambar
dibawah yang menggunakan Editor Navicat.
Tutorial Pembuatan Aplikasi Sederhana untuk part 1 Sampai sini dulu. dengan
perancangan databasenya.
Pada Part2 nanti akan desain interface di delphi . Aplikasi ini untuk pemula seperti
saya. Kalau sudah pada master harap kasih komen dan sarannya. Orang belajar,
salah itu biasa jangan dicela atau dihina. :D
Pertama kita akan membuat desain Menu Utama pada aplikasi. Desain seperti pada
gambar dibawah atau desain sesuai keinginan anda.
Tambahkan komponen TMainmenu kemudian klik 2X. Isi dari tiap menu tersebut
adalah dapat dilihat pada gambar dibawah.
1. Menu File
2. Menu Master
3. Menu Transaksi
4. Menu Laporan
5. Menu Bantuan
Tambahkan hint pada setiap menu dengan cara pilih menu kemudian atur
properties hint. Misal menu backup saya pilih kemudian properties hint saya isi
dengan " Lakukan Backup/restrore untuk menjaga keamanan data"
Menu utama sudah dibuat. kemudia tambahkan komponen TToolbar pada
form yang nantinya untuk meletakan tolmol tombol shortcut. Dan tambahkan
juga TImageList untuk menampung Icon yang nantinya diletakan ditoolbar. Lihat
gambar dibawah ini.
Agar bisa tampilan seperti di atas properties yang harus diatur sebagai berikut:
ada
Proses ini masih tahap awal jadi masih ada beberapa proses. Untuk Peroses
Selanjutnya nanti Mendesain Form-Form yang dibutuhkan aplikasi. Jadi ikuti terus
prosesnya sampai selesai ... :D.
Artikel ini di peruntukan untuk pemula. Untuk para yang sudah master berikan
masukan saja. Karena mungkin artikel yang saya buat ini adalah sampah bagi para
master. :D.
Keterangan :
Untuk Datamodul1 properties Name diganti DM setiap komponen ZQuery
properties SQL di isi dengan table masing-masing sesuai dengan nama Query, Misal
untuk Qdatabarang atur propertiesConnection diisi dengan Koneksi, properties
SQL diisi : " select * from tbarang" kemudian propertis active diganti True.
Lakukan Langkah seperti pada tutorial Koneksi MySQL dengan Zeos. Kemudian
simpan dengan Udm.Pas
Maka hasil apabila sudah terkoneksi dengan database, terlihat seperti pada gambar
dibawah:
procedure TFdatabarang.AutoKode;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbarang';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(rigth(kodebarang,5)) as kode from tbarang';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodebarang.Text:='BR.'+kode;
end;
Procedure Reset untuk mengosongkan semua kotak Edit ketika ingin mengisi
data baru.
procedure TFdatabarang.Reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
cmbsatuan.Text:='';
cmbsupplier.Text:='';
bitbtn1.Caption:='Tambah';
dm.QdataBarang.Active:=False;
Dm.QdataBarang.Active:=True;
end;
Post;
end;
Reset;
AutoKode;
end;
end;
''+dm.QdataBarang.FieldByName('namabarang').AsString+' akan
dihapus?',MTConfirmation,[MByes,MBno],0)=mrYes then
begin
dm.QdataBarang.Delete;
Reset;
AutoKode;
end;
end;
dm.QdataSupplier.Next;
end;
end;
Semua script pada Form data barang sudah dimasukan. dan silahkan tekan F9
untuk menjalankanya. Dan apabila langkah-langkah benar maka tidak akan terjadi
error. dan lihat hasil seperti pada gambar dibawah.
Sebelumnya untuk memanggil Form Databarang. Pada Menu utama
tambahkan Uses udatabarang agar bisa dishow.
Kemudian kembali ke Menu Utama Pada tombol Data Barang dan Menu Data
Barang tambahkan script seperti dibawah ini.
// Menu data barang
procedure TFMenuUtama.M2Click(Sender: TObject);
begin
Fdatabarang.ShowModal;
end;
// Tombol Data Barang
procedure TFMenuUtama.ToolButton1Click(Sender: TObject);
begin
Fdatabarang.ShowModal;
end;
Selesai sudah Form Data Barang pada tutorial ini. Masih Ada 3 Master Data lagi...
karena sudah capek.
Nanti Saya akan Lanjutkan Ke tutorial berikutnya... Selamat mencoba. Semoga
sukses.
Maaf kalo ada salah penulisan. dan Coding masih kurang sempurna, karena saya
juga lagi belajar.
Setelah istirahat nge-blog 2 hari dikarenakan lagi ada proyek. heheheh. sekarang
kita lanjutkan lagi proses pembuatan aplikasi penjualan dengan delphi. untuk dapat
mengikuti artikel ini maka saya sarankan untuk membaca juga artikel sebelumnya
Membuat Aplikasi Penjualan (POS) dengan Delphi Part 3.
Agar artikel cepat selesai maka kita lagsung saja mulai membuat from selanjutnya
yaitu form Data Supplier. Ikuti tiap langkah-langkahnya.
1. Buat form Data Supplier
Keterangan
Tambahkan uses
Udm terlebih
dahulu.
Dengan
cara
lalu Use Unit pilih Udm. Agar bisa terkoneksi dengan database.
klik
File
Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada
tabel yang terkoneksi.
2. Pengkodean
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
end;
end else
begin
Reset;
AutoNumber;
end;
end;
FieldByName('kodesupplier').AsString:=ekodesupplier.Text;
FieldByName('namasupplier').AsString:=Enamasupplier.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;
Enomertelepon.Text:=dm.QdataSupplier.FieldByName('nomertelepon').AsSt
ring;
end;
Setelah selesai semua kemudian jalankan program dengan menekan F9. Apabila
tidak ada yang error maka program akan berjalan dengan lancar. Sepert pada
gambar dibawah ini.
Akhirnya ada waktu juga buat nerusin judul ini. Setelah kemarin lagi repot ngurusin
kerjaan. hehehe
Oke... kita langsung saja untuk melanjutkan membuat aplikasi penjualan dengan
delphi. Sekarang akan membuat Form untuk data pelanggan (customer) .
Langkah pertama desain form seperti gambar dibawah.
Keterangan
Tambahkan uses Udm terlebih
dahulu.
Dengan
cara
lalu Use Unit pilih Udm. Agar bisa terkoneksi dengan database.
klik
File
Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada
tabel yang terkoneksi.
2. Pengkodean
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if ( Components[i] is TEdit ) then
if Tedit(Components[i]).Text ='' then
begin
Showmessage(TEdit(Components[i]).Name +' masih kosong');
Exit;
end;
end;
Result:=True;
end;
begin
with dm.Qdatapelanggan do
begin
Append;
FieldByName('KodePelanggan').AsString:=EKodePelanggan.Text;
FieldByName('namapelanggan').AsString:=EnamaPelanggan.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;
Pada Form Umata ( Menu utama) tambahkan kode seperti dibawah ini.
Kini untuk form data pelanggan sudah selesai kemudian jalankan program dengan
menekan F9.
Saya lanjutkan lagi untuk tutorial membuat aplikasi penjualan dengan delphi yang
sempat terhenti beberapa hari. Kali ini akan membuat form terakhir yang ada di
menu master yaitu data penggunaatau data pemakai dari aplikasi penjualan ini
nanti.
Langsung saja kita mulai dengan medesain form seperti pada gambar dibawah ini.
Keterangan
Tambahkan uses Udm terlebih
dahulu.
Dengan
cara
lalu Use Unit pilih Udm. Agar bisa terkoneksi dengan database.
klik
File
Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada
tabel yang terkoneksi.
2. Pengkodean
begin
if bitbtn1.Caption ='Tambah' then
begin
Reset;
AutoNumber;
bitbtn1.Caption:='Batal';
end else
begin
Reset;
AutoNumber;
end;
end;
begin
if CheckEdit then
begin
with dm.QdataPengguna do
begin
Edit;
FieldByName('kodepengguna').AsString:=Ekodepengguna.Text;
FieldByName('namapengguna').AsString:=Enamapengguna.Text;
FieldByName('notelepon').AsString:=Enotelepon.Text;
Post;
end;
Reset;
AutoNumber;
end;
end;
EKodepengguna.Text:=dm.QdataPengguna.FieldByName('kodepengguna').AsSt
ring;
Enamapengguna.Text:=dm.QdataPengguna.FieldByName('namapengguna').AsSt
ring;
Enotelepon.Text:=dm.QdataPengguna.FieldByName('nomertelepon').AsStrin
g;
end;
Pada Form Umata ( Menu utama) tambahkan kode seperti dibawah ini.
procedure TFMenuUtama.D3Click(Sender: TObject);
begin
FdataPengguna.showmodal;
end;
procedure TFMenuUtama.ToolButton3Click(Sender: TObject);
begin
FdataPengguna.showmodal;
end;
Kini untuk form Data Pengguna sudah selesai kemudian jalankan program dengan
menekan F9.
Untuk menambahkan form data pengguna kedalam project yang sebelumnya sudah
di download. lakukan dengan cara . Project > Add to Project tambahkan file yang
akan ditambahkan ke keproject
Kelanjutandariartikelsebelumnyayangsempattertundabeberapaharikarenasituasiyang
lumayanrepot.hehehe.Sayalanjutkanlagiartikelcaramembuataplikasipenjualansederhana
dengan delphi ini. Setelah sebelumnya selesai membuat menu master maka selanjutnya
adalahmebuatmenutransaksiyaitupembeliandanpenjualan.
Untukpertamakitaakanmembuatformtransaksipembelian.Transaksipembelianadalah
mencatatprosespembelianbarangyangakandigunakanuntukmenambahkanstokbarang
berdasarkan barang yang dibeli atau kulakan. karena stok barang tidak dapat diubah
menggunakan menu data barang, maka saat mencatat atau memproses pembelian barang
harus disertai data yang sesungguhnya dan teliti dalam mengetikkan jumlah pembelian
karenaakansangatberpengaruhdenganhargadanstokbarangyangdisimpan.
Langsungsajauntukmembuatformpembeliansepertipadagambardibawahini.
1.FormTransaksiPembelian
Tedit1
TCombobox
TLabel
Tbevel
TStringgrid
TBitbtn
TButton
TDateTimePicker
TEdit
TLabel
DBgrid
- procedure reset
procedure TFpembelian.reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if (Components[i] is TEdit) and (TEdit(Components[i]).Tag = 0) then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
Lrp.Caption:='Rp';
end;
-Procedure NoAuto
procedure TFpembelian.NoAuto;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tb_pembelian';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepembelian,5)) as kode from
tb_pembelian';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodepembelian.Text:='PB.'+kode;
end;
- procedure createGrid
procedure TFpembelian.CreateGrid;
var
i,j:integer;
begin
with Sg do
begin
for i := 0 to colCount-1 do
for j := 0 to rowCount-1 do
Cells[i,j]:='';
ColCount:=6;
RowCount:=2;
Cells[0,0]:='Kode Barang';
Cells[1,0]:='Nama Barang';
Cells[2,0]:='Satuan';
Cells[3,0]:='Harga Beli';
Cells[4,0]:='Jumlah Beli';
Cells[5,0]:='Subtotal';
ColWidths[0]:=200;
ColWidths[1]:=300;
ColWidths[2]:=130;
ColWidths[3]:=100;
ColWidths[4]:=100;
ColWidths[5]:=150;
end;
end;
CreateGrid;
NoAuto;
end;
then
Sg.Cells[4,sg.RowCount -1]:=Ejumlah.Text;
Sg.Cells[5,sg.RowCount -1]:=inttostr(strtoint(Ejumlah.Text)*
strtoint(Ehargabeli.Text));
sg.RowCount := sg.RowCount +1;
Lin.Caption:=inttostr(strtoint(Lin.Caption)+
(strtoint(Ejumlah.Text)*strtoint(ehargabeli.Text)));
reset;
if MessageDlg('Apakah ingin menambah barang?',mtConfirmation,
[mbyes,mbno],0)=mrYes then
FcariBarangBeli.ShowModal;
end else
Showmessage('Jumlah Belum dimasukan');
end;
end;
Setelah proses pengkodean sudah selesai untuk kedua form kemudian jalankan
aplikasi. Bila proses di ikuti dengan benar aplikasi akan berjalan dengan lancar. Lihat
seperti gambar dibawah ini.
Tanpa basa-basi langsung saja saya lanjutkan Tutorial Membuat Aplikasi Penjualan Dengan
Delphi. Proses ini adalah membuat transaksi penjualan.
PROCEDURE RESET
procedure TFpenjualan.reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
Procedure Noauto
procedure TFpenjualan.NoAuto;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tb_penjualan';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepenjualan,5)) as kode from
tb_penjualan';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Enotapenjualan.Text:='PJ.'+kode;
end;
Procedure CreateGrid
procedure TFpenjualan.CreateGrid;
var
i,j:integer;
begin
with Sg do
begin
for i := 0 to colCount-1 do
for j := 0 to rowCount-1 do
Cells[i,j]:='';
ColCount:=6;
RowCount:=2;
Cells[0,0]:='Kode Barang';
Cells[1,0]:='Nama Barang';
Cells[2,0]:='Satuan';
Cells[3,0]:='Harga';
Cells[4,0]:='Jumlah';
Cells[5,0]:='Subtotal';
ColWidths[0]:=200;
ColWidths[1]:=300;
ColWidths[2]:=130;
ColWidths[3]:=100;
ColWidths[4]:=100;
ColWidths[5]:=150;
end;
end;
- Kode untuk tombol tambah
then
end;
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='insert into tb_penjualan
values("'+Enotapenjualan.Text+'","'+FormatDatetime('yyyy-mm-dd',now)
+'","'+lin.Caption+'","'+kodesupplier+'","'+Fmenuutama.StatusBar1.Panels[1]
.Text+'")';
ExecSQL;
end;
Reset;
NoAuto;
CreateGrid;
cbpelanggan.Text:='';
end;
end;
- Kode untuk tombol batal item
procedure TFpenjualan.BitBtn3Click(Sender: TObject);
begin
if messageDLg('Yakin item akan dihapus?',mtConfirmation,
[Mbyes,MBno],0)=Mryes then
begin
lin.Caption:=inttostr(strtoint(lin.Caption)-strtoint(sg.Cells
[5,sg.Row]));
sg.RowCount := sg.RowCount -1;
end;
end;
- Kode untuk Ehargabeli dan ejumlah
Etotalbayar.Text:=Lin.Caption;
reset;
if MessageDlg('Apakah ingin menambah barang?',mtConfirmation,
[mbyes,mbno],0)=mrYes then
FcariBarangJual.ShowModal;
end else
Showmessage('Jumlah Belum dimasukan');
end;
end;
- Kode untuk tombol cari
procedure TFpenjualan.Button1Click(Sender: TObject);
begin
Fcaribarangjual.Showmodal;
end;
Shift: TShiftState);
begin
with Dm.QdataBarang do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbbarang where namabarang
like"%'+ecari.Text+'%"';
Open;
end;
end;
Setelah selesai pengkodean jalankan program dengan menekean tombol F9. Maka hasilnya
akan seperti dibawah ini.
Akhirnya ada waktu juga untuk meneruskan artikel ini. hampir sebulan artikel ini gak
update, karena ngerjain project gak selesai-selesai ... hehhe.
Artikel ini akan membahas pembuatan nota menggunakan fastereport, walaupun
banyak cara untuk pembuatan nota, tapi saya lebih senang dengan fastreport
karena kemudahaan dalam ketika mendesain nota.
Langsung saja langkah-langkah pembuatannya.
do
begin
Close;
SQL.Clear;
SQL.Add('select * from tb_penjualan where
kodepenjualan="'+Enotapenjualan.Text+'"');
Open;
end;
DM.QdetailPenjualan.Active:=False;
DM.QdetailPenjualan.Active:=True;
dm.frxReport1.LoadFromFile(ExtractFilePath(Application.ExeName)
+'Laporan\nota.fr3');
dm.frxReport1.ShowReport();
end;
13. Proses pembuatan nota sudah selesai. kemudian jalankan program. kemudian
lakukan proses transaksi penjualan.