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

📄 fm_check.pas

📁 适合行业为眼镜业
💻 PAS
字号:
unit fm_Check;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, fm_Base, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, Menus,
  ComCtrls;

type
  TfmCheck = class(TfmBase)
    Label1: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label2: TLabel;
    Panel2: TPanel;
    BtnClose: TBitBtn;
    Panel3: TPanel;
    Label9: TLabel;
    editbz: TEdit;
    editrq: TEdit;
    editbh: TEdit;
    editzdr: TEdit;
    sgorder: TStringGrid;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    BtnCheckAll: TBitBtn;
    BtnSave: TBitBtn;
    pd_tbegin: TDateTimePicker;
    Label5: TLabel;
    Label10: TLabel;
    pd_tend: TDateTimePicker;
    Bevel1: TBevel;
    Label11: TLabel;
    CmbG: TComboBox;
    Label12: TLabel;
    CmbC: TComboBox;
    BitBtn1: TBitBtn;
    procedure BtnCloseClick(Sender: TObject);
    procedure sgorderDblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure sgorderKeyPress(Sender: TObject; var Key: Char);
    procedure sgorderSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure BtnCheckAllClick(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure sgorderDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    pcol,prow:integer;
    cx_fl:integer;
    pdall_maxnumber:array of integer;
    procedure init;
  public
    { Public declarations }
    pd_maxnumber:integer;
    pd_mode:integer;  //盘点标志 1为营业中盘点 0为停业盘点
  end;

var
  fmCheck: TfmCheck;
//  shopid,operater:string;
implementation

uses  UntgoodCodeSelStr, func,untdatadm, Check_Query;

{$R *.dfm}

procedure Tfmcheck.init;
var
  i:integer;
  sql,marks,s_NewDate:string;
begin
  for i:=1 to sgorder.RowCount-1 do
    sgorder.Rows[i].Text:='';
  sgorder.RowCount:=2;
  editbz.Clear;
  s_newdate:=formatdatetime('yyyy''-''mm''-''dd',date);
  sql:='select max(right(C_Code,4)) from DP_check where C_NewDate='+''''+s_NewDate+''''+' and C_Shop='+''''+trim(Handle_Part)+'''';//5-11 用部门编号
  marks:='PDD-'+Handle_Part;
  editbh.Text:=setcode(sql,marks);
  editrq.Text:=s_newdate;
  editzdr.Text:=Handle_Man;
end;

/////////////////////自定义////////////////
procedure TfmCheck.BtnCloseClick(Sender: TObject);
begin
  inherited;
  close;
end;

procedure TfmCheck.sgorderDblClick(Sender: TObject);
begin
  inherited;
  if cx_fl=0 then
    if pcol in [1,2,3] then
    begin
     fmgoodCodeSelStr:= TfmgoodCodeSelStr.Create(nil);
     try
     fmgoodcodeselStr.show_mode:='3';
     fmgoodcodeselStr.ShowModal;
     finally
     fmgoodcodeselStr.Free;
     end;
   end;
end;

procedure TfmCheck.FormShow(Sender: TObject);
var
  t_sql :string;
begin
  inherited;
  cx_fl:=0;
  sgorder.Cells[1,0]:='商品编号';
  sgorder.Cells[2,0]:='商品名称';
  sgorder.Cells[3,0]:='商品单价';
  sgorder.Cells[4,0]:='盘点数量';
  sgorder.Cells[5,0]:='商品差额';
  sgorder.Cells[6,0]:='盘点标志';
  sgorder.Cells[7,0]:='';
  sgorder.ColWidths[7]:=-1;
  sgorder.ColWidths[0] := 20;
  sgorder.ColWidths[1] := 130;
  sgorder.ColWidths[2] := 190;
  t_sql:='select p_name from  [dp_person] where p_workid ='+''''+trim(Handle_Part)+'''';
  GetDataToComBoX(cmbg,t_sql,'p_Name');
  cmbg.ItemIndex := -1;
  cmbc.Items := cmbg.Items;
  init;
end;

procedure TfmCheck.sgorderKeyPress(Sender: TObject; var Key: Char);
var
  pd_fl:integer;
begin
  inherited;
  if not (key in ['0'..'9',#8]) then
  begin
    key:=#0;
    exit;
  end;
  if pcol=4 then     //录入盘点数量,进行实时统计
  begin
    if trim(sgorder.Cells[1,prow])<>'' then
    begin
      if key=#8 then
      begin
        sgorder.Cells[4,prow]:='';
        sgorder.Cells[5,prow]:='';
        sgorder.Cells[6,prow]:='';
      end
      else begin
        if cx_fl=0 then
        begin
          sgorder.Cells[4,prow]:=sgorder.Cells[4,prow]+key;
          try
            if trim(sgorder.Cells[4,prow])='' then exit;
            pd_fl:=strtoint(trim(sgorder.Cells[7,prow]))-strtoint(trim(sgorder.Cells[4,prow]));
            pd_fl:=pd_fl*-1;
            sgorder.Cells[5,prow]:=inttostr(pd_fl);
            if pd_fl<0 then sgorder.Cells[6,prow]:='盘亏'
            else if pd_fl>0 then sgorder.Cells[6,prow]:='盘赢'
              else sgorder.Cells[6,prow]:='盘平';
          except
            sgorder.Cells[5,prow]:='0';
            sgorder.Cells[5,prow]:='数据出错';
          end;
        end else
        begin
          sgorder.Cells[4,prow]:=sgorder.Cells[4,prow]+key;
          try
            if trim(sgorder.Cells[4,prow])='' then exit;
            pd_fl:=strtoint(trim(sgorder.Cells[7,prow]))-strtoint(trim(sgorder.Cells[4,prow])); //pdall_maxnumber[prow-1]
            pd_fl:=pd_fl*-1;
            sgorder.Cells[5,prow]:=inttostr(pd_fl);
            if pd_fl<0 then sgorder.Cells[6,prow]:='盘亏'
            else if pd_fl>0 then sgorder.Cells[6,prow]:='盘赢'
              else sgorder.Cells[6,prow]:='盘平';
          except
            sgorder.Cells[5,prow]:='0';
            sgorder.Cells[5,prow]:='数据出错';
          end;
        end;
      end;
    end;
  end;
end;

procedure TfmCheck.sgorderSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  inherited;
  pcol:=acol;
  prow:=arow;
end;

procedure TfmCheck.N1Click(Sender: TObject);
var
  rows:integer;
begin
  inherited;
  rows:=sgorder.RowCount-1;
  if (trim(sgorder.Cells[1,rows])<>'') and (trim(sgorder.Cells[4,rows])<>'') then
  begin
    sgorder.RowCount:=sgorder.RowCount+1;
    sgorder.Rows[sgorder.RowCount-1].Text:='';
  end;
end;

procedure TfmCheck.N2Click(Sender: TObject);
begin
  inherited;
  if trim(sgorder.Cells[1,1])='' then
  begin
    Application.MessageBox('没有记录可以删除!','提示信息',mb_iconwarning);
    exit;
  end;
  if Application.MessageBox('确实要删除记录吗?','提示信息',mb_iconquestion+mb_yesno)=idyes then
  begin
//    edttotals.Text:=floattostr(strtofloat(edttotals.Text)-strtofloat(sgorder.Cells[7,rows]));
    sgorder.RowCount:=sgorder.RowCount-1;
  end;
end;

procedure TfmCheck.BtnCheckAllClick(Sender: TObject);
var
  t_sql:widestring;
  fh_rs:olevariant;
  i:integer;
begin
  inherited;
 if application.MessageBox('将进行整个仓库的盘点,比较费时间,请确定!',pchar(application.Title),mb_iconinformation+mb_yesno)=idyes then
  begin

  cx_fl:=1;
  t_sql:='select Storage_NO,Goods_NO,Stock_amount,Goods_Name,singleprice from vSelectGoods where Storage_NO='+''''+trim(shopid)+'''';
  ipubtemp.ty_query(t_sql,fh_rs);
  if varisnull(fh_rs) then
  begin
    sgorder.RowCount:=2;
    sgorder.Rows[1].Text:='';
    application.MessageBox('无商品可盘!',pchar(application.Title),mb_iconinformation);
    exit;
  end else
  begin
    dmmain.DSquery.Data:=fh_rs;
    if not dmmain.DSquery.Active then dmmain.DSquery.Open;
    setlength(pdall_maxnumber,dmmain.DSquery.RecordCount);
    sgorder.RowCount:=dmmain.DSquery.RecordCount+1;
    for i:=1 to dmmain.DSquery.RecordCount do
    begin
       sgorder.Rows[i].Text:='';
       sgorder.Cells[1,i]:=trim(dmmain.DSquery.fieldbyname('goods_no').AsString);
       sgorder.Cells[2,i]:=trim(dmmain.DSquery.fieldbyname('goods_name').AsString);
       sgorder.Cells[3,i]:=trim(dmmain.DSquery.fieldbyname('singleprice').AsString);
       sgorder.Cells[7,i]:=trim(dmmain.DSquery.fieldbyname('stock_amount').AsString);
       pdall_maxnumber[i-1]:=dmmain.DSquery.fieldbyname('stock_amount').AsInteger;
       dmmain.DSquery.Next;
     end;
  end;
 end;
end;

procedure TfmCheck.BtnSaveClick(Sender: TObject);
var
  i:integer;
begin
  inherited;
  if (trim(cmbg.Text)='') or (trim(cmbc.text)='') then
  begin
    application.MessageBox('请选择经手人或审核人!',pchar(application.Title),mb_iconinformation);
    exit;
  end;
  if not dmmain.cDScheck.Active then dmmain.cDScheck.Open;
  dmmain.cDScheck.Append;
///经手人,审核人未保存
  dmmain.cDScheck.FieldByName('c_code').AsString:=trim(editbh.Text);  //单据编号
  dmmain.cDScheck.FieldByName('c_shop').AsString:=trim(Handle_Part);       //店面或部门id号
  dmmain.cDScheck.FieldByName('c_operater').AsString:= Handle_Man;  //trim(operater);
  dmmain.cDScheck.FieldByName('c_newdate').AsString:=trim(editrq.Text);  //录单日期
  dmmain.cDScheck.FieldByName('c_newman').AsString:=trim(editzdr.Text);  //制单人
  dmmain.cDScheck.FieldByName('c_remark').AsString:=trim(editbz.Text);  //备注
  dmmain.cDScheck.FieldByName('C_Auditer').AsString:=trim(cmbc.Text);  //审核人
  dmmain.cDScheck.FieldByName('C_Jinshou').AsString:=trim(cmbg.Text);  //经手人
  dmmain.cDScheck.FieldByName('c_state').AsString:='4';      //盘店状态
  dmmain.cDScheck.Post;
  if not dmmain.cDScheckdetail.Active then dmmain.cDScheckdetail.Open;
  for i:=1 to sgorder.RowCount-1 do
  begin
    dmmain.cDScheckdetail.Append;
    dmmain.cDScheckdetail.FieldByName('CD_CheckCode').AsString:=trim(editbh.Text);   //单据编号
    dmmain.cDScheckdetail.FieldByName('CD_CCount').AsString:=trim(sgorder.Cells[4,i]);  //盘点数量
    dmmain.cDScheckdetail.FieldByName('CD_cName').AsString:=trim(sgorder.Cells[2,i]);   //商品名称
    if sgorder.Cells[6,i]='盘赢' then dmmain.cDScheckdetail.FieldByName('CD_state').AsString:='1'   //盘点标志 
    else if sgorder.Cells[6,i]='盘亏' then dmmain.cDScheckdetail.FieldByName('CD_state').AsString:='2'
         else if sgorder.Cells[6,i]='盘平' then dmmain.cDScheckdetail.FieldByName('CD_state').AsString:='0'
              else dmmain.cDScheckdetail.FieldByName('CD_state').AsString:='3';
    dmmain.cDScheckdetail.FieldByName('CD_Amount').AsString:=sgorder.Cells[5,i];    //商品差额
    dmmain.cDScheckdetail.FieldByName('CD_cCode').AsString:=sgorder.Cells[1,i];   //商品编号
    dmmain.cDScheckdetail.Post;
  end;
  try
    dmmain.cDScheck.ApplyUpdates(-1);
    dmmain.cDScheckdetail.ApplyUpdates(-1);
    init;
  except
    savefromdata(dmmain.cDScheck,'reports/check');
    savefromdata(dmmain.cDScheckdetail,'reports/check');
    application.MessageBox('服务器终止服务!',pchar(application.Title),mb_iconwarning);
    exit;
  end;
  if pd_mode=1 then  //营业中盘点
  begin

  end;


end;

procedure TfmCheck.sgorderDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  s:string;
  r:TRect;
begin
  inherited;
//ydy add 设置显示颜色
 with Sender as Tstringgrid do
        begin
        if gdSelected in State then
        Canvas.Brush.Color:= clTeal; //clyellow;//clRed;
        Canvas.TextRect(Rect,Rect.Left,Rect.Top,' '+Cells[ACol,ARow]);
        if gdFocused in State then
        Canvas.DrawFocusRect(Rect);
        end;

//不但水平居中,还垂直居中
with Sender as Tstringgrid do
    begin
      Canvas.FillRect(Rect);
      s:=Cells[ACol,ARow];
      r:=Rect;
      DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
    end;

end;

procedure TfmCheck.BitBtn1Click(Sender: TObject);
begin
  inherited;
  frmcheck_query:=Tfrmcheck_query.Create(self);
  try
    frmcheck_query.ShowModal;
  except
    showmessage('窗口打开失败!');
  end;
end;

procedure TfmCheck.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dmmain.cDScheck.Close;
  dmmain.cDScheck.Data:=null;
  dmmain.cDScheckdetail.Close;
  dmmain.cDScheckdetail.Data:=null;
  inherited;

end;

end.

⌨️ 快捷键说明

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