• 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

Tujuan dari penelitian ini adalah untuk mengetahui apakah sistem pengukuran kinerja dan sistem reward berpengaruh terhadap kinerja manajerial pada UD.Surya Chemical dan

Demikian juga dengan kepemimpinan manajer yang menunjukkan kategori kurang baik dengan persentase 70%.Hasil penelitian ini juga menunjukkan bahwa adanya hubungan yang

Kasus kegagalan dalam penggunaan alat kontrasepsi IUD seperti yang dialami oleh Luluah, secara otomatis bidan sebagai pelaksana pemberian pelayanan terkait

Tujuan penelitian ini yaitu untuk mengetahui efektifitas ekstrak daun patikan kebo (E. hirta) untuk pengobatan ikan nila (O. niloticus) yang diinfeksi bakteri

Secara umum bayi yang dilahirkan dengan berat badan rendah, mayoritas terjadi pada ibu berusia 20-38 tahun, status pekerjaan tidak bekerja, pendidikan terakhir

Hal ini terjadi karena semakin banyak sudu yang digunakan maka semakin banyak pula jumlah sudu yang berada di daerah downstream yang akan menghasilkan

2 Keluarga Bapak Nurati merupakan salah satu dari sekian keluarga miskin atau rumah tangga miskin (RTM) yang berada di Desa Manduang. Ia tinggal bersama istri dan satu anak