?? unposau.pas
字號:
//小數無條件四舍五入
IF _TB_AUTO_ROUND = TRUE THEN _TB_BG_TPRICE := FLOATTOINT_ROUND( _TB_DISC_PERCENT *_TB_BG_BGPST )
ELSE _TB_BG_TPRICE := FLOATTOINT( _TB_DISC_PERCENT *_TB_BG_BGPST );
END;
PROCEDURE GRID_ADD;
VAR I , J:INTEGER;
BEGIN
WITH FMPOSA DO
BEGIN
IF TRIM(_TB_BG_BGENO) = '' THEN EXIT;
//算筆數
FOR I := 1 TO 200 DO
BEGIN
J := I;
IF TRIM(OUT_GRID.Cells[1,I]) = '' THEN BREAK;
END;
FOR I := (J+1) DOWNTO 1 DO OUT_GRID.Rows[I].Text := OUT_GRID.Rows[I-1].Text;
OUT_GRID.Cells[1,1] := _TB_BG_BGENO;
OUT_GRID.Cells[2,1] := _TB_BG_BGNAM;
OUT_GRID.Cells[3,1] := INTTOSTR (_TB_BG_CNT ); //此筆數量
OUT_GRID.Cells[4,1] := FLOATTOSTR(_TB_BG_SPRICE); //此筆單價
OUT_GRID.Cells[5,1] := FLOATTOSTR(_TB_BG_TPRICE); //此筆單價
OUT_GRID.Cells[6,1] := INTTOSTR (_TB_BG_BGQTN ); //庫存數量
OUT_GRID.Cells[7,1] := _TB_BG_BGKIN ; //分類
END;
END;
FUNCTION RE_INPUT(T_BGENO:STRING):BOOLEAN;
VAR I , J :INTEGER;
T_QTY :INTEGER;
T_PRICE : REAL;
BEGIN
WITH FMPOSA DO
BEGIN
//重復刷, 合并成一筆==================================================
IF _TB_RE_INPUT = FALSE THEN
BEGIN //重復刷, 不 自動合并成一筆
FOR I := 1 TO 200 DO
BEGIN
IF (OUT_GRID.Cells[1,I] = T_BGENO) THEN
BEGIN
CASE MessageDlg('此產品已刷過, 是否繼續存入? '+#10#13+
#10#13+'按 YES 合并成一筆'+
#10#13+'按 NO 分開成兩筆'+
#10#13+'按 ESC 取消輸入'
,mtConfirmation,[mbYes,mbNo,mbCancel],0) OF
mrYES :
BEGIN
T_QTY := STRTOINTDEF (OUT_GRID.Cells[3,I],1) + 1;
T_PRICE := STRTOFLOATDEF(OUT_GRID.Cells[4,I],0);
OUT_GRID.Cells[3,I] := INTTOSTR(STRTOINTDEF(OUT_GRID.Cells[3,I],1)+1);
OUT_GRID.Cells[5,I] := FLOATTOSTR(T_QTY * T_PRICE);
_TB_DSP_CHANGED:= FALSE; //已更動, 客顯要更新
RESULT := TRUE;
ED_INPUT_SETFOCUS;
EXIT;
END;
mrNO :
BEGIN
ED_INPUT_SETFOCUS;
RESULT := FALSE;
BREAK;
END;
ELSE BEGIN
ED_INPUT_SETFOCUS;
RESULT := FALSE;
EXIT;
END;
END; //CASE
END; //IF
IF TRIM(OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END;
END ELSE BEGIN //重復刷, 自動合并成一筆
FOR I := 1 TO 200 DO
BEGIN
IF (OUT_GRID.Cells[1,I] = T_BGENO) THEN
BEGIN
T_QTY := STRTOINTDEF (OUT_GRID.Cells[3,I],1) + 1;
T_PRICE := STRTOFLOATDEF(OUT_GRID.Cells[4,I],0);
OUT_GRID.Cells[3,I] := INTTOSTR(STRTOINTDEF(OUT_GRID.Cells[3,I],1)+1);
OUT_GRID.Cells[5,I] := FLOATTOSTR(T_QTY * T_PRICE);
_TB_DSP_CHANGED:= FALSE; //已更動, 客顯要更新
RESULT := TRUE;
ED_INPUT_SETFOCUS;
EXIT;
END; //IF
IF TRIM(OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END; // FOR
END; // IF
//重復刷, 合并成一筆==================================================
END;
END;
PROCEDURE FINISHI; //完成結帳
VAR FINISHI_REC, I : INTEGER;
T_BGENO, T_BGNAM, T_BGCNT, T_BGCOS, T_BGCOT, T_BGKIN, T_PAIPN : STRING; //是否打印發票
BEGIN
//發票機, 打印位置從一開始
INVOICE_COUNTER := 0;
_TB_INV_PAGE := 0;
IF ( _TB_PRN_PRINTING = TRUE) THEN FINISHI_OPEN_CASHBOX; //是否打印發票 - 開錢柜
// 檢查要結帳的共有幾筆 =====================================================
FOR I := 1 TO 200 DO
BEGIN
FINISHI_REC := I;
IF TRIM(FMPOSA.OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END;
FMPOSAF1.Gauge.MaxValue := _TB_TOTAL_REC + 5;
FINISHI_DSP_TOTAL; FMPOSAF1.Gauge.AddProgress(1); DELAY(5); //完成結帳_ 價格顯示
IF (_TB_PRACTICE_MODE <= 0) THEN //練習模式
BEGIN
FMPOSAF1.Gauge_SUB.MaxValue := FINISHI_REC;
FINISHI_SAVE_POSA; FMPOSAF1.Gauge.AddProgress(1); DELAY(5); //完成結帳_ POSA 主表
FINISHI_SAVE_POSB; FMPOSAF1.Gauge.AddProgress(1); DELAY(5); //完成結帳_ POSB 明細
FINISHI_SAVE_POSG; FMPOSAF1.Gauge.AddProgress(1); DELAY(5); //完成結帳_ POSG 禮券
END;
IF (_TB_PRACTICE_MODE <= 0) OR (_TB_PRACTICE_MODE = 1) THEN //練習模式
IF _TB_PRN_PRINTING = TRUE THEN
BEGIN
FMPOSAF1.Gauge_SUB.MaxValue := FINISHI_REC;
FINISHI_PRN_IVOICE_TITLE; //完成結帳_ 打印發票 開頭
// 檢查要結帳的共有幾筆 =====================================================
FOR I := 1 TO FMPOSAF1.Gauge_SUB.MaxValue DO
BEGIN
FMPOSAF1.Gauge_SUB.AddProgress(1);
T_BGENO := FMPOSA.OUT_GRID.Cells[1,I];//產品條形碼
T_BGNAM := FMPOSA.OUT_GRID.Cells[2,I];//產品名稱
T_BGCNT := FMPOSA.OUT_GRID.Cells[3,I];//產品數量
T_BGCOS := FMPOSA.OUT_GRID.Cells[4,I];//產品單價
T_BGCOT := FMPOSA.OUT_GRID.Cells[5,I];//產品總價
FINISHI_PRN_IVOICE_TITLE; //完成結帳_ 打印發票 開頭
FINISHI_PRN_IVOICE_CONTENT(T_BGENO,T_BGNAM,T_BGCNT,T_BGCOS,T_BGCOT); //完成結帳_ 打印發票 項目
IF TRIM(FMPOSA.OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END;
FINISHI_PRN_IVOICE_END; //完成結帳_ 打印發票 結尾
END;
FMPOSAF1.Gauge.AddProgress(1); DELAY(5);
END;
PROCEDURE FINISHI_SAVE_POSA; //完成結帳_ POSA 主表
VAR QCHECK : TQUERY;
T_PACDT : TDATETIME;
BEGIN
//讀取銷售編號 //此次結帳編號
_TB_PAENO := TABLEFINDMAXCNT2('POSA','PAENO', EDATE_TO_CDATE(DATETOSTR(_TB_INSERT_DATE)) , 5, 1 );
IF CHECK_CDATE(_TB_CARD_PACDT, FALSE) = TRUE THEN
T_PACDT := STRTODATE(CDATE_TO_EDATE(_TB_CARD_PACDT)); //信用卡到期日
TRY
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QCHECK.SQL.CLEAR;
QCHECK.SQL.Add('INSERT INTO POSA');
QCHECK.SQL.Add(' ( PAENO, PAIDE, BMENO, BNENO, PAIPN, PAIVO, PACIV, PADAT, PATME, PACNT, PACOT, PACOG, ');
QCHECK.SQL.Add(' PACNO, PACDT, PACNA, PACKD, PABCK, PABCN, PACPD, PAWEK ) ');
QCHECK.SQL.Add(' VALUES ');
QCHECK.SQL.Add(' (:PAENO,:PAIDE,:BMENO,:BNENO,:PAIPN,:PAIVO,:PACIV,:PADAT,:PATME,:PACNT,:PACOT,:PACOG, ');
QCHECK.SQL.Add(' :PACNO,:PACDT,:PACNA,:PACKD,:PABCK,:PABCN,:PACPD,:PAWEK ) ');
QCHECK.ParamByName('PAENO').AsString := _TB_PAENO; //銷售編號
QCHECK.ParamByName('PAIDE').AsString := _TB_NUMBER; //柜臺號碼
QCHECK.ParamByName('BMENO').AsString := _TB_BMEM_BMENO; //會員編號
QCHECK.ParamByName('BNENO').AsString := _TB_USER_NUMBER; //員工編號
QCHECK.ParamByName('PAIPN').AsBoolean := _TB_PRN_PRINTING; //是否打印發票
QCHECK.ParamByName('PAIVO').AsString := _TB_INV_NO; //發票號碼
QCHECK.ParamByName('PACIV').AsString := _TB_PACIV; //統一編號
QCHECK.ParamByName('PADAT').AsDatetime := _TB_INSERT_DATE; //銷售日期
QCHECK.ParamByName('PATME').AsString := TIME_GET_24H(TIME); //銷售時間
QCHECK.ParamByName('PACNT').AsFloat := _TB_TOTAL_QTY; //產品數量
QCHECK.ParamByName('PACOT').AsFloat := _TB_TOTAL_PRICE; //產品總價
QCHECK.ParamByName('PACOG').AsFloat := _TB_TOTAL_CASH; //收入金額
QCHECK.ParamByName('PACNO').AsString := _TB_CARD_PACNO; //信用卡號
QCHECK.ParamByName('PACDT').AsDatetime := T_PACDT; //信用卡到期日
QCHECK.ParamByName('PACNA').AsFloat := _TB_CARD_PACNA; //信用卡金額
QCHECK.ParamByName('PACKD').AsString := _TB_CARD_PACKD; //信用卡類別
QCHECK.ParamByName('PABCK').AsBoolean := False; //發票作廢
QCHECK.ParamByName('PABCN').AsBoolean := False; //資料回存
QCHECK.ParamByName('PACPD').AsBoolean := False; //信用卡付費
QCHECK.ParamByName('PAWEK').AsString := INTTOSTR(DayOfWeek(_TB_INSERT_DATE)); //星期幾
TRY QCHECK.ExecSQL; except SHOWMESSAGE('POSA 無法新增!'); end;
//更新會員消費
IF TRIM(_TB_BMEM_BMENO) <> '' THEN
BEGIN
QCHECK.SQL.Clear;
QCHECK.SQL.ADD('UPDATE BMEM SET');
QCHECK.SQL.ADD(' BMBYR = BMBYR + '+FLOATTOSTR(_TB_TOTAL_PRICE)+',');
QCHECK.SQL.ADD(' BMBTO = BMBTO + '+FLOATTOSTR(_TB_TOTAL_PRICE)+',');
QCHECK.SQL.ADD(' BMBPO = BMBPO + '+FLOATTOSTR(_TB_TOTAL_PRICE)+'/'+INTTOSTR(_TB_SET_BMBPO)+',');
QCHECK.SQL.ADD(' BMBTM = BMBTM + 1 ,');
QCHECK.SQL.ADD(' BMBDT = '+_DT+ DATETOSTR(_TB_INSERT_DATE) +_DT);
QCHECK.SQL.ADD(' WHERE BMENO = '''+_TB_BMEM_BMENO+'''');
try QCHECK.ExecSQL; except SHOWMESSAGE('BMEM 無法更新!'); end;
END;
//更新業務業績
IF TRIM(_TB_USER_NUMBER) <> '' THEN
BEGIN
QCHECK.SQL.Clear;
QCHECK.SQL.ADD('UPDATE BSAL SET');
QCHECK.SQL.ADD(' BASYR = BASYR + '+FLOATTOSTR(_TB_TOTAL_PRICE)+',');
QCHECK.SQL.ADD(' BASTO = BASTO + '+FLOATTOSTR(_TB_TOTAL_PRICE)+',');
QCHECK.SQL.ADD(' BASDT = '+_DT+ DATETOSTR(_TB_INSERT_DATE) +_DT);
QCHECK.SQL.ADD(' WHERE BAENO = '''+_TB_USER_NUMBER+'''');
try QCHECK.ExecSQL; except SHOWMESSAGE('BSAL 無法更新!'); end;
END;
FINALLY
QCHECK.Free;
END;
END;
PROCEDURE FINISHI_SAVE_POSB; //完成結帳_ POSB 明細
VAR QCHECK, QUPD : TQUERY;
I : INTEGER;
T_PBENO, T_BGENO, T_BGNAM, T_BGCNT, T_BGCOS, T_BGCOT, T_BGKIN, T_BGQTN :STRING;
BEGIN
TRY
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QUPD := TQUERY.Create(APPLICATION.Owner);
QUPD .DatabaseName := 'MAIN';
QCHECK.SQL.CLEAR;
QCHECK.SQL.Add('INSERT INTO POSB');
QCHECK.SQL.Add(' ( PAENO, PBENO, BGQTN, BGENO, BGCNT, BGCOS, BGCOT ) ');
QCHECK.SQL.Add(' VALUES ');
QCHECK.SQL.Add(' (:PAENO,:PBENO,:BGQTN,:BGENO,:BGCNT,:BGCOS,:BGCOT ) ');
//存入數據庫
WITH FMPOSA DO
BEGIN
FOR I := 1 TO 200 DO
BEGIN
FMPOSAF1.Gauge.AddProgress(1);
T_PBENO := TABLEFINDMAXITM('POSB','PAENO',_TB_PAENO,'PBENO',3,1);//銷售ITEM
T_BGENO := OUT_GRID.Cells[1,I];//產品條形碼
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -