• Tidak ada hasil yang ditemukan

Lampiran A.1 Listing Program FSecurity

N/A
N/A
Protected

Academic year: 2019

Membagikan "Lampiran A.1 Listing Program FSecurity"

Copied!
126
0
0

Teks penuh

(1)

LAMPIRAN

A

(2)

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,[]);

(3)

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

(4)

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;

(5)

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;

(6)

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

(7)

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;

(8)

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

(9)

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;

(10)

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

(11)

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;

(12)

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

(13)

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

(14)

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();

(15)

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

(16)

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';

(17)

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

(18)

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

(19)

// 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);

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

if Member = OK then ShowMessage('Member Sudah Ada!')

CBDB.TbPMember['MEMBERID'] := CBDB.TbMember['MemberID']; CBDB.TbPMember['NAMA'] := CBDB.TbMember['Nama'];

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

(26)

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

(27)

// Untuk AMT Khusus Barang Campuran if Key = TAMT then

begin

if (State = AlreadyInAmtKode) or (State = AlreadyInAMTKodeZeroCount) then begin

(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

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 Key = TDiscNotaPersen then IsiTbTransAkhir(DiscPersen) else IsiTbTransAkhir(DiscRp);

(28)

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

(29)

(StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end

else if State = AlreadyInDiscTaxNota then begin

DeleteLastRecordTbTransAkhir; ViewTotal(Equal);

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

(30)

else SalahTombol; end

end;

// Jika tombol F10 ditekan -> Financial if Key = TFinancial then

begin

if State = BeginTransaction then begin

if CBDB.TbTransAkhir.RecordCount <> 0 then begin

if Control.Text = KodeKasir then begin

DBGrid1.Visible := False; FFinancial.Visible := True; end

end

else ShowMessage('Belum Ada Transaksi!, Tekan ENTER!'); end

else SalahTombol; Hapus := True; end;

// Jika tombol F9 ditekan -> EOD if Key = TEOD then

begin

if ((State = BeginTransaction) or (State = EODNotCompleted)) and (Control.Text = KodeKasir) then

begin

if (CBDB.TbTransAkhir.RecordCount = 0) then

ShowMessage('Tidak Bisa EOD, Belum Ada Transaksi!') else

begin

if IjinEOD = DiIjinKan then begin

if CheckFileEOD(DateToStr(CBDB.TbTransAkhir['TransTanggal'])) <> '' then

begin

EOD := True;

ShowMessage('Transaksi Hari Ini Sudah Pernah di EOD,' + #13#10 + 'Data Lama Disimpan Pada File ' +

CheckFileEOD(DateToStr(CBDB.TbTransAkhir['TransTanggal']))); end

else EOD := False; FEOD.Visible := False; FEOD.Visible := True; end

else ShowMessage

('Harus Ada Ijin EOD!'); end

end

else ShowMessage('Salah Tekan Tombol! Tekan ENTER!'); Hapus := True;

end;

// Jika Tombol Delete Ditekan --> CLEAR if Key = TClear then

begin

(31)

// Jika Tombol F11 Ditekan --> Menggeser 1 Baris pada Printer if Key = TFeed then

begin

PrintStruk(Feed); end;

// Jika tombol F8 ditekan -> Belum Ada Fungsi if Key = TOpenCashDrawer then

begin

PrintStruk(Eject); end;

// Jika tombol F12 ditekan -> VOID Sales if Key = TVOIDSales then

begin

if (State = AlreadyInKode) or (State = AlreadyInDiscTaxNota) then begin

ViewTunaiKembali(Pas); IsiTbTransAkhir(VOIDSales);

IsiTbRutin('Validasi Transaksi ke-' + Trim(IntToStr(NomorNota)) + ', Void Rp ' + CurrToStr(CBDB.TbTransAkhir['TransTotal']) + ', Kasir ' + NamaKasirKerja + ' (' + KodeKasir + ')'); RubahState(StsEndTransaction);

LTunai.Caption := 'VOID'; ViewControlKembali;

IsiTbStrukAkhir(VOIDSales); PrintStruk(VOIDSales); end

else SalahTombol; end;

// Jika tombol F2 ditekan -> IjinEOD if Key = TIjinEOD then

begin

if ((State = BeginTransaction) or (State = AlreadyInKode) or (State = EODNotCompleted) or (State = EndTransaction)) and (JenisKasirAkses <> SuperVisor) then

begin

FEODIjin.Visible := False; FEODIjin.Visible := True; end

else SalahTombol; end;

// Jika tombol F1 ditekan -> Help if Key = THelp then

begin

FHTrans.Visible := False; FHTrans.Visible := True; end;

// Jika tombol F4 ditekan -> Validasi if Key = TValidasi then

begin

if (State = EndTransaction) or (State = AlreadyInKode) or (State = AlreadyInDiscTaxNota) then

begin

if (State = AlreadyInKode) or (State = AlreadyInDiscTaxNota) then IsiTbStrukAkhir(Validasi)

(32)

NomorNota := NomorNota-1; RubahState(StsEndTransaction); end;

IsiTbKeterangan(Normal); PrintStruk(Validasi); end

end;

end; // End Procedure FormKeyDown

procedure TFTransaksi.Timer1Timer(Sender: TObject); begin

Control.Text := ''; Timer1.Enabled := False; Control.ReadOnly := False; end;

procedure TFTransaksi.Timer2Timer(Sender: TObject); begin

Timer2.Enabled := False; end;

procedure TFTransaksi.FormCreate(Sender: TObject); var

x, y: LongInt; begin

//Brush.Style := bsClear; {FTransaksi.Scaled := True;

x := getSystemMetrics(SM_CXSCREEN); y := getSystemMetrics(SM_CYSCREEN);

if (x <> ScreenHeight) or (y <> ScreenWidth) then begin

Ftransaksi.Height := FTransaksi.Height * x div ScreenHeight; Ftransaksi.Width := FTransaksi.Width * y div ScreenWidth; scaleBy(x,ScreenHeight);

end;} //Scale Resolusi end;

(33)

Lampiran A.3 Listing Program FMenu

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

unit CBMenu; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus;

type

TFMenu = class(TForm) MainMenu1: TMainMenu; LogIn1: TMenuItem; Utility1: TMenuItem; ItemData1: TMenuItem; Keluar1: TMenuItem;

procedure MasukTransaksi1Click(Sender: TObject); procedure ItemData1Click(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Keluar1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

FMenu: TFMenu; implementation

uses CBMenuSP, CBTransaksi, CBItemData, CBFinancial, CBSecurity, FileUtil;

{$R *.DFM}

procedure TFMenu.MasukTransaksi1Click(Sender: TObject); begin

FMenu.Visible := False;

IsFTransaksiActivated := True; FTransaksi.Visible := False; FTransaksi.Visible := True; end;

procedure TFMenu.ItemData1Click(Sender: TObject); begin

FItemData.Visible := False; FItemData.Visible := True; end;

procedure TFMenu.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = TKeluar then begin

(34)

FSecurity.EKodeKasir.Text := ''; FSecurity.EKodeAkses.Text := ''; FSecurity.EKodeKasir.SetFocus; end

end;

procedure TFMenu.Keluar1Click(Sender: TObject); begin

FMenu.Visible := False; FSecurity.Visible := False; FSecurity.Visible := True;

FSecurity.EKodeKasir.Text := ''; FSecurity.EKodeAkses.Text := ''; FSecurity.EKodeKasir.SetFocus; end;

(35)

Lampiran A.4 Listing Program FMenuSP

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

unit CBMenuSP; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, FileCtrl;

type

TFMenuSP = class(TForm) MainMenu1: TMainMenu; LogIn1: TMenuItem; Utility1: TMenuItem; ItemData1: TMenuItem; Laporan1: TMenuItem; Financial1: TMenuItem; DataKasir1: TMenuItem; Exit1: TMenuItem;

SetSistemWaktu1: TMenuItem; JudulStruk1: TMenuItem; MemberData1: TMenuItem; Cashier1: TMenuItem;

PemeliharaanFile1: TMenuItem;

HapusSemuaDataTransaksi1: TMenuItem; KosongkanTabelPerubahanItem1: TMenuItem; LaporanBerkala1: TMenuItem;

PerubahanDataItem1: TMenuItem;

procedure MasukTransaksi1Click(Sender: TObject); procedure ItemData1Click(Sender: TObject);

procedure DataKasir1Click(Sender: TObject); procedure Exit1Click(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure Kasir2Click(Sender: TObject);

procedure SetSistemWaktu1Click(Sender: TObject); procedure JudulStruk1Click(Sender: TObject); procedure Financial1Click(Sender: TObject); procedure MemberData1Click(Sender: TObject); procedure Member1Click(Sender: TObject); procedure Cashier1Click(Sender: TObject);

procedure KosongkanTabelFinancial1Click(Sender: TObject); procedure KosongkanTabelPerubahanItem1Click(Sender: TObject); procedure HapusSemuaDataTransaksi1Click(Sender: TObject); procedure PerubahanDataItem1Click(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

var

FMenuSP: TFMenuSP; Kasir: Integer;

JudulOpened, TransOpened, Proses: Boolean; implementation

(36)

CBFinancial, CBJudul, CBHTrans, CBEODIjin, CBSetWaktu, CBDatabase,

FileUtil, CBMember, CBFinancialCashier, CBPerubahanItem, CBDataTransaksi; {$R *.DFM}

procedure TFMenuSP.MasukTransaksi1Click(Sender: TObject); begin

FMenuSp.Visible := False; IsFTransaksiActivated := True; FTransaksi.Visible := False; FTransaksi.Visible := True; end;

procedure TFMenuSP.ItemData1Click(Sender: TObject); begin

FItemData.Visible := False; FItemData.Visible := True; end;

procedure TFMenuSP.DataKasir1Click(Sender: TObject); begin

FKasir.Visible := False; FKasir.Visible := True; end;

procedure TFMenuSP.Exit1Click(Sender: TObject); begin

FMenuSP.Visible := False; FSecurity.Visible := False; FSecurity.Visible := True;

FSecurity.EKodeKasir.Text := ''; FSecurity.EKodeAkses.Text := ''; FSecurity.EKodeKasir.SetFocus; end;

procedure TFMenuSP.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (Key = VK_Escape) then begin

FMenuSP.Visible := False; FSecurity.Visible := False; FSecurity.Visible := True;

FSecurity.EKodeKasir.Text := ''; FSecurity.EKodeAkses.Text := ''; FSecurity.EKodeKasir.SetFocus; end

end;

procedure TFMenuSP.Kasir2Click(Sender: TObject); begin

//FReportKasir.Visible := False; //FReportKasir.Visible := True; //FReportKasir.SetFocus;

end;

(37)

begin

FSetWaktu.Visible := False; FSetWaktu.Visible := True; FSetWaktu.SetFocus;

end;

procedure TFMenuSP.JudulStruk1Click(Sender: TObject); begin

FJudul.Visible := True; FJudul.ENamaToko.SetFocus; end;

procedure TFMenuSP.Financial1Click(Sender: TObject); begin

FFinancial.Visible := True; FFinancial.SetFocus;

end;

procedure TFMenuSP.MemberData1Click(Sender: TObject); begin

FMember.Visible := True; FMember.SetFocus;

end;

procedure TFMenuSP.Member1Click(Sender: TObject); begin

//FFinMember.Visible := True; end;

procedure TFMenuSP.Cashier1Click(Sender: TObject); begin

FFinancialCashier.Visible := True; FFinancialCashier.SetFocus;

end;

procedure TFMenuSP.KosongkanTabelFinancial1Click(Sender: TObject); begin

CBDB.TbFinancial.Close;

CBDB.TbFinancial.Exclusive := True; CBDB.TbFinancial.EmptyTable;

CBDB.TbFinancial.Exclusive := False; CBDB.TbFinancial.Open;

end;

procedure TFMenuSP.KosongkanTabelPerubahanItem1Click(Sender: TObject); begin

if (MessageDlg('Tabel Perubahan Item akan Dikosongkan, Lanjutkan?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then

begin

CBDB.TbItemChg.Close;

CBDB.TbItemChg.Exclusive := True; CBDB.TbItemChg.EmptyTable;

CBDB.TbItemChg.Exclusive := False; CBDB.TbItemChg.Open;

ShowMessage('Tabel Perubahan Item Sudah Kosong'); end; end;

procedure TFMenuSP.HapusSemuaDataTransaksi1Click(Sender: TObject); begin

(38)

end;

procedure TFMenuSP.PerubahanDataItem1Click(Sender: TObject); begin

FPerubahanItem.Visible := True; FPerubahanItem.SetFocus;

(39)

Lampiran A.5 Listing Program FItemData

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

unit CBItemData; interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, Db, ExtCtrls;

type

TFItemData = class(TForm) DBGridTbItem: TDBGrid; GroupBox1: TGroupBox; Label2: TLabel;

ECariKode: TEdit; Label3: TLabel; ECariNama: TEdit; Shape1: TShape;

procedure ECariKodeChange(Sender: TObject); procedure ECariNamaChange(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure FormActivate(Sender: TObject);

procedure ECariKodeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure ECariNamaKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure DBGridTbItemKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure IsiTbRutin(Ket: String);

private

{ Private declarations } public

{ Public declarations } end;

var

FItemData: TFItemData; implementation

uses CBDatabase, CBTransaksi, CBHItemData, CBTmbhStck, CBTmbhItem, CBGantiItem, CBSecurity, FileUtil, CBMenu, CBMenuSP, CBInputDiscP, CBBarcode;

{$R *.dfm}

procedure TFItemData.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

(40)

case length(ECariKode.Text) of 1..7 :

begin

ECariNama.Enabled := False; ECariNama.Color := clGray; end;

0 : begin

ECariNama.Enabled := True; ECariNama.Color := clWindow; end;

end end;

procedure TFItemData.ECariNamaChange(Sender: TObject); begin

case length(ECariNama.Text) of 1..30 :

begin

ECariKode.Enabled := False; ECariKode.Color := clGray; end;

0 : begin

ECariKode.Enabled := True; ECariKode.Color := clWindow; end;

end end;

procedure TFItemData.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = TKeluar then begin

FItemData.Visible := False;

if FTransaksi.Visible = True then FTransaksi.SetFocus else if FMenu.Visible = True then FMenu.SetFocus else if FMenuSP.Visible = True then FMenuSP.SetFocus; end;

if Key = THelp then begin

FHItemData.Visible := False; FHItemData.Visible := True; FHItemData.SetFocus;

end;

if Key = TGantiData then begin

if (JenisKasirAkses = SuperVisor) or (JenisKasirAkses = Editor) then begin

FGntItem.Visible := True; FGntItem.SetFocus;

end

(41)

if Key = TTambahStock then begin

if (JenisKasirAkses = SuperVisor) or (JenisKasirAkses = Editor) then begin

FTmbhStck.Visible := True; FTmbhStck.SetFocus;

end

else SalahTekanTombol; end;

if Key = TTambahData then begin

if (JenisKasirAkses = SuperVisor) or (JenisKasirAkses = Editor) then begin

FTmbhItem.Visible := True; FTmbhItem.SetFocus;

end

else SalahTekanTombol end;

if Key = TCariKode then begin

ECariKode.Text := ''; ECariNama.Text := ''; ECariKode.SetFocus; end;

if Key = TCariNama then begin

ECariNama.Text := ''; ECariKode.Text := ''; ECariNama.SetFocus; end;

if Key = TInputDiscP then begin

if (JenisKasirAkses = SuperVisor) or (JenisKasirAkses = Editor) then begin

FInputDiscP.Visible := True; FInputDiscP.SetFocus;

end

else SalahTekanTombol end;

if Key = TPrintBarcode then begin

if (JenisKasirAkses = SuperVisor) or (JenisKasirAkses = Editor) then begin

FBarcode.Visible := True; FBarcode.SetFocus;

end

else SalahTekanTombol end;

end;

procedure TFItemData.FormActivate(Sender: TObject); begin

(42)

ECariKode.Text := ''; ECariNama.Text := ''; end;

procedure TFItemData.ECariKodeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = TConfirm then begin

if Length(ECariKode.Text) > 6 then FindKode := Barcode else FindKode := Kode; if CBDB.TbItem.Locate(FindKode,ECariKode.Text,[loPartialKey]) = True then DBGridTbItem.SetFocus

else ShowMessage('Barang Tidak Ditemukan, Tekan ENTER!'); end;

if Key = TClear then begin

ECariKode.Text := ''; ECariKode.SetFocus; end;

end; // End Procedure ECariKodeKeyDown

procedure TFItemData.ECariNamaKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if Key = TConfirm then begin

if CBDB.TbItem.Locate('Item',ECariNama.Text,[loCaseInSensitive,loPartialKey]) = True then DBGridTbItem.SetFocus

else ShowMessage('Barang Tidak Ditemukan, Tekan ENTER!'); end;

if Key = TClear then begin

ECariNama.Text := ''; ECariNama.SetFocus; end;

end; // End Procedure ECariNamaKeyDown

procedure TFItemData.DBGridTbItemKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (Key = TConfirm) and (FTransaksi.Visible = True) then begin

FTransaksi.Control.Text := CBDB.TbItem['ItemKode']; FItemData.Visible := False;

FTransaksi.SetFocus; end

Referensi

Dokumen terkait

procedure atasbawahClick(Sender: TObject); procedure atasClick(Sender: TObject); procedure bawahClick(Sender: TObject); procedure kananClick(Sender: TObject);

procedure Laporanpenjualan1Click(Sender: TObject); procedure LaporanPembelian1Click(Sender: TObject); procedure RekapStok1Click(Sender: TObject);

Listing Program Plotting point antara % Kadar Aspal dengan Flow.. procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject);

procedure FormCreate(Sender: TObject); procedure bloginClick(Sender: TObject); procedure binputClick(Sender: TObject); procedure bdataClick(Sender: TObject);

Buat Kode Program untuk tombol Hapus pada event on klick : procedure TFrmVCD.BtHapusClick(Sender: TObject);

Double Klick ListBox Daftar Harga, tuliskan kode program berikut : procedure TForm1.LstHargaClick(Sender: TObject); begin. lstDaftar.ItemIndex:=lstharga.ItemIndex;

procedure InputDataPerolehanDana1Click(Sender: TObject); procedure InputDataPenggunaanDana1Click(Sender: TObject); procedure

Jika Anda ingin item pertama dari data pada Combobox langsung tampil, ubah script nya menjadi seperti di bawah ini :.. procedure TForm1.Button1Click(Sender: TObject);