📄 untlimitgoods.pas
字号:
senddata.Transactor:=trim(Handle_Man);
senddata.storage:=trim(shopid);
senddata.Condense:='部门:'+trim(Handle_Part)+'低于库存下限的商品中生成商品需求';
senddata.R_Remark:='从低于库存下限的商品中生成商品需求';
senddata.shop:=trim(shopid);
dmmain.cdsGoods_Requirement.Close;
dmmain.cdsGoods_Requirement.Open;
dmmain.cdsGoods_Requirement.Append;
dmmain.cdsGoods_Requirement.FieldByName('Copy_Date').AsString:=senddata.copy_date; //录单日期
dmmain.cdsGoods_Requirement.FieldByName('Stock_NO').AsString:=senddata.codes; //单据编号
dmmain.cdsGoods_Requirement.FieldByName('Storage_NO').AsString:=senddata.storage; //仓库编号
dmmain.cdsGoods_Requirement.FieldByName('Shop_NO').AsString:=senddata.shop; //店面名称
dmmain.cdsGoods_Requirement.FieldByName('Transactor').AsString:=senddata.Transactor; //经手人
dmmain.cdsGoods_Requirement.FieldByName('Proposer').AsString:=senddata.Transactor; //制单人
dmmain.cdsGoods_Requirement.FieldByName('Condense').AsString:=senddata.Condense; //摘要
dmmain.cdsGoods_Requirement.FieldByName('R_Remark').AsString:=senddata.R_Remark; //说明
dmmain.cdsGoods_Requirement.FieldByName('Part_no').AsString:=Handle_Part; //部门编号
dmmain.cdsGoods_Requirement.Post;
/////草稿
dmmain.cdsReceipt.Close;
dmmain.cdsReceipt.Open;
dmmain.cdsReceipt.Append;
dmmain.cdsReceipt.FieldByName('Receipt_NO').AsString:=senddata.codes;
dmmain.cdsReceipt.FieldByName('Receipt_Name').AsString:='商品需求单';
dmmain.cdsReceipt.FieldByName('Copy_Date').AsString:=senddata.copy_date;
dmmain.cdsReceipt.FieldByName('Proposer').AsString:=senddata.Transactor;
dmmain.cdsReceipt.FieldByName('Condense').AsString:=senddata.Condense;
dmmain.cdsReceipt.FieldByName('Check_Result').Asinteger:=0;
dmmain.cdsReceipt.FieldByName('Flag_Sign').AsString:='草稿';
dmmain.cdsReceipt.FieldByName('Re_Part').AsString:=Handle_Part;
dmmain.cdsReceipt.Post;
/////////////明细
dmmain.cdsGoods_Requirement_Detail.Close;
dmmain.cdsGoods_Requirement_Detail.Open;
//////////////////////
with DBgrid1.SelectedRows do
if Count > 0 then
begin
TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;
for x:= 0 to Count - 1 do
begin
if IndexOf(Items[x]) > -1 then
begin
DBGrid1.Datasource.Dataset.Bookmark:= Items[x];
//得到选定的数据
dmmain.cdsGoods_Requirement_Detail.Append;
dmmain.cdsGoods_Requirement_Detail.FieldByName('Stock_NO').AsString:=senddata.codes; //单据编号
dmmain.cdsGoods_Requirement_Detail.FieldByName('Goods_NO').AsString:=trim(DBGrid1.Datasource.Dataset.Fieldbyname('Goods_NO').AsString); //商品编号
if DBGrid1.Datasource.Dataset.Fieldbyname('UP_amount').AsFloat>0 then
begin
if DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat<0 then
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr((-DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat)-1); //需求数量 (上限)
end else
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr(DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat-1); //需求数量 (上限)
end;
end else
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr(1-DBGrid1.Datasource.Dataset.Fieldbyname('enteramount').AsFloat); //需求数量(下限)
end;
dmmain.cdsGoods_Requirement_Detail.FieldByName('Remark').AsString:=trim('低于库存下限'); //需求说明
dmmain.cdsGoods_Requirement_Detail.Post;
///////////////////////////////
end;
end;
DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);
DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);
end else
begin
//dmmain.cdsquery.DisableControls;
dmmain.CDSquery.First;
for x:=0 to dmmain.CDSquery.RecordCount-1 do
begin
dmmain.cdsGoods_Requirement_Detail.Append;
dmmain.cdsGoods_Requirement_Detail.FieldByName('Stock_NO').AsString:=senddata.codes; //单据编号
dmmain.cdsGoods_Requirement_Detail.FieldByName('Goods_NO').AsString:=trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString); //商品编号
if dmmain.CDSquery.Fieldbyname('UP_amount').AsFloat>0 then
begin
if dmmain.CDSquery.Fieldbyname('overflow').AsFloat<0 then
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr((-dmmain.CDSquery.Fieldbyname('overflow').AsFloat)-1); //需求数量 (上限)
end else
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr(dmmain.CDSquery.Fieldbyname('overflow').AsFloat-1); //需求数量 (上限)
end;
end else
begin
dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=floattostr(1-dmmain.CDSquery.Fieldbyname('enteramount').AsFloat); //需求数量(下限)
end;
dmmain.cdsGoods_Requirement_Detail.FieldByName('Remark').AsString:=trim('低于库存下限'); //需求说明
dmmain.cdsGoods_Requirement_Detail.Post;
dmmain.CDSquery.Next;
end;
dmmain.cdsquery.EnableControls;
try
dmmain.cdsReceipt.ApplyUpdates(-1);
dmmain.cdsGoods_Requirement.ApplyUpdates(-1);
dmmain.cdsGoods_Requirement_Detail.ApplyUpdates(-1);
application.MessageBox('从库存下限自动生成[商品需求单],在业务草稿查看!',pchar(application.Title),mb_iconwarning);
exit;
except
end;
end;
except
application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
exit;
end;
end;
procedure Tfmlimitgoods.NbatchClick(Sender: TObject);
var
temp,make,billno:string;
mdata,Ddata:olevariant;//主副表数据
x,iEditMode,PsRst:integer;
BookmarkList: TBookmarkList;
TempBookmark: TBookmark;
begin
inherited;
try
temp:= 'Select * from GetGoodsPlanMaster where 1=2';
CdsMasterData.Close;
CdsMasterData.Data:=null;
CdsMasterData.Data:=adisp.PubBatch(temp);
CdsMasterData.Open;
temp:='Select * from GetGoodsPlan where 1=2';
CdsDetailData.Close;
CdsDetailData.Data:=null;
CdsDetailData.Data:=adisp.PubBatch(temp);
CdsDetailData.Open;
except
application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
exit;
end;
if dmmain.CDSquery.IsEmpty then
begin
Application.MessageBox('没有商品!',pchar(application.Title),mb_iconinformation);
exit;
end;
try
temp:='select max(right(VcBillNo,4)) from GetGoodsPlanMaster where DGetDate='+''''+formatdatetime('yyyy''-''mm''-''dd',date)+''''+' and VCOfficeID='+''''+trim(Handle_Part)+'''';
make:='PSQ-'+trim(Handle_Part)+trim(handle_no); //编码中部门编号
billno:=setcode(temp,make);
with CdsMasterData do
begin
EmptyDataSet;
Append;
FieldByName('VcGetGoodsPlanID').AsString :='';
FieldByName('VcBillNo').AsString :=trim(BillNo);
FieldByName('VCOfficeID').AsString :=trim(Handle_Part);
FieldByName('iBilltype').asinteger := 501;
FieldByName('VcStockID').AsString := trim(managerid);
FieldByName('DGetDate').asDateTime := date;
FieldByName('VcEID').AsString := Handle_Man;
FieldByName('vcCheckE').AsString := Handle_Man;
FieldByName('Memo').AsString := '仓库 '+trim(shopid)+' 库存下限生成配送单';
FieldByName('IPlanStatus').Asinteger := 0;
end;
with CdsDetailData do
begin
EmptyDataSet;
with DBgrid1.SelectedRows do
if Count > 0 then
begin
TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;
for x:= 0 to Count - 1 do
begin
if IndexOf(Items[x]) > -1 then
begin
Append;
FieldByName('VcGetGoodsPlanID').AsString := '';
FieldByName('ord').asInteger := x;
FieldByName('VCPtyieID').AsString := Trim(DBGrid1.Datasource.Dataset.Fieldbyname('Goods_NO').AsString); //商品编号
FieldByName('vcGoodUnitId').AsString := Trim(DBGrid1.Datasource.Dataset.Fieldbyname('norms_type').AsString);
if DBGrid1.Datasource.Dataset.Fieldbyname('UP_amount').AsFloat>0 then
begin
if DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat<0 then
begin
FieldByName('NQty').AsString:=floattostr((-DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat)-1); //需求数量 (上限)
end else
begin
FieldByName('NQty').AsString:=floattostr(DBGrid1.Datasource.Dataset.Fieldbyname('overflow').AsFloat-1); //需求数量 (上限)
end;
end else
begin
FieldByName('NQty').AsString:=floattostr(1-DBGrid1.Datasource.Dataset.Fieldbyname('enteramount').AsFloat); //需求数量(下限)
end;
//FieldByName('NQty').asFloat := (1-DBGrid1.Datasource.Dataset.Fieldbyname('enteramount').AsFloat);
FieldByName('NSendQty').asFloat := 0;
FieldByName('NEndQty').asFloat := 0;
FieldByName('IGetStatus').asFloat := 0;
FieldByName('iUnit').asFloat := 0;
FieldByName('NRate').asFloat := 0;
end;
end;
DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);
DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);
end else
begin
dmmain.cdsquery.DisableControls;
dmmain.CDSquery.First;
for x:=0 to dmmain.CDSquery.RecordCount-1 do
begin
Append;
FieldByName('VcGetGoodsPlanID').AsString := '';
FieldByName('ord').asInteger := x;
FieldByName('VCPtyieID').AsString := Trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString); //商品编号
FieldByName('vcGoodUnitId').AsString := Trim(dmmain.CDSquery.Fieldbyname('norms_type').AsString);
if dmmain.CDSquery.Fieldbyname('UP_amount').AsFloat>0 then
begin
if dmmain.CDSquery.Fieldbyname('overflow').AsFloat<0 then
begin
FieldByName('NQty').AsString:=floattostr((-dmmain.CDSquery.Fieldbyname('overflow').AsFloat)-1); //需求数量 (上限)
end else
begin
FieldByName('NQty').AsString:=floattostr(dmmain.CDSquery.Fieldbyname('overflow').AsFloat-1); //需求数量 (上限)
end;
end else
begin
FieldByName('NQty').AsString:=floattostr(1-dmmain.CDSquery.Fieldbyname('enteramount').AsFloat); //需求数量(下限)
end;
//FieldByName('NQty').asFloat := (1-dmmain.CDSquery.Fieldbyname('enteramount').AsFloat);
FieldByName('NSendQty').asFloat := 0;
FieldByName('NEndQty').asFloat := 0;
FieldByName('IGetStatus').asFloat := 0;
FieldByName('iUnit').asFloat := 0;
FieldByName('NRate').asFloat := 0;
post;
dmmain.CDSquery.Next;
end;
dmmain.cdsquery.EnableControls;
end;
PsRst := CdsDetailData.RecordCount;
mdata:= CdsMasterData.Data;
Ddata:=CdsDetailData.Data;
adisp.InsertGetPlan(mdata,dData,iEditMode, PsRst);
if PsRst <> 0 then
begin
application.MessageBox('保存失败!',pchar(application.Title),mb_iconwarning);
exit;
end else
begin
application.MessageBox('从库存下限自动生成[配送单]!',pchar(application.Title),mb_iconinformation);
exit;
end;
end;
except
application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
exit;
end;
end;
procedure Tfmlimitgoods.DBGrid1TitleClick(Column: TColumn);
begin
inherited;
if (not dbgrid1.DataSource.DataSet.Active ) then exit;
if trim(column.Field.AsString)='' then exit;
sortgrid(column.Field.FieldName,dmmain.CDSquery,dbgrid1,column);
end;
procedure Tfmlimitgoods.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DMMAIN.CDSquery.Close;
dmmain.CDSquery.Data:=null;
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -