📄 inv500_02.pas.svn-base
字号:
begin
ShowMsg('UMS10000445'); //必须先输入正确的仓库编号
edtWhs.SetFocus;
Abort;
end;
AWhsNo:=qryInv100.FieldByName('I100_001').AsInteger;
ACustNo:=0;
if edtCust.Enabled then
begin
ADataSet:=qryOrd150;
case cbObjTyp.ItemIndex of
1:ADataSet:=qryOrd150;
2:ADataSet:=qryHrm150;
3:ADataSet:=qryHrm100;
end;
if not ADataSet.Locate('FCode',edtCust.Text,[]) then
begin
ShowMsg('UMS10000610'); //输入的对象编号无效
edtCust.SetFocus;
Abort;
end;
ACustNo:=qryOrd150.FieldByName('FNo').AsInteger;
end;
qryInv550.Locate('I550_003',cbType.Text,[]);
ATypeNo:=qryInv550.FieldByName('I550_001').AsInteger;
//影响类型(0=期初数量,1=入库数量,2=出库数量,3=调整数量,4=库存转仓)
AInOut:=qryInv550.FieldByName('I550_004').AsInteger;
//相关单据(0=手工输入,1=采购定单,2=销售定单,3=车间定单,4=出入仓单)
AOrder:=qryInv550.FieldByName('I550_005').AsInteger;
case AOrder of
0:if AInOut=2 then AType:='INV501' else AType:='INV150'; //0=手工输入
1:AType:='PUR510'; //1=采购定单
2:AType:='ORD510'; //2=销售定单
3:AType:='SFC500'; //3=车间定单
4:AType:='INV500'; //4=出入仓单
end;
HwSelDataAForm:=THwSelDataAForm.Create(Application);
HwSelDataAForm.OpenData(AType,AWhsNo,ACustNo,ATypeNo);
if HwSelDataAForm.ShowModal=1 then
begin
ABusy:=True;
adsInv500B.Last;
with HwSelDataAForm do
begin
adsInv150.DisableControls;
adsInv150.First;
while adsInv150.Locate('FSel',-1,[]) do
begin
adsInv500B.Append;
adsInv500B.FieldByName('FItemNo').Value:=adsInv150.FieldByName('FItemNo').AsInteger;
adsInv500B.FieldByName('FItemID').Value:=adsInv150.FieldByName('FItemID').AsString;
adsInv500B.FieldByName('FItemName').Value:=adsInv150.FieldByName('FItemName').AsString;
adsInv500B.FieldByName('FItemSpec').Value:=adsInv150.FieldByName('FItemSpec').AsString;
adsInv500B.FieldByName('FUnitNo').Value:=adsInv150.FieldByName('FUnitNo').AsInteger;
adsInv500B.FieldByName('FUnitID').Value:=adsInv150.FieldByName('FUnitID').AsString;
adsInv500B.FieldByName('FUnitName').Value:=adsInv150.FieldByName('FUnitName').AsString;
if adsInv150.FindField('FUnitRate')<>nil then
adsInv500B.FieldByName('FUnitRate').Value:=adsInv150.FieldByName('FUnitRate').AsString;
if adsInv150.FindField('FLocID')<>nil then
begin
adsInv500B.FieldByName('FLocNo').Value:=adsInv150.FieldByName('FLocNo').AsInteger;
adsInv500B.FieldByName('FLocID').Value:=adsInv150.FieldByName('FLocID').AsString;
adsInv500B.FieldByName('FLocName').Value:=adsInv150.FieldByName('FLocName').AsString;
end;
adsInv500B.FieldByName('FQty').Value:=1;
adsInv500B.FieldByName('FOrdQty').Value:=0;
if AType<>'INV150' then
begin
adsInv500B.FieldByName('FPrice').Value:=adsInv150.FieldByName('FPrice').AsFloat;
adsInv500B.FieldByName('FAmount').Value:=adsInv150.FieldByName('FPrice').AsFloat;
end;
if AOrder<>0 then //0=手工输入
begin
AQty:=0;
//采购定单、销售定单、借出借入退货时,应收发数量=已收发数量
case AOrder of
0:AQty:=0; //0=手工输入
1: //1=采购定单
begin
case AInOut of
1:AQty:=adsInv150.FieldByName('FBanlance').AsFloat;
2:AQty:=adsInv150.FieldByName('FFinish').AsFloat;
end;
end;
2: //2=销售定单
begin
case AInOut of
1:AQty:=adsInv150.FieldByName('FFinish').AsFloat;
2:AQty:=adsInv150.FieldByName('FBanlance').AsFloat;
end;
end;
3: //3=车间定单
begin
case AInOut of
1:AQty:=adsInv150.FieldByName('FBanlance').AsFloat;
2:AQty:=adsInv150.FieldByName('FFinish').AsFloat;
end;
end;
4: //4=出入仓单
begin
case AInOut of
1:AQty:=adsInv150.FieldByName('FBanlance').AsFloat;
2:AQty:=adsInv150.FieldByName('FFinish').AsFloat;
end;
end;
end;
adsInv500B.FieldByName('FOrdQty').Value:=AQty;
adsInv500B.FieldByName('FFromOrder').Value:=adsInv150.FieldByName('FCode').AsString; //来源单号
adsInv500B.FieldByName('FFromLine').Value:=adsInv150.FieldByName('FNo').AsInteger; //来源行号
end;
adsInv500B.Post;
adsInv150.Edit;
adsInv150.FieldByName('FSel').Value:=0;
adsInv150.Post;
end;
adsInv150.EnableControls;
end;
ABusy:=False;
end;
end;
procedure TInv500_02Form.edtLocCustomDlg(Sender: TObject);
begin
inherited;
//库位编号
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryInv110,nil);
if HwSelDataForm.ShowModal=1 then
begin
if qryInv110.IsEmpty then Exit;
if not (adsInv500B.State in [dsInsert,dsEdit]) then
if adsInv500B.IsEmpty then adsInv500B.Append else adsInv500B.Edit;
adsInv500B.FieldByName('FLocNo').Value:=qryInv110.FieldByName('I110_001').AsInteger;
adsInv500B.FieldByName('FLocID').Value:=qryInv110.FieldByName('I110_003').AsString;
adsInv500B.FieldByName('FLocName').Value:=qryInv110.FieldByName('I110_004').AsString;
end;
end;
procedure TInv500_02Form.edtUnitCustomDlg(Sender: TObject);
begin
inherited;
//计量单位
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryInv140,nil);
if HwSelDataForm.ShowModal=1 then
begin
if qryInv140.IsEmpty then Exit;
if not (adsInv500B.State in [dsInsert,dsEdit]) then
if adsInv500B.IsEmpty then adsInv500B.Append else adsInv500B.Edit;
adsInv500B.FieldByName('FUnitNo').Value:=qryInv140.FieldByName('I140_001').AsInteger;
adsInv500B.FieldByName('FUnitID').Value:=qryInv140.FieldByName('I140_002').AsString;
adsInv500B.FieldByName('FUnitName').Value:=qryInv140.FieldByName('I140_003').AsString;
end;
end;
procedure TInv500_02Form.ADOQuery1I500A_016GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if ADOQuery1.IsEmpty then Exit;
if Sender.AsBoolean then Text:=APost[1] else Text:=APost[0];
end;
procedure TInv500_02Form.adsInv500BNewRecord(DataSet: TDataSet);
begin
inherited;
ALastNo:=ALastNo+1;
adsInv500BFNo.Value:=ALastNo;
adsInv500BFUnitRate.Value:=1;
adsInv500BFQty.Value:=1;
adsInv500BFPrice.Value:=0;
adsInv500BFAmount.Value:=0;
end;
procedure TInv500_02Form.wwDBGrid1Exit(Sender: TObject);
begin
inherited;
OnKeyDown:=AKeyEvent;
end;
procedure TInv500_02Form.wwDBGrid1Enter(Sender: TObject);
begin
inherited;
OnKeyDown:=nil;
end;
procedure TInv500_02Form.adsInv500BBeforePost(DataSet: TDataSet);
begin
inherited;
//数据有效性检验
CheckItem;
CheckUnit;
CheckLoc;
CheckQty;
end;
procedure TInv500_02Form.wwDBGrid1ColExit(Sender: TObject);
begin
inherited;
//数据有效性检验
if wwDBGrid1.GetActiveField.FieldName='FItemID' then
begin
CheckItem;
end else
if wwDBGrid1.GetActiveField.FieldName='FUnitID' then
begin
CheckUnit;
end else
if wwDBGrid1.GetActiveField.FieldName='FLocID' then
begin
CheckLoc;
end else
if wwDBGrid1.GetActiveField.FieldName='FQty' then
begin
CheckQty;
end;
end;
procedure TInv500_02Form.CheckItem;
begin
if not ActSave.Enabled then Exit;
if not (adsInv500B.State in [dsInsert,dsEdit]) then adsInv500B.Edit;
if qryInv150.Locate('I150_002',adsInv500BFItemID.Value,[]) then
begin
adsInv500BFItemNo.AsInteger:=qryInv150.FieldByName('I150_001').AsInteger;
adsInv500BFItemID.AsString:=qryInv150.FieldByName('I150_002').AsString;
adsInv500BFItemName.AsString:=qryInv150.FieldByName('I150_003').AsString;
adsInv500BFItemSpec.AsString:=qryInv150.FieldByName('I150_004').AsString;
adsInv500BFUnitNo.AsInteger:=qryInv150.FieldByName('I140_001').AsInteger;
adsInv500BFUnitID.AsString:=qryInv150.FieldByName('I140_002').AsString;
adsInv500BFUnitName.AsString:=qryInv150.FieldByName('I140_003').AsString;
end else
begin
ShowMsg('UMS10000267'); //输入的产品编号无效
wwDBGrid1.SetActiveField('FItemID');
Abort;
end;
end;
procedure TInv500_02Form.CheckUnit;
begin
if not ActSave.Enabled then Exit;
if not qryInv150.Locate('I150_002',adsInv500BFItemID.Value,[]) then
begin
ShowMsg('UMS10000422'); //必须先输入正确的产品编号
wwDBGrid1.SetActiveField('FItemID');
Abort;
end;
if not (adsInv500B.State in [dsInsert,dsEdit]) then adsInv500B.Edit;
if qryInv140.Locate('I140_002',adsInv500BFUnitID.AsString,[]) then
begin
adsInv500BFUnitNo.AsInteger:=qryInv140.FieldByName('I140_001').AsInteger;
adsInv500BFUnitID.AsString:=qryInv140.FieldByName('I140_002').AsString;
adsInv500BFUnitName.AsString:=qryInv140.FieldByName('I140_003').AsString;
end else
begin
ShowMsg('UMS10000411'); //输入的计量单位无效
wwDBGrid1.SetActiveField('FUnitID');
Abort;
end;
end;
procedure TInv500_02Form.CheckLoc;
begin
if not ActSave.Enabled then Exit;
if ABusy then Exit;
if qryInv110.IsEmpty then
begin
if not (adsInv500B.State in [dsInsert,dsEdit]) then adsInv500B.Edit;
adsInv500BFLocNo.AsString:='';
adsInv500BFLocID.AsString:='';
adsInv500BFLocName.AsString:='';
Exit;
end;
if not (adsInv500B.State in [dsInsert,dsEdit]) then adsInv500B.Edit;
if qryInv110.Locate('I110_003',adsInv500BFLocID.AsString,[]) then
begin
adsInv500BFLocNo.AsInteger:=qryInv110.FieldByName('I110_001').AsInteger;
adsInv500BFLocID.AsString:=qryInv110.FieldByName('I110_003').AsString;
adsInv500BFLocName.AsString:=qryInv110.FieldByName('I110_004').AsString;
end else
begin
ShowMsg('UMS10000625'); //输入的库位编号无效
wwDBGrid1.SetActiveField('FLocID');
Abort;
end;
end;
procedure TInv500_02Form.CheckQty;
begin
if not ActSave.Enabled then Exit;
if adsInv500B.FieldByName('FOrdQty').AsFloat=0 then Exit;
if adsInv500B.FieldByName('FOrdQty').AsFloat<adsInv500B.FieldByName('FQty').AsFloat then
begin
ShowMsg('UMS10000626'); //输入的进出数量不能大于应收发量
wwDBGrid1.SetActiveField('FQty');
Abort;
end;
end;
procedure TInv500_02Form.ActPrintExecute(Sender: TObject);
begin
SYSDM.frDBDataSet2.DataSet:=adsInv500B;
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -