易飞ERP进货单源码——复制报价单


procedure TfrmCopi08.CopyFromCOPTA; //复制报价单
var
  mData, mOutPutMaster, mOutPutDetail, mReturn: Variant;
  i: Integer;
  mTH008: Double;
begin
  try
    FIsCopyPrior := True;

    with TdmCopi08(DM) do
    begin
      if not Brain.QueryData('COPTA', '05', Vararrayof([F001002[1], F001002[2]]), mOutPutMaster) then
        Exit;
      if (VarisEmpty(mOutPutMaster)) or (VarisNull(mOutPutMaster)) or (not VarIsArray(mOutPutMaster)) then
        Exit;

      mData := mOutPutMaster[0]; //fetch
      //复制单头
      cdsMain.DisableControls;  //20110303 Add By ZhengSy(601503) for Z303-11030300001
      SetFieldValue(cdsMainTG004, mData[3]); //客户编号
      SetFieldValue(cdsMainTG005, mData[27]); //部门
      SetFieldValue(cdsMainTG006, mData[4]); //业务员
     // SetFieldValue(cdsMainTG007, mData[5]); //客户全称 20061219 mark by 34266
      SetFieldValue(cdsMainTG008, mData[28]); //送货地址(一)
      SetFieldValue(cdsMainTG009, mData[33]); //送货地址(二)
      SetFieldValue(cdsMainTG011, mData[6]); //币种

      SetFieldValue(cdsMainTG017, mData[21]); //税种
      SetFieldValue(cdsMainTG022, '0'); //打印次数
      SetFieldValue(cdsMainTG023, 'N'); //审核码
      SetFieldValue(cdsMainTG024, 'N'); //更新码
      SetFieldValue(cdsMainTG027, mData[19]); //备注一  (COP.TA020)
      SetFieldValue(cdsMainTG026, mData[44]); //收款业务员
      //SetFieldValue(cdsMainTG075, mData[51]); //项目编号 //20110411 ADD by jinxl(90013)   FOR Z10-11031500001 //20120710 mark by ligx(600683) for B00-120702001 
      SetFieldValue(cdsMainTG028, mData[20]); //备注二  (COP.TA021)
      //SetFieldValue(cdsMainTG030, 'N'); //发票作废 20061219 mark by 34266
      SetFieldValue(cdsMainTG031, 'N'); //烟酒注记
      SetFieldValue(cdsMainTG032, '0'); //件数
     // SetFieldValue(cdsMainTG034, 'N'); //现销 20061219 mark by 34266
     // SetFieldValue(cdsMainTG036, 'N'); //生成分录(收入) 20061219 mark by 34266
      SetFieldValue(cdsMainTG036, 'N'); //生成分录(收入) //20080911 add by chenkx for B32-080910004
      SetFieldValue(cdsMainTG037, 'N'); //生成分录(成本)
     // SetFieldValue(cdsMainTG038, Copy(cdsMainTG042.asString, 1, 6)); 20061219 mark by 34266 
      SetFieldValue(cdsMainTG039, ''); //L/CNO.
      SetFieldValue(cdsMainTG040, ''); //INVOICE_NO
     // SetFieldValue(cdsMainTG041, '0'); //发票打印 20061219 mark by 34266
      // SetFieldValue(cdsMainTG044, mData[23] * 100); //增值税率   //mark by caichuang 20031024
      if cdsMainMQI01C.AsString = 'N' then  //20111012 ADD by jinxlb(602057) for Z30-11091600001
        SetFieldValue(cdsMainTG047, mData[10]); //付款条件
     // SetFieldValue(cdsMainTG061, mData[45]); //随货附发票  //900611 add by 0960 20061219 mark by 34266
      //20041119 add by 33577 zhangfeng begin
      try
        SetFieldValue(cdsMainTG044, FloatToStr(StrToFloat(F001002[3]) * 100)); //增值税率
      except
      end;
      //20041119 add by 33577 zhangfeng end
      SetFieldValue(cdsMainTG074, 'N'); //超限放行  //20070330 ADD BY 39045
      CopyUDFFields('COPI08','F04',VarArrayOf([F001002[1],F001002[2]]),cdsMain);  //20110216 Add By LiLing2 for Z303-11021500001
      cdsMain.EnableControls;   //20110303 Add By ZhengSy(601503) for Z303-11030300001
      
      //复制单身
      if not Brain.QueryData('COPTB', '03', Vararrayof([F001002[1], F001002[2],
        cdsMainTG042.asString, cdsMainTG042.asString, F001002[3]  //20041119 add by 33577 zhangfeng
        //cdsMainTG042.asString, cdsMainTG042.asString, cdsMainTG044.asfloat //add cdsMainTG044.asfloat(税率) by caichuang 20031024 //20041119 mark by 33577 zhangfeng
        ]), mOutPutDetail) then
        Exit;

      if (VarisEmpty(mOutPutDetail)) or (VarisNull(mOutPutDetail)) or
        (not VarIsArray(mOutPutDetail)) then
        Exit;

      try
        cdsBody1.DisableControls;
        for i := 0 to VarArrayHighBound(mOutPutDetail, 1) do
        begin
          mData := mOutPutDetail[i]; //fetch

          cdsBody1.Append;
          // 如自己给单号会有Bug
          SetFieldValue(cdsBody1TH004, mData[3]); //品号
          SetFieldValue(cdsBody1TH004C1, mData[21]); //品号
          SetFieldValue(cdsBody1TH004C2, mData[23]); //售价控制
          SetFieldValue(cdsBody1TH004C3, mData[24]); //单价下限率
          SetFieldValue(cdsBody1TH004C4, mData[25]); //超交管理
          SetFieldValue(cdsBody1TH004C5, mData[26]); //超交率
          SetFieldValue(cdsBody1TH004C6, mData[28]); //定重

          SetFieldValue(cdsBody1TH004C, mData[19]); //更改品名规格
          SetFieldValue(cdsBody1TH017C, mData[20]); //批号管理
          SetFieldValue(cdsBody1TH005, mData[4]); //品名
          SetFieldValue(cdsBody1TH006, mData[5]); //规格
          SetFieldValue(cdsBody1TH008, mData[6]); //数量
          SetFieldValue(cdsBody1TH009, mData[7]); // 单位
          SetFieldValue(cdsBody1TH010, '0'); // 库存数量
          SetFieldValue(cdsBody1TH011, mData[13]); //  小单位
          SetFieldValue(cdsBody1TH012, mData[8]); // 单价
//          if (cdsBody1TH017C.asString = 'Y') or          //20050104 mark by 29641 weili
//            (cdsBody1TH017C.asString = 'T') then //批号管理 //20050104 mark by 29641 weili
            SetFieldValue(cdsBody1TH017, '********************'); //批号
          SetFieldValue(cdsBody1TH019, mData[22]); //客户品号
          //SetFieldValue(cdsBody1TH030, mData[30]); //项目编号 //20110411 ADD by jinxl(90013)   FOR Z10-11031500001 //20120710 mark by ligx(600683) for B00-120702001 
          SetFieldValue(cdsBody1TC012C, ''); //客户单号  //20090402 ADD by zhouliu(46628) for Z10-09030900001
          SetFieldValue(cdsBody1TH020, 'N'); //审核码
          SetFieldValue(cdsBody1TH021, 'N'); //更新码
          SetFieldValue(cdsBody1TH024, mData[14]); //赠品量
          SetFieldValue(cdsBody1TH025, '100'); //  折扣率
          SetFieldValue(cdsBody1TH026, 'N'); //结账码
          SetFieldValue(cdsBody1TH031, '1'); //类型
          SetFieldValue(cdsBody1TH042, '0'); //已结账数量20020719 ADD
          FTH008 := cdsBody1TH008.asFloat;
          FTH024 := cdsBody1TH024.asFloat;
          SetFieldValue(cdsBody1TH018, mData[11]); //备注

          if GetCheckData(cdsBody1TH004, 'CMSMC', '02', VarArrayOf([cdsMainTG010.AsString, //工厂
            mData[17]]), mReturn) then //主要仓库
          begin
            SetFieldValue(cdsBody1TH007, mReturn[2]); //主要仓库
            SetFieldValue(cdsBody1TH007C, mReturn[1]); //仓库名称
          end
          else if GetCheckData(cdsBody1TH004, 'CMSMC', '06', cdsMainTG010.AsString, mReturn) then
          begin
            SetFieldValue(cdsBody1TH007, mReturn[1]); //主要仓库
            SetFieldValue(cdsBody1TH007C, mReturn[2]); //仓库名称
          end;

          if (Brain.GetKeyValue('SYS024') = '2') and
            (cdsBody1TH008.asFloat <> cdsBody1TH008.asInteger) then
            mTH008 := Brain.GetCounter('QtyDTos', VarArrayof([
              cdsBody1TH004.AsString, //品号
              cdsBody1TH008.AsFloat, 0, //数量
              cdsBody1TH009.AsString, //单位
              cdsBody1TH009.AsString])) //单位
          else
            mTH008 := cdsBody1TH008.AsFloat;
          //20040303 mark by 29641(weili)
          //cdsBody1TH013.Text := FloatToStr(mTH008 * cdsBody1TH012.asFloat * cdsBody1TH025.AsFloat); //金额=数量*单价*折扣率
          //20040303 add by 29641(weili)
          SetFieldValue(cdsBody1TH013, FloatToStr(mTH008 * cdsBody1TH012.asFloat * cdsBody1TH025.AsFloat)); //金额=数量*单价*折扣率
          {//900105 ADD ↓
           总包装数量   (TG054)=SUM(单身包装数量(TH039)+赠/备品包装量(TH040))
           包装单位     (TH041)=INV.MB090
           IF CMS.MA024='3'(制造双单位)
              包装数量(TH039)=取得Counter.UnitConvert回传值
                              传入品号(TH004)、数量(TH008)、单位(TH009)、包装单位(TH041)
              赠/备品包装量(TH040)=取得Counter.UnitConvert回传值
                                   传入品号(TH004),赠/备品量(TH024),单位(TH009),包装单位(TH041)
           ELSE
              包装数量(TH039)=0
              赠/备品包装量(TH040)=0
           ENDI
           //900105 ADD}

          if (Brain.GetKeyValue('SYS024') = '3') then
          begin
            SetFieldValue(cdsBody1TH041, mData[27]); //包装单位
            if (Brain.GetKeyValue('SYS024') = '3') and (cdsBody1TH004C6.AsString = 'Y') then
            begin
              mReturn := Brain.GetCounter('UnitConvert', Vararrayof([
                cdsBody1TH004.AsString, cdsBody1TH008.asFloat,
                  cdsBody1TH009.asString, cdsBody1TH041.asString, '']));
              SetFieldValue(cdsBody1TH039, mReturn[0]);
              mReturn := Brain.GetCounter('UnitConvert', Vararrayof([
                cdsBody1TH004.AsString, cdsBody1TH024.asFloat,
                  cdsBody1TH009.asString, cdsBody1TH041.asString, '']));
              SetFieldValue(cdsBody1TH040, mReturn[0]);
            end;
          end;

          //add by 28978 20030328 begin
          SetFieldValue(cdsBody1TH043, '0'); //件装
          SetFieldValue(cdsBody1TH044, '0'); //件数
          SetFieldValue(cdsBody1TH048, mData[29] * 100); //税率         //20030718 289829(shiliang) for P00-03070011 mReturn-->mData
          //add by 28978 20030328 end;

          DoMyTax;
          CopyUDFFields('COPI08','F04D',VarArrayOf([mData[0],mData[1],mData[2]]),cdsBody1);  //20110216 Add By LiLing2 for Z303-11021500001
          cdsBody1.Post;
        end; //end of for i:=.....
      finally
        cdsBody1.EnableControls;
        CheckFTH004;
      end;
      //20011109 A04-901106001 调整税差
      if cdsMain.State in [dsInsert, dsEdit] then
        cdsMain.Post;
      if cdsBody1.State in [dsInsert, dsEdit] then
        cdsBody1.Post;
      //CheckMainBodyTax;//20070426 mark by 35334 qianyl 
    end;
  finally
    FIsCopyPrior := False; //复制前置单据结束!
  end;
end;

相关文章:

  • 2021-11-24
  • 2021-11-29
  • 2021-11-20
  • 2021-06-12
  • 2021-12-05
  • 2021-10-18
  • 2021-09-27
  • 2022-12-23
猜你喜欢
  • 2021-04-23
  • 2022-01-21
  • 2021-12-02
  • 2022-01-07
  • 2021-07-09
  • 2021-11-11
  • 2022-12-23
相关资源
相似解决方案