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

📄 cj_main.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法清空采集退货库内有关机器' + IntToStr(MachineNo) + '收据号'
        + IntToStr(SjNo) + '的数据,系统无法继续工作!');
      Exit;
    end;
  end;
  Result := True;
end;

{--------------------删除采集交易表中当前机器号和交易号的记录-----------}

function TFrmCJ_Main.EmptyCurrentJyfs(MachineNo, SjNo: integer; Date1, Date2:
  TDate): Boolean;
begin
  Result := False;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Delete');
    Sql.Add('From SCSJ_DJYFS');
    Sql.Add('Where 设备编码=' + IntToStr(MachineNo));
    Sql.Add('And 收据号=' + IntToStr(SjNo));
    Sql.Add('And Convert(char(10),日期,20)>=''' + DateToStr(Date1) + '''');
    Sql.Add('And Convert(char(10),日期,20)<=''' + DateToStr(Date2) + '''');
    try
      ExecSql;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法清空采集交易库内有关机器' + IntToStr(MachineNo) + '收据号'
        + IntToStr(SjNo) + '的数据,系统无法继续工作!');
      Exit;
    end;
  end;
  Result := True;
end;

{--------------向数据库中插入每一笔交易数据--------------------------------}

function TFrmCJ_Main.InsertRecord(jlh: integer): Boolean;
var
  i: integer;
  scxx: TScxx;
  aSpxx: TSpxx;
  zkl, zke, yxse, sxse: double;
  {商品价格,商品数量,折扣率,折扣额,原销售额,实销售额}
begin
  Result := False;
  for i := 0 to TScxx(RecordList.Objects[jlh]).Spxx.Count - 1 do
  begin
    with FrmCJ_DataModule.ADOQuery2 do
    begin
      scxx := TScxx(RecordList.Objects[jlh]);
      aSpxx := TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[i]);
      zke := 0;
      zkl := 0;
      yxse := aSpxx.sl * aSpxx.je;
      sxse := aSpxx.sl * aSpxx.je;
      Close;
      Sql.Clear;
      Sql.Add('Insert into SCSJ_DSYJXSXX1');
      Sql.Add('(设备编码,日期,星期,收据号,商品号,商品名称,交易名称,商品价格,商品数量,是否打折, 折扣率,服务员姓名,收款员姓名,折扣额,原销售额,实销售额)');
      Sql.Add('values (');
      Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
        floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh) + ',' +
        inttostr(ASpxx.spdl));
      Sql.Add(',''' + ASpxx.spmc + ''',''' + Scxx.jyfsm + ''',' +
        floattostr(aSpxx.je) + ',' + floattostr(aSpxx.sl) + ',' +
        inttostr(Scxx.zkflag) + ',' + floattostr(zkl) + ',''' + scxx.fwym +
        ''','''
        + scxx.skym + '''');
      Sql.Add(',' + floattostr(zke) + ',' + floattostr(yxse) + ',' +
        floattostr(sxse) + ')');
      try
        ExecSql;
      except
        Screen.Cursor := crDefault;
        ShowMessage('向数据库中写入记录失败!');
        Exit;
      end;
    end;
    if TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[i]).thflag then
      if not InsertToTh(jlh, i) then
        Exit;
  end;
  Result := True;
end;

{-----------------------向交易方式数据库中插入交易方式列表------------------}

function TFrmCJ_Main.InsertJyRecord(jlh: integer): Boolean;
var
  i: integer;
  scxx: TScxx;
  aJyList: TJyfsList;
begin
  Result := False;
  for i := 0 to TScxx(RecordList.Objects[jlh]).JyfsList.Count - 1 do
    with FrmCJ_DataModule.ADOQuery2 do
    begin
      scxx := TScxx(RecordList.Objects[jlh]);
      aJyList := TJyfsList(TScxx(RecordList.Objects[jlh]).JyfsList.Objects[i]);
      Close;
      Sql.Clear;
      Sql.Add('Insert into SCSJ_DJYFS');
      Sql.Add('(设备编码,日期,星期,收据号,交易名称,交易金额,收款员姓名)');
      Sql.Add('values (');
      Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
        floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh));
      Sql.Add(',''' + aJyList.jymc + ''',' + FloatToStr(aJyList.jyje / 100) +
        ',''' + Trim(scxx.skym) + ''')');
      try
        ExecSql;
      except
        Screen.Cursor := crDefault;
        ShowMessage('向数据库中写入记录失败!');
        Exit;
      end;
    end;
  Result := True;
end;

{-----------------------向退货数据库中插入退货记录----------------------}

function TFrmCJ_Main.InsertToTh(jlh, xh: integer): Boolean;
var
  scxx: TScxx;
  aSpxx: TSpxx;
  spje: double; {商品价格,商品数量,商品金额}
begin
  Result := False;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    scxx := TScxx(RecordList.Objects[jlh]);
    aSpxx := TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[xh]);
    spje := aSpxx.sl * aSpxx.je;
    Close;
    Sql.Clear;
    Sql.Add('Insert into SCSJ_DTH');
    Sql.Add('(设备编码,日期,星期,收据号,商品号,商品名称,商品价格,退货商品数量,退货商品金额,收款员姓名)');
    Sql.Add('values (');
    Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
      floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh) + ',' +
      inttostr(ASpxx.spdl));
    Sql.Add(',''' + ASpxx.spmc + ''',' + floattostr(aSpxx.je) + ',' +
      floattostr(aSpxx.sl) + ',' + FloatToStr(spje) + ',''' + Trim(scxx.skym) +
      ''')');
    try
      ExecSql;
    except
      Screen.Cursor := crDefault;
      ShowMessage('向数据库中写入记录失败!');
      Exit;
    end;
  end;
  Result := True;
end;

{-------------------------将日志信息保存到数据库----------------------------}

procedure TFrmCJ_Main.ResultLog(Sj: TDate; Jqh: integer; StartRq, EndRq: TDate;
  CjResult: string);
begin
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Insert Into SCSJ_DLogFile');
    Sql.Add('(采集时间,机器号,起始日期,终止日期,采集结果)');
    Sql.Add('values (');
    Sql.Add('''' + DateTimeToStr(Sj) + ''',' + IntToStr(Jqh) + ',''' +
      DateToStr(StartRq) + ''',''' + DateToStr(EndRq) + ''',''' + CjResult +
      ''')');
    try
      ExecSql;
    except
      ShowMessage('向数据库中写入日志信息失败!');
      Exit;
    end;
  end;
end;

{---------------------更新折扣率'折扣额'原销售额'实销售额------------------------}

function TFrmCJ_Main.UpdateZkxx(Date1, Date2: TDate; Lx, Jqhm: Integer):
  Boolean;
var
  jqh, sjh: string;
  zkl, zke, yxse, sxse: Double; //折扣率,折扣额,原销售额,实销售额
  spdm, zkflag, xh: integer;
  rq: TDateTime;
begin
  Result := False;
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select SCSJ_DSYJXSXX1.设备编码,SCSJ_DSYJXSXX1.日期,SCSJ_DSYJXSXX1.星期,');
    Sql.Add('SCSJ_DSYJXSXX1.收据号,SCSJ_DSYJXSXX1.商品号,SCSJ_DSYJXSXX1.商品名称,');
    Sql.Add('SCSJ_DSYJXSXX1.交易名称,SCSJ_DSYJXSXX1.IC卡号,SCSJ_DSYJXSXX1.商品价格,');
    Sql.Add('SCSJ_DSYJXSXX1.商品数量,SCSJ_DSYJXSXX1.是否打折,PZXX_DZKXX1.折扣率,');
    Sql.Add('SCSJ_DSYJXSXX1.折扣额,SCSJ_DSYJXSXX1.原销售额,SCSJ_DSYJXSXX1.实销售额,');
    Sql.Add('SCSJ_DSYJXSXX1.服务员姓名,SCSJ_DSYJXSXX1.收款员姓名,PZXX_DSPXX1.商品号,');
    Sql.Add('PZXX_DSPLB1.商品类别名称,PZXX_DZKXX1.起始日期,PZXX_DZKXX1.终止日期,SCSJ_DSYJXSXX1.序号');
    Sql.Add('From SCSJ_DSYJXSXX1,PZXX_DSPXX1,PZXX_DSPLB1,PZXX_DZKXX1');
    Sql.Add('Where SCSJ_DSYJXSXX1.是否打折=1');
    Sql.Add('AND SCSJ_DSYJXSXX1.商品号=PZXX_DSPXX1.商品号');
    Sql.Add('AND PZXX_DSPXX1.商品类别号=(PZXX_DSPLB1.商品类别号-5001)');
    Sql.Add('AND substring(PZXX_DZKXX1.选项2,7,2)=substring(PZXX_DSPLB1.选项2,7,2)');
    Sql.Add('AND convert(char(10),SCSJ_DSYJXSXX1.日期,20)>=''' + DateToStr(Date1)
      + '''');
    Sql.Add('AND convert(char(10),SCSJ_DSYJXSXX1.日期,20)<=''' + DateToStr(Date2)
      + '''');
    Sql.Add('AND 设备编码=' + IntTostr(jqhm));
    Sql.Add('Order By SCSJ_DSYJXSXX1.商品号');
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法打开记录集');
      Exit;
    end;
    if RecordCount = 0 then
    begin
      Result := True;
      Exit;
    end;
    First;
    while not Eof do
    begin
      if (FieldByName('日期').AsDateTime >= FieldByName('起始日期').AsDateTime)
        and (FieldByName('日期').AsDateTime <=
        FieldByName('终止日期').AsDateTime) then
      begin
        jqh := FieldByName('设备编码').AsString;
        sjh := FieldByName('收据号').AsString;
        spdm := FieldByName('商品号').AsInteger;
        zkflag := FieldByName('是否打折').AsInteger;
        rq := FieldByName('日期').AsDateTime;
        zkl := FieldByName('折扣率').AsFloat / 10000;
        zke := FieldByName('商品价格').AsFloat * FieldByName('商品数量').AsFloat
          * zkl;
        yxse := FieldByName('商品价格').AsFloat *
          FieldByName('商品数量').AsFloat;
        sxse := yxse - zke;
        xh := FieldByName('序号').AsInteger;
        with FrmCJ_DataModule.ADOQuery1 do
        begin
          Close;
          Sql.Clear;
          Sql.Add('Update SCSJ_DSYJXSXX1');
          Sql.Add('Set 折扣率=' + FloatToStr(zkl) + ',折扣额=' + FloatToStr(zke)
            + ',原销售额=' + FloatToStr(yxse) + ',实销售额=' +
            FloatToStr(sxse));
          Sql.Add('Where 日期=''' + DateTimeToStr(rq) + '''And 设备编码=' + jqh
            +
            'And 收据号=' + sjh + 'And 商品号=' + IntToStr(spdm));
          Sql.Add('And 是否打折=' + IntToStr(zkflag));
          Sql.Add('And 序号=' + IntToStr(xh));
          try
            ExecSql;
          except
            Screen.Cursor := crDefault;
            ShowMessage('更新折扣信息失败');
            Exit;
          end;
        end;
      end;
      Next;
    end;
  end;
  Result := True;
end;

procedure TFrmCJ_Main.Checkrq(Date1, Date2: TDate; rqxh, Recordcon: TStrings);
var
  rq1, rq2: TDate;
  i: integer;
  FindFlag: Boolean;
begin
  rq1 := StrToDate(DateToStr(Date1));
  rq2 := StrToDate(DateToStr(Date2));
  while rq1 <= rq2 do
  begin
    FindFlag := False;
    for i := 0 to rqxh.count - 1 do
    begin
      if StrToDate(Copy(TScxx(Recordcon.Objects[StrToInt(rqxh[i])]).rq, 1, 10))
      = rq1 then
      begin
        FindFlag := True;
        break;
      end
      else
        continue;
    end;
    if not FindFlag then
      ShowMessage('文件中没有' + DateToStr(rq1) + '日数据,无法采集');
    rq1 := rq1 + 1;
  end;
end;

{---------------------- 清空选定日期的记录---------------------------------}

procedure TFrmCJ_Main.DeletePart(Jqh: integer; FromDate, ToDate: TDate);
begin
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Delete');
    Sql.Add('From SCSJ_DSYJXSXX1');
    Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
    Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
    Sql.Add(' And 设备编码=''' + IntToStr(Jqh) + '''');
    try
      ExecSql;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法清空库内日期' + DateToStr(FromDate) + '到' +
        DateToStr(ToDate) + '的数据!');
      Exit;
    end;
  end;
end;

{------------------------清空全部记录----------------------------}

procedure TFrmCJ_Main.DeleteAll;
begin
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Delete');
    Sql.Add('From SCSJ_DSYJXSXX1');
    try
      ExecSql;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法清空库内全部数据!');
      Exit;
    end;
  end;
end;

procedure TFrmCJ_Main.ShowResult(FromDate, ToDate: TDate; jqh, lx: integer);
var
  jycount: integer;
  spsl, zke, yxse, sxse: Double;
  resultmsg: string;
begin
  with FrmCJ_DataModule.ADOQuery2 do
  begin
    Close;
    DisableControls;
    Sql.Clear;
    Sql.Add('Select Distinct(收据号)');
    Sql.Add('From SCSJ_DSYJXSXX1');
    Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
    Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
    Sql.Add(' And 设备编码=' + IntToStr(jqh));
    try
      Open;
    except
      ShowMessage('无法打开记录集');
      Exit;
    end;
    if RecordCount = 0 then
    begin
      Screen.Cursor := crDefault;
      ShowMessage('从' + DateToStr(FromDate) + '至' + DateToStr(ToDate) +
        '的交易数为0');
      Exit;
    end;
    jycount := RecordCount;
    Sql.Clear;
    Sql.Add('Select Sum(商品数量),Sum(折扣额),Sum(原销售额),Sum(实销售额)');
    Sql.Add('From SCSJ_DSYJXSXX1');
    Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
    Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
    Sql.Add(' And 设备编码=' + IntToStr(jqh));
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法打开记录集');
      Exit;
    end;
    spsl := Fields[0].AsInteger;
    zke := Fields[1].AsFloat;
    yxse := Fields[2].AsFloat;
    sxse := Fields[3].AsFloat;
    resultmsg := resultmsg + IntToStr(jqh) + '号收银机' + #13 + #10;
    resultmsg := resultmsg + '从' + DateToStr(FromDate) + '至' +
      DateToStr(ToDate) + #13 +
      #10;
    resultmsg := resultmsg + '的交易数为' + IntToStr(jycount) + '笔' + #13 +
      #10;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -