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

📄 inv610_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
  inherited;
  if trim(edtCount.Text)='' then
  begin
    ShowMsg('UMS10000449');  //盘点单号不能为空
    edtCount.SetFocus;
    Abort;
  end;
  if AOldCount<>edtCount.Text then
  begin
    if not qryInv600.Locate('I600A_001',edtCount.Text,[]) then
    begin
      ShowMsg('UMS10000450');  //无效的盘点单号,请重新输入
      edtCount.SetFocus;
      Abort;
    end;
  end;
  if trim(edtFromDate.Text)='' then
  begin
    ShowMsg('UMS10000155');  //开始日期不能为空
    edtFromDate.SetFocus;
    Abort;
  end;
  if trim(edtToDate.Text)='' then
  begin
    ShowMsg('UMS10000451');  //结束日期不能为空
    edtToDate.SetFocus;
    Abort;
  end;
  if edtFromDate.Date>edtToDate.Date then
  begin
    ShowMsg('UMS10000452');  //结束日期不能小于开始日期
    edtToDate.SetFocus;
    Abort;
  end;
  if trim(edtPerson.Text)='' then
  begin
    ShowMsg('UMS10000453');  //盘点人员不能为空
    edtPerson.SetFocus;
    Abort;
  end;
  //盘点人員不能重復
  for I:=0 to ANoStrList.Count-1 do
  begin
    S:=ANoStrList[I];
    for J:=I+1 to ANoStrList.Count-1 do
    begin
      if S=ANoStrList[J] then
      begin
        ShowMsg('UMS10000456');  //盘点人员不能重复
        edtPerson.SetFocus;
        Abort;
      end;
    end;
  end;
  if adsInv610B.IsEmpty then
  begin
    ShowMsg('UMS10000505');  //盘点汇报数据不能为空
    wwDBGrid1.SetFocus;
    Abort;
  end;

  UpdateCountFlag(edtCode.Text,False);
  qryInv610B.Close;
  qryInv610B.SQL.Clear;
  qryInv610B.SQL.Add('delete from INV610B where I610B_001='+''''+edtCode.Text+'''');
  qryInv610B.ExecSQL;
  //反写料品资料表中的盘点日期字段
  UpdateLastDate('INV600',edtCount.Text);
  if AMode='ADD' then
  begin
    ADOQuery1.Insert;
    ADOQuery1.FieldByName('I610A_010').AsString:=edtCreateDate.Text;  //制单日期
    ADOQuery1.FieldByName('I610A_011').AsString:=edtCreateBy.Text;  //制单人员
    ADOQuery1.FieldByName('I610A_012').AsString:=edtUpdateDate.Text;  //修改日期
    ADOQuery1.FieldByName('I610A_013').AsString:=edtUpdateBy.Text;  //修改人员
  end else
  begin
    ADate:=GetServerDate;
    ADOQuery1.Edit;
    ADOQuery1.FieldByName('I610A_012').Value:=ADate;  //修改日期
    ADOQuery1.FieldByName('I610A_013').Value:=AUserName;  //修改人员
  end;
  ADOQuery1.FieldByName('I610A_002').Value:=edtCount.Text;  //
  ADOQuery1.FieldByName('I610A_003').Value:=edtFromDate.Date;  //
  ADOQuery1.FieldByName('I610A_004').Value:=edtToDate.Date;  //
  ADOQuery1.FieldByName('I610A_005').Value:=GetPerson(ANoStrList,1);  //
  ADOQuery1.FieldByName('I610A_006').Value:=GetPerson(ACodeStrList,0);  //
  ADOQuery1.FieldByName('I610A_007').Value:=GetPerson(ANameStrList,0);  //
  if edtCheckDate.Text<>'' then ADOQuery1.FieldByName('I610A_008').Value:=edtCheckDate.Date;  //
  if edtChecker.Text<>'' then ADOQuery1.FieldByName('I610A_009').Value:=edtChecker.Text;  //
  ADOQuery1.FieldByName('I610A_014').Value:=memRemark.Text;  //
end;

procedure TInv610_02Form.sbCountClick(Sender: TObject);
begin
  inherited;
//盘点单号
  if not edtCount.Focused then edtCount.SetFocus;
  qryInv600.Close;
  qryInv600.Open;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv600,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtCount.Text:=qryInv600.FieldByName('I600A_001').AsString;
    edtCountName.Text:=qryInv600.FieldByName('I600A_002').AsString;
  end;
end;

procedure TInv610_02Form.edtCountExit(Sender: TObject);
begin
  inherited;
//盘点单号
  if trim(edtCount.Text)='' then Exit;
  if qryInv600.Locate('I600A_001',edtCount.Text,[]) then
  begin
    edtCount.Text:=qryInv600.FieldByName('I600A_001').AsString;
    edtCountName.Text:=qryInv600.FieldByName('I600A_002').AsString;
  end else
  begin
    edtCount.Text:='';
    edtCountName.Text:='';
    ShowMsg('UMS10000450');  //无效的盘点单号,请重新输入
    edtCount.SetFocus;
    Abort;
  end;
end;

procedure TInv610_02Form.Action1Execute(Sender: TObject);
begin
  inherited;
//审核
  Inv610_03Form:=TInv610_03Form.Create(Application);
  Inv610_03Form.OpenData(ADOQuery1I610A_001.AsString);
  Inv610_03Form.ShowModal;
end;

procedure TInv610_02Form.edtItemIDCustomDlg(Sender: TObject);
begin
  inherited;
//盘点卡号
  if not qryInv600.Locate('I600A_001',edtCount.Text,[]) then
  begin
    ShowMsg('UMS10000454');  //必须先输入正确的盘点单号
    edtCount.SetFocus;
    Abort;
  end;
  if not edtItemID.Focused then edtItemID.SetFocus;
  HwSelDataAForm:=THwSelDataAForm.Create(Application);
  HwSelDataAForm.OpenData('INV600',0,0,14,edtCount.Text);
  //HwSelDataAForm.OpenData('INV600',edtCount.Text);
  if HwSelDataAForm.ShowModal=1 then
  begin
    adsInv610B.Last;
    with HwSelDataAForm do
    begin
      adsInv150.First;
      while not adsInv150.Eof do
      begin
        if adsInv150.FieldByName('FSel').Value=-1 then
        begin
          adsInv610B.Append;
          adsInv610B.FieldByName('FNo').Value:=adsInv150.FieldByName('FNo').AsString;
          adsInv610B.FieldByName('FItemID').AsString:=adsInv150.FieldByName('FItemID').AsString;
          adsInv610B.FieldByName('FItemName').AsString:=adsInv150.FieldByName('FItemName').AsString;
          adsInv610B.FieldByName('FItemSpec').Value:=adsInv150.FieldByName('FItemSpec').Value;
          adsInv610B.FieldByName('FUnitName').AsString:=adsInv150.FieldByName('FUnitName').AsString;
          adsInv610B.FieldByName('FLocID').Value:=adsInv150.FieldByName('FLocID').Value;
          adsInv610B.FieldByName('FLocName').Value:=adsInv150.FieldByName('FLocName').Value;
          adsInv610B.FieldByName('FQty').Value:=adsInv150.FieldByName('FQty').Value;
          adsInv610B.FieldByName('FCount').Value:=0;
          adsInv610B.FieldByName('FBanlance').Value:=0;
          adsInv610B.Post;
        end;
        adsInv150.Next;
      end;
    end;
  end;
end;

procedure TInv610_02Form.wwDBGrid1Enter(Sender: TObject);
begin
  inherited;
  OnKeyDown:=nil;
end;

procedure TInv610_02Form.wwDBGrid1Exit(Sender: TObject);
begin
  inherited;
  OnKeyDown:=AKeyEvent;
end;

procedure TInv610_02Form.pmInv610BPopup(Sender: TObject);
begin
  inherited;
  mmiAdd.Enabled:=ActSave.Enabled;
  mmiEdit.Enabled:=ActSave.Enabled;
  mmiDel.Enabled:=ActSave.Enabled;
end;

//设置盘点人员的显示数据(使用保存格式)
procedure TInv610_02Form.SetPersonByEmpNo(APersonNo:string);
var
  I:Integer;
  S:String;
begin
  if APersonNo='' then Exit;
  ANoStrList.Clear;
  ACodeStrList.Clear;
  ANameStrList.Clear;
  for I:=1 to Length(APersonNo) do
  begin
    if Copy(APersonNo,I,1)='[' then
      S:=''
    else if Copy(APersonNo,I,1)=']' then
    begin
      ANoStrList.Add(trim(S));
      S:='';
    end else
      S:=S+Copy(APersonNo,I,1);
  end;
  for I:=0 to ANoStrList.Count-1 do
  begin
    if ANoStrList[I]<>'' then
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('select H150_002,H150_003 from HRM150 where H150_001='+ANoStrList[I]);
      SYSDM.qryQuery.Open;
      ACodeStrList.Add(SYSDM.qryQuery.FieldByName('H150_002').AsString);
      ANameStrList.Add(SYSDM.qryQuery.FieldByName('H150_003').AsString);
    end;
  end;
end;

//设置盘点人员的显示数据(使用编辑格式)
procedure TInv610_02Form.SetPersonByEmpID(APersonID:string);
var
  I:Integer;
  S:String;
begin
  if APersonID='' then Exit;
  ANoStrList.Clear;
  ACodeStrList.Clear;
  ANameStrList.Clear;
  for I:=1 to Length(APersonID) do
  begin
    if Copy(APersonID,I,1)=',' then
    begin
      ACodeStrList.Add(trim(S));
      S:='';
    end else
      S:=S+Copy(APersonID,I,1);
    if I=Length(APersonID) then ACodeStrList.Add(trim(S));
  end;
  for I:=0 to ACodeStrList.Count-1 do
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select H150_001,H150_002,H150_003 from HRM150 where H150_002='+''''+ACodeStrList[I]+'''');
    SYSDM.qryQuery.Open;
    ANoStrList.Add(SYSDM.qryQuery.FieldByName('H150_001').AsString);
    ANameStrList.Add(SYSDM.qryQuery.FieldByName('H150_003').AsString);
  end;
end;

procedure TInv610_02Form.sbPersonClick(Sender: TObject);
begin
  inherited;
//盘点人员
  if not edtPerson.Focused then edtPerson.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryHrm150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    if trim(edtPerson.Text)='' then
      edtPerson.Text:=qryHrm150.FieldByName('H150_002').AsString
    else
      edtPerson.Text:=trim(edtPerson.Text)+','+qryHrm150.FieldByName('H150_002').AsString;
    SetPersonByEmpID(edtPerson.Text);  //设置执行人员数据
  end;
end;

procedure TInv610_02Form.edtPersonEnter(Sender: TObject);
begin
  inherited;
  edtPerson.Text:=GetPerson(ACodeStrList);   //显示执行人员编号
end;

procedure TInv610_02Form.edtPersonExit(Sender: TObject);
begin
  inherited;
//盘点人员
  if trim(edtPerson.Text)='' then Exit;
  //检查输入的盘点人员是否合法(用编辑格式)
  if CheckPerson(edtPerson.Text) then
  begin
    SetPersonByEmpID(edtPerson.Text);  //设置盘点人员数据
    edtPerson.Text:=GetPerson(ANameStrList);   //显示盘点人员名称
  end else
  begin
    ShowMsg('UMS10000457');  //输入的盘点人员无效,请重新输入
    if gbInfo.Enabled then edtPerson.SetFocus;
    Abort;
  end;
end;

procedure TInv610_02Form.DeleteEvent;
var
  ACode,APlanCode:string;
begin
  if ADOQuery1I610A_008.AsString<>'' then
  begin
    ShowMsg('UMS10000448');  //不允许删除已审核的盘点汇报单
    Abort;
  end;
  ACode:=ADOQuery1I610A_001.AsString;
  APlanCode:=ADOQuery1I610A_002.AsString;
  UpdateCountFlag(ACode,False);
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete from INV610B where I610B_001='+''''+ACode+'''');
  SYSDM.qryQuery.ExecSQL;
  DeleteTableRecord(ADOQuery1,'INV610A','I610A_001='+''''+ACode+'''');
  UpdateLastDate('INV600',APlanCode);
end;

procedure TInv610_02Form.InsertEvent;
begin
  edtCode.Text:='';
  edtCount.Text:='';
  edtCountName.Text:='';
  edtFromDate.Date:=GetServerDate;
  edtToDate.Date:=edtFromDate.Date;
  edtPerson.Text:='';
  edtCheckDate.Clear;
  edtChecker.Text:='';
  memRemark.Text:='';
  ALastNo:=0;
  adsInv610B.Close;
  adsInv610B.CreateDataSet;
  ANoStrList.Clear;
  ANameStrList.Clear;
  ACodeStrList.Clear;
end;

procedure TInv610_02Form.UpdateEvent;
begin
  if ADOQuery1I610A_008.AsString<>'' then
  begin
    ShowMsg('UMS10000447');  //不允许修改已审核的盘点汇报单
    Abort;
  end;
  SetPersonByEmpNo(ADOQuery1.FieldByName('I610A_005').AsString);  //设置盘点员的显示数据
end;

procedure TInv610_02Form.wwDBGrid1FieldChanged(Sender: TObject;
  Field: TField);
begin
  inherited;
  if not ActSave.Enabled then Exit;
  if Field.FieldName='FCount' then
  begin
    adsInv610BFBanlance.AsFloat:=adsInv610BFCount.AsFloat-adsInv610BFQty.AsFloat;
  end;
end;

initialization
  RegisterClass(TInv610_02Form);

finalization
  UnRegisterClass(TInv610_02Form);

end.

⌨️ 快捷键说明

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