Tanpa basa-basi langsung saja saya lanjutkan Tutorial Membuat Aplikasi Penjualan Dengan Delphi. Proses ini adalah membuat transaksi penjualan.
1. Form Transaksi Penjualan
Komponen yang digunakan
- Tedit1
- TCombobox
- TLabel
- Tbevel
- TStringgrid
- TBitbtn
- TButton
- TDateTimePicker
2. Form Cari Barang Jual
Komponen yang digunakan
- TEdit
- TLabel
- DBgrid
A. Mebuat procedure reset, procedure creategrid, dan procedure noauto
Procedure Reset
Procedure Reset
procedure TFpenjualan.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 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 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 tambahprocedure TFPenjualan.BitBtn1Click(Sender: TObject); begin reset; CreateGrid; NoAuto; end;
procedure TFpenjualan.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
if Enotapenjualan.Text = '' then
Showmessage('Kode pembelian masih kosong')
else
if Sg.Cells[0,1]='' then
Showmessage('belum melakukan transaksi')
else
if cbpelanggan.Text ='' then
showmessage('supplier belum dimasukan')
else
begin
for i := 1 to sg.RowCount -1 do
begin
if sg.Cells[0,i]<>'' then
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='insert into tb_detailpenjualan (kodepembelian,kodebarang,hargabeli,jumlah,subtotal)'+
'values ("'+Enotapenjualan.Text+'","'+sg.Cells[0,i]+'","'+sg.Cells[3,i]+'","'+sg.Cells[4,i]+'","'+sg.Cells[5,i]+'")';
ExecSQL;
Close;
SQL.Clear;
SQL.Text:='update tbarang set stok=stok-"'+sg.Cells[4,i]+'" where kodebarang="'+sg.Cells[0,i]+'"';
ExecSQL;
end;
end;
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;
Setelah selesai pengkodean jalankan program dengan menekean tombol F9. Maka hasilnya akan seperti dibawah ini.- Kode untuk Ehargabeli dan ejumlahprocedure TFpenjualan.EhargabeliKeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9',#8,#10,#13]) then Key:=#0; end;Kode untuk form onShowprocedure TFpenjualan.FormShow(Sender: TObject); begin Reset; NoAuto; cbpelanggan.Clear; dm.QdataPelanggan.First; while dm.QdataPelanggan.Eof = False do begin cbpelanggan.Items.Add(dm.QdataPelanggan.FieldByName('namapelanggan').AsString ); dm.QdataPelanggan.Next; end; cbpelanggan.Text:=''; end;- Kode untuk ejumlah event onKeyDownprocedure TFpenjualan.EjumlahKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 13 then begin if (Ejumlah.Text <> '') and (ejumlah.Text <>'0') then begin Sg.Cells[0,sg.RowCount -1]:=Ekodebarang.Text; Sg.Cells[1,sg.RowCount -1]:=Enamabarang.Text; Sg.Cells[2,sg.RowCount -1]:=Esatuan.Text; Sg.Cells[3,sg.RowCount -1]:=Ehargabeli.Text; 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; sg.Row := sg.RowCount -1; Lin.Caption:=inttostr(strtoint(Lin.Caption)+(strtoint(Ejumlah.Text)*strtoint(ehargabeli.Text))); 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 cariprocedure TFpenjualan.Button1Click(Sender: TObject); begin Fcaribarangjual.Showmodal; end;B.Kemudian kode pada form cari barang Jual
- Pada event Dbgrid klik 2xprocedure TFcaribarangjual.DBGrid1DblClick(Sender: TObject); begin with Fpenjualan do begin Ekodebarang.Text:=dm.QdataBarang.FieldValues['kodebarang']; Enamabarang.Text:=dm.QdataBarang.FieldValues['namabarang']; Esatuan.Text:=dm.QdataBarang.FieldValues['satuan']; Ehargabeli.Text:=dm.QdataBarang.FieldValues['hargajual']; FcaribarangJual.Close; Ejumlah.SetFocus ; end; end;- Pada event Ecari onKeyUpprocedure TFcaribarangjual.EcariKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin with Dm.QdataBarang do begin Close; SQL.Clear; SQL.Text:='select * from tbbarang where namabarang like"%'+ecari.Text+'%"'; Open; end; end;
Sekian dulu tutorialnya ... Sampai ketemu ditutorial selanjutnya ...
Source Code



15 comments:
d tunngu tutorial selanjutnya bang
hehehe
Ea bang ... baru tahun barunan juga otaknya ... :D
hallo mas joko, mas jika berkenan minta source lengkapnya part 1-9 dalam bentuk text donk, japri aja ke ennojogjaholic@gmail.com soalnya aku pake Delphi XE. makasih ya,,
Bentuk text gmana mas???
Gak nunggu aja sampai selesai tutorial. Ini tgal laporan aja kok mas. Kalo dah selesai nanti sya upload semua projectnya.
view sourcenya mas.. soalnya di delphi xe projectnya gak bisa kebuka :(, saya pake XE masnya pake XE2 rencana mau saya edit buat bikin POS di laundry saya :)
Itu tinggal ngikuting langkah langkahnya mas.
Di buka di xe bisa mas. Download project dari part1 sampai terakhr nanti tinggal add to project mas.
oh udah bisa bro.. soalnya dulu saya pernah bikin project sederhana di XE2 saya buka di XE erorr eh ternyata gara2 komponen Fibplus sama DevExpress.. hehe makasih.. ohya sekalian donk nanti bikin tutorial cara bikin lib sendiri
Bikin lib yang kaya gimana mas??
thank you so much, matur suwun, sukron, terima kasih bang JOko....
ane tunggu kelanjutannya dengan sedikit tidak sabar karena penasaran. wkwkwk
mas, seumpama kalo mau update jumlah di stringgridnya gimana ya
Kalau data stock barang habis trus gmn mas buat pemberitahuannya klw stock barang sdh habis...
Kalau data stock barang habis trus gmn mas buat pemberitahuannya klw stock barang sdh habis...
hallo mas joko, mau nanya data supplier disimpan dimana yah, ngak ada database nya,
trus lanjut tutorialnya kapan? :)
kalau berkenan bisa tidak say dirimkan tutorial fullnya (ifhaszel@gmail.com) buat tugas kuliah saya :)
mantap gan, ini yg ane cari" 2 hari baru ketemu hari ini, mantap ilmunya
Makasih banget
Post a Comment