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

📄 untps_query.pas

📁 适合行业为眼镜业
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  ///写商品需求表;
  if dmmain.CDSquery.IsEmpty then
  begin
    Application.MessageBox('没有商品!',pchar(application.Title),mb_iconinformation);
    exit;
  end;
  try
    fb:=false;
   dmmain.CDSquery.DisableControls;  //
   temp:='select max(right(stock_no,4)) from goods_requirement where copy_date='+''''+formatdatetime('yyyy''-''mm''-''dd',date)+''''+' and part_no='+''''+trim(Handle_Part)+'''';
   make:='SQ-'+trim(Handle_Part);   //5-11 编码中用部门编号
   senddata.codes:=setcode(temp,make);
   senddata.copy_date:=formatdatetime('yyyy''-''mm''-''dd',date);
   senddata.part:=trim(Handle_Part);
   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;
  //////////////////////
  //dmmain.cdsquery.DisableControls;
  dmmain.CDSquery.First;
  GoodsNO:=tstringlist.Create;
  GoodsMoney:=tstringlist.Create;
  scomp:=false;
  for x:=0 to dmmain.CDSquery.RecordCount-1 do
  begin
    if (dmmain.cdsquery.FieldByName('saleamount').AsFloat< dmmain.cdsquery.FieldByName('totalamount').AsFloat)  then
    begin
      scomp:=false;
      IF GOODSMONEY.Count=0 THEN
      BEGIN
        GoodsNO.Add(trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString));
        GOODSMONEY.Add(floattostr(dmmain.cdsquery.FieldByName('totalamount').AsFloat-dmmain.CDSquery.Fieldbyname('stock_amount').AsFloat));
      END ELSE
      BEGIN
        FOR I:=0 TO GOODSNO.Count-1 DO
        BEGIN
          if trim(Goodsno.Strings[i])=trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString) then
          begin
            scomp:=true;
            GOODSMONEY.Strings[i] :=floattostr(strtoint(goodsmoney.Strings[i])+dmmain.cdsquery.FieldByName('totalamount').AsFloat);

          END;
        END;
        if not scomp then
        begin
          GoodsNO.Add(trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString));
          GOODSMONEY.Add(floattostr(dmmain.cdsquery.FieldByName('totalamount').AsFloat-dmmain.CDSquery.Fieldbyname('stock_amount').AsFloat));
        end;
      END;
    END;
    dmmain.CDSquery.Next;
 end;
 FOR I:=0 TO GOODSNO.Count-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(gOODSno.Strings[i]);  //商品编号
    dmmain.cdsGoods_Requirement_Detail.FieldByName('R_Amount').AsString:=Goodsmoney.Strings[i];  //需求数量
    dmmain.cdsGoods_Requirement_Detail.FieldByName('Remark').AsString:=trim('低于申请商品数量');    //需求说明
    dmmain.cdsGoods_Requirement_Detail.Post;
    fb:=true;
 END;
 try
   if fb then
   begin
     dmmain.cdsReceipt.ApplyUpdates(-1);
     dmmain.cdsGoods_Requirement.ApplyUpdates(-1);
     dmmain.cdsGoods_Requirement_Detail.ApplyUpdates(-1);
     application.MessageBox(pchar('缺货分析中库存数量不能满足申请商品数量生成[商品需求单],在业务草稿查看!'),pchar(application.Title),mb_iconwarning);
     dmmain.cdsquery.EnableControls;
     exit;
   end else
   begin
     dmmain.cdsReceipt.Cancel;
     dmmain.cdsGoods_Requirement.Cancel;
     dmmain.cdsGoods_Requirement_Detail.Cancel;
   end;
   dmmain.cdsquery.EnableControls;
   dbgrid2.Refresh;
   goodsno.Free;
   goodsno:=nil;
   goodsmoney.Free;
   goodsmoney:=nil;
 except
 end;
 except
  application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
  exit;
 end;

end;

procedure Tfmps_query.NgoodsClick(Sender: TObject);
var
  temp,make,billno:string;
  mdata,Ddata:olevariant;//主副表数据
 x,iEditMode,PsRst,i:integer;
 BookmarkList: TBookmarkList;
 TempBookmark: TBookmark;
 fb,Scomp:boolean;
   GoodsNO,GoodsMoney,GoodsType:tstringlist;
begin
  inherited;
  try
  fb:=false;
  temp:= 'Select * from GetGoodsPlanMaster where 1=2';
  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);
    dmmain.CDSquery.First;
    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;
      dmmain.cdsquery.DisableControls;
      GoodsNO:=tstringlist.Create;
      GoodsMoney:=tstringlist.Create;
      Goodstype:=tstringlist.Create;
      for x:=0 to dmmain.CDSquery.RecordCount-1 do
      begin
        if (dmmain.cdsquery.FieldByName('saleamount').AsFloat< dmmain.cdsquery.FieldByName('totalamount').AsFloat)  then
        begin
          scomp:=false;
          IF GOODSMONEY.Count=0 THEN
          BEGIN
            GoodsNO.Add(trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString));
            Goodstype.Add(Trim(dmmain.CDSquery.Fieldbyname('Norms_Type').AsString));
            GOODSMONEY.Add(floattostr(dmmain.cdsquery.FieldByName('totalamount').AsFloat-dmmain.CDSquery.Fieldbyname('stock_amount').AsFloat));
          END ELSE
          BEGIN
            FOR I:=0 TO GOODSNO.Count-1 DO
            BEGIN
              if trim(Goodsno.Strings[i])=trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString) then
              begin
                scomp:=true;
                GOODSMONEY.Strings[i] :=floattostr(strtoint(goodsmoney.Strings[i])+dmmain.cdsquery.FieldByName('totalamount').AsFloat);

              END;
            END;
            if not scomp then
            begin
              GoodsNO.Add(trim(dmmain.CDSquery.Fieldbyname('Goods_NO').AsString));
              Goodstype.Add(Trim(dmmain.CDSquery.Fieldbyname('norms_type').AsString));
              GOODSMONEY.Add(floattostr(dmmain.cdsquery.FieldByName('totalamount').AsFloat-dmmain.CDSquery.Fieldbyname('stock_amount').AsFloat));
            end;
          END;
        end;
        dmmain.CDSquery.Next;
      end;
      for i:=0 to goodsno.Count-1 do
      begin
        Append;
        FieldByName('VcGetGoodsPlanID').AsString := '';
        FieldByName('ord').asInteger := x;
        FieldByName('VCPtyieID').AsString := Trim(Goodsno.Strings[i]); //商品编号
        FieldByName('vcGoodUnitId').AsString := Trim(GoodsType.Strings[i]);
        FieldByName('NQty').asFloat :=strtofloat(goodsmoney.Strings[i]) ;
        FieldByName('NSendQty').asFloat := 0;
        FieldByName('NEndQty').asFloat := 0;
        FieldByName('IGetStatus').asFloat := 0;
        FieldByName('iUnit').asFloat := 0;
        FieldByName('NRate').asFloat := 0;
        fb:=true;
      end;
      goodsno.Free;
      goodsno:=nil;
      goodsmoney.Free;
      goodsmoney:=nil;
      goodstype.Free;
      goodstype:=nil;
      dmmain.cdsquery.EnableControls;
    end;
    PsRst := CdsDetailData.RecordCount;
     mdata:= CdsMasterData.Data;
     Ddata:=CdsDetailData.Data;
     if fb then
     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;
  except
     application.MessageBox('服务器发生故障!',pchar(application.Title),mb_iconwarning);
     exit;
  end;

end;

procedure Tfmps_query.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 Tfmps_query.DBGrid2TitleClick(Column: TColumn);
begin
  inherited;
  if (not dbgrid2.DataSource.DataSet.Active ) then exit;
  if trim(column.Field.AsString)='' then exit;
  sortgrid(column.Field.FieldName,dmmain.CDSquery,dbgrid2,column);
end;

procedure Tfmps_query.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dmmain.CDSquery.Data:=null;
  DMMAIN.CDSquery.Close;
  inherited;

end;

procedure Tfmps_query.BitBtn2Click(Sender: TObject);
begin
  inherited;
   with TfmSetColumn.Create(Self) do
  try
    showmodal;
  finally
    free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -