⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unposa.pas

📁 超市管理系统:完成日常销售任务
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -