• Tidak ada hasil yang ditemukan

Aplikasi Pemrograman Berbasis Visual Untuk Cash Register Dengan Sistem Member Menggunakan Alat Barcode.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Pemrograman Berbasis Visual Untuk Cash Register Dengan Sistem Member Menggunakan Alat Barcode."

Copied!
140
0
0

Teks penuh

(1)

ABSTRAK

Dalam satu hari, sebuah toko atau departemen store dapat melakukan

ratusan transaksi penjualan. Manajemen transaksi yang pertama kali dilakukan

adalah dengan pencatatan dan perhitungan bukti penjualan yang tidak lain

dilakukan oleh manusia. Salah satu kendala dalam proses pencatatan tersebut

adalah terdapatnya Human Error.

Dari permasalahan tersebut, diperlukan suatu mesin transaksi yang dapat

melakukan pencatatan dan perhitungan penjualan yang disebut Cash Register.

Walaupun dalam prakteknya masih tetap diperlukan tenaga manusia, sebagian

pekerjaan seperti perhitungan laba rugi, penyimpanan bukti transaksi, dan laporan

penjualan dapat dikerjakan oleh aplikasi Cash Register dalam waktu yang singkat.

Untuk meningkatkan pelayanan terhadap konsumen, toko atau departemen

store menyediakan fasilitas berupa kartu Member. Kartu Member tersebut dapat

digunakan sebagai alat pembayaran secara kredit dengan mengintegrasikan kartu

kredit. Aplikasi Cash Register yang dibuat, menyediakan fasilitas sistem Member

tersebut dan menggunakan alat Barcode sebagai bantuan dalam memasukkan data

barang pada saat transaksi berlangsung.

Setelah dilakukan percobaan transaksi dalam berbagai kondisi, didapatkan

(2)

ABSTRACT

In one day, retail store or department store could do hundreds sales

transaction. The first transaction management which done by human is calculating

and recording many of invoice number. One of the problem by doing the

management is Human Error.

From the early problem, the transaction machine called Cash Register is

needed to help process which are calculating and recording invoice numbers.

Although when practicing the transaction machine still need human resources,

half of the process still can be done by Cash Register within short of time.

For increasing the service to consumer, retail store or department store

provide the facility which are Member card. The card can be used as credit

payment tool by integrating it with credit card. Application within Cash Register

should provide the member system facility and using barcode reader as tool for

data input when the transaction remains.

After doing transaction with many condition, the application Cash Register

(3)

DAFTAR ISI

ABSTRAK ... i

ABSTRACT... ii

KATA PENGANTAR ... iii

DAFTAR ISI... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL... x

DAFTAR LAMPIRAN... xi

BAB 1 PENDAHULUAN ... 1

1.1

Latar Belakang Masalah... 1

1.2

Perumusan Masalah ... 2

1.3

Tujuan ... 2

1.4

Pembatasan Masalah ... 2

1.5

Sistematika Penulisan ... 3

BAB 2 LANDASAN TEORI... 4

2.1

Sejarah Delphi... 4

2.2

Sekilas tentang Delphi... 5

2.3

Tipe Data dan Operator pada Delphi ... 7

2.4

Aliran Program, Subrutin, dan Unit pada Delphi... 14

2.4.1

Percabangan ... 14

2.4.2

Pengulangan ... 16

2.4.3 Prosedur dan Fungsi... 17

2.4.4

Unit... 18

2.5

Sistem Basis Data... 19

(4)

2.7

Komponen VCL pada Delphi ... 23

BAB 3 PERANCANGAN SOFTWARE... 25

3.1

Kode Barcode... 25

3.2

Cara Kerja Transaksi dan Software... 26

3.3

Susunan Database ... 29

3.3.1 Database Umum ... 29

3.3.2 Database Transaksi ... 30

3.3.3 Database Backup... 33

3.3.4

Database

Print ... 34

3.3.5

Relasi

Database ... 34

3.4

Pembagian Form ... 35

3.5

Realisasi Software... 35

3.5.1 Form Security (FSecurity) ... 35

3.5.2 Form Transaksi (FTransaksi) ... 38

3.5.3 Form Menu dan MenuSP (FMenu dan FMenuSP) ... 45

3.5.4

Module

CBDB ... 46

3.5.5 Form Item Data (FItemData) ... 47

3.5.6

Form

Kasir

(FKasir)... 51

3.5.7 Form Member (FMember) ... 53

3.5.8

Form

Help ... 56

3.5.9

Form

EOD

(FEOD)... 56

3.5.10

Form

Financial

(FFinancial) ... 57

3.5.11 Unit File Utility (FileUtil)... 59

BAB 4 DATA PENGAMATAN ... 60

4.1

Transaksi ... 60

4.1.1

Transaksi Tunai Tanpa Kartu Member ... 62

4.1.2

Transaksi Kredit Tanpa Kartu Member ... 63

(5)

4.1.4

Transaksi Tunai Tanpa Kartu Member dengan

Discount dan Tax per Item... 65

4.1.5

Transaksi Tunai dengan Kartu Member dan

Promo

Discount... 66

4.1.6

Laporan Financial... 67

4.1.7

Penutupan Buku Harian (EOD) ... 68

4.2

Sistem Menu ... 69

4.2.1

Set Sistem Waktu ... 69

4.2.2

Print Barcode... 69

4.3

Validitas Data Barang ... 71

4.4

Laporan Perubahan Data Barang ... 72

BAB 5 KESIMPULAN DAN SARAN ... 76

5.1

Kesimpulan ... 76

5.2

Saran... 76

(6)

DAFTAR GAMBAR

Gambar 2.1 IDE dari Delphi ... 7

Gambar 2.2 Arsitektur basis data Delphi ... 21

Gambar 2.3 Tampilan BDE Administrator ... 22

Gambar 2.4 Daftar driver basis data pada BDE Administrator ... 23

Gambar 2.5 Komponen VCL Delphi 6.0 ... 24

Gambar 3.1 Pemakaian kode Barcode ... 25

Gambar 3.2 Pemakaian kode Barcode untuk kartu Member ... 25

Gambar 3.3 Bagan cara kerja transaksi secara umum... 27

Gambar 3.4 Flowchart software secara umum... 28

Gambar 3.5 Relasi database umum dan database transaksi ... 34

Gambar 3.6 Tampilan form Security ... 35

Gambar 3.7 Flowchart form Security ... 37

Gambar 3.8 Tampilan form Transaksi ... 38

Gambar 3.9 Flowchart TbTransaksi... 41

Gambar 3.10 Tampilan form MenuSP ... 45

Gambar 3.11 Tampilan form Menu ... 45

Gambar 3.12 Tampilan Module CBDB ... 47

Gambar 3.13 Tampilan form Item Data... 48

Gambar 3.14 Tampilan form Print Barcode... 50

Gambar 3.15 Tampilan form Tambah Data Barang... 50

Gambar 3.16 Tampilan form Tambah Stock Barang ... 51

Gambar 3.17 Tampilan form Ganti Data Barang... 51

Gambar 3.18 Tampilan form Kasir ... 52

Gambar 3.19 Tampilan form Kasir untuk ganti kode dan jenis akses. ... 52

Gambar 3.20 Tampilan form Tambah Data Kasir ... 53

Gambar 3.21 Tampilan form Member ... 54

Gambar 3.22 Tampilan form Tambah Member ... 54

Gambar 3.23 Tampilan form Financial... 57

(7)

Gambar 4.1 Data barang untuk uji transaksi... 61

Gambar 4.2 Kartu Member yang digunakan dalam uji transaksi... 61

Gambar 4.3 Transaksi tunai tanpa kartu Member... 62

Gambar 4.4 Transaksi kredit tanpa kartu Member... 63

Gambar 4.5 Transaksi kredit dengan kartu Member... 64

Gambar 4.6 Transaksi tunai dengan promo discount... 65

Gambar 4.7 Transaksi kredit dengan discount dan tax. ... 66

Gambar 4.8 Laporan Financial... 67

Gambar 4.9 Tampilan form Transaksi. ... 68

Gambar 4.10 Penutupan Buku Harian ... 68

Gambar 4.11 Set sistem waktu... 69

Gambar 4.12 Print Barcode... 70

Gambar 4.13 Label hasil print Barcode ... 70

Gambar 4.14 Data barang sebelum transaksi... 71

Gambar 4.15 Data barang setelah transaksi ... 72

Gambar 4.16 Form PerubahanItem ... 73

Gambar 4.17 Data barang sebelum dirubah... 74

Gambar 4.18 Data barang akan dirubah... 74

Gambar 4.19 Data barang setelah dirubah ... 75

(8)

DAFTAR TABEL

Tabel 2.1 Macam-macam tipe bilangan bulat fundamental ... 8

Tabel 2.2 Macam-macam tipe bilangan bulat generik ... 8

Tabel 2.3 Macam-macam tipe bilangan real ... 8

Tabel 2.4 Macam-macam tipe boolean ... 9

Tabel 2.5 Macam-macam tipe karakter... 9

Tabel 2.6 Macam-macam tipe String ... 9

Tabel 2.7 Operator aritmetik tunggal ... 11

Tabel 2.8 Operator aritmetik biner... 11

Tabel 2.9 Operator manipulasi bit... 12

Tabel 2.10 Operator Boolean ... 13

Tabel 2.11 Operator pembanding... 14

Tabel 3.1 Daftar Barcode yang digunakan dalam program ... 26

Tabel 3.2 Susunan field dari TbItem... 29

Tabel 3.3 Susunan field dari TbKasir ... 29

Tabel 3.4 Susunan field dari TbMember... 30

Tabel 3.5 Susunan field dari TbTransaksi... 31

Tabel 3.6 Susunan field dari TbTransaksiAkhir ... 31

Tabel 3.7 Susunan field dari TbFinancial ... 32

Tabel 3.8 Susunan field dari TbRutin ... 32

Tabel 3.9 Susunan field dari TbItemChg ... 33

(9)

DAFTAR LAMPIRAN

Lampiran A.1 Listing Program FSecurity... A-1

Lampiran A.2 Listing Program FTransaksi ... A-4

Lampiran A.3 Listing Program FMenu... A-32

Lampiran A.4 Listing Program FMenuSP ... A-34

Lampiran A.5 Listing Program FItemData ... A-38

Lampiran A.6 Listing Program FTmbhItem ... A-42

Lampiran A.7 Listing Program FGntItem... A-46

Lampiran A.8 Listing Program FTmbhStck ... A-51

Lampiran A.9 Listing Program FInputDiscP ... A-54

Lampiran A.10 Listing Program FBarcode... A-56

Lampiran A.11 Listing Program FKasir ... A-60

Lampiran A.12 Listing Program FTmbhKasir... A-65

Lampiran A.13 Listing Program FMember ... A-68

Lampiran A.14 Listing Program FTmbhMember... A-70

Lampiran A.15 Listing Program FFinancial ... A-75

Lampiran A.16 Listing Program FFinancialCashier... A-80

Lampiran A.17 Listing Program FEOD... A-85

Lampiran A.18 Listing Program FSetWaktu ... A-90

Lampiran A.19 Listing Program Frame FTime ... A-92

Lampiran A.20 Listing Program FPerubahanItem... A-93

Lampiran A.21 Listing Program FJudul ... A-95

Lampiran A.22 Listing Program FInputPin ... A-98

Lampiran A.23 Listing Program FEODIjin ... A-101

Lampiran A.24 Listing Program FDataTransaksi... A-104

Lampiran B.1 Listing Program FileUtil ... B-1

(10)

LAMPIRAN

A

(11)

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

(12)

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

(13)

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;

(14)

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;

(15)

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

(16)

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;

(17)

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

(18)

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;

(19)

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

(20)

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;

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

begin

ShowMessage('Member Tidak Ditemukan!'); Member := NotOK;

end;

Hapus := True; end

else begin

if CBDB.TbMember['Valid'] = False then begin

ShowMessage('Member Tidak Aktif!'); Member := NotOK;

end else begin

Member := OK;

ShowMessage('Member Cahaya Baru, Nama: ' + CBDB.TbMember['Nama'] + ', ID: ' + MemberID);

LMember.Caption := 'MemberID: ' + MemberID; // Isi TbPrintMember

CBDB.TbPMember.Open; CBDB.TbPMember.Append;

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

CBDB.TbPMember.Post; // PrintStruk(PrintMember); CBDB.TbPMember.Close; end

end end

else if (State = AlreadyInKodeZeroCount) or (State = BeginTransaction) or (State = AlreadyInKode) or (State = AlreadyInStatusZeroCount) or (State = AlreadyInQty) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInStatus) then

begin

if (State = BeginTransaction) and (CBDB.TbTrans.RecordCount = Kosong) then begin

KosongkanTbStruk;

IsiTbRutin('Mulai Transaksi ke-'+Trim(IntToStr(NomorNota))); end;

if Control.Text = AMTKode then begin

IsiTbTrans(BarangCampuran);

RubahState(StsAlreadyInAMTKodeOrStsAlreadyInAMTKodeZeroCount); end

else begin

if Length(Control.Text) < 7 then FindKode := Kode

else if Length(Control.Text) < 16 then FindKode := Barcode else Control.Text := Copy(Control.Text,1,15);

if CBDB.TbItem.Locate(FindKode,Control.Text,[]) = True then begin

ItemDiscTax := NoDiscTax; IsiTbTrans(Normal);

(35)

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

(36)

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

begin

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

try begin

IsiTbTrans(HargaAMT); ViewSubTotal(Add); ViewTotal(Min); ViewControlTotal; IsiTbStruk(Normal); PrintStruk(Transaksi); RubahState

(StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); ItemDiscTax := False;

end except begin

ShowMessage('Salah Memasukkan Angka, Tekan ENTER'); Hapus := True;

CBDB.TbTrans.Cancel; RubahState

(StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end

end end

else SalahTombol; end;

// Jika tombol Home ditekan -> Untuk Pajak/Tambahan Nota Rupiah if (Key = TTaxNotaRupiah) or (Key = TTaxNotaPersen) then

begin

if State = AlreadyInKode then begin

if Control.Text = '' then SalahTombol else

begin

if Key = TTaxNotaRupiah then IsiTbTransAkhir(TaxRp) else IsiTbTransAkhir(TaxPersen);

ViewDisc(CBDB.TbTransAkhir['TransHargaTax']); ViewTotal(Add);

ViewControlTotal; LDisc.Caption := STax;

RubahState(StsAlreadyInDiscTaxNota); end

end end;

// Jika tombol PageDown ditekan -> Untuk Discount Nota Persen if (Key = TDiscNotaRupiah) or (Key = TDiscNotaPersen) then begin

if State = AlreadyInKode then begin

if Control.Text = '' then SalahTombol else

begin

if Key = TDiscNotaPersen then IsiTbTransAkhir(DiscPersen) else IsiTbTransAkhir(DiscRp);

(37)

ViewControlTotal;

LDisc.Caption := SDisc;

RubahState(StsAlreadyInDiscTaxNota); end

end end;

// Jika tombol Up ditekan -> Untuk Cancel data Transaksi if Key = TCorrection then

begin

if (State = AlreadyInStatusZeroCount) or (State = AlreadyInAMTKodeZeroCount) or (State = AlreadyInQty) or (State = AlreadyInAMTKode)

or (State = AlreadyInStatus) or (State = AlreadyInQtyZeroCount) then begin

DeleteLastRecordTbTrans; RubahState

(StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); Hapus := True;

end

else if ((State = AlreadyInKode) or (State = AlreadyInKodeZeroCount)) and (CBDB.TbTrans['TransSts'] <> StatusCorr) then

begin

ViewSubTotal(Min); ViewTotal(Min); ViewControlTotal;

CopyItem := CBDB.TbTrans['Item'];

CopyItemKode := CBDB.TbTrans['ItemKode']; CopyItemHarga := CBDB.TbTrans['ItemHarga']; CopyItemQty := CBDB.TbTrans['TransItemQty']; CopyItemDisc := CBDB.TbTrans['TransItemDiscTax'];

CopyItemHargaDisc := CBDB.TbTrans['TransItemHargaDiscTax']; if CBDB.TbTrans['TransSts'] = Status then

Count := Count - CBDB.TbTrans['TransItemQty'] else Count := Count + CBDB.TbTrans['TransItemQty']; if CBDB.TbTrans['ItemKode'] = AMTKode then

begin

IsiTbRutin('Batalkan Transaksi Barang Campuran Item ' + CBDB.TbTrans['TransSts'] + ' di Nota ke-' +

Trim(IntToStr(NomorNota) + ', Kode:' + CBDB.TbTrans['ItemKode'])); IsiTbTrans(CorrMin);

end else begin

IsiTbRutin('Batalkan Transaksi Item ' + CBDB.TbTrans['TransSts'] + ' di Nota ke-' + Trim(IntToStr(NomorNota) + ', Kode:'

+ CBDB.TbTrans['ItemKode']));

if CBDB.TbTrans['TransSts'] = Status then begin

UpdateStock(Add); IsiTbTrans(CorrMin); end

else begin

UpdateStock(Min); IsiTbTrans(CorrAdd); end

end;

(38)

(StsBeginTransactionOrStsAlreadyInKodeOrStsAlreadyInKodeZeroCount); end

else if State = AlreadyInDiscTaxNota then begin

DeleteLastRecordTbTransAkhir; ViewTotal(Equal);

ViewControlTotal;

LDisc.Caption := SNorm; State := AlreadyInKode; end

else if State = BeginTransaction then begin

LMember.Caption := NoMember; Member := NotOK;

end

else if CBDB.TbTrans['TransSts'] = StatusCorr then begin

ShowMessage('Transaksi Sudah Dikoreksi! Tekan ENTER!'); Hapus := True;

end end;

// Jika tombol Dowm ditekan -> untuk RePrint if Key = TRePrint then

begin

if State = EndTransaction then PrintStruk(RePrint) else if (State = BeginTransaction) and

(CBDB.TbTransAkhir.RecordCount = Kosong) then ShowMessage('Belum Ada Transaksi, Tekan ENTER') else if State = BeginTransaction then

begin

FilterTrans(RePrint); IsiTbKeterangan(RePrint); PrintStruk(RePrint);

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

else SalahTombol; end;

// Jika tombol Left ditekan -> Untuk Pembayaran Credit if Key = TCredit then

begin

if Member = OK then FInputPIN.Visible := True else

begin

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

ViewTunaiKembali(Pas); IsiTbTransAkhir(Credit);

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

LTunai.Caption := 'Credit:'; ViewControlKembali;

Hapus := True;

IsiTbStrukAkhir(Normal); PrintStruk(Pembayaran); Member := NotOK;

(39)

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

(40)

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

(41)

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;

(42)

Lampiran A.3 Listing Program FMenu

=====

Referensi

Dokumen terkait

Adapun sumber data adalah pegawai Kantor Urusan Agama (KUA), tokoh masyarakat dan tokoh agama. Metode pengumpulan data adalah observasi, wawancara, dan

Kurang aktifnya peran dari dinas pariwisata dalam kegiatan pengembangan dan pengelolaan objek wisata Buttu macca menjadi keluhan dari pihak pengelola terkait masih

Hasil percobaan ini menunjukkan terjadinya perbedaan yang nyata pada bobot embrio ayam yang berasal dari telur tertunas yang diinokulasi ekstrak benalu teh dengan dosis bertingkat

Berdasarkan hasil analisis data yang telah dilakukan, didapatkan beberapa kesimpulan dari tugas akhir mengenai perancangan sistem pengendalian level berbasis MRAC

Sehubungan dengan penanaman karakter religius siswa dengan adanya kegiatan ekstrakurikuler rohani Islam di SMP N 3 Kartasura yakni dengan adanya kegiatan yang

bahwa sesuai dengan ketentuan Pasal 2 ayat (1) Peraturan Pemerintah Nomor 12 Tahun 1969, penyertaan modal Negara dalam rangka pendirian Perusahaan Perseroan (PERSERO) perlu

(1) Upaya penyelesaian Sengketa Informasi Publik diajukan kepada Komisi Informasi Pusat dan/atau Komisi Informasi provinsi dan/atau Komisi Informasi

Pada siklus ini Anda sebagai seorang calon guru PAI atau juga seorang guru pendidikan agama Islam harus melakukan hal-hal sebagai berikut; (1) menentukan dan