检查库存的过程代码: CheckOut_KC_Input
DataSetSC_DETAIL_DS.DisableControls;
try
DataSetSC_DETAIL_DS.First ;
while not DataSetSC_DETAIL_DS.Eof do
begin
if WSL.TWSL.IsKC_UpZero then //检查库存
begin
kcDS.Data:=WSL.TWSL.GetSingleStockOutQty(
DataSetSC_MAIN_DS.Connection,
bill_id,
DataSetSC_DETAIL_DS.FieldByName('material_id').asString,
DataSetSC_MAIN_DS.FieldByName('src_store_id').AsString,
DataSetSC_DETAIL_DS.FieldByName('provider_id').asString);
if kcDS.IsEmpty then raise exception.Create('内部错误:获得物料库存信息失败!');
if kcDS.RecordCount<>1 then raise exception.Create('内部错误:物料库存信息不唯一!');
if kcDS.FieldByName('curstock').AsFloat <DataSetSC_DETAIL_DS.FieldByName('qty').AsFloat then
begin
jsDialogs.ShowError('库存数量不足! 当前物料号: '+DataSetSC_DETAIL_DS.FieldByName('CODE').asString+' 当前可用库存:'+SysUtils.FloatToStr(kcDS.FieldByName('curstock').AsFloat ),'系统提示');
exit;
end;
if DataSetSC_DETAIL_DS.FieldByName('src_stock_id').AsString<>kcDS.FieldByName('id').AsString then
begin
DataSetSC_DETAIL_DS.Edit;
DataSetSC_DETAIL_DS.FieldByName('src_stock_id').AsString :=kcDS.FieldByName('id').AsString ;
DataSetSC_DETAIL_DS.Post ;
end;
DataSetSC_DETAIL_DS.Next ;
end;
ReSult:=true;
finally
DataSetSC_DETAIL_DS.EnableControls;
kcDS.Free;
end; |