Friday, October 16, 2015

program kasir restoran dengan delphi


Cashier Program
with delphi program




do you want to create  
a simple restaurant cashier with 
delphi program?
try it this program
 
ok good luck ....


pingin buat kasir restoran sederhana ? nih di bawah ada source codenya, bisa di coba pakai delphi tentunya.

kalau restoran yg dibutuhkan pasti , no/nama meja, menu makanan/minumannya, iya kan..
nah untuk program restoran , harus bisa simpan menu makanan/minuman sesuai mmejanya yg nantinya bisa dipanggil untuk billingnya,
ok selamat mencoba ....




********************************* 

unit kasir;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, ExtCtrls, ComCtrls, jpeg, Menus, Buttons;
type
  TFkasir = class(TForm)
    Label1: TLabel;
    StringGrid1: TStringGrid;
    clantai: TComboBox;
    Panel1: TPanel;
    Label9: TLabel;
    cmenu: TComboBox;
    Label2: TLabel;
    DateTimePicker1: TDateTimePicker;
    Label3: TLabel;
    eno: TEdit;
    Label10: TLabel;
    Label13: TLabel;
    Label19: TLabel;
    ejum: TEdit;
    eharga: TEdit;
    UpDown2: TUpDown;
    ediskon: TEdit;
    ediskonrp: TEdit;
    bok: TButton;
    StringGrid2: TStringGrid;
    Image1: TImage;
    PopupMenu1: TPopupMenu;
    PindahMeja1: TMenuItem;
    PopupMenu2: TPopupMenu;
    Hapus1: TMenuItem;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    etot: TEdit;
    ediskon1: TEdit;
    ediskonrp1: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    bclear: TBitBtn;
    Label20: TLabel;
    cmeja: TComboBox;
    Label21: TLabel;
    Label22: TLabel;
    ltotal: TLabel;
    lnourut: TLabel;
    brekam: TBitBtn;
    bprintbil: TBitBtn;
    bpembatalan: TBitBtn;
    ckodemenu: TComboBox;
    lkodemeja: TLabel;
    ljenis: TLabel;
    PopupMenu3: TPopupMenu;
    Refress1: TMenuItem;
    Label23: TLabel;
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure FormShow(Sender: TObject);
    procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Label12Click(Sender: TObject);
    procedure bclearClick(Sender: TObject);
    procedure clantaiClick(Sender: TObject);
    procedure cmenuKeyPress(Sender: TObject; var Key: Char);
    procedure ejumKeyPress(Sender: TObject; var Key: Char);
    procedure ehargaKeyPress(Sender: TObject; var Key: Char);
    procedure ediskonrpKeyPress(Sender: TObject; var Key: Char);
    procedure cmenuClick(Sender: TObject);
    procedure hitung (SEnder:Tobject);
    procedure bokClick(Sender: TObject);
    procedure ejumChange(Sender: TObject);
    procedure ediskonChange(Sender: TObject);
    procedure ediskon1Change(Sender: TObject);
    procedure cmejaKeyPress(Sender: TObject; var Key: Char);
    procedure clantaiKeyPress(Sender: TObject; var Key: Char);
    procedure cmenuChange(Sender: TObject);
    procedure cmenuKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure cmejaClick(Sender: TObject);
    procedure brekamClick(Sender: TObject);
    procedure Refress1Click(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
    procedure cmejaChange(Sender: TObject);
    procedure Hapus1Click(Sender: TObject);
    procedure clantaiChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Fkasir: TFkasir;


implementation
uses bayar, dn,menu;
{$R *.dfm}
procedure TFkasir.hitung(Sender:TObject);
var harga,jumlah,diskon,subtotal,total,diskon1:Real;
    subtotala,totala:real;
    a:integer;
    grandtotal,tot,diskon2,diskonrp1,subtotal1,total1:real;
begin
      if ejum.Text<>'' then
         jumlah:=strtofloat(formatnormal(ejum.Text))
      else
        jumlah:=0;
      if eharga.Text<>'' then
         harga:=strtofloat(formatnormal(eharga.Text))
      else
         harga:=0;
      if ediskon.Text<>'' then
         diskon:=strtofloat(formatnormal(ediskon.Text))
      else
         diskon:=0;


      //hitung total diskon di tabel  
      subtotal  :=(jumlah*harga);
      diskon1   :=((subtotal)*diskon)/100;
      ediskonrp.Text:=formatcurr('#,##0',diskon1);
      total     :=subtotal-diskon1;
           
      ltotal.Caption:=formatcurr('#,##0',total);


      //hitung grand total
      totala:=0;
      for a:=1 to stringgrid2.RowCount-1 do
      begin
            if stringgrid2.Cells[7,a]<>'' then
               subtotala:=strtofloat(formatnormal(stringgrid2.Cells[7,a]))
            else
               subtotala:=0;
            totala:=totala+subtotala;
      end;
      etot.Text:=formatcurr('#,##0',totala);


      //hitung total diskon di bawah
      if ediskon1.Text<>'' then
         diskon2:=strtofloat(formatnormal(ediskon1.Text))
      else
         diskon2:=0;
      tot             :=strtofloat(formatnormal(etot.Text));
      subtotal1       :=(tot*diskon2)/100;
      ediskonrp1.Text :=formatcurr('#,##0',subtotal1);
      grandtotal      :=tot-subtotal1;
      label8.Caption  :=formatcurr('#,##',grandtotal);
end;
procedure TFkasir.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
{ if (arow>0) and (arow mod 2=0) then
       begin
          stringgrid1.canvas.Brush.Color:=$00C6F2FF;
          stringgrid1.canvas.Pen.Style:=psclear;
          stringgrid1.canvas.Rectangle(rect.left,rect.top,rect.Right,rect.Bottom);
          stringgrid1.canvas.Brush.Color:=$00C6F2DD;
          stringgrid1.canvas.Pen.Style:=psSolid;
          stringgrid1.canvas.Pen.Color:=clBlack;
          stringgrid1.Canvas.TextOut(rect.Left+2,rect.top+2,stringgrid1.cells[acol,arow]);
       end;   }
end;

//setting form , perform the command button clearclick
procedure TFkasir.FormShow(Sender: TObject);
begin
      bclearClick(Self);
end;


// setting the tablel line
procedure TFkasir.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 if (arow>0) and (arow mod 2=0) then
       begin
          stringgrid2.canvas.Brush.Color:=$00C6F2FF;
          stringgrid2.canvas.Pen.Style:=psclear;
          stringgrid2.canvas.Rectangle(rect.left,rect.top,rect.Right,rect.Bottom);
          stringgrid2.canvas.Brush.Color:=$00C6F2FF;
          stringgrid2.canvas.Pen.Style:=psSolid;
          stringgrid2.canvas.Pen.Color:=clBlack;     stringgrid2.Canvas.TextOut(rect.Left+2,rect.top+2,stringgrid2.cells[acol,arow]);
       end;
end;

//setting button F2 , perform the command button bayar
procedure TFkasir.Label12Click(Sender: TObject);
begin
   FBAYAR.SHOW;
end;



procedure TFkasir.bclearClick(Sender: TObject);
var a,b:integer;
    kodemeja,namameja,meja,lantai:String;
   
begin
     for a:=1 to stringgrid1.RowCount-1 do
        for b:=0 to stringgrid1.ColCount-1 do
            stringgrid1.Cells[b,a]:='';


     for a:=1 to stringgrid2.RowCount-1 do
        for b:=0 to stringgrid2.ColCount-1 do
            stringgrid2.Cells[b,a]:='';


     for a:=1 to stringgrid2.RowCount-1 do
     begin
        stringgrid2.Cells[15,a]:='';
        stringgrid2.Cells[16,a]:='';
     end;


  
     datetimepicker1.Date:=now;
     with stringgrid1 do
     begin
           cells[0,0]:='No.';
           cells[1,0]:='Meja';
     end;
     image1.Picture.LoadFromFile('c:\backgroud.bmp');
     lnourut.Caption:='1';
     ltotal.Caption:='0';
     etot.Text:='0';
     ediskon1.Text:='0';
     ediskonrp1.Text:='0';
     lkodemeja.Caption:='-';
     ljenis.Caption:='-';
     label8.Caption:='0';
     lantai :=clantai.Text;
    
    
    
     
     with stringgrid2 do
     begin
          cells[0,0]:='No';
          cells[1,0]:='Nama Menu';
          cells[2,0]:='Jumlah';
          cells[3,0]:='Harga@';
          cells[4,0]:='Diskon %';
          cells[5,0]:='Diskon Rp';
          cells[7,0]:='Subtotal';
     end;


     clantai.SetFocus;
     cmeja.Text:='';
     cmenu.Text:='';
     ejum.Text:='0';
     eharga.Text:='0';
     ediskon.Text:='0';
     ediskonrp.Text:='0';
     eno.Text:=generatenokasir;
     ckodemenu.Text:='';
     lantai:=clantai.Text;


     //lantai
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select distinct lantai from meja  group by lantai order by lantai');
           open;
           first;
           clantai.Items.Clear;
           while not eof do
           begin
                  clantai.Items.Add(fieldbyname('lantai').AsString);


                  next;
           end;
     end;
    
////////////////filter online restaurant table
     //clear first
     denin.ADOQuery2.close;
     denin.ADOQuery2.sql.Clear;
     denin.ADOQuery2.sql.Add('delete from tempmeja');
     denin.ADOQuery2.ExecSQL;
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select nama,kode,lantai from meja order by nama');
           open;
           first;
           while not eof do
           begin
                   meja     :=fieldbyname('kode').AsString;
                   namameja :=fieldbyname('nama').AsString;
                   lantai   :=fieldbyname('lantai').AsString;
                  
                   denin.ADOQuery2.close;
                   denin.ADOQuery2.sql.Clear;
                   denin.ADOQuery2.sql.Add('insert into tempmeja(kode,namameja,lantai) values("'+meja+'","'+namameja+'",'+lantai+')');
                   denin.ADOQuery2.ExecSQL;
                  next;
           end;
     end;
     //dibandingkan dengan kasir
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select distinct meja from kasir where lunas=0 group by meja order by meja');
           open;
           first;
           while not eof do
           begin
                   meja:=fieldbyname('meja').AsString;
                  
                   denin.ADOQuery2.close;
                   denin.ADOQuery2.sql.Clear;
                   denin.ADOQuery2.sql.Add('delete from tempmeja where kode="'+meja+'"');
                   denin.ADOQuery2.ExecSQL;
                  next;
           end;
     end;


    //insert to a table column
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select kode,namameja,lantai from tempmeja where lantai="'+lantai+'" order by namameja');
           open;
           first;
           cmeja.Items.Clear;
           while not eof do
           begin
                   meja:=fieldbyname('namameja').AsString;
                   cmeja.Items.Add(meja);
                  next;
           end;
     end;
    
    
    
     //MENU
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select nama,kode from menu order by nama');
           open;
           first;
           cmenu.Items.Clear;
           while not eof do
           begin
                  cmenu.Items.Add(fieldbyname('nama').AsString);
                  ckodemenu.Items.Add(fieldbyname('kode').AsString);
                  next;
           end;
     end;
    
     //on the restaurant table
     with denin.ADOQuery1 do
     begin
          close;
          sql.Clear;
          sql.Add('select distinct meja from kasir where lunas=0 order by meja');
          open;


          first;
          a:=1;
          while not eof do
          begin
               stringgrid1.Cells[0,a]:=inttostr(a);
              
               kodemeja:=fieldbyname('meja').AsString;
               stringgrid1.Cells[1,a]:=carinamameja(kodemeja);
               stringgrid1.Cells[2,a]:=kodemeja;
              
               next;
               inc(a,1);
          end;
     end;
     stringgrid1.RowCount:=a+1;


end;


procedure TFkasir.clantaiClick(Sender: TObject);
var lantai,meja,namameja:string;
begin
      ////////////////filter online restaurant table
     cmeja.Items.Clear;
     denin.ADOQuery2.close;
     denin.ADOQuery2.sql.Clear;
     denin.ADOQuery2.sql.Add('delete from tempmeja');
     denin.ADOQuery2.ExecSQL;
     cmeja.Text:='';
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select nama,kode,lantai from meja order by nama');
           open;
           first;
           while not eof do
           begin
                   meja     :=fieldbyname('kode').AsString;
                   namameja :=fieldbyname('nama').AsString;
                   lantai   :=fieldbyname('lantai').AsString;
                  
                   denin.ADOQuery2.close;
                   denin.ADOQuery2.sql.Clear;
                   denin.ADOQuery2.sql.Add('insert into tempmeja(kode,namameja) values("'+meja+'","'+namameja+'")');
                   denin.ADOQuery2.ExecSQL;
                  next;
           end;
     end;
     //dibandingkan dengan kasir
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select distinct meja from kasir where lunas=0 group by meja order by meja');
           open;
           first;
           while not eof do
           begin
                   meja:=fieldbyname('meja').AsString;
                  
                   denin.ADOQuery2.close;
                   denin.ADOQuery2.sql.Clear;
                   denin.ADOQuery2.sql.Add('delete from tempmeja where kode="'+meja+'"');
                   denin.ADOQuery2.ExecSQL;
                  next;
           end;
     end;


    //baru masukkan ke kolom meja
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select kode,namameja from tempmeja order by namameja');
           open;
           first;
           cmeja.Items.Clear;
           while not eof do
           begin
                   meja:=fieldbyname('namameja').AsString;
                   cmeja.Items.Add(meja);
                  next;
           end;
     end;
    
   {  cmeja.Text:='';
     lantai:=clantai.Text;
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select nama,kode from meja where lantai="'+lantai+'" order by nama');
           open;
           first;
           cmeja.Items.Clear;
           while not eof do
           begin
                  cmeja.Items.Add(uppercase(fieldbyname('nama').AsString));


                  next;
           end;
     end;   }
end;
procedure TFkasir.cmenuKeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then
 begin
      ejum.SetFocus;
      cmenuClick(Self);
 end;
end;
procedure TFkasir.ejumKeyPress(Sender: TObject; var Key: Char);
begin
   if key=#13 then eharga.SetFocus;
   if key=#27 then cmenu.SetFocus;
end;
procedure TFkasir.ehargaKeyPress(Sender: TObject; var Key: Char);
begin
   if key=#13 then ediskon.SetFocus;
   if key=#27 then ejum.SetFocus;
end;
procedure TFkasir.ediskonrpKeyPress(Sender: TObject; var Key: Char);
begin
   if key=#13 then bok.SetFocus;
   if key=#27 then ediskon.SetFocus;
end;
procedure TFkasir.cmenuClick(Sender: TObject);
var nama,kode,tipe:String;
begin


     nama:=cmenu.Text;
     with denin.ADOQuery2 do
     begin
          close;
          sql.Clear;
          sql.Add('select kode,tipe from menu where nama="'+nama+'" ');
          open;
          if recordcount=0 then
          begin
             ckodemenu.Text:='';
             ljenis.Caption:=fieldbyname('tipe').AsString;
          end;
          if recordcount>0 then
          begin
             ckodemenu.Text:=fieldbyname('kode').AsString;
             ljenis.Caption:=fieldbyname('tipe').AsString;
          end;
     end;


    
    
     kode:=ckodemenu.Text;
     with denin.ADOQuery1 do
     begin
          close;
          sql.Clear;
          sql.Add('select * from menu where kode="'+kode+'" ');
          open;
          if recordcount=0 then
          begin
               eharga.Text:='0';
          end;
          if recordcount>0 then
          begin
               eharga.Text:=formatcurr('#,##0',fieldbyname('harga').AsFloat);
          end;                                                            
     end;
    
    
end;
procedure TFkasir.bokClick(Sender: TObject);
var no,a:integer;
    kode,kode1,jumlah,harga,diskon,kodemenu,jenis:string;
    jumawal,total:real;
    kondisi:boolean;
    jumstok,jumjual,totawal,totbersama,tot1,totgabung:real;
    hargaulang,subtotulang,diskonulang,totalulang,totdiskon:real;
begin
      kode  :=ckodemenu.Text;
      jumlah :=ejum.Text;
      harga  :=formatnormal(eharga.Text);
      diskon :=ediskon.Text;
      tot1   :=strtofloat(formatnormal(ltotal.Caption));
      jenis  :=ljenis.Caption;
      kondisi:=false;


      for a:=1 to stringgrid2.RowCount-1 do
      begin
            if (stringgrid2.Cells[15,a]<>'') and (stringgrid2.Cells[16,a]<>'') then
            begin
                kode1:=stringgrid2.Cells[15,a];
                if (kode=kode1) then
                begin
                     kondisi:=true;
                     //HITUNG JUMLAH lama + jumlah baru
                     if stringgrid2.Cells[2,a]<>'' then
                       jumawal:=strtofloat(formatnormal(stringgrid2.Cells[2,a]))
                     else
                       jumawal:=0;
                     total:=jumawal+strtofloat(jumlah);
                     //hitung jika persentase tidak sama
                     if stringgrid2.Cells[4,a]<>'' then
                       totdiskon:=strtofloat(formatnormal(stringgrid2.Cells[4,a]))
                     else
                       totdiskon:=0;


                            subtotulang :=total*strtofloat(harga);
                            diskonulang   :=(subtotulang*strtofloat(diskon))/100;
                            totalulang    :=subtotulang-diskonulang;
                           stringgrid2.Cells[2,a]:=floattostr(total);
                           stringgrid2.Cells[3,a]:=eharga.Text;
                           stringgrid2.Cells[4,a]:=ediskon.Text;
                           stringgrid2.Cells[5,a]:=floattostr(diskonulang);
                           stringgrid2.Cells[7,a]:=formatcurr('#,##0',totalulang);


                     hitung(self);
                     cmenu.Text:='';
                     ckodemenu.Text:='';
                     ejum.Text:='0';
                     eharga.Text:='0';
                     ediskon.Text:='0';
                     ediskonrp.Text:='0';
                     cmenu.SetFocus;
                     exit;
                end;
             end;
      end;


      if kondisi=false then
      begin
            no:=strtoint(lnourut.Caption);
            stringgrid2.Cells[0,no]:=inttostr(no);
            stringgrid2.Cells[15,no]:=kode;
            stringgrid2.Cells[16,no]:=jenis;
           
            hitung(self);
           
            stringgrid2.Cells[1,no]:=cmenu.Text;
            stringgrid2.Cells[2,no]:=ejum.Text;
            stringgrid2.Cells[3,no]:=eharga.Text;
            stringgrid2.Cells[4,no]:=ediskon.Text;
            stringgrid2.Cells[5,no]:=ediskonrp.Text;
            stringgrid2.Cells[7,no]:=ltotal.Caption;
            lnourut.Caption:=inttostr(no+1);
            stringgrid2.RowCount:=no+2;
            cmenu.Text:='';
            ckodemenu.Text:='';
            ejum.Text:='0';
            eharga.Text:='0';
            ediskon.Text:='0';
            ediskonrp.Text:='0';
            cmenu.SetFocus;
      end;


end;


procedure TFkasir.ejumChange(Sender: TObject);
begin
   hitung(self);
end;
procedure TFkasir.ediskonChange(Sender: TObject);
begin
   hitung(self);
end;
procedure TFkasir.ediskon1Change(Sender: TObject);
begin
   hitung(self);
end;
procedure TFkasir.cmejaKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then cmenu.SetFocus;
    if key=#27 then clantai.SetFocus;
end;
procedure TFkasir.clantaiKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then cmeja.SetFocus;
end;
procedure TFkasir.cmenuChange(Sender: TObject);
begin
cmenuClick(Self);
end;
procedure TFkasir.cmenuKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
      if key=116 then
      begin
          brekamClick(Self);
      end;
      if key=118 then
      begin
          fbayar.ltotal.Caption:=label8.Caption;
          fbayar.show;
         
      end;
      if key=114 then
      begin
          bclearClick(self);
         
      end;
      fbayar.lnota.Caption:=eno.Text;
end;
procedure TFkasir.cmejaClick(Sender: TObject);
var nama:String;
begin
     nama:=cmeja.Text;
     with denin.ADOQuery2 do
     begin
    
          close;
          sql.Clear;
          sql.Add('select kode from meja where upper(nama)="'+nama+'" ');
          open;
          if recordcount=0 then
          begin
               lkodemeja.Caption:='-';
          end;
          if recordcount>0 then
          begin
              lkodemeja.Caption :=fieldbyname('kode').AsString;
          end;
         
     end;


end;
procedure TFkasir.brekamClick(Sender: TObject);
var tgl,nota,lantai,meja,kode,harga,jenis,jum,diskon1,diskon2,diskonrp1,diskonrp2,total:String;
    a:integer;
    lunas,isi,isi1,totalx:string;


begin
      tgl       :=formatdatetime('yyyy/mm/dd',datetimepicker1.Date);
      nota      :=eno.Text;
      lantai    :=clantai.Text;
      meja      :=lkodemeja.Caption;
      diskon2   :=ediskon1.Text;
      diskonrp2 :=ediskonrp1.Text;
      lunas     :='0';
      isi       :='-';
      isi1      :='0';
      totalx     :=formatnormal(label8.Caption);






      with denin.ADOQuery1 do
      begin
           close;
           sql.Clear;
           sql.Add('delete from kasir where nota="'+nota+'" ');
           execsql;
           close;
           sql.Clear;
           sql.Add('delete from totalpernota where nota="'+nota+'" ');
           execsql;
      end;


     
      for a:=1 to stringgrid2.RowCount-1 do
      begin
            kode      :=stringgrid2.Cells[15,a];
            jenis     :=stringgrid2.Cells[16,a];


            harga     :=formatnormal(stringgrid2.Cells[3,a]);
            jum       :=formatnormal(stringgrid2.Cells[2,a]);
            diskon1   :=formatnormal(stringgrid2.Cells[4,a]);
            diskonrp1 :=formatnormal(stringgrid2.Cells[5,a]);                                    
           
            //simpan1
            if (kode<>'') and (harga<>'') and(jum<>'') then
            begin
                with denin.ADOQuery1 do
                begin
                     close;
                     sql.Clear;
                     sql.Add('insert into kasir(tgl,nota,carabayar,bank,nokartu,lantai,meja,kode,jenis,harga,jumlah,diskon,diskonrp,jumbayar,jumbayarkartu,lunas) values ("'+
                              tgl+'","'+nota+'","'+isi+'","'+isi+'",'+isi1+','+lantai+',"'+meja+'","'+kode+'","'+jenis+'",'+harga+','+jum+','+diskon1+','+
                              diskonrp1+','+isi1+','+isi1+','+lunas+') ');
                     execsql;
                end;
            end;


      end;
     
      //simpan total  penjualan
      with denin.ADOQuery2 do
      begin
           close;
           sql.Clear;
           sql.Add('insert into totalpernota(tgl,nota,total) values("'+tgl+'","'+nota+'",'+totalx+') ');
           execsql;
      end;
     
      bclearClick(Self);
     


end;


procedure TFkasir.Refress1Click(Sender: TObject);
begin
     with denin.ADOQuery1 do
     begin
           close;
           sql.Clear;
           sql.Add('select nama,kode from menu order by nama');
           open;
           first;
           cmenu.Items.Clear;
           while not eof do
           begin
                  cmenu.Items.Add(fieldbyname('nama').AsString);
                  ckodemenu.Items.Add(fieldbyname('kode').AsString);
                  next;
           end;
     end;
end;
procedure TFkasir.StringGrid1Click(Sender: TObject);
var jumlah,harga,diskon,subtotal,subtotal1,discon,total:real;
    kodemeja,meja,kode,nama:string;
    a,b:integer;
begin
      for a:=1 to stringgrid2.RowCount-1 do
        for b:=0 to stringgrid2.ColCount-1 do
            stringgrid2.Cells[b,a]:='';
     kodemeja:=stringgrid1.Cells[2,stringgrid1.Row];


     //diluar tabel
     with denin.ADOQuery2 do
     begin
          close;
          sql.Clear;
          sql.Add('select distinct tgl,nota,meja,lantai from kasir where meja="'+kodemeja+'" and lunas="0" ');
          open;
          if recordcount>0 then
          begin
               datetimepicker1.Date:=fieldbyname('tgl').AsDateTime;
               eno.Text:=fieldbyname('nota').AsString;
               meja:=fieldbyname('meja').AsString;
               lkodemeja.Caption:=meja;
               cmeja.Text:=carinamameja(meja);
               clantai.Text:=fieldbyname('lantai').AsString;
          end;
     end;
     //tabel
     with denin.ADOQuery2 do
     begin
          close;
          sql.Clear;
          sql.Add('select * from kasir where meja="'+kodemeja+'" and lunas="0" ');
          open;
          first;
          a:=1;


          while not eof do
          begin
                  stringgrid2.Cells[0,a]:=inttostr(a);
                  kode  :=fieldbyname('kode').AsString;
                  stringgrid2.Cells[15,a]:=kode;
                  stringgrid2.Cells[16,a]:=fieldbyname('jenis').AsString;
                 
                  stringgrid2.Cells[1,a]:=carinamamenu(kode);


                  jumlah    :=fieldbyname('jumlah').AsFloat;
                  harga     :=fieldbyname('harga').AsFloat;
                  diskon    :=fieldbyname('diskon').AsFloat;
                  stringgrid2.Cells[2,a]:=floattostr(jumlah);
                  stringgrid2.Cells[3,a]:=formatcurr('#,##0',harga);
                  stringgrid2.Cells[4,a]:=floattostr(diskon);
                  stringgrid2.Cells[5,a]:=formatcurr('#,##0',fieldbyname('diskonrp').AsFloat);


                  subtotal:=jumlah*harga;
                  discon  :=(subtotal*diskon)/100;
                  total   :=subtotal-discon;
                  stringgrid2.Cells[7,a]:=formatcurr('#,##0',total);


                  next;
                  inc(a,1);
          end;
          lnourut.Caption:=inttostr(a);
         
     end;
     stringgrid2.RowCount:=a+1;
     hitung(self);


end;


procedure TFkasir.cmejaChange(Sender: TObject);
begin
   cmejaClick(Self);
end;
procedure TFkasir.Hapus1Click(Sender: TObject);
var a,b:integer;
    nomor,countnomor:integer;
begin
      a:=strtoint(stringgrid2.Cells[0,stringgrid2.row]);
      nomor:=strtoint(lnourut.Caption);
    {  for b:=0 to 7 do
      begin
            stringgrid2.Cells[b,a]:='';
      end;   }
      for b:=a to stringgrid2.RowCount-1 do
      begin
            stringgrid2.Cells[0,b]:=inttostr(b);
            stringgrid2.Cells[1,b]:=stringgrid2.Cells[1,b+1];
            stringgrid2.Cells[2,b]:=stringgrid2.Cells[2,b+1];
            stringgrid2.Cells[3,b]:=stringgrid2.Cells[3,b+1];
            stringgrid2.Cells[4,b]:=stringgrid2.Cells[4,b+1];
            stringgrid2.Cells[5,b]:=stringgrid2.Cells[5,b+1];
            stringgrid2.Cells[7,b]:=stringgrid2.Cells[7,b+1];
            stringgrid2.Cells[15,b]:=stringgrid2.Cells[15,b+1];


      end;
      hitung(Self);
      countnomor:=nomor-1;
      lnourut.Caption:=inttostr(countnomor);




end;
procedure TFkasir.clantaiChange(Sender: TObject);
begin
   clantaiClick(self);
end;
end.



*********************************   GOOD LUCK   ****************************




No comments:

Post a Comment