Home » , , , , , , » Membuat Aplikasi Penjualan (POS) dengan Delphi Part8

Membuat Aplikasi Penjualan (POS) dengan Delphi Part8

Unknown | 6:18 PM | 15comments
Tanpa basa-basi langsung saja saya lanjutkan Tutorial Membuat Aplikasi Penjualan Dengan Delphi. Proses ini adalah membuat transaksi penjualan.

1. Form Transaksi Penjualan

Transaksi Penjualan


Komponen yang digunakan
  • Tedit1 
  • TCombobox
  • TLabel
  • Tbevel
  • TStringgrid
  • TBitbtn
  • TButton
  • TDateTimePicker
2. Form Cari Barang Jual

Transaksi Penjualan

Komponen yang digunakan
  • TEdit
  • TLabel
  • DBgrid

A. Mebuat procedure reset, procedure creategrid, dan procedure noauto

procedure

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 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
procedure TFPenjualan.BitBtn1Click(Sender: TObject);
begin
  reset;
  CreateGrid;
  NoAuto;
end;
Kode Untuk Tombol Simpan


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;



- Kode untuk Ehargabeli dan ejumlah
procedure TFpenjualan.EhargabeliKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in['0'..'9',#8,#10,#13]) then
  Key:=#0;
end;
 Kode untuk form onShow
procedure 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 onKeyDown
procedure 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 cari
procedure TFpenjualan.Button1Click(Sender: TObject);
begin
  Fcaribarangjual.Showmodal;
end;

B.Kemudian kode pada form cari barang Jual

- Pada event Dbgrid klik 2x
procedure 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 onKeyUp
procedure 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;
Setelah selesai pengkodean jalankan program dengan menekean tombol F9. Maka hasilnya akan seperti dibawah ini.
Transaksi Penjualan

Sekian dulu tutorialnya ... Sampai ketemu ditutorial selanjutnya ...
Source Code
Share this article :

15 comments:

rendy septiyadi kalaena said...

d tunngu tutorial selanjutnya bang
hehehe

Unknown said...

Ea bang ... baru tahun barunan juga otaknya ... :D

Unknown said...

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

Unknown said...

Bentuk text gmana mas???
Gak nunggu aja sampai selesai tutorial. Ini tgal laporan aja kok mas. Kalo dah selesai nanti sya upload semua projectnya.

Unknown said...

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

Unknown said...

Itu tinggal ngikuting langkah langkahnya mas.

Di buka di xe bisa mas. Download project dari part1 sampai terakhr nanti tinggal add to project mas.

Unknown said...

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

Unknown said...

Bikin lib yang kaya gimana mas??

tjahwinong said...

thank you so much, matur suwun, sukron, terima kasih bang JOko....
ane tunggu kelanjutannya dengan sedikit tidak sabar karena penasaran. wkwkwk

Unknown said...

mas, seumpama kalo mau update jumlah di stringgridnya gimana ya

Unknown said...

Kalau data stock barang habis trus gmn mas buat pemberitahuannya klw stock barang sdh habis...

Unknown said...

Kalau data stock barang habis trus gmn mas buat pemberitahuannya klw stock barang sdh habis...

Anonymous said...

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

Studio Musik Rafael said...

mantap gan, ini yg ane cari" 2 hari baru ketemu hari ini, mantap ilmunya

SMKN 1 Murung Pudak said...

Makasih banget

 
Copyright © 2011. TUTORIAL DELPHI DAN DATABASE - All Rights Reserved