Lampiran A.1 Listing Program FSecurity

  

LAMPIRAN

A

Listing Program

Form

Lampiran A.1 Listing Program FSecurity

  ===================================================================

  unit CBSecurity; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TFSecurity = class(TForm) Shape1: TShape; EKodeAkses: TEdit; EKodeKasir: TEdit; Label2: TLabel; Label1: TLabel; procedure EKodeKasirChange(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormActivate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FSecurity: TFSecurity; Hapus: Boolean; KodeKasir, NamaKasirKerja: String; JenisKasirAkses: Byte; implementation uses CBDatabase, FileUtil, CBTransaksi, CBMenuSP, CBMenu; {$R *.DFM} procedure TFSecurity.EKodeKasirChange(Sender: TObject); begin if Length(EKodeKasir.Text) = 6 then EKodeAkses.SetFocus; end; procedure TFSecurity.FormKeyPress(Sender: TObject; var Key: Char); begin if ( (Key <> '1') and (Key <> '2') and (Key <> '3') and (Key <> '4') and (Key <> '5') and (Key <> '6') and (Key <> '7') and (Key <> '8') and (Key <> '9') and (Key <> '0') and (Key <> Chr(Vk_Escape)) ) then begin if (Length(EKodeKasir.Text) = 6) and (Length(EKodeAkses.Text) = 6) then begin CBDB.TbKasir.Locate('Kode',EKodeKasir.Text,[]); if not (EKodeKasir.Text = CBDB.TbKasir['Kode']) then

  ShowMessage('Kode Kasir Salah!!') else if not (EKodeAkses.Text = BacaKodeAkses(CBDB.TbKasir['KodeAkses']).KodeAkses) then ShowMessage('Kode Akses Salah!!') else begin JenisKasirAkses := BacaKodeAkses(CBDB.TbKasir['KodeAkses']).JenisAkses; NamaKasirKerja := CBDB.TbKasir['Nama']; KodeKasir := CBDB.TbKasir['Kode']; if JenisKasirAkses = SuperVisor then IjinEOD := DiIjinKan else IjinEOD := DiTolak; if Key = TMasukTrans then begin if JenisKasirAkses = Editor then ShowMessage('Maaf Anda Bukan Kasir!, Tekan ENTER!') else begin IsFTransaksiActivated := False; FSecurity.Visible := False; FTransaksi.Visible := False; FTransaksi.Visible := True; end end else if Key = TMasukMenu then begin if JenisKasirAkses = Cashier then ShowMessage('Maaf Anda Bukan Editor!, Tekan ENTER!') else begin FSecurity.Visible := False; if JenisKasirAkses = SuperVisor then FMenuSP.Visible := True else if JenisKasirAkses = Editor then FMenu.Visible := True; end end else begin JenisKasirAkses := 0; NamaKasirKerja := ''; KodeKasir := ''; SalahTekanTombol; end end end else SalahTekanTombol; Hapus := True; end; end; // End Procedure FormKeyPress procedure TFSecurity.FormActivate(Sender: TObject); begin OpenAllDatabase; OpenAllTable; Hapus := False; EKodeKasir.SetFocus; end; // End Procedure FormActivate procedure TFSecurity.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Length(EKodeKasir.Text) = 0) and (Length(EKodeAkses.Text) = 0) and (Key = TKeluar) then begin CloseAllDatabase; if (MessageDlg('Matikan Komputer (Shut Down)?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then Power(EWX_SHUTDOWN); Application.Terminate; end end; // End Procedure FormKeyDown procedure TFSecurity.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Hapus = True then begin EKodeKasir.Text := ''; EKodeAkses.Text := ''; EKodeKasir.SetFocus; Hapus := False; end end; // End Procedure FormKeyUp procedure TFSecurity.FormCreate(Sender: TObject); begin Brush.Style := bsClear; end; // End Procedure FormCreate end.

Lampiran A.2 Listing Program FTransaksi

  ===================================================================

  unit CBTransaksi; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, CBFrTime, StdCtrls, DB, DBTables, ShellAPI; type TFTransaksi = class(TForm) DBGrid1: TDBGrid; FrTime1: TFrTime; LTanggal: TLabel; LKasir: TLabel; Label1: TLabel; Label10: TLabel; LDisc: TLabel; Label12: TLabel; SubTotal: TEdit; Disc: TEdit; Total: TEdit; LTunai: TLabel; LKembali: TLabel; Tunai: TEdit; Kembali: TEdit; Control: TEdit; Timer1: TTimer; Timer2: TTimer; LViewer: TLabel; LStatus: TLabel; Viewer: TEdit; Shape1: TShape; LMember: TLabel; procedure SalahTombol; procedure FrTime1Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure IsiTbRutin(Ket: String); procedure ViewSubTotal(Ket: Byte); procedure ViewTotal(Ket: Byte); procedure ViewControlTotal; procedure ViewControlTunaiKredit; procedure ViewDisc(Total: Currency); procedure ViewTunaiKembali(Ket: Byte); procedure FilterTrans(Ket: Byte); procedure IsiTbRKasir(Ket: Byte); procedure KosongkanTbStruk; procedure IsiTbStruk(Ket: Byte); procedure IsiTbStrukAkhir(Ket: Byte); procedure IsiTbKeterangan(Ket: Byte); procedure RubahState(Ket: Byte); procedure ViewControlKembali; procedure ViewKasirTanggalJam; procedure FormCreate(Sender: TObject); procedure IsiTbTrans(Ket: Byte); procedure HitungJmlItem(Ket: Byte); procedure DeleteLastRecordTbTrans; procedure DeleteLastRecordTbTransAkhir; procedure ResetJmlItem; procedure IsiTbTransAkhir(Ket: Byte); procedure PrintStruk(Ket: Byte); procedure UpdateStock(Ket: Byte); procedure IsiTbPMember; private { Private declarations } public end; const ScreenHeight: Integer = 600; ScreenWidth: Integer = 480; var FTransaksi: TFTransaksi; Tombol, StatusOK, EOD, Hapus, ItemDiscTax, Berhasil, IjinEOD, IsTunaiKredit, Member, IsFTransaksiActivated, TekanAda, Tekan: Boolean; Count, JmlItem, JmlItemCor, JmlItemVoid, JmlItemRtn, CopyItemQty, JmlItemTax, JmlItemDisc, State, NomorNota: Integer; Hasil: Word; CopyItemHarga, JmlReturn, JmlCorrect, JmlVoid, CopyItemHargaDisc: Currency; NamaMember, MemberID, FindKode, TempTotal, CopyItemKode, CopyItem: String; CopyItemDisc: Real; implementation uses CBDatabase, CBSecurity, FileUtil, CBHTrans, CBEOD, CBItemData, CBFinancial, CBEODIjin, CBInputPIN, CBFinancialCashier; {$R *.DFM} procedure TFTransaksi.IsiTbPMember; begin CBDB.TbPMember.Open; CBDB.TbPMember.First; CBDB.TbPMember.Edit; CBDB.TbPMember['MEMBERID'] := MemberID; CBDB.TbPMember['NAMA'] := NamaMember; CBDB.TbPMember.Post; CBDB.TbPMember.Close; end; procedure TFTransaksi.SalahTombol; begin ShowMessage('Salah Tekan Tombol, Tekan ENTER'); Hapus := True; end; // End Procedure SalahTombol procedure TFTransaksi.PrintStruk(Ket: Byte); begin if Ket = Keterangan then JalankanProgram('KET.EXE') else if Ket = Transaksi then

if (ItemDiscTax = True) or (State = BeginTransaction) or (State = AlreadyInStatusZeroCount) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInKodeZeroCount) then JalankanProgram('STRUK1.EXE') else JalankanProgram('STRUK2.EXE') else if Ket = Pembayaran then if (ItemDiscTax = True) then JalankanProgram('AKHIR1.EXE') else JalankanProgram('AKHIR2.EXE') else if Ket = Discount then JalankanProgram('DISC.EXE') else if Ket = Correction then JalankanProgram('CORR.EXE') else if Ket = RePrint then if (State = BeginTransaction) then JalankanProgram('REPRN1.EXE') else JalankanProgram('REPRINT.EXE') else if Ket = Feed then JalankanProgram('FEED.EXE') else if Ket = Eject then JalankanProgram('EJECT.EXE') else if Ket = VOIDSales then if (ItemDiscTax = True) then JalankanProgram('VOID1.EXE') else JalankanProgram('VOID2.EXE') else if Ket = Validasi then JalankanProgram('VALIDATE.EXE') else if Ket = PrintMember then JalankanProgram('MEMBER.EXE'); end; // End Procedure PrintStruk procedure TFTransaksi.IsiTbTransAkhir(Ket: Byte); begin if (Ket = TunaiKredit) or (Ket = Normal) or (Ket = Credit) or (Ket = VOIDSales) then begin if (State = AlreadyInKode) or (State = AlreadyInKodeZeroCount) then CBDB.TbTransAkhir.Append else CBDB.TbTransAkhir.Edit; CBDB.TbTransAkhir['TransNota'] := NomorNota; CBDB.TbTransAkhir['TransTanggal'] := Date(); CBDB.TbTransAkhir['TransJam'] := Time(); CBDB.TbTransAkhir['TransSubTotal'] := StrCurrToCurr(SubTotal.Text); CBDB.TbTransAkhir['TransKembali'] := StrCurrToCurr(Kembali.Text); CBDB.TbTransAkhir['KasirNama'] := NamaKasirKerja; if LDisc.Caption = SDisc then CBDB.TbTransAkhir['TransHargaDisc'] := StrCurrToCurr(Disc.Text) else if LDisc.Caption = STax then CBDB.TbTransAkhir['TransHargaTax'] := StrCurrToCurr(Disc.Text); if Ket = Normal then begin CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransTunai'] := StrCurrToCurr(Tunai.Text); end else if Ket = TunaiKredit then begin CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransTunai'] := StrCurrToCurr(Tunai.Text); CBDB.TbTransAkhir['TransCredit'] := StrCurrToCurr(Kembali.Text); end else if Ket = VOIDSales then CBDB.TbTransAkhir['TransVOID'] := (-1)*StrCurrToCurr(Total.Text) else if Ket = Credit then begin CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransCredit'] := StrCurrToCurr(Tunai.Text); end; HitungJmlItem(Ket); CBDB.TbTransAkhir['JmlItem'] := JmlItem; CBDB.TbTransAkhir['TransReturn'] := JmlReturn; CBDB.TbTransAkhir['TransCorrect'] := JmlCorrect; if (Ket = Normal) or (Ket = Credit) then

  CBDB.TbTransAkhir['TransVOID'] := JmlVoid; CBDB.TbTransAkhir['JmlItemTax'] := JmlItemTax; CBDB.TbTransAkhir['JmlItemDisc'] := JmlItemDisc; CBDB.TbTransAkhir['JmlItemCor'] := JmlItemCor; CBDB.TbTransAkhir['JmlItemRtn'] := JmlItemRtn; CBDB.TbTransAkhir['JmlItemVOID'] := JmlItemVoid; if Member = OK then CBDB.TbTransAkhir['MemberID'] := MemberID; CBDB.TbTransAkhir.Post; end else begin CBDB.TbTransAkhir.Append; CBDB.TbTransAkhir['TransSubTotal'] := StrCurrToCurr(SubTotal.Text); if Ket = TaxRp then begin CBDB.TbTransAkhir['TransHargaTax'] := StrToCurr(Control.Text); CBDB.TbTransAkhir['TransTotal'] := CBDB.TbTransAkhir['TransSubTotal']

  • CBDB.TbTransAkhir['TransHargaTax']; end else if Ket = DiscRp then begin CBDB.TbTransAkhir['TransHargaDisc'] := StrToCurr(Control.Text); CBDB.TbTransAkhir['TransTotal'] := CBDB.TbTransAkhir['TransSubTotal']
    • CBDB.TbTransAkhir['TransHargaDisc']; end else if Ket = TaxPersen then begin CBDB.TbTransAkhir['TransTax'] := StrToInt(Control.Text); CBDB.TbTransAkhir['TransHargaTax'] := CBDB.TbTransAkhir['TransSubTotal']
      • (CBDB.TbTransAkhir['TransTax'] / 100); CBDB.TbTransAkhir['TransTotal'] := CBDB.TbTransAkhir['TransSubTotal']

  • CBDB.TbTransAkhir['TransHargaTax']; end else if Ket = DiscPersen then begin CBDB.TbTransAkhir['TransDisc'] := StrToInt(Control.Text); CBDB.TbTransAkhir['TransHargaDisc'] := CBDB.TbTransAkhir['TransSubTotal']
    • (CBDB.TbTransAkhir['TransDisc'] / 100); CBDB.TbTransAkhir['TransTotal'] := CBDB.TbTransAkhir['TransSubTotal']

  • CBDB.TbTransAkhir['TransHargaDisc']; end; CBDB.TbTransAkhir.Post; end; end; // End Procedure IsiTbTransAkhir procedure TFTransaksi.ResetJmlItem; begin JmlItem := 0; JmlItemDisc := 0; JmlItemTax := 0; JmlItemCor := 0;

  JmlItemVoid := 0; JmlItemRtn := 0; JmlReturn := 0; JmlCorrect := 0; JmlVoid := 0; end; // End Procedure ResetJmlItem procedure TFTransaksi.HitungJmlItem(Ket: Byte); begin ResetJmlItem;

  CBDB.TbTrans.First; while not CBDB.TbTrans.Eof do begin if (Ket = Normal) or (Ket = Credit) then begin if CBDB.TbTrans['TransItemHargaDiscTax'] <> 0 then JmlItemDisc := JmlItemDisc + CBDB.TbTrans['TransItemQty']; if CBDB.TbTrans['TransSts'] = StatusReturn then begin JmlItemRtn := JmlItemRtn + CBDB.TbTrans['TransItemQty']; JmlReturn := JmlReturn + CBDB.TbTrans['TransTotal']; end; if CBDB.TbTrans['TransSts'] = StatusCorr then begin JmlItemCor := JmlItemCor + CBDB.TbTrans['TransItemQty']; JmlCorrect := JmlCorrect + CBDB.TbTrans['TransTotal']; end; if CBDB.TbTrans['TransSts'] = StatusVOID then begin JmlItemVoid := JmlItemVoid + CBDB.TbTrans['TransItemQty']; JmlVoid := JmlVoid + CBDB.TbTrans['TransTotal']; end; end else if Ket = VOIDSales then begin if CBDB.TbTrans['TransItemHargaDiscTax'] <> 0 then JmlItemDisc := JmlItemDisc + CBDB.TbTrans['TransItemQty']; if CBDB.TbTrans['TransSts'] = StatusReturn then begin JmlItemRtn := JmlItemRtn + CBDB.TbTrans['TransItemQty']; JmlReturn := JmlReturn + CBDB.TbTrans['TransTotal']; UpdateStock(Min); end; if CBDB.TbTrans['TransSts'] = StatusCorr then begin JmlItemCor := JmlItemCor + CBDB.TbTrans['TransItemQty']; JmlCorrect := JmlCorrect + CBDB.TbTrans['TransTotal']; UpdateStock(Min); end; if CBDB.TbTrans['TransSts'] = Status then UpdateStock(Add); if CBDB.TbTrans['TransSts'] = StatusVOID then UpdateStock(Min); JmlItemVoid := JmlItemVoid + CBDB.TbTrans['TransItemQty']; end; JmlItem := JmlItem + CBDB.TbTrans['TransItemQty']; CBDB.TbTrans.Next; end; if CBDB.TbTransAkhir['TransHargaDisc'] <> 0 then begin JmlItemDisc := CBDB.TbTransAkhir['JmlItem']; IsiTbRutin('Nota ke-' + Trim(IntToStr(NomorNota)) + ' Di Discount Sebesar Rp ' + CurrToStr(CBDB.TbTransAkhir['TransHargaDisc'])

  • ', Kasir ' + NamaKasirKerja + ' (' + KodeKasir + ')'); end; if CBDB.TbTransAkhir['TransHargaTax'] <> 0 then begin JmlItemTax := CBDB.TbTransAkhir['JmlItem']; IsiTbRutin('Nota ke-' + Trim(IntToStr(NomorNota)) + ' Kena Pajak Sebesar Rp '
  • CurrToStr(CBDB.TbTransAkhir['TransHargaTax']) + ', Kasir '
  • NamaKasirKerja + ' ('+KodeKasir+')'); end; end; // End Procedure HitungJmlItem
procedure TFTransaksi.DeleteLastRecordTbTransAkhir; begin CBDB.TbTransAkhir.Last; CBDB.TbTransAkhir.Delete; end; // End Procedure DeleteLastRecordTbTransAkhir procedure TFTransaksi.DeleteLastRecordTbTrans; begin CBDB.TbTrans.Last; CBDB.TbTrans.Delete; end; // End Procedure DeleteLastRecordTbTrans procedure TFTransaksi.IsiTbTrans(Ket: Byte); begin if Ket = BarangCampuran then begin if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit; CBDB.TbTrans['TransNota'] := NomorNota; CBDB.TbTrans['Item'] := BarangAMT; CBDB.TbTrans['ItemKode'] := Control.Text; CBDB.TbTrans.Post; end else if Ket = Normal then begin if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit; CBDB.TbTrans['TransNota'] := NomorNota; CBDB.TbTrans['ItemKode'] := CBDB.TbItem[FindKode]; CBDB.TbTrans['ItemHarga'] := CBDB.TbItem['ItemHarga']; CBDB.TbTrans['Item'] := CBDB.TbItem['Item']; if CBDB.TbTrans['TransSts'] = Status then begin CBDB.TbTrans['TransSubTotal'] := CBDB.TbItem['ItemHarga']

  • CBDB.TbTrans['TransItemQty']; Count := Count + CBDB.TbTrans['TransItemQty']; UpdateStock(Min); end else begin CBDB.TbTrans['TransSubTotal'] := -1 * (CBDB.TbItem['ItemHarga']
  • CBDB.TbTrans['TransItemQty']); IsiTbRutin('Transaksi Item ' + CBDB.TbTrans['TransSts']
    • ' di Nota ke-' + Trim(IntToStr(NomorNota)
    • ', Kode:' + CBDB.TbTrans['ItemKode'])); Count := Count - CBDB.TbTrans['TransItemQty']; UpdateStock(Add); end; if (Member = OK) and (CBDB.TbItem['PromoDisc'] <> 0) then begin CBDB.TbTrans['TransItemDiscTax'] := CBDB.TbItem['PromoDisc']; ItemDiscTax := AdaDiscTax; end; CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal']

  • (CBDB.TbTrans['TransItemDiscTax'] / 100); CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal']
    • CBDB.TbTrans['TransItemHargaDiscTax']; CBDB.TbTrans.Post; end else if Ket = Discount then
    begin CBDB.TbTrans.Edit; CBDB.TbTrans['TransItemDiscTax'] := StrToInt(Control.Text); CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal']

  • (CBDB.TbTrans['TransItemDiscTax'] / 100); CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal']
    • CBDB.TbTrans['TransItemHargaDiscTax']; CBDB.TbTrans.Post; end else if Ket = Qty then begin if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit; CBDB.TbTrans['TransItemQty'] := StrToInt(Control.Text); CBDB.TbTrans['TransNota'] := NomorNota; CBDB.TbTrans.Post; end else if (Ket = Sts) or (Ket = Rtn) or (Ket = Vod) then begin if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit; CBDB.TbTrans['TransNota'] := NomorNota;

  if Ket = Sts then CBDB.TbTrans['TransSts'] := Status else if Ket = Rtn then CBDB.TbTrans['TransSts'] := StatusReturn else CBDB.TbTrans['TransSts'] := StatusVOID; CBDB.TbTrans.Post; end else if Ket = HargaAMT then begin CBDB.TbTrans.Edit; CBDB.TbTrans['ItemHarga'] := StrToCurr(Control.Text); if CBDB.TbTrans['TransSts'] = Status then begin CBDB.TbTrans['TransSubTotal'] := CBDB.TbTrans['ItemHarga']

  • CBDB.TbTrans['TransItemQty']; Count := Count + CBDB.TbTrans['TransItemQty']; IsiTbRutin('Transaksi Barang Campuran Rp '
    • CurrToStr(CBDB.TbTrans['TransTotal'])
    • ' di Nota ke-' + Trim(IntToStr(NomorNota))); end else begin CBDB.TbTrans['TransSubTotal'] := (-1) * (CBDB.TbTrans['ItemHarga']

  • CBDB.TbTrans['TransItemQty']); Count := Count - CBDB.TbTrans['TransItemQty']; IsiTbRutin('Transaksi Item ' + CBDB.TbTrans['TransSts']
    • ' Barang Campuran Rp ' + CurrToStr(CBDB.TbTrans['TransTotal'])
    • ' di Nota ke-' + Trim(IntToStr(NomorNota))); end; CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal']

  • (CBDB.TbTrans['TransItemDiscTax'] / 100); CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal']
    • CBDB.TbTrans['TransItemHargaDiscTax']; CBDB.TbTrans.Post; end else if (Ket = CorrMin) or (Ket = CorrAdd) then begin CBDB.TbTrans.Append; CBDB.TbTrans['TransSts'] := StatusCorr; CBDB.TbTrans['TransItemQty'] := CopyItemQty; CBDB.TbTrans['TransItemDiscTax'] := CopyItemDisc;

  CBDB.TbTrans['TransNota'] := NomorNota; CBDB.TbTrans['ItemKode'] := CopyItemKode; CBDB.TbTrans['ItemHarga'] := CopyItemHarga; CBDB.TbTrans['Item'] := CopyItem; if Ket = CorrMin then CBDB.TbTrans['TransSubTotal'] := (-1)

  • CopyItemHarga * CBDB.TbTrans['TransItemQty'] else CBDB.TbTrans['TransSubTotal'] := CopyItemHarga
  • CBDB.TbTrans['TransItemQty']; CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal']
  • (CBDB.TbTrans['TransItemDiscTax'] / 100); CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal']
    • CBDB.TbTrans['TransItemHargaDiscTax']; CBDB.TbTrans.Post;// end; end; // End Procedure IsiTbTrans procedure TFTransaksi.ViewKasirTanggalJam; begin LTanggal.Caption := FormatDateTime('dddd, d mmmm yyyy',Date); FrTime1.LTime.Caption := TimeToStr(Now()); LKasir.Caption := NamaKasirKerja; end; // End Procedure ViewKasirTanggalJam procedure TFTransaksi.RubahState(Ket: Byte); begin if Ket = StsBeginTransaction then begin State := BeginTransaction;

  LStatus.Caption := 'Masukkan Qty atau PLU'; end else if Ket = StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount then begin if (Count = 0) or (State = AlreadyInQtyZeroCount) then begin if (CBDB.TbTrans.RecordCount = 0) then State := BeginTransaction else State := AlreadyInKodeZeroCount; end // T K A1133 else State := AlreadyInKode;// E A1133 -- T E A1133 LStatus.Caption := 'Masukkan Qty ; Kode PLU ; Disc ; Tekan + Untuk Pembayaran'; end else if Ket = StsAlreadyInQty then begin State := AlreadyInQty; // Untuk PLU LStatus.Caption := 'Masukkan Kode PLU'; end else if Ket = StsAlreadyInQtyOrStsAlreadyInQtyZeroCount then begin if (State = AlreadyInKodeZeroCount) or (State = AlreadyInStatusZeroCount) then State := AlreadyInQtyZeroCount else if (State = AlreadyInStatus) or (State = AlreadyInKode) or (State = BeginTransaction) then State := AlreadyInQty; LStatus.Caption := 'Masukkan Qty atau Kode PLU'; end else if Ket = StsAlreadyInKode then begin State := AlreadyInKode; if ItemDiscTax = True then LStatus.Caption := 'Masukkan Qty ; Kode PLU ; Tekan + Untuk Pembayaran' else LStatus.Caption := 'Masukkan Qty ; Kode PLU ; Disc ; Tekan + Untuk Pembayaran'; end else if Ket = StsEndTransaction then begin State := EndTransaction; LStatus.Caption := 'Tekan Spasi Untuk Membuka Transaksi Baru'; end else if Ket = StsAlreadyInAmtKode then begin State := AlreadyInAmtKode; // Untuk AMT LStatus.Caption := 'Masukkan Jumlah Harga, Tekan [AMT] Untuk Konfirmasi'; end else if Ket = StsAlreadyInAMTKodeOrStsAlreadyInAMTKodeZeroCount then begin if (State = AlreadyInStatusZeroCount) or (State = BeginTransaction) or (State = AlreadyInQtyZeroCount) then State := AlreadyInAMTKodeZeroCount else State := AlreadyInAMTKode; LStatus.Caption := 'Masukkan Jumlah Harga, Tekan [AMT] Untuk Konfirmasi'; end else if Ket = StsAlreadyInDiscTaxNota then begin State := AlreadyInDiscTaxNota; // Untuk Pembayaran atau Corr LStatus.Caption := 'Tekan [CASH] Untuk Pembayaran Tunai'; end else if Ket = StsAlreadyInStatusOrStsAlreadyInStatusZeroCount then begin if (State = AlreadyInKode) or (State = AlreadyInStatus) then State := AlreadyInStatus else State := AlreadyInStatusZeroCount; LStatus.Caption := 'Masukkan Qty atau Kode PLU'; end else if Ket = StsEODNotCompleted then begin State := EODNotCompleted; LStatus.Caption := 'Tekan [F2] untuk Izin EOD, [F9] untuk EOD'; end end; // End Procedure RubahState procedure TFTransaksi.IsiTbKeterangan(Ket: Byte); begin CBDB.TbKeterangan.Open; CBDB.TbKeterangan.First; CBDB.TbKeterangan.Edit; CBDB.TbKeterangan['KASIR'] := NamaKasirKerja; CBDB.TbKeterangan['JAM'] := TimeToStr(Now()); CBDB.TbKeterangan['TANGGAL'] := FormatDateTime('dddd, dd-mm-yy',Date); if Ket = Normal then CBDB.TbKeterangan['NOMORNOTA'] := NomorNota else if Ket = RePrint then CBDB.TbKeterangan['NOMORNOTA'] := NomorNota - 1; CBDB.TbKeterangan.Post; CBDB.TbKeterangan.Close; end; // End Procedure IsiTbKeterangan procedure TFTransaksi.IsiTbStrukAkhir(Ket: Byte); begin CBDB.TbStrukAkhir.Open; CBDB.TbStrukAkhir.First; CBDB.TbStrukAkhir.Edit; if Ket = Normal then

begin CBDB.TbStrukAkhir['TAX'] := CBDB.TbTransAkhir['TransTax']; CBDB.TbStrukAkhir['HARGATAX'] := CurrToCurrStr(CBDB.TbTransAkhir['TransHargaTax']); CBDB.TbStrukAkhir['KEMBALI'] := CurrToCurrStr(CBDB.TbTransAkhir['TransKembali']); CBDB.TbStrukAkhir['TUNAI'] := CurrToCurrStr(CBDB.TbTransAkhir['TransTunai']); CBDB.TbStrukAkhir['HARGADISC'] := CurrToCurrStr(CBDB.TbTransAkhir['TransHargaDisc']); CBDB.TbStrukAkhir['DISC'] := CBDB.TbTransAkhir['TransDisc']; CBDB.TbStrukAkhir['SUBTOTAL'] := CurrToCurrStr(CBDB.TbTransAkhir['TransSubTotal']); CBDB.TbStrukAkhir['TOTAL'] := CurrToCurrStr(CBDB.TbTransAkhir['TransTotal']); CBDB.TbStrukAkhir['CREDIT'] := CurrToCurrStr(CBDB.TbTransAkhir['TransCredit']); end else if Ket = VOIDSales then CBDB.TbStrukAkhir['TOTAL'] := CurrToCurrStr(CBDB.TbTransAkhir['TransVOID']) else if Ket = Validasi then CBDB.TbStrukAkhir['TOTAL'] := StrCurrToCurrStr(Total.Text); CBDB.TbStrukAkhir.Post; CBDB.TbStrukAkhir.Close; end; // End Procedure IsiTbStrukAkhir procedure TFTransaksi.IsiTbStruk(Ket: Byte); begin CBDB.TbStruk.Open; CBDB.TbStruk.Last; if Ket = Discount then CBDB.TbStruk.Edit else if Ket = Normal then begin CBDB.TbStruk.Append; CBDB.TbStruk['ITEMKODE'] := CBDB.TbTrans['ItemKode']; CBDB.TbStruk['ITEM'] := CBDB.TbTrans['Item']; CBDB.TbStruk['QTY'] := CBDB.TbTrans['TransItemQty']; CBDB.TbStruk['HARGA'] := CurrToCurrStr(CBDB.TbTrans['ItemHarga']); CBDB.TbStruk['STATUS'] := CBDB.TbTrans['TransSts']; end; CBDB.TbStruk['HARGADISC'] := CurrToCurrStr(CBDB.TbTrans['TransItemHargaDiscTax']); CBDB.TbStruk['DISC'] := CBDB.TbTrans['TransItemDiscTax']; CBDB.TbStruk['SUBTOTAL'] := CurrToCurrStr(CBDB.TbTrans['TransSubTotal']); CBDB.TbStruk['TOTAL'] := CurrToCurrStr(CBDB.TbTrans['TransTotal']); CBDB.TbStruk.Post; CBDB.TbStruk.Close; end; // End Procedure IsiTbStruk procedure TFTransaksi.KosongkanTbStruk; begin CBDB.TbStruk.Exclusive := True; CBDB.TbStruk.EmptyTable; CBDB.TbStruk.Exclusive := False; end; // End Procedure KosongkanTbStruk procedure TFTransaksi.IsiTbRKasir(Ket: Byte); begin if Ket = Masuk then begin CBDB.TbRKasir.Append; CBDB.TbRKasir['JamIn'] := Time(); CBDB.TbRKasir['KasirKode'] := KodeKasir;

  CBDB.TbRKasir['KasirNama'] := NamaKasirKerja; CBDB.TbRKasir['Tanggal'] := Date(); end else if Ket = Keluar then begin CBDB.TbRKasir.Last; CBDB.TbRKasir.Edit; CBDB.TbRKasir['JamOut'] := Time(); end; CBDB.TbRKasir.Post; end; // End Procedure IsiTbKasir procedure TFTransaksi.UpdateStock(Ket: Byte); begin if Length(CBDB.TbTrans['ItemKode']) > 6 then FindKode := Barcode else FindKode := Kode; if CBDB.TbItem.Locate(FindKode, CBDB.TbTrans['ItemKode'], []) = True then begin CBDB.TbItem.Edit; if Ket = Min then begin CBDB.TbItem['ItemStock'] := CBDB.TbItem['ItemStock']

  • CBDB.TbTrans['TransItemQty']; if CBDB.TbItemChg.Locate(Kode, CBDB.TbItem['ItemKode'], []) = True then begin CBDB.TbItemChg.Edit; if CBDB.TbItemChg['Keterangan'] = 'Item Change' then CBDB.TbItemChg['Keterangan'] := 'Stock & Item Change'; end else begin CBDB.TbItemChg.Append; CBDB.TbItemChg['Keterangan'] := 'Stock Change'; end; CBDB.TbItemChg['ItemKode'] := CBDB.TbItem['ItemKode'];

  CBDB.TbItemChg['StockChange'] := CBDB.TbItemChg['StockChange']

  • CBDB.TbTrans['TransItemQty']; CBDB.TbItemChg['StockOut'] := CBDB.TbItemChg['StockOut']
    • CBDB.TbTrans['TransItemQty']; CBDB.TbItemChg['Tanggal'] := Date(); CBDB.TbItemChg.Post; IsiTbRutin('Stock Berkurang '
    • IntToStr((-1) * CBDB.TbTrans['TransItemQty']) + ', Kode Barang ('
    • CBDB.TbTrans['ItemKode'] + ')'); end else if Ket = Add then begin CBDB.TbItem['ItemStock'] := CBDB.TbItem['ItemStock']
    • CBDB.TbTrans['TransItemQty']; if CBDB.TbItemChg.Locate(Kode, CBDB.TbItem['ItemKode'], []) = True then begin CBDB.TbItemChg.Edit; if CBDB.TbItemChg['Keterangan'] = 'Item Change' then CBDB.TbItemChg['Keterangan'] := 'Stock & Item Change'; end else begin CBDB.TbItemChg.Append;

  CBDB.TbItemChg['Keterangan'] := 'Stock Change'; end; CBDB.TbItemChg['ItemKode'] := CBDB.TbItem['ItemKode']; CBDB.TbItemChg['StockChange'] := CBDB.TbItemChg['StockChange']

  • CBDB.TbTrans['TransItemQty']; CBDB.TbItemChg['StockOut'] := CBDB.TbItemChg['StockOut']
    • CBDB.TbTrans['TransItemQty']; CBDB.TbItemChg['Tanggal'] := Date(); CBDB.TbItemChg.Post; IsiTbRutin('Stock Bertambah ' + IntToStr(CBDB.TbTrans['TransItemQty'])

  • ', Kode Barang (' + CBDB.TbTrans['ItemKode'] +')'); end; CBDB.TbItem.Post; end end; // End Procedure UpdateStock procedure TFTransaksi.FilterTrans(Ket: Byte); begin CBDB.TbTrans.Filtered := False; if Ket = Normal then CBDB.TbTrans.Filter := 'TransNota=' + QuotedStr(IntToStr(NomorNota)+'') else if Ket = RePrint then CBDB.TbTrans.Filter := 'TransNota=' + QuotedStr(IntToStr(NomorNota-1)+''); CBDB.TbTrans.Filtered := True;

  end; // End Procedure FilterTrans procedure TFTransaksi.ViewTunaiKembali(Ket: Byte); begin if Ket = Pas then begin Tunai.Text := Total.Text; Kembali.Text := 'Rp 0'; end else if Ket = KembaliUang then begin Tunai.Text := CurrStrToStrCurr(IntToCurrStr(StrToInt(Control.Text))); Kembali.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrMinStrCurr(Tunai.Text,Total.Text)))); end else if Ket = TunaiSisa then begin Tunai.Text := CurrStrToStrCurr(IntToCurrStr(StrToInt(Control.Text))); LKembali.Caption := 'Sisa:'; Kembali.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrMinStrCurr(Total.Text,Tunai.Text)))); end else if Ket = TunaiKredit then begin Tunai.Text := CurrStrToStrCurr(IntToCurrStr(StrToInt( Copy(Control.Text,1,Length(Control.Text) - 1)))); LKembali.Caption := 'Credit:'; Kembali.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrMinStrCurr(Total.Text,Tunai.Text)))); end else if Ket = Reset then begin Tunai.Text := 'Rp 0'; Kembali.Text := 'Rp 0'; LKembali.Caption := 'Kembali:'; end end; // End Procedure ViewTunaiKembali procedure TFTransaksi.ViewDisc(Total: Currency); begin Disc.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrAddCurr(Disc.Text,Total)))); end; // End Procedure ViewDisc procedure TFTransaksi.ViewControlTotal; begin Control.Text := Total.Text; Viewer.Text := Control.Text; Control.ReadOnly := True; Timer1.Enabled := True; end; // End Procedure ViewControlTotal procedure TFTransaksi.ViewControlKembali; begin Control.Text := StrCurrToCurrStr(Kembali.Text); Control.ReadOnly := True; Timer2.Enabled := True; end; // End Procedure ViewControlKembali procedure TFTransaksi.ViewControlTunaiKredit; begin Control.Text := 'Rp 0'; Control.ReadOnly := True; Timer2.Enabled := True; end; // End Procedure ViewControlTunaiKredit procedure TFTransaksi.ViewTotal(Ket: Byte); begin if Ket = Min then Total.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrMinStrCurr(SubTotal.Text,Disc.Text)))) else if Ket = Add then Total.Text := CurrStrToStrCurr((IntToCurrStr(StrCurrAddStrCurr(SubTotal.Text,Disc.Text)))) else if Ket = Equal then begin Total.Text := SubTotal.Text; ViewDisc(StrCurrToCurr(Disc.Text) * -1); end; end; // End Procedure ViewTotal procedure TFTransaksi.ViewSubTotal(Ket: Byte); begin if Ket = Add then SubTotal.Text := CurrStrToStrCurr((IntToCurrStr( StrCurrAddCurr(SubTotal.Text,CBDB.TbTrans['TransTotal'])))) else if Ket = Min then SubTotal.Text := CurrStrToStrCurr((IntToCurrStr( StrCurrMinCurr(SubTotal.Text,CBDB.TbTrans['TransTotal'])))); end; // End Procedure ViewSubTotal procedure TFTransaksi.IsiTbRutin(Ket: String); begin CBDB.TbRutin.Append; CBDB.TbRutin['Keterangan'] := Ket; CBDB.TbRutin['Tanggal'] := Date(); CBDB.TbRutin['Jam'] := Time(); CBDB.TbRutin.Post; end; // End Procedure IsiTbRutin procedure TFTransaksi.FrTime1Timer1Timer(Sender: TObject); begin

  FrTime1.Timer1Timer(Sender); end; // End Procedure FrTime1Timer1Timer procedure TFTransaksi.FormActivate(Sender: TObject); begin if IsFTransaksiActivated = False then begin ViewKasirTanggalJam; Control.Text := ''; Count := 0; IsTunaiKredit := NotOK; Member := NotOK; IsFTransaksiActivated := True; RubahState(StsBeginTransaction); Control.SetFocus; LMember.Caption := NoMember; //SetTombolFunction; // Cek Keadaan Transaksi Terakhir // Jika TbTrans Tidak Kosong Berarti Ada Transaksi yang Belum Selesai // Misal: Belum EOD, Belum Bayar, Input Barang Belum Selesai if (CBDB.TbTrans.RecordCount <> 0) then begin // Statement If Ke-2 CBDB.TbTransAkhir.First; // Jika Tanggal Terakhir TransaksiAkhir Tidak Sama dengan Tanggal Hari Ini // Dan Ada Data Transaksi Akhir Berarti Belum Dilakukan EOD if (CBDB.TbTransAkhir['TransTanggal'] <> Date()) and (CBDB.TbTransAkhir.RecordCount <> 0) then begin // Statement If Ke-3 ShowMessage('Transaksi Belum di EOD, Tekan ENTER'); IsiTbRutin('Transaksi Belum Di-EOD Pada Tanggal '+ DateToStr(CBDB.TbTransAkhir['TransTanggal'])); if JenisKasirAkses = SuperVisor then IjinEOD := DiIjinKan else if (IjinEOD = DiTolak) then ShowMessage('Anda Belum Dapat Izin EOD!! Tanyakan Supervisor Anda!!'); RubahState(EODNotCompleted); end // End Statement If Ke-3 // Jika Tanggal TransaksiAkhir Sama dengan Tanggal Hari Ini atau Tidak Ada // TransaksiAkhir Berarti Transaksi Belum Selesai // Kemungkinan: Belum Bayar, Input Barang Belum Selesai else if (CBDB.TbTransAkhir['TransTanggal'] = Date()) or (CBDB.TbTransAkhir.RecordCount = 0) then begin // Statement Else If Ke-3 CBDB.TbTrans.Last; CBDB.TbTransAkhir.Last; // Jika NomorNota TransaksiAkhir Tidak Sama Dengan Nomor Nota Transaksi // Berarti Transaksi Belum Selesai // Kemungkinan: Belum Bayar, Input Barang Belum Selesai if (CBDB.TbTransAkhir['TransNota'] <> CBDB.TbTrans['TransNota']) then begin ShowMessage('Transaksi Belum Selesai, Tekan ENTER'); NomorNota := CBDB.TbTrans['TransNota']; FilterTrans(Normal); IsiTbRKasir(Masuk); IsiTbRutin('Transaksi Belum Selesai, Transaksi ke-'

  • Trim(IntToStr(NomorNota)));

  // Jika Transaksi ItemHarga Kosong Berarti // Belum Memasukkan Kode PLU Tapi Input Sudah Berlangsung if CBDB.TbTrans['ItemHarga'] = 0 then begin // Jika Transaksi ItemQty Tidak Kosong Berarti Sudah Input Qty if CBDB.TbTrans['TransItemQty'] <> 0 then begin RubahState(StsAlreadyInQty); // Jika Transaksi ItemKode Sama Dengan AMTItemKode Berarti // Belum Memasukkan Harga AMT if CBDB.TbTrans['ItemKode'] = AMTKode then RubahState(StsAlreadyInAmtKode); end end // Jika Harga Tidak Kosong Berarti Kode PLU Sudah Dimasukkan else begin // Jika ItemHargaDiscTax Tidak Kosong Berarti Ada Dicount atau Tax if CBDB.TbTrans['TransItemHargaDiscTax'] <> 0 then ItemDiscTax := True else ItemDiscTax := False; RubahState(StsAlreadyInKode); end; CBDB.TbTrans.First; while not CBDB.TbTrans.Eof do begin ViewSubTotal(Add); ViewTotal(Min); CBDB.TbTrans.Next; end; ViewControlTotal; // Apakah ada kartu Member CBDB.TbPMember.Open; if CBDB.TbPMember.RecordCount <> 0 then begin Member := OK; MemberID := CBDB.TbPMember['MEMBERID']; LMember.Caption := 'MemberID: ' + MemberID; end; CBDB.TbPMember.Close; end // Jika NomorNota TransaksiAkhir Sama Dengan Nomor Nota Transaksi // Berarti Transaksi Sudah Selesai else begin NomorNota := CBDB.TbTransAkhir['TransNota'] + 1; ShowMessage('Mulai Transaksi Hari ' + FormatDateTime('dddd, d mmmm yyyy',Date) + ' yang ke ' + IntToStr(NomorNota)); FilterTrans(Normal); IsiTbRKasir(Masuk); IsiTbRutin('Kasir ' + NamaKasirKerja

  • ', (' + KodeKasir + ') Masuk Transaksi'); IsiTbKeterangan(Normal); PrintStruk(Keterangan);

  ViewTunaiKembali(Reset); end end // End Statement Else If Ke-3 end // End Statement If Ke-2 // Jika TbTrans Kosong Berarti Belum Ada Transaksi else begin NomorNota := 1; ShowMessage('Mulai Transaksi Hari ' + FormatDateTime('dddd, d mmmm yyyy',Date) + ' yang Pertama'); FilterTrans(Normal); IsiTbRKasir(Masuk); IsiTbRutin('Kasir ' + NamaKasirKerja + ', (' + KodeKasir

  • ') Masuk Transaksi'); IsiTbKeterangan(Normal); PrintStruk(Keterangan); end; end else FilterTrans(Normal); end; // End Procedure FormActivate procedure TFTransaksi.FormKeyPress(Sender: TObject; var Key: Char); begin if not ((Key in ['a', 'd'..'z']) or (Key in ['A', 'D'..'Z'])) then begin // Jika tombol Minus (-) ditekan -> Untuk Discount Item Persen if Key = TDiscItemPersen then begin if ItemDiscTax = AdaDiscTax then ShowMessage('Discount Sudah Ada, Masukkan Item Baru, Tekan ENTER!!') else begin if ((State = AlreadyInKode) or (State = AlreadyInKodeZeroCount)) and (CBDB.TbTrans['TransSts'] <> StatusCorr) then try if Control.Text = '' then SalahTombol else if (StrToInt(Control.Text) > 100) or (StrToInt(Control.Text) <= 0) then ShowMessage('Salah Memasukkan Jumlah Discount, Tekan ENTER')

  else begin ViewSubTotal(Min); ViewTotal(Min); IsiTbTrans(Discount); ViewSubTotal(Add); ViewTotal(Min); ItemDiscTax := AdaDiscTax; ViewControlTotal; LStatus.Caption := 'Masukkan Qty ; Kode PLU ; Tekan + Untuk Pembayaran'; IsiTbStruk(Discount); PrintStruk(Discount); end except ShowMessage('Salah Memasukkan Angka, Tekan ENTER'); end else SalahTombol; end;

  Hapus := True; end; // Jika tombol Multiply (*) ditekan -> Untuk Qty if Key = TQty then begin if (State = AlreadyInKodeZeroCount) or (State = BeginTransaction) or (State = AlreadyInKode) or (State = AlreadyInStatusZeroCount) or (State = AlreadyInStatus) or (State = AlreadyInQty) or (State = AlreadyInQtyZeroCount) then begin try begin if Control.Text = '' then SalahTombol else begin if not ((CBDB.TbTrans['TransSts'] <> Status) and ((State = AlreadyInStatusZeroCount) or (State = AlreadyinQtyZeroCount) or (((State = AlreadyInStatus) or (State = AlreadyInQty)) and ((1 + Count - CBDB.TbTrans['TransItemQty']) < 0)))) then begin IsiTbTrans(Qty); RubahState(StsAlreadyInQtyOrStsAlreadyInQtyZeroCount); end end end except begin ShowMessage('Salah Memasukkan Jumlah Qty, Tekan ENTER'); if (CBDB.TbTrans.State = dsEdit) or (CBDB.TbTrans.State = dsInsert) then TbTrans.Cancel; end end end else SalahTombol; Hapus := True; end; // Jika Titik Ditekan --> '000' if Key = TTripleZero then begin Control.Text := Control.Text + '000'; Tekan := True; end; // Jika Titik Ditekan --> '00' if Key = TDoubleZero then begin Control.Text := Control.Text + '00'; Tekan := True; end; end else begin SalahTombol; end end; // End Procedure FormKeyPress procedure TFTransaksi.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Hapus = True then begin Control.Text := ''; Hapus := False; end; if Tekan = True then begin Control.Text := Copy(Control.Text,2,Length(Control.Text)-1); Control.SelStart := Length(Control.Text); Control.SetFocus; Tekan := False; end; if Key = TCash then begin Control.Text := ''; Control.Text := StrCurrToCurrStr(Kembali.Text); end; end; // End Procedure FormKeyUp procedure TFTransaksi.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin // Jika tombol Plus (+) ditekan -> Untuk Pembayaran Tunai if Key = TCash then begin // Statement If Ke-3 if (State = AlreadyInKode) or (State = AlreadyInDiscTaxNota) or (State = AlreadyInKodeZeroCount) then begin StatusOK := OK; try begin if Control.Text <> '' then begin if (StrToInt(Control.Text) - StrCurrToInt(Total.Text)) < 0 then begin ViewTunaiKembali(TunaiSisa); if (MessageDlg('Pembayaran Kurang!!, Apakah Sisa Pembayaran ' + Kembali.Text + ' Dibayar secara Kredit?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin if Member <> OK then begin ViewTunaiKembali(TunaiKredit); IsiTbTransAkhir(TunaiKredit); IsiTbRutin('Validasi TunaiKredit ke-' + Trim(IntToStr(NomorNota))

  • ', Kredit Rp ' + CurrToStr(CBDB.TbTransAkhir['TransCredit'])
  • ', Tunai Rp ' + CurrToStr(CBDB.TbTransAkhir['TransTunai'])
  • ', Kasir ' + NamaKasirKerja + ' (' + KodeKasir + ')'); RubahState(StsEndTransaction); ViewControlTunaiKredit; Hapus := True;

  IsiTbStrukAkhir(Normal); PrintStruk(Pembayaran); Member := NotOK; end else begin IsTunaiKredit := OK; FInputPIN.Visible := True; end end else ViewTunaiKembali(Reset); StatusOK := NotOK; end else if StrCurrToInt(Total.Text) < 0 then begin ShowMessage('Total Penjualan Tidak Boleh Minus!!, Tekan ENTER'); StatusOK := NotOK; end else ViewTunaiKembali(KembaliUang); Hapus := True; end else if StrCurrToInt(Total.Text) < 0 then begin ShowMessage('Total Penjualan Tidak Boleh Minus!!, Tekan ENTER'); Hapus := True; StatusOK := NotOK; end else ViewTunaiKembali(Pas); if StatusOK = OK then begin IsiTbTransAkhir(Normal); IsiTbRutin('Validasi Transaksi ke-' + Trim(IntToStr(NomorNota))

  • ', Tunai Rp ' + CurrToStr(CBDB.TbTransAkhir['TransTotal'])
  • ', Kasir ' + NamaKasirKerja + ' ('+KodeKasir+')'); ViewControlKembali; Tekan := True; RubahState(StsEndTransaction); IsiTbStrukAkhir(Normal); PrintStruk(Pembayaran);

  Member := NotOK; end end except begin ShowMessage('Salah Memasukkan Angka, Tekan ENTER'); Hapus := True; end end end else SalahTombol; end; // End Statement If Ke-3 // Jika tombol Space ditekan -> Buka Transaksi Baru if Key = TNewTransaction then begin if State = EndTransaction then begin SubTotal.Text := 'Rp 0';

  Disc.Text := 'Rp 0'; Total.Text := 'Rp 0'; Tunai.Text := 'Rp 0'; Kembali.Text := 'Rp 0'; Control.ReadOnly := False; Viewer.Text := ''; LDisc.Caption := SNorm; LTunai.Caption := 'Tunai'; LMember.Caption := NoMember; NomorNota := NomorNota + 1; FilterTrans(Normal); Count := 0; RubahState(StsBeginTransaction); IsiTbKeterangan(Normal); PrintStruk(Keterangan); Hapus := True; CBDB.TbMember.Close; ViewTunaiKembali(Reset); CBDB.TbPMember.Close; CBDB.TbPMember.Exclusive := True; CBDB.TbPMember.EmptyTable; CBDB.TbPMember.Exclusive := False; end end; // Jika tombol Esc ditekan -> Untuk Keluar if Key = TKeluar then begin if not ((State = BeginTransaction) or (State = EODNotCompleted)) then SalahTombol else begin if State = BeginTransaction then begin IsiTbRKasir(Keluar); IsiTbRutin('Kasir ' + NamaKasirKerja + ', ('

  • KodeKasir + ') Keluar Transaksi'); CBDB.TbTrans.Filtered := False; end; FTransaksi.Visible := False; FSecurity.Visible := False; FSecurity.Visible := True; FSecurity.EKodeKasir.Text := '';

  FSecurity.EKodeAkses.Text := ''; FSecurity.SetFocus; end end; if (Key = TKode) and (Control.Text <> '') then begin if (State = BeginTransaction) and ((Copy(Control.Text,1,1) = 'C') or (Copy(Control.Text,Length(Control.Text),1) = 'B') or (Copy(Control.Text,1,1) = 'c') or (Copy(Control.Text,Length(Control.Text),1) = 'b')) then begin MemberId := Copy(Control.Text,2,Length(Control.Text) - 2); CBDB.TbMember.Open; if (CBDB.TbMember.Locate('MemberID',MemberID,[]) <> True) or (Member = OK) then begin if Member = OK then ShowMessage('Member Sudah Ada!') else begin ShowMessage('Member Tidak Ditemukan!'); Member := NotOK; end; Hapus := True; end else begin if CBDB.TbMember['Valid'] = False then begin ShowMessage('Member Tidak Aktif!'); Member := NotOK; end else begin Member := OK; ShowMessage('Member Cahaya Baru, Nama: ' + CBDB.TbMember['Nama']

  • ', ID: ' + MemberID); LMember.Caption := 'MemberID: ' + MemberID; // Isi TbPrintMember CBDB.TbPMember.Open; CBDB.TbPMember.Append; CBDB.TbPMember['MEMBERID'] := CBDB.TbMember['MemberID'];

  CBDB.TbPMember['NAMA'] := CBDB.TbMember['Nama']; CBDB.TbPMember.Post; // PrintStruk(PrintMember); CBDB.TbPMember.Close; end end end else if (State = AlreadyInKodeZeroCount) or (State = BeginTransaction) or (State = AlreadyInKode) or (State = AlreadyInStatusZeroCount) or (State = AlreadyInQty) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInStatus) then begin if (State = BeginTransaction) and (CBDB.TbTrans.RecordCount = Kosong) then begin KosongkanTbStruk; IsiTbRutin('Mulai Transaksi ke-'+Trim(IntToStr(NomorNota))); end; if Control.Text = AMTKode then begin IsiTbTrans(BarangCampuran); RubahState(StsAlreadyInAMTKodeOrStsAlreadyInAMTKodeZeroCount); end else begin if Length(Control.Text) < 7 then FindKode := Kode else if Length(Control.Text) < 16 then FindKode := Barcode else Control.Text := Copy(Control.Text,1,15); if CBDB.TbItem.Locate(FindKode,Control.Text,[]) = True then begin ItemDiscTax := NoDiscTax; IsiTbTrans(Normal); ViewSubTotal(Add); ViewTotal(Min); ViewControlTotal;

  IsiTbStruk(Normal); PrintStruk(Transaksi); RubahState (StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end else ShowMessage('Kode PLU/BarCode Tidak Terdaftar, Tekan ENTER'); end end else SalahTombol; Hapus := True; end; // Jika tombol F5 ditekan -> Status Barang Normal if Key = TStatusNormal then begin if (State = AlreadyInKodeZeroCount) or (State = BeginTransaction) or (State = AlreadyInKode) or (State = AlreadyInStatus) or (State = AlreadyInQty) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInStatusZeroCount) then begin IsiTbTrans(Sts); Hapus := True; RubahState(StsAlreadyInStatusOrStsAlreadyInStatusZeroCount); end end; // Jika tombol F6 ditekan -> Status Barang Rtn if Key = TStatusReturn then begin if (State = AlreadyInKodeZeroCount) or (State = BeginTransaction) or (State = AlreadyInKode) or (State = AlreadyInStatus) or (State = AlreadyInQty) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInStatusZeroCount) then begin IsiTbTrans(Rtn); Hapus := True; RubahState(StsAlreadyInStatusOrStsAlreadyInStatusZeroCount); end end; // Jika tombol F7 ditekan -> Status Barang Void if Key = TStatusVOID then begin if (((State = AlreadyInStatus) or (State = AlreadyInQty) or (State = AlreadyInStatusZeroCount) or (State = AlreadyInQtyZeroCount)) and ((1 + Count - CBDB.TbTrans['TransItemQty']) > 0)) or (State = AlreadyInKode) then begin IsiTbTrans(Vod); Hapus := True; RubahState(StsAlreadyInStatusOrStsAlreadyInStatusZeroCount); end end; // Jika tombol F3 ditekan -> Cari Item if (Key = TCariItem) and (State <> EODNotCompleted) then begin // K B FItemData.Visible := False; FItemData.Visible := True; end; // T K B

  // Untuk AMT Khusus Barang Campuran if Key = TAMT then begin if (State = AlreadyInAmtKode) or (State = AlreadyInAMTKodeZeroCount) then begin try begin IsiTbTrans(HargaAMT); ViewSubTotal(Add); ViewTotal(Min); ViewControlTotal; IsiTbStruk(Normal); PrintStruk(Transaksi); RubahState (StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); ItemDiscTax := False; end except begin ShowMessage('Salah Memasukkan Angka, Tekan ENTER'); Hapus := True; CBDB.TbTrans.Cancel; RubahState (StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end end end else SalahTombol; end; // Jika tombol Home ditekan -> Untuk Pajak/Tambahan Nota Rupiah if (Key = TTaxNotaRupiah) or (Key = TTaxNotaPersen) then begin if State = AlreadyInKode then begin if Control.Text = '' then SalahTombol else begin if Key = TTaxNotaRupiah then IsiTbTransAkhir(TaxRp) else IsiTbTransAkhir(TaxPersen); ViewDisc(CBDB.TbTransAkhir['TransHargaTax']); ViewTotal(Add); ViewControlTotal; LDisc.Caption := STax; RubahState(StsAlreadyInDiscTaxNota); end end end; // Jika tombol PageDown ditekan -> Untuk Discount Nota Persen if (Key = TDiscNotaRupiah) or (Key = TDiscNotaPersen) then begin if State = AlreadyInKode then begin if Control.Text = '' then SalahTombol else begin if Key = TDiscNotaPersen then IsiTbTransAkhir(DiscPersen) else IsiTbTransAkhir(DiscRp); ViewDisc(CBDB.TbTransAkhir['TransHargaDisc']); ViewTotal(Min);

  ViewControlTotal; LDisc.Caption := SDisc; RubahState(StsAlreadyInDiscTaxNota); end end end; // Jika tombol Up ditekan -> Untuk Cancel data Transaksi if Key = TCorrection then begin if (State = AlreadyInStatusZeroCount) or (State = AlreadyInAMTKodeZeroCount) or (State = AlreadyInQty) or (State = AlreadyInAMTKode) or (State = AlreadyInStatus) or (State = AlreadyInQtyZeroCount) then begin DeleteLastRecordTbTrans; RubahState (StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); Hapus := True; end else if ((State = AlreadyInKode) or (State = AlreadyInKodeZeroCount)) and (CBDB.TbTrans['TransSts'] <> StatusCorr) then begin ViewSubTotal(Min); ViewTotal(Min); ViewControlTotal; CopyItem := CBDB.TbTrans['Item']; CopyItemKode := CBDB.TbTrans['ItemKode']; CopyItemHarga := CBDB.TbTrans['ItemHarga']; CopyItemQty := CBDB.TbTrans['TransItemQty']; CopyItemDisc := CBDB.TbTrans['TransItemDiscTax']; CopyItemHargaDisc := CBDB.TbTrans['TransItemHargaDiscTax']; if CBDB.TbTrans['TransSts'] = Status then Count := Count - CBDB.TbTrans['TransItemQty'] else Count := Count + CBDB.TbTrans['TransItemQty']; if CBDB.TbTrans['ItemKode'] = AMTKode then begin IsiTbRutin('Batalkan Transaksi Barang Campuran Item ' + CBDB.TbTrans['TransSts'] + ' di Nota ke-' + Trim(IntToStr(NomorNota) + ', Kode:' + CBDB.TbTrans['ItemKode'])); IsiTbTrans(CorrMin); end else begin IsiTbRutin('Batalkan Transaksi Item ' + CBDB.TbTrans['TransSts']

  • ' di Nota ke-' + Trim(IntToStr(NomorNota) + ', Kode:'
  • CBDB.TbTrans['ItemKode'])); if CBDB.TbTrans['TransSts'] = Status then begin UpdateStock(Add); IsiTbTrans(CorrMin); end else begin UpdateStock(Min); IsiTbTrans(CorrAdd); end end; IsiTbStruk(Normal);

  PrintStruk(Correction); RubahState

  (StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end else if State = AlreadyInDiscTaxNota then begin DeleteLastRecordTbTransAkhir; ViewTotal(Equal); ViewControlTotal; LDisc.Caption := SNorm; State := AlreadyInKode; end else if State = BeginTransaction then begin LMember.Caption := NoMember; Member := NotOK; end else if CBDB.TbTrans['TransSts'] = StatusCorr then begin ShowMessage('Transaksi Sudah Dikoreksi! Tekan ENTER!'); Hapus := True; end end; // Jika tombol Dowm ditekan -> untuk RePrint if Key = TRePrint then begin if State = EndTransaction then PrintStruk(RePrint) else if (State = BeginTransaction) and (CBDB.TbTransAkhir.RecordCount = Kosong) then ShowMessage('Belum Ada Transaksi, Tekan ENTER') else if State = BeginTransaction then begin FilterTrans(RePrint); IsiTbKeterangan(RePrint); PrintStruk(RePrint); RubahState(StsEndTransaction); NomorNota := NomorNota - 1; end else SalahTombol; end; // Jika tombol Left ditekan -> Untuk Pembayaran Credit if Key = TCredit then begin if Member = OK then FInputPIN.Visible := True else begin if (State = AlreadyInKode) or (State = AlreadyInDiscTaxNota) then begin ViewTunaiKembali(Pas); IsiTbTransAkhir(Credit); IsiTbRutin('Validasi Transaksi ke-' + Trim(IntToStr(NomorNota))

  • ', Kredit Rp ' + CurrToStr(CBDB.TbTransAkhir['TransTotal'])
  • ', Kasir ' + NamaKasirKerja + ' (' + KodeKasir + ')'); RubahState(StsEndTransaction); LTunai.Caption := 'Credit:'; ViewControlKembali; Hapus := True; IsiTbStrukAkhir(Normal);