LAMPIRAN
A
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,[]);
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
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;
Lampiran A.2 Listing Program FTransaksi
===================================================================
unit CBTransaksi; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, ExtCtrls, CBFrTime, StdCtrls, DB, DBTables, ShellAPI; type
TFTransaksi = class(TForm) DBGrid1: TDBGrid;
FrTime1: TFrTime; LTanggal: TLabel; LKasir: TLabel; Label1: TLabel; Label10: TLabel; LDisc: TLabel; Label12: TLabel; SubTotal: TEdit; Disc: TEdit; Total: TEdit; LTunai: TLabel; LKembali: TLabel; Tunai: TEdit; Kembali: TEdit; Control: TEdit; Timer1: TTimer; Timer2: TTimer; LViewer: TLabel; LStatus: TLabel; Viewer: TEdit; Shape1: TShape; LMember: TLabel;
procedure SalahTombol;
procedure FrTime1Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure IsiTbRutin(Ket: String); procedure ViewSubTotal(Ket: Byte); procedure ViewTotal(Ket: Byte); procedure ViewControlTotal;
procedure ViewControlTunaiKredit; procedure ViewDisc(Total: Currency); procedure ViewTunaiKembali(Ket: Byte); procedure FilterTrans(Ket: Byte); procedure IsiTbRKasir(Ket: Byte); procedure KosongkanTbStruk;
procedure ViewKasirTanggalJam;
procedure FormCreate(Sender: TObject); procedure IsiTbTrans(Ket: Byte);
procedure HitungJmlItem(Ket: Byte); procedure DeleteLastRecordTbTrans; procedure DeleteLastRecordTbTransAkhir; procedure ResetJmlItem;
procedure IsiTbTransAkhir(Ket: Byte); procedure PrintStruk(Ket: Byte); procedure UpdateStock(Ket: Byte); procedure IsiTbPMember;
private
{ Private declarations } public
end; const
ScreenHeight: Integer = 600; ScreenWidth: Integer = 480; var
FTransaksi: TFTransaksi;
Tombol, StatusOK, EOD, Hapus, ItemDiscTax, Berhasil, IjinEOD,
IsTunaiKredit, Member, IsFTransaksiActivated, TekanAda, Tekan: Boolean; Count, JmlItem, JmlItemCor, JmlItemVoid, JmlItemRtn,
CopyItemQty, JmlItemTax, JmlItemDisc, State, NomorNota: Integer; Hasil: Word;
CopyItemHarga, JmlReturn, JmlCorrect, JmlVoid, CopyItemHargaDisc: Currency; NamaMember, MemberID, FindKode, TempTotal, CopyItemKode, CopyItem: String; CopyItemDisc: Real;
implementation
uses CBDatabase, CBSecurity, FileUtil, CBHTrans, CBEOD, CBItemData, CBFinancial, CBEODIjin, CBInputPIN, CBFinancialCashier;
{$R *.DFM}
procedure TFTransaksi.IsiTbPMember; begin
CBDB.TbPMember.Open; CBDB.TbPMember.First; CBDB.TbPMember.Edit;
CBDB.TbPMember['MEMBERID'] := MemberID; CBDB.TbPMember['NAMA'] := NamaMember; CBDB.TbPMember.Post;
CBDB.TbPMember.Close; end;
procedure TFTransaksi.SalahTombol; begin
ShowMessage('Salah Tekan Tombol, Tekan ENTER'); Hapus := True;
end; // End Procedure SalahTombol
procedure TFTransaksi.PrintStruk(Ket: Byte); begin
if (ItemDiscTax = True) or (State = BeginTransaction)
or (State = AlreadyInStatusZeroCount) or (State = AlreadyInQtyZeroCount) or (State = AlreadyInKodeZeroCount) then
JalankanProgram('STRUK1.EXE') else JalankanProgram('STRUK2.EXE') else if Ket = Pembayaran then
if (ItemDiscTax = True) then JalankanProgram('AKHIR1.EXE') else JalankanProgram('AKHIR2.EXE')
else if Ket = Discount then JalankanProgram('DISC.EXE') else if Ket = Correction then JalankanProgram('CORR.EXE') else if Ket = RePrint then
if (State = BeginTransaction) then JalankanProgram('REPRN1.EXE') else JalankanProgram('REPRINT.EXE')
else if Ket = Feed then JalankanProgram('FEED.EXE') else if Ket = Eject then JalankanProgram('EJECT.EXE') else if Ket = VOIDSales then
if (ItemDiscTax = True) then JalankanProgram('VOID1.EXE') else JalankanProgram('VOID2.EXE')
else if Ket = Validasi then JalankanProgram('VALIDATE.EXE') else if Ket = PrintMember then JalankanProgram('MEMBER.EXE'); end; // End Procedure PrintStruk
procedure TFTransaksi.IsiTbTransAkhir(Ket: Byte); begin
if (Ket = TunaiKredit) or (Ket = Normal) or (Ket = Credit) or (Ket = VOIDSales) then begin
if (State = AlreadyInKode) or (State = AlreadyInKodeZeroCount) then CBDB.TbTransAkhir.Append else CBDB.TbTransAkhir.Edit;
CBDB.TbTransAkhir['TransNota'] := NomorNota; CBDB.TbTransAkhir['TransTanggal'] := Date(); CBDB.TbTransAkhir['TransJam'] := Time();
CBDB.TbTransAkhir['TransSubTotal'] := StrCurrToCurr(SubTotal.Text); CBDB.TbTransAkhir['TransKembali'] := StrCurrToCurr(Kembali.Text); CBDB.TbTransAkhir['KasirNama'] := NamaKasirKerja;
if LDisc.Caption = SDisc then
CBDB.TbTransAkhir['TransHargaDisc'] := StrCurrToCurr(Disc.Text) else if LDisc.Caption = STax then
CBDB.TbTransAkhir['TransHargaTax'] := StrCurrToCurr(Disc.Text); if Ket = Normal then
begin
CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransTunai'] := StrCurrToCurr(Tunai.Text); end
else if Ket = TunaiKredit then begin
CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransTunai'] := StrCurrToCurr(Tunai.Text); CBDB.TbTransAkhir['TransCredit'] := StrCurrToCurr(Kembali.Text); end
else if Ket = VOIDSales then
CBDB.TbTransAkhir['TransVOID'] := (-1)*StrCurrToCurr(Total.Text) else if Ket = Credit then
begin
CBDB.TbTransAkhir['TransTotal'] := StrCurrToCurr(Total.Text); CBDB.TbTransAkhir['TransCredit'] := StrCurrToCurr(Tunai.Text); end;
HitungJmlItem(Ket);
CBDB.TbTransAkhir['JmlItem'] := JmlItem;
CBDB.TbTransAkhir['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
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;
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
begin
CBDB.TbTrans.Edit;
CBDB.TbTrans['TransItemDiscTax'] := StrToInt(Control.Text);
CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal'] * (CBDB.TbTrans['TransItemDiscTax'] / 100);
CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal'] - CBDB.TbTrans['TransItemHargaDiscTax'];
CBDB.TbTrans.Post; end
else if Ket = Qty then begin
if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit;
CBDB.TbTrans['TransItemQty'] := StrToInt(Control.Text); CBDB.TbTrans['TransNota'] := NomorNota;
CBDB.TbTrans.Post; end
else if (Ket = Sts) or (Ket = Rtn) or (Ket = Vod) then begin
if CBDB.TbTrans['ItemHarga'] <> 0 then CBDB.TbTrans.Append else CBDB.TbTrans.Edit;
CBDB.TbTrans['TransNota'] := NomorNota;
if Ket = Sts then CBDB.TbTrans['TransSts'] := Status
else if Ket = Rtn then CBDB.TbTrans['TransSts'] := StatusReturn else CBDB.TbTrans['TransSts'] := StatusVOID;
CBDB.TbTrans.Post; end
else if Ket = HargaAMT then begin
CBDB.TbTrans.Edit;
CBDB.TbTrans['ItemHarga'] := StrToCurr(Control.Text); if CBDB.TbTrans['TransSts'] = Status then
begin
CBDB.TbTrans['TransSubTotal'] := CBDB.TbTrans['ItemHarga'] * CBDB.TbTrans['TransItemQty'];
Count := Count + CBDB.TbTrans['TransItemQty']; IsiTbRutin('Transaksi Barang Campuran Rp ' + CurrToStr(CBDB.TbTrans['TransTotal'])
+ ' di Nota ke-' + Trim(IntToStr(NomorNota))); end
else begin
CBDB.TbTrans['TransSubTotal'] := (-1) * (CBDB.TbTrans['ItemHarga'] * CBDB.TbTrans['TransItemQty']);
Count := Count - CBDB.TbTrans['TransItemQty'];
IsiTbRutin('Transaksi Item ' + CBDB.TbTrans['TransSts']
+ ' Barang Campuran Rp ' + CurrToStr(CBDB.TbTrans['TransTotal']) + ' di Nota ke-' + Trim(IntToStr(NomorNota)));
end;
CBDB.TbTrans['TransItemHargaDiscTax'] := CBDB.TbTrans['TransSubTotal'] * (CBDB.TbTrans['TransItemDiscTax'] / 100);
CBDB.TbTrans['TransTotal'] := CBDB.TbTrans['TransSubTotal'] - CBDB.TbTrans['TransItemHargaDiscTax'];
CBDB.TbTrans.Post; end
else if (Ket = CorrMin) or (Ket = CorrAdd) then begin
CBDB.TbTrans.Append;
CBDB.TbTrans['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 :=
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
begin
CBDB.TbStrukAkhir['TAX'] := CBDB.TbTransAkhir['TransTax']; CBDB.TbStrukAkhir['HARGATAX'] :=
CurrToCurrStr(CBDB.TbTransAkhir['TransHargaTax']); CBDB.TbStrukAkhir['KEMBALI'] :=
CurrToCurrStr(CBDB.TbTransAkhir['TransKembali']);
CBDB.TbStrukAkhir['TUNAI'] := CurrToCurrStr(CBDB.TbTransAkhir['TransTunai']); CBDB.TbStrukAkhir['HARGADISC'] :=
CurrToCurrStr(CBDB.TbTransAkhir['TransHargaDisc']);
CBDB.TbStrukAkhir['DISC'] := CBDB.TbTransAkhir['TransDisc']; CBDB.TbStrukAkhir['SUBTOTAL'] :=
CurrToCurrStr(CBDB.TbTransAkhir['TransSubTotal']);
CBDB.TbStrukAkhir['TOTAL'] := CurrToCurrStr(CBDB.TbTransAkhir['TransTotal']); CBDB.TbStrukAkhir['CREDIT'] :=
CurrToCurrStr(CBDB.TbTransAkhir['TransCredit']); end
else if Ket = VOIDSales then
CBDB.TbStrukAkhir['TOTAL'] := CurrToCurrStr(CBDB.TbTransAkhir['TransVOID']) else if Ket = Validasi then
CBDB.TbStrukAkhir['TOTAL'] := StrCurrToCurrStr(Total.Text); CBDB.TbStrukAkhir.Post;
CBDB.TbStrukAkhir.Close;
end; // End Procedure IsiTbStrukAkhir
procedure TFTransaksi.IsiTbStruk(Ket: Byte); begin
CBDB.TbStruk.Open; CBDB.TbStruk.Last;
if Ket = Discount then CBDB.TbStruk.Edit else if Ket = Normal then
begin
CBDB.TbStruk.Append;
CBDB.TbStruk['ITEMKODE'] := CBDB.TbTrans['ItemKode']; CBDB.TbStruk['ITEM'] := CBDB.TbTrans['Item'];
CBDB.TbStruk['QTY'] := CBDB.TbTrans['TransItemQty'];
CBDB.TbStruk['HARGA'] := CurrToCurrStr(CBDB.TbTrans['ItemHarga']); CBDB.TbStruk['STATUS'] := CBDB.TbTrans['TransSts'];
end;
CBDB.TbStruk['HARGADISC'] :=
CurrToCurrStr(CBDB.TbTrans['TransItemHargaDiscTax']); CBDB.TbStruk['DISC'] := CBDB.TbTrans['TransItemDiscTax'];
CBDB.TbStruk['SUBTOTAL'] := CurrToCurrStr(CBDB.TbTrans['TransSubTotal']); CBDB.TbStruk['TOTAL'] := CurrToCurrStr(CBDB.TbTrans['TransTotal']);
CBDB.TbStruk.Post; CBDB.TbStruk.Close;
end; // End Procedure IsiTbStruk
procedure TFTransaksi.KosongkanTbStruk; begin
CBDB.TbStruk.Exclusive := True; CBDB.TbStruk.EmptyTable;
CBDB.TbStruk.Exclusive := False;
end; // End Procedure KosongkanTbStruk
procedure TFTransaksi.IsiTbRKasir(Ket: Byte); begin
if Ket = Masuk then begin
CBDB.TbRKasir.Append;
CBDB.TbRKasir['JamIn'] := Time();
CBDB.TbRKasir['KasirNama'] := NamaKasirKerja; CBDB.TbRKasir['Tanggal'] := Date();
end
else if Ket = Keluar then begin
CBDB.TbRKasir.Last; CBDB.TbRKasir.Edit;
CBDB.TbRKasir['JamOut'] := Time(); end;
CBDB.TbRKasir.Post;
end; // End Procedure IsiTbKasir
procedure TFTransaksi.UpdateStock(Ket: Byte); begin
if Length(CBDB.TbTrans['ItemKode']) > 6 then FindKode := Barcode else FindKode := Kode;
if CBDB.TbItem.Locate(FindKode, CBDB.TbTrans['ItemKode'], []) = True then begin
CBDB.TbItem.Edit; if Ket = Min then begin
CBDB.TbItem['ItemStock'] := CBDB.TbItem['ItemStock'] - CBDB.TbTrans['TransItemQty'];
if CBDB.TbItemChg.Locate(Kode, CBDB.TbItem['ItemKode'], []) = True then begin
CBDB.TbItemChg.Edit;
if CBDB.TbItemChg['Keterangan'] = 'Item Change' then CBDB.TbItemChg['Keterangan'] := 'Stock & Item Change'; end
else begin
CBDB.TbItemChg.Append;
CBDB.TbItemChg['Keterangan'] := 'Stock Change'; end;
CBDB.TbItemChg['ItemKode'] := CBDB.TbItem['ItemKode'];
CBDB.TbItemChg['StockChange'] := CBDB.TbItemChg['StockChange'] - CBDB.TbTrans['TransItemQty'];
CBDB.TbItemChg['StockOut'] := CBDB.TbItemChg['StockOut'] + CBDB.TbTrans['TransItemQty'];
CBDB.TbItemChg['Tanggal'] := Date(); CBDB.TbItemChg.Post;
IsiTbRutin('Stock Berkurang '
+ IntToStr((-1) * CBDB.TbTrans['TransItemQty']) + ', Kode Barang (' + CBDB.TbTrans['ItemKode'] + ')');
end
else if Ket = Add then begin
CBDB.TbItem['ItemStock'] := CBDB.TbItem['ItemStock'] + CBDB.TbTrans['TransItemQty'];
if CBDB.TbItemChg.Locate(Kode, CBDB.TbItem['ItemKode'], []) = True then begin
CBDB.TbItemChg.Edit;
if CBDB.TbItemChg['Keterangan'] = 'Item Change' then CBDB.TbItemChg['Keterangan'] := 'Stock & Item Change'; end
else begin
CBDB.TbItemChg['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';
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
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);
// 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);
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
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
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);
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
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
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
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
// 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);
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
(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);
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
// 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)
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;
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
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;
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
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;
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
end;
procedure TFMenuSP.PerubahanDataItem1Click(Sender: TObject); begin
FPerubahanItem.Visible := True; FPerubahanItem.SetFocus;
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
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
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
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