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

📄 jsztj_unit.pas

📁 餐营的数据核算,模拟入库,出库,库存.对餐营的流程详细叙述
💻 PAS
字号:
unit JSZTJ_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, ADODB;

type
  ResultData=Array of char;
  Mydata=array [0..99999] of Char;

  TJSZTJ_Form = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    SCQry: TADOQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    Data_Buff:MyData;
    { Private declarations }
  public
    function CurBuffHex(Data_Buff:MyData;var ResData:ResultData;Index,Count:integer):integer;
    function HexToInt(ResData:ResultData;Length:integer):integer;
    function MyRound(X: Extended;Length:Integer):Extended;
    { Public declarations }
  end;

var
  JSZTJ_Form: TJSZTJ_Form;

implementation

uses DMUnit, MainUnit, csUnit;

{$R *.dfm}

procedure TJSZTJ_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=cafree;
end;

procedure TJSZTJ_Form.FormDestroy(Sender: TObject);
begin
JSZTJ_Form:=nil;
end;


function TJSZTJ_Form.CurBuffHex(Data_Buff: MyData;
  var ResData: ResultData; Index, Count: integer): integer;
var
  i:integer;
begin
  for i:=0 to Count-1 do
    ResData[i]:=Data_Buff[Index+i];
    Result:=Index+Count;
end;

function TJSZTJ_Form.HexToInt(ResData: ResultData;
  Length: integer): integer;
var
  i:integer;
  Temp:String;
begin
  Temp:='';
  for i:=0 to Length-1 do
    Temp:=Temp+IntToHex(Ord(ResData[i]),2);
    Result:=StrToInt('$'+Temp);
end;

function TJSZTJ_Form.MyRound(X: Extended; Length: Integer): Extended;
var
  i,k,j:integer;
begin
  i:=1;
  k:=1;
  if X<0 then j:=-1 else j:=1;
  while i<=abs(length) do
  begin
    k:=k*10;
    inc(i);
  end;
  if length<0 then
    Result:=trunc(abs(X)/K+0.5)*(K)*J
  else
    Result:=trunc(abs(X)*K+0.5)/(K)*J ;
end;

procedure TJSZTJ_Form.BitBtn2Click(Sender: TObject);
begin
Close;
end;

procedure TJSZTJ_Form.BitBtn1Click(Sender: TObject);
var
  Data_Len:Array[0..1] of integer;
  len:integer;
  i:longint;
  S:string;
  Temp:ResultData;
  Index:integer;
  DataCode:String;//数据代码
  SNo:String;     //收银机号
  JYCount:integer;//交易数量
  LSNO:string;//交易流水号
  ChPCOde:String; //产品编号
  Price:double;	  //单价
  Count:integer;  //数量
  Fy:double;	  //金额
  Datetime:String;//销售时间
  OP:String;	  //操作员
begin
  JSZTJ_FORM.Visible:=false;
  with DM.SALE_ADOQ do
  begin
    Close;
    Open;
  end;

 { Result:=InitCom('COM1');
  if Result=0 then
    Showmessage('初始化串口成功')
  else
  begin
    Showmessage('初始化失败!'+inttostr(Result));
    Exit;
  end; }
  Result:=POS_Comm_Start(1);
  if Result=0 then
    ShowMessage('通讯成功')
  else
  begin
    ShowMessage(' 通讯失败'+inttostr(Result));
    Exit;
  end;
    csform:=Tcsform.Create(application);
    csform.Show;
    for i:=0 to 99999 do
      Data_Buff[i]:=char(0);
    Result:=2;
    Result:=POS_UpLoad_Data(@Data_Buff[0],@Data_Len);
   // sleep(50000);
    SetLength(Temp,4);
    Index:=CurBuffHex(Data_Buff,Temp,0,4);
    DataCode:=String(Temp);
    Temp:=nil;

    SetLength(Temp,6);
    Index:=CurBuffHex(Data_Buff,Temp,Index,6);
    SNo:=String(Temp);
    Temp:=nil;

    SetLength(Temp,2);
    Index:=CurBuffHex(Data_Buff,Temp,Index,2);
    JYCount:=HexToInt(Temp,2);
    Temp:=nil;
    for i:=1 to JYCount do
    begin
      DM.SALE_ADOQ.Append;
      DM.SALE_ADOQ.FieldByName('ITEM_CARNO').AsString:=Combobox1.Text; //车号
      DM.SALE_ADOQ.FieldByName('ITEM_BZ').AsString:=Combobox2.Text;  //班组
      DM.SALE_ADOQ.FieldByName('ITEM_DATE').AsDateTime:=DATE();
      DM.SALE_ADOQ.FieldByName('ITEM_BS').AsString:='可用';
      DM.SALE_ADOQ.FieldByName('ITEM_SJDM').AsString:=DataCode; //数据代码
      DM.SALE_ADOQ.FieldByName('ITEM_CSJNO').AsString:=SNo; //收银机号
      DM.SALE_ADOQ.FieldByName('ITEM_JYNUM').AsInteger:=JYCount; //交易数量
      SetLength(Temp,6);
      Index:=CurBuffHex(Data_Buff,Temp,Index,6);
      LSNO:=String(Temp);
      DM.SALE_ADOQ.FieldByName('ITEM_LSNO').AsString:=LSNO; //流水号

      SetLength(Temp,6);
      Index:=CurBuffHex(Data_Buff,Temp,Index,6);
      ChPCode:=String(Temp);
      DM.SALE_ADOQ.FieldByName('ITEM_NO').AsString:=ChPCode; //产品编号
      Temp:=nil;

      SetLength(Temp,2);
      Index:=CurBuffHex(Data_Buff,Temp,Index,2);
      Price:=HexToInt(Temp,2);
      Price:=MyRound(Price/100,2);
      DM.SALE_ADOQ.FieldByName('ITEM_PRICE').AsCurrency:=Price; //产品单价
      Temp:=nil;

      SetLength(Temp,2);
      Index:=CurBuffHex(Data_Buff,Temp,Index,2);
      Count:=HexToInt(Temp,2);
      DM.SALE_ADOQ.FieldByName('ITEM_NUM').AsInteger:=Count; //产品数量
      Temp:=nil;

      SetLength(Temp,4);
      Index:=CurBuffHex(Data_Buff,Temp,Index,4);
      Fy:=HexToInt(Temp,4);
      Fy:=MyRound(Fy/100,2);
      DM.SALE_ADOQ.FieldByName('ITEM_MON').AsCurrency:=Fy;
      Temp:=nil;

      SetLength(Temp,12);
      Index:=CurBuffHex(Data_Buff,Temp,Index,12);
      Datetime:=String(Temp);
      Datetime:=copy(Datetime,1,4)+'-'+Copy(Datetime,5,2)+'-'+Copy(Datetime,7,2)+' '+Copy(Datetime,9,2)+':'+Copy(Datetime,11,2);
      DM.SALE_ADOQ.FieldByName('ITEM_TIME').AsDateTime:=strtodatetime(Datetime);
      Temp:=nil;

      SetLength(Temp,6);
      Index:=CurBuffHex(Data_Buff,Temp,Index,6);
      OP:=String(Temp);
      DM.SALE_ADOQ.FieldByName('ITEM_MEN').AsString:=OP;
      Temp:=nil;
      DM.SALE_ADOQ.Post;
    end;

    if Result=0 then
    begin
    csform.Close;
    SHowmessage('上传交易数据成功!');
    POS_Comm_End();
    end
    else
    begin
      ShowMessage('上传交易数据失败!');
      Exit;
    end;
    JSZTJ_FORM.Close;
end;

procedure TJSZTJ_Form.FormCreate(Sender: TObject);
begin
  with SCQry do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM LCBASE');
    Open;
  end;
  WHILE NOT scqry.Eof do
  begin
    Combobox1.Items.Add(SCQRY.FieldbyName('LC_CARNO').AsString);
    scqry.Next;
  end;
 { with SCQry do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM CLASS_ITEM');
    Open;
  end;
  while not SCQRY.Eof do
  begin
    Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
    scqry.Next;
  end; }
end;

procedure TJSZTJ_Form.ComboBox1Change(Sender: TObject);
var
  S:String;
begin
  Combobox2.Clear;
  S:='SELECT CLASS_NAME FROM CLASS_ITEM WHERE 2>1';
  if Combobox1.ItemIndex>=0 then
  begin
    S:=S+' and CLASS_MARKS='''+Combobox1.Text+'''';
    with SCQry do
    begin
      Close;
      SQL.Clear;
      SQL.Add(S);
      Open;
    end;
    While not SCQry.Eof do
    begin
      Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
      SCQry.Next;
    end;
  end
  else
  begin
    with SCQry do
    begin
      Close;
      SQL.Clear;
      SQL.Add(S);
      Open;
    end;
    While not SCQry.Eof do
    begin
      Combobox2.Items.Add(SCQRY.FieldByname('CLASS_NAME').AsString);
      SCQry.Next;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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