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

📄 untlimitgoods.pas

📁 适合行业为眼镜业
💻 PAS
📖 第 1 页 / 共 2 页
字号:
   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 + -