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;