📄 unposau.pas
字号:
T_BGNAM := OUT_GRID.Cells[2,I];//产品名称
T_BGCNT := OUT_GRID.Cells[3,I];//产品数量
T_BGCOS := OUT_GRID.Cells[4,I];//产品单价
T_BGCOT := OUT_GRID.Cells[5,I];//产品总价
T_BGQTN := OUT_GRID.Cells[6,I];//仓库数量
T_BGKIN := OUT_GRID.Cells[7,I];//产品分类
QCHECK.ParamByName('PAENO').AsString := _TB_PAENO; //销售编号
QCHECK.ParamByName('PBENO').AsString := T_PBENO; //销售项次
QCHECK.ParamByName('BGQTN').AsFloat := STRTOFLOATDEF(T_BGQTN,-999);//仓库数量
QCHECK.ParamByName('BGENO').AsString := T_BGENO; //产品编号
QCHECK.ParamByName('BGCNT').AsInteger := STRTOINTDEF (T_BGCNT,1); //产品数量
QCHECK.ParamByName('BGCOS').AsFloat := STRTOFLOATDEF(T_BGCOS,0); //产品单价
QCHECK.ParamByName('BGCOT').AsFloat := STRTOFLOATDEF(T_BGCOT,0); //产品小计
TRY QCHECK.ExecSQL; except SHOWMESSAGE('POSB 无法新增!'); end;
//更新库存资料 -分类999不更新库存
IF T_BGKIN <> '999' THEN
BEGIN
QUPD.SQL.Clear;
QUPD.SQL.ADD('UPDATE BGDS SET');
QUPD.SQL.ADD(' BGQTN = BGQTN - '+T_BGCNT+' ,');
QUPD.SQL.ADD(' BGDTC = '+_DT+ DATETOSTR(_TB_INSERT_DATE) +_DT+' ');
QUPD.SQL.ADD(' WHERE BGENO = '''+T_BGENO+'''');
try QUPD.ExecSQL; except SHOWMESSAGE('BGDS_BGQTN 无法更新!'); end;
END;
IF TRIM(OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END;
END;
FINALLY
QCHECK.Free;
QUPD .Free;
END;
END;
PROCEDURE FINISHI_SAVE_POSG; //完成结帐_ POSG 礼券
VAR QCHECK : TQUERY;
I : INTEGER;
T_PGENO : STRING;
BEGIN
IF FormExists('FMPOSAGIFT')=FALSE THEN EXIT;
TRY
QCHECK := TQUERY.Create(APPLICATION.Owner);
QCHECK.DatabaseName := 'MAIN';
QCHECK.SQL.CLEAR;
QCHECK.SQL.Add('INSERT INTO POSG');
QCHECK.SQL.Add(' ( PAENO, PGITM, PGENO, PGDAT, PGCOS, PGKND ) ');
QCHECK.SQL.Add(' VALUES ');
QCHECK.SQL.Add(' (:PAENO,:PGITM,:PGENO,:PGDAT,:PGCOS,:PGKND ) ');
// 礼券的资料
FOR I := 1 TO FMPOSAGIFT.GIFT_GRID.RowCount-1 DO
BEGIN
IF TRIM( FMPOSAGIFT.GIFT_GRID.Cells[3,I] ) = '' THEN BREAK;
T_PGENO := TABLEFINDMAXITM('POSG','PAENO',_TB_PAENO,'PGITM',3,1); //销售ITEM
QCHECK.ParamByName('PAENO').AsString := _TB_PAENO; //销售编号
QCHECK.ParamByName('PGITM').AsString := T_PGENO; //销售项次
QCHECK.ParamByName('PGENO').AsString := FMPOSAGIFT.GIFT_GRID.Cells[0,I]; //礼券编号
IF FMPOSAGIFT.GIFT_GRID.Cells[1,I] <> '' THEN
QCHECK.ParamByName('PGDAT').AsDATETIME := STRTODATE( CDATE_TO_EDATE(FMPOSAGIFT.GIFT_GRID.Cells[1,I]) ) //礼券到期日
ELSE QCHECK.ParamByName('PGDAT').AsDATETIME := STRTODATE( '1900/1/1');
QCHECK.ParamByName('PGCOS').AsFloat := STRTOFLOATDEF( FMPOSAGIFT.GIFT_GRID.Cells[3,I], 0); //礼券金额
QCHECK.ParamByName('PGKND').AsString := FMPOSAGIFT.GIFT_GRID.Cells[2,I]; //礼券类别
TRY QCHECK.ExecSQL; except SHOWMESSAGE('POSG 礼券 无法新增!!'); end;
END;
FINALLY
QCHECK.Free;
END;
END;
PROCEDURE FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
VAR I, J : INTEGER;
BEGIN
//发票排版资料 抬头 ==================================
IF INVOICE_COUNTER = 0 THEN
BEGIN
INCREASE_INV_NO;//累加发票号码
IF INVOICE_PRINTER = 4 THEN // EPSON RP-U420-110
BEGIN
INVOICE_IV_TEXT('');
INVOICE_IV_TEXT('');
INVOICE_IV_TEXT('');
INVOICE_IV_TEXT('');
END;
// 发票 TITLE 设置
FOR I := 1 TO _TB_INV_SET_IV_TS1 DO INVOICE_IV_INV_LINEFEED;
IF TRIM(_TB_INV_SET_IV_TC1) <> '' THEN INVOICE_IV_INV_TEXT(_TB_INV_SET_IV_TC1);
FOR I := 1 TO _TB_INV_SET_IV_TS2 DO INVOICE_IV_INV_LINEFEED;
IF TRIM(_TB_INV_SET_IV_TC2) <> '' THEN INVOICE_IV_INV_TEXT(_TB_INV_SET_IV_TC2);
// 必定打印部份
INVOICE_IV_INV_TEXT(DATETOSTR(_TB_INSERT_DATE) +' '+ TIMETOSTR(TIME));
INVOICE_IV_INV_TEXT('店'+ _SYS_RBPST+'机'+_TB_NUMBER+'序'+_TB_PAENO);
INVOICE_IV_INV_TEXT('员'+_TB_USER_NUMBER +' -'+ _TB_INV_NO +'- 页'+INTTOSTR(_TB_INV_PAGE ));
IF TRIM(_TB_PACIV) <> '' THEN INVOICE_IV_INV_TEXT('统一编号: '+_TB_PACIV);
END;
// 打印开头 ================================================================
END;
PROCEDURE FINISHI_PRN_IVOICE_CONTENT(T_BGENO,T_BGNAM,T_BGCNT,T_BGCOS,T_BGCOT:STRING); //完成结帐_ 打印发票 项目
VAR T_INV_C1, T_INV_C2, T_INV_C3, T_INV_C4, T_INV_C5, T_INV_C6, T_INV_C7 : STRING;
BEGIN
//发票排版资料 内容 ==================================
T_INV_C1 := '';
IF _TB_INV_SET_IV_CC1 = 1 THEN T_INV_C1 := T_BGENO ;
IF _TB_INV_SET_IV_CC1 = 2 THEN T_INV_C1 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGID1');
IF _TB_INV_SET_IV_CC1 = 3 THEN T_INV_C1 := T_BGNAM ;
IF _TB_INV_SET_IV_CC1 = 4 THEN T_INV_C1 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGKIN');
IF _TB_INV_SET_IV_CC1 = 5 THEN T_INV_C1 := T_BGCNT ;
IF _TB_INV_SET_IV_CC1 = 6 THEN T_INV_C1 := T_BGCOS ;
IF _TB_INV_SET_IV_CC1 = 7 THEN T_INV_C1 := T_BGCOT ;
T_INV_C2 := '';
IF _TB_INV_SET_IV_CC2 = 1 THEN T_INV_C2 := T_BGENO ;
IF _TB_INV_SET_IV_CC2 = 2 THEN T_INV_C2 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGID1');
IF _TB_INV_SET_IV_CC2 = 3 THEN T_INV_C2 := T_BGNAM ;
IF _TB_INV_SET_IV_CC2 = 4 THEN T_INV_C2 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGKIN');
IF _TB_INV_SET_IV_CC2 = 5 THEN T_INV_C2 := T_BGCNT ;
IF _TB_INV_SET_IV_CC2 = 6 THEN T_INV_C2 := T_BGCOS ;
IF _TB_INV_SET_IV_CC2 = 7 THEN T_INV_C2 := T_BGCOT ;
T_INV_C3 := '';
IF _TB_INV_SET_IV_CC3 = 1 THEN T_INV_C3 := T_BGENO ;
IF _TB_INV_SET_IV_CC3 = 2 THEN T_INV_C3 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGID1');
IF _TB_INV_SET_IV_CC3 = 3 THEN T_INV_C3 := T_BGNAM ;
IF _TB_INV_SET_IV_CC3 = 4 THEN T_INV_C3 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGKIN');
IF _TB_INV_SET_IV_CC3 = 5 THEN T_INV_C3 := T_BGCNT ;
IF _TB_INV_SET_IV_CC3 = 6 THEN T_INV_C3 := T_BGCOS ;
IF _TB_INV_SET_IV_CC3 = 7 THEN T_INV_C3 := T_BGCOT ;
T_INV_C4 := '';
IF _TB_INV_SET_IV_CC4 = 1 THEN T_INV_C4 := T_BGENO ;
IF _TB_INV_SET_IV_CC4 = 2 THEN T_INV_C4 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGID1');
IF _TB_INV_SET_IV_CC4 = 3 THEN T_INV_C4 := T_BGNAM ;
IF _TB_INV_SET_IV_CC4 = 4 THEN T_INV_C4 := DB_QUERY_FIND_VALUE('BGDS','BGENO',T_BGENO,'BGKIN');
IF _TB_INV_SET_IV_CC4 = 5 THEN T_INV_C4 := T_BGCNT ;
IF _TB_INV_SET_IV_CC4 = 6 THEN T_INV_C4 := T_BGCOS ;
IF _TB_INV_SET_IV_CC4 = 7 THEN T_INV_C4 := T_BGCOT ;
INVOICE_IV_INV_TEXT(
COPY(T_INV_C1,1,_TB_INV_SET_IV_CP1)+ REPLICATE(' ',_TB_INV_SET_IV_CP1-LENGTH(T_INV_C1))
+REPLICATE(' ',_TB_INV_SET_IV_CS1)+
COPY(T_INV_C2,1,_TB_INV_SET_IV_CP2)+ REPLICATE(' ',_TB_INV_SET_IV_CP2-LENGTH(T_INV_C2))
+REPLICATE(' ',_TB_INV_SET_IV_CS2)+
COPY(T_INV_C3,1,_TB_INV_SET_IV_CP3)+ REPLICATE(' ',_TB_INV_SET_IV_CP3-LENGTH(T_INV_C3))
+REPLICATE(' ',_TB_INV_SET_IV_CS3)+
REPLICATE(' ',_TB_INV_SET_IV_CP4-LENGTH(T_INV_C4)) +COPY(T_INV_C4,1,_TB_INV_SET_IV_CP4) );
END;
PROCEDURE FINISHI_PRN_IVOICE_END; //完成结帐_ 打印发票 结尾
VAR T_INV_LASTLINE : INTEGER;
BEGIN
//发票排版资料 结尾 ==================================
T_INV_LASTLINE := 2;
IF TRIM(_TB_INV_SET_IV_EC1) <> '' THEN INC(T_INV_LASTLINE); // 结尾加行 1
IF TRIM(_TB_INV_SET_IV_EC2) <> '' THEN INC(T_INV_LASTLINE); // 结尾加行 2
IF (_TB_LAST_SUB = TRUE) AND (_TB_LAST_PRICE > 0) THEN INC(T_INV_LASTLINE); //打印去尾数
IF _TB_CARD_PACNA > 0 THEN INC(T_INV_LASTLINE); //信用卡号 //要印两行, 所以加两次
IF _TB_GIFT_PGCNA > 0 THEN INC(T_INV_LASTLINE); //礼券 号 //要印两行, 所以加两次
// 开始打印结尾
WHILE INVOICE_COUNTER < STRTOINTDEF(INVOICE_MAXROW,0) - T_INV_LASTLINE DO //加入空白, 使得总计在发票下方
INVOICE_IV_INV_LINEFEED;
IF (_TB_INV_SET_IV_RP2=TRUE) AND (_TB_CARD_PACNO<>'') THEN
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT('信用卡号码: '+_TB_CARD_PACNO); //打印信用卡号
END;
IF (_TB_INV_SET_IV_RP3=TRUE) AND (_TB_GIFT_PGCNO<>'') THEN
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT('礼券号码: ' +_TB_GIFT_PGCNO); //打印礼券明细
END;
IF (_TB_INV_SET_IV_RP1=TRUE) AND (_TB_TOTAL_PAY> 0) THEN //打印应找
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT('收现 '+ FLOATTOSTR(_TB_TOTAL_PAY) + ' 找 '+FLOATTOSTR(_TB_TOTAL_EXCHANGE)+'元');
END;
IF TRIM(_TB_INV_SET_IV_EC1) <> '' THEN
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT(_TB_INV_SET_IV_EC1); // 结尾加行 1
END;
IF TRIM(_TB_INV_SET_IV_EC2) <> '' THEN
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT(_TB_INV_SET_IV_EC2); // 结尾加行 2
END;
IF (_TB_LAST_SUB = TRUE) AND (_TB_LAST_PRICE > 0) THEN
BEGIN
FINISHI_PRN_IVOICE_TITLE; //完成结帐_ 打印发票 开头
INVOICE_IV_INV_TEXT('去尾数:'+FLOATTOSTR(_TB_LAST_PRICE)+'元'); //打印去尾数
END;
//=====================================================
INVOICE_IV_INV_TEXT(' 共: '+INTTOSTR( _TB_TOTAL_REC )+' 项 '+INTTOSTR( _TB_TOTAL_QTY )+' 个');
INVOICE_IV_INV_TEXT('总计: '+REPLICATE(' ',10-LENGTH(FLOATTOSTR(_TB_TOTAL_PRICE)))+FLOATTOSTR(_TB_TOTAL_PRICE) +' 元' );
IF (INVOICE_COUNTER < STRTOINTDEF(INVOICE_MAXROW,0)) AND (INVOICE_COUNTER >1) THEN INVOICE_IV_PAGEFEED;
END;
PROCEDURE FINISHI_DSP_TOTAL; //完成结帐_ 价格显示
BEGIN
END;
PROCEDURE FINISHI_OPEN_CASHBOX;//开钱柜
BEGIN
IF ( _TB_PRN_CASHBOX = TRUE) THEN //是否自动开钱柜
begin
try INVOICE_OPEN_CASHBOX; except SHOWMESSAGE('钱柜无法开启!'); end;
SYSLOG_INSERT('CBX',_TB_NUMBER,'结帐开钱柜'); //新增开钱柜记录
end;
END;
PROCEDURE INCREASE_INV_NO;//累加发票号码
BEGIN
_TB_INV_PAGE := _TB_INV_PAGE + 1; //发票页
DEC(_TB_INV_CNT); //自动累减 发票张数
IF LENGTH(_TB_INV_NO)= 8 THEN _TB_INV_NO := STR_INC('0',_TB_INV_NO ,1, 8 ,1);
IF LENGTH(_TB_INV_NO)=10 THEN _TB_INV_NO := STR_INC('0',_TB_INV_NO ,3,10 ,1);
END;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -