📄 inv610_02.pas.svn-base
字号:
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 + -