📄 unposa.~pas
字号:
unit UNPOSA;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Menus, Spin, StdCtrls, Buttons, ComCtrls, Grids, DBGrids,
JLOOKUP, JEdit, GIFImage, jpeg, SELOOKUP;
type
TFMPOSA = class(TForm)
OUT_GRID: TStringGrid;
MainMenu1: TMainMenu;
ESC: TMenuItem;
F1: TMenuItem;
F2: TMenuItem;
F5: TMenuItem;
F7: TMenuItem;
F3: TMenuItem;
F8: TMenuItem;
F11: TMenuItem;
F4: TMenuItem;
F12: TMenuItem;
CTRLL: TMenuItem;
CTRLI: TMenuItem;
CTRLQ: TMenuItem;
CTRLP: TMenuItem;
F10: TMenuItem;
CTRLA: TMenuItem;
CTRLB: TMenuItem;
CTRLV: TMenuItem;
CTRLN: TMenuItem;
CTRLM: TMenuItem;
CTRLZ: TMenuItem;
F6: TMenuItem;
CTRLC: TMenuItem;
CTRLX: TMenuItem;
CTRLS: TMenuItem;
N1: TMenuItem;
CTRLF5: TMenuItem;
CTRLF6: TMenuItem;
CTRLF7: TMenuItem;
CTRLF8: TMenuItem;
CTRLF9: TMenuItem;
CTRLF10: TMenuItem;
CTRLF11: TMenuItem;
CTRLF12: TMenuItem;
ED_START: TLABEL;
ED_END: TLABEL;
Panel_RUNLG: TLABEL;
Label_RUNLG: TLabel;
StatusBar1: TStatusBar;
Timer1: TTimer;
Timer_RUNLG: TTimer;
OUT_Grid_TMP: TStringGrid;
F9: TMenuItem;
LB_CHG_PRICE: TPanel;
LB_LAST_SUB: TPanel;
LB_PRN_PRINTING: TPanel;
LB_TMP_GRID: TPanel;
LB_BACK_MODE: TPanel;
LB_PRN_CASHBOX: TPanel;
IMG_CHG_PRICE: TImage;
IMG_LAST_SUB: TImage;
IMG_PRN_PRINTING: TImage;
IMG_TMP_GRID: TImage;
IMG_BACK_MODE: TImage;
IMG_PRN_CASHBOX: TImage;
Timer_IMG: TTimer;
LB_DISC_PERCENT: TPanel;
ED_DISC_PERCENT: TLabel;
LB_LAST_PRICE: TPanel;
ED_LAST_PRICE: TLabel;
LB_PACIV: TPanel;
ED_PACIV: TLabel;
LB_INV_NO: TPanel;
ED_INV_NO: TLabel;
LB_INV_CNT: TPanel;
ED_INV_CNT: TLabel;
Panel5: TPanel;
Image1: TImage;
LB_NUMBER: TPanel;
LB_USER_NUMBER: TPanel;
ED_NUMBER: SELOOKUPBOX;
ED_USER_NUMBER: SELOOKUPBOX;
LB_INSERT_DATE: TPanel;
ED_INSERT_DATE: TEdit;
Panel1: TPanel;
ED_BMEM_BMLVE: TEdit;
ED_BMEM_BMBYR: TEdit;
ED_BMEM_BMBTO: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ED_BMEM_BMENO: TEdit;
ED_BMEM_BMNAM: TEdit;
Label5: TLabel;
Label6: TLabel;
LB_BG_BGQTS: TPanel;
ED_BG_BGQTS: TLabel;
LB_BG_BGQTN: TPanel;
ED_BG_BGQTN: TLabel;
LB_CARD_PACNA: TPanel;
ED_CARD_PACNA: TLabel;
LB_GIFT_PGCNA: TPanel;
ED_GIFT_PGCNA: TLabel;
LB_BG_BGCOS: TPanel;
ED_BG_BGCOS: TLabel;
CTRLH: TMenuItem;
Panel2: TPanel;
ED_INPUT: TEdit;
Label_TOTAL: TLabel;
ED_TOTAL_PRICE: TEdit;
ED_NOPAY: TLabel;
ED_TOTAL_NOPAY: TEdit;
Label1: TLabel;
ED_TOTAL_CASH: TEdit;
Image2: TImage;
Label7: TLabel;
ED_BMEM_BMCRD: TEdit;
ED_BMEM_BMDAT: TEdit;
Label8: TLabel;
Panel3: TPanel;
ED_DISC_PRICE: TLabel;
ARROW_PIC: TImage;
PANEL_FUNCTION: TPanel;
BTN_F1: TBITBTN;
BTN_F2: TBITBTN;
BTN_F3: TBITBTN;
BTN_F4: TBITBTN;
BTN_F5: TBITBTN;
BTN_F6: TBITBTN;
BTN_F7: TBITBTN;
BTN_F8: TBITBTN;
BTN_F9: TBITBTN;
BTN_F10: TBITBTN;
BTN_F11: TBITBTN;
BTN_F12: TBITBTN;
BTN_CTRLL: TBitBtn;
BTN_CTRLP: TBitBtn;
BTN_CTRLN: TBitBtn;
BTN_CTRLC: TBitBtn;
BTN_CTRLI: TBitBtn;
BTN_CTRLB: TBitBtn;
BTN_CTRLM: TBitBtn;
BTN_CTRLX: TBitBtn;
BTN_CTRLQ: TBitBtn;
BTN_CTRLV: TBitBtn;
BTN_CTRLZ: TBitBtn;
BTN_CTRLS: TBitBtn;
BTN_CTRLH: TBitBtn;
BTN_ESC: TBitBtn;
procedure CTRLQClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ED_INPUTKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure F8Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer_RUNLGTimer(Sender: TObject);
procedure F3Click(Sender: TObject);
procedure ESCClick(Sender: TObject);
procedure F4Click(Sender: TObject);
procedure F11Click(Sender: TObject);
procedure F12Click(Sender: TObject);
procedure CTRLLClick(Sender: TObject);
procedure F2Click(Sender: TObject);
procedure F1Click(Sender: TObject);
procedure F5Click(Sender: TObject);
procedure F6Click(Sender: TObject);
procedure F7Click(Sender: TObject);
procedure CTRLCClick(Sender: TObject);
procedure CTRLPClick(Sender: TObject);
procedure CTRLIClick(Sender: TObject);
procedure F9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure F10Click(Sender: TObject);
procedure CTRLVClick(Sender: TObject);
procedure CTRLF12Click(Sender: TObject);
procedure CTRLF8Click(Sender: TObject);
procedure CTRLHClick(Sender: TObject);
procedure CTRLXClick(Sender: TObject);
procedure CTRLSClick(Sender: TObject);
procedure CTRLNClick(Sender: TObject);
procedure CTRLMClick(Sender: TObject);
procedure CTRLZClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FMPOSA: TFMPOSA;
implementation
uses INIFILES,
sysini, un_utl, fm_utl, DB_UTL,
UNPOSAU,
UNPOSAD,
UNPOSAF1, // 结帐
UNPOSAPRICE, // 改金额 , 单价
UNPOSACARD, // 输入信用卡
UNPOSAGIFT, // 输入礼券
UNPOSAKEY, // 按键及设置
UNPOSAMESSAGE, // 个人信息检查
UNPOSASINGLE, // 单品输入
UNBGDSN, // 快速选资料
UNBMEMN, // 快速选资料
UNBGDSQ, // 快速键资料
UNBMEMQ, // 快速键资料
URINVOICE,
URDSP,
///////////SYSLOG, // LOGIN
MAIND, MAINU;
{$R *.DFM}
procedure TFMPOSA.FormCreate(Sender: TObject);
begin
OUT_GRID.Cells[1,0] := ' 条 码 ';
OUT_GRID.Cells[2,0] := ' 产 品 名 称 ';
OUT_GRID.Cells[3,0] := '量';
OUT_GRID.Cells[4,0] := ' 单 价 ';
OUT_GRID.Cells[5,0] := ' 小 计 ';
T_STR := UNSET_READ_SST('_SYS_SET_MAINCR');
IF T_STR <> '' THEN FMPOSA.COLOR := STRINGTOCOLOR(T_STR);
// 显示功能键
IF _TB_SHOW_FUNCTION = TRUE THEN
BEGIN
PANEL_FUNCTION.Visible := TRUE;
OUT_GRID.Height := 365;
END ELSE BEGIN
OUT_GRID.Height := 450;
PANEL_FUNCTION.FREE;
END;
end;
procedure TFMPOSA.FormShow(Sender: TObject);
begin
_TB_DISC_PERCENT := 1 ; //打折比例
ED_NUMBER .TEXT := _TB_NUMBER ; //收款台编号
ED_USER_NUMBER .TEXT := _TB_USER_NUMBER ; //收银员编号
ED_INSERT_DATE .TEXT := EDATE_TO_CDATE(DATETOSTR(_TB_INSERT_DATE)); //此笔日期
VAR_INI;
ED_INPUT_SETFOCUS;
end;
procedure TFMPOSA.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModuleRelease(FMPOSAD);
FormRelease(FMPOSA);
FormFREE('FMPOSAGIFT');
end;
procedure TFMPOSA.ED_INPUTKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
//快速查询相关 DATA
IF ( KEY = 38 ) THEN // 上移
BEGIN
IF (OUT_GRID.Row<1)OR(OUT_GRID.Row>199)THEN EXIT;
IF (OUT_GRID.Row>1)THEN
OUT_GRID.Row := OUT_GRID.Row -1;
ED_INPUT_SETFOCUS;
EXIT;
END;
IF ( KEY = 40 ) THEN // 下移
BEGIN
IF (OUT_GRID.Row<1)OR(OUT_GRID.Row>199)THEN EXIT;
IF (OUT_GRID.Row<199)THEN
OUT_GRID.Row := OUT_GRID.Row +1;
ED_INPUT_SETFOCUS;
EXIT;
END;
IF ( KEY = 33 ) THEN
BEGIN
CTRLF8Click( CTRLF5 ); EXIT;
END;
IF ( KEY = 34 ) THEN
BEGIN
CTRLF12Click( CTRLF9 ); EXIT;
END;
IF KEY = 13 THEN
BEGIN
OUT_GRID.Row := 1;
T_STR := ED_INPUT.Text;
//空白离开
IF (ED_INPUT.TEXT = '') THEN EXIT;
//13码数值自动补位
IF _TB_AUTO_EAN13 = TRUE THEN ED_INPUT.TEXT := EAN13_AUTOADD(ED_INPUT.TEXT);
IF RE_INPUT(T_STR) = TRUE THEN EXIT;
T_STR := FIND_BGDS(T_STR,1);
CHECK_PRICE; //检查价钱
IF ( T_STR = '') THEN //按 BGENO 再按 ENTER 找资料
BEGIN
IF (T_STR='') AND (_TB_SHOW_WARN= TRUE) THEN SHOWMESSAGE('查无此资料');
END ELSE BEGIN
GRID_ADD;
END;
ED_INPUT_SETFOCUS;
EXIT;
END; //IF
end;
// 时间区 ====================================================================================
procedure TFMPOSA.Timer1Timer(Sender: TObject);
VAR I :INTEGER;
begin
FMPOSA.WINDOWSTATE:=wsMaximized;
FMPOSA.Top := 0;
FMPOSA.LEFT := 0;
// 算礼券金额 ====================================================================================
IF FormExists('FMPOSAGIFT')=TRUE THEN
BEGIN
_TB_GIFT_PRICE := 0; //礼券总金额
FOR I := 1 TO 19 DO
BEGIN
IF STRTOINTDEF(FMPOSAGIFT.GIFT_GRID.Cells[3,I], -1) >= 0 THEN
BEGIN
_TB_GIFT_PRICE := _TB_GIFT_PRICE + STRTOFLOATDEF(FMPOSAGIFT.GIFT_GRID.Cells[3,I],0);
END;
END;
END;
_TB_TOTAL_REC := 0;
//算 总笔数==========================================================
FOR I := 1 TO 200 DO
BEGIN
IF TRIM(OUT_GRID.Cells[1,I]) = '' THEN OUT_GRID.Rows[I].Text := '';
IF TRIM(OUT_GRID.Cells[1,I]) <> '' THEN INC(_TB_TOTAL_REC) ELSE BREAK;
END;
// 重写序号=========================================================
FOR I := 1 TO _TB_TOTAL_REC DO OUT_GRID.Cells[0,I] := INTTOSTR(_TB_TOTAL_REC-I+1);
//算金额==========================================================
_TB_TOTAL_QTY := 0;
_TB_TOTAL_PRICE := 0;
FOR I := 1 TO 200 DO
BEGIN
_TB_TOTAL_QTY := _TB_TOTAL_QTY + STRTOINTDEF(TRIM(OUT_GRID.Cells[3,I]),0);
_TB_TOTAL_PRICE := _TB_TOTAL_PRICE + STRTOFLOATDEF(TRIM(OUT_GRID.Cells[5,I]),0);
IF TRIM(OUT_GRID.Cells[1,I+1]) = '' THEN BREAK;
END;
//小数无条件四舍五入
IF _TB_AUTO_ROUND = TRUE THEN _TB_TOTAL_PRICE := FLOATTOINT_ROUND(_TB_TOTAL_PRICE);
// 礼券 信用卡 折扣 去尾数
_TB_TOTAL_NOPAY := ROUND(_TB_GIFT_PRICE + _TB_CARD_PACNA + _TB_DISC_PRICE + _TB_LAST_PRICE);
_TB_TOTAL_CASH := ROUND(_TB_TOTAL_PRICE-_TB_TOTAL_NOPAY);
ED_TOTAL_NOPAY.Text := FLOATTOSTR(_TB_TOTAL_NOPAY);
ED_TOTAL_PRICE.Text := FLOATTOSTR(_TB_TOTAL_PRICE);
ED_TOTAL_CASH .Text := FLOATTOSTR(_TB_TOTAL_CASH);
// 算金额 ====================================================================================
// 将要显示的显示出来,其它隐藏 ==============================================================
IF _TB_PRN_ALWAYSON = TRUE THEN _TB_PRN_PRINTING := TRUE; //预设 强迫 要开发票,就不能不打印发票
_TB_SET_CHG_PRICE := TRUE;
IMG_CHG_PRICE.Picture := ARROW_PIC.Picture; IMG_CHG_PRICE.Visible := _TB_SET_CHG_PRICE; //可否改金额
IMG_LAST_SUB.Picture := ARROW_PIC.Picture; IMG_LAST_SUB.Visible := _TB_LAST_SUB ; //总计可以去尾数
IMG_PRN_PRINTING.Picture := ARROW_PIC.Picture; IMG_PRN_PRINTING.Visible := _TB_PRN_PRINTING ; //是否打印发票
IMG_TMP_GRID.Picture := ARROW_PIC.Picture; IMG_TMP_GRID.Visible := _TB_TMP_GRID ; //暂存区有东西
IMG_BACK_MODE.Picture := ARROW_PIC.Picture; IMG_BACK_MODE.Visible := _TB_BACK_MODE ; //退货模式
IMG_PRN_CASHBOX.Picture := ARROW_PIC.Picture; IMG_PRN_CASHBOX.Visible := _TB_PRN_CASHBOX ; //退货模式
IMG_PRN_PRINTING.Visible := _TB_PRN_PRINTING; //是否打印发票
ED_DISC_PRICE .CAPTION := FLOATTOSTR(_TB_DISC_PRICE ); //折扣金额
ED_DISC_PERCENT .CAPTION := FLOATTOSTR(_TB_DISC_PERCENT ); //打折比例
ED_LAST_PRICE .CAPTION := FLOATTOSTR(_TB_LAST_PRICE ); //总计 - 去尾数金额
ED_PACIV .CAPTION := _TB_PACIV ; //统一编号
ED_INV_NO .CAPTION := _TB_INV_NO ; //发票号码
ED_INV_CNT .CAPTION := INTTOSTR( _TB_INV_CNT ); //发票剩张数
ED_BG_BGQTS .CAPTION := INTTOSTR( _TB_BG_BGQTS ); //安存数量
ED_BG_BGQTN .CAPTION := INTTOSTR( _TB_BG_BGQTN ); //库存数量
ED_BG_BGCOS .CAPTION := FLOATTOSTR( _TB_BG_BGCOS ); //成本价
LB_BG_BGCOS .Visible := _TB_SHOW_BGCOS ; // 显示成本价
LB_BG_BGQTS .Visible := _TB_SHOW_BGQTS ; // 显示安存量
LB_BG_BGQTN .Visible := _TB_SHOW_BGQTN ; // 显示库存量
ED_CARD_PACNA.Caption := FLOATTOSTR(_TB_CARD_PACNA);
ED_GIFT_PGCNA.Caption := FLOATTOSTR(_TB_GIFT_PGCNA);
// 将要显示的显示出来,其它隐藏 ==============================================================
// 找寻会员
IF _TB_BMEM_FOUND = TRUE THEN
BEGIN
ED_BMEM_BMENO.TEXT := _TB_BMEM_BMENO; //会员姓名
ED_BMEM_BMNAM.TEXT := _TB_BMEM_BMNAM; //会员姓名
ED_BMEM_BMLVE.TEXT := INTTOSTR(_TB_BMEM_BMLVE); //会员等级
ED_BMEM_BMBYR.TEXT := INTTOSTR(_TB_BMEM_BMBYR); //年消费等级
ED_BMEM_BMBTO.TEXT := INTTOSTR(_TB_BMEM_BMBTO); //总消费等级
ED_BMEM_BMCRD.TEXT := _TB_BMEM_BMCRD; //发卡日
ED_BMEM_BMDAT.TEXT := _TB_BMEM_BMDAT; //入会日
END ELSE BEGIN
ED_BMEM_BMENO.TEXT := '' ;
ED_BMEM_BMNAM.TEXT := '' ;
ED_BMEM_BMLVE.TEXT := '0';
ED_BMEM_BMBYR.TEXT := '0';
ED_BMEM_BMBTO.TEXT := '0';
ED_BMEM_BMCRD.TEXT := ''; //发卡日
ED_BMEM_BMDAT.TEXT := ''; //入会日
END;
end;
procedure TFMPOSA.Timer_RUNLGTimer(Sender: TObject);
begin
IF (Label_RUNLG.Left <= 0-Label_RUNLG.Width) THEN Label_RUNLG.Left := Panel_RUNLG.Width;
IF (Label_RUNLG.Left > 0) THEN Label_RUNLG.Left := Label_RUNLG.Left - 50;
Label_RUNLG.Left := Label_RUNLG.Left - 30;
end;
// 时间区 ====================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -