rmWeiWuZjjlGatherDm.pas 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. unit rmWeiWuZjjlGatherDm;
  2. interface
  3. uses
  4. SysUtils, Classes, ProjectData, DB, sdDB, DBClient, sdIDTree, BillsTree;
  5. type
  6. TZjjl = class
  7. private
  8. FCode: string;
  9. FCertificateCode: string;
  10. FBGLCode: string;
  11. FPegName: string;
  12. FBeginPeg: string;
  13. FEndPeg: string;
  14. FFBFXName: string;
  15. FUnitName: string;
  16. FDrawingCode: string;
  17. FFormulaMemo: string;
  18. FRelaFile: string;
  19. FBillsCode: string;
  20. FBillsName: string;
  21. FBillsUnits: string;
  22. FBillsPrice: Double;
  23. FFilterDrawingCode: string;
  24. FBillsCurDealQuantity: Double;
  25. FBillsCurDealTotalPrice: Double;
  26. FBillsCurQcQuantity: Double;
  27. FBillsCurQcTotalPrice: Double;
  28. FBillsCurGatherQuantity: Double;
  29. FBillsCurGatherTotalPrice: Double;
  30. FBillsEndDealQuantity: Double;
  31. FBillsEndDealTotalPrice: Double;
  32. FBillsEndQcQuantity: Double;
  33. FBillsEndQcTotalPrice: Double;
  34. FBillsEndGatherQuantity: Double;
  35. FBillsEndGatherTotalPrice: Double;
  36. FBillsOrgQuantity: Double;
  37. FBillsOrgTotalPrice: Double;
  38. FBillsMisQuantity: Double;
  39. FBillsMisTotalPrice: Double;
  40. FBillsOthQuantity: Double;
  41. FBillsOthTotalPrice: Double;
  42. FBillsQuantity: Double;
  43. FBillsTotalPrice: Double;
  44. FFenBuName: string;
  45. FDanWeiName: string;
  46. FIndexCode: string;
  47. FSerialNo: Integer;
  48. function MergeStr(AStr1, AStr2: string): string;
  49. public
  50. constructor Create(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  51. procedure Merge(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  52. end;
  53. TrmWeiWuZjjlGatherData = class(TDataModule)
  54. cdsZjjl: TClientDataSet;
  55. cdsZjjlCode: TWideStringField;
  56. cdsZjjlCertificateCode: TWideStringField;
  57. cdsZjjlBGLCode: TMemoField;
  58. cdsZjjlPegName: TWideStringField;
  59. cdsZjjlBeginPeg: TWideStringField;
  60. cdsZjjlEndPeg: TWideStringField;
  61. cdsZjjlFBFXName: TWideStringField;
  62. cdsZjjlUnitName: TWideStringField;
  63. cdsZjjlDrawingCode: TWideStringField;
  64. cdsZjjlFormulaMemo: TMemoField;
  65. cdsZjjlRelaFile: TMemoField;
  66. cdsZjjlBillsCode: TStringField;
  67. cdsZjjlBillsName: TWideStringField;
  68. cdsZjjlBillsUnits: TWideStringField;
  69. cdsZjjlBillsPrice: TFloatField;
  70. cdsZjjlFilterDrawingCode: TWideStringField;
  71. cdsZjjlBillsCurDealQuantity: TFloatField;
  72. cdsZjjlBillsCurDealTotalPrice: TFloatField;
  73. cdsZjjlBillsCurQcQuantity: TFloatField;
  74. cdsZjjlBillsCurQcTotalPrice: TFloatField;
  75. cdsZjjlBillsCurGatherQuantity: TFloatField;
  76. cdsZjjlBillsCurGatherTotalPrice: TFloatField;
  77. cdsZjjlBillsEndDealQuantity: TFloatField;
  78. cdsZjjlBillsEndDealTotalPrice: TFloatField;
  79. cdsZjjlBillsEndQcQuantity: TFloatField;
  80. cdsZjjlBillsEndQcTotalPrice: TFloatField;
  81. cdsZjjlBillsEndGatherQuantity: TFloatField;
  82. cdsZjjlBillsEndGatherTotalPrice: TFloatField;
  83. cdsZjjlBillsOrgQuantity: TFloatField;
  84. cdsZjjlBillsOrgTotalPrice: TFloatField;
  85. cdsZjjlBillsMisQuantity: TFloatField;
  86. cdsZjjlBillsMisTotalPrice: TFloatField;
  87. cdsZjjlBillsOthQuantity: TFloatField;
  88. cdsZjjlBillsOthTotalPrice: TFloatField;
  89. cdsZjjlBillsQuantity: TFloatField;
  90. cdsZjjlBillsTotalPrice: TFloatField;
  91. cdsZjjlFenBuName: TWideStringField;
  92. cdsZjjlDanWeiName: TWideStringField;
  93. cdsZjjlProjectName: TWideStringField;
  94. cdsZjjlDealCode: TWideStringField;
  95. cdsZjjlCName: TWideStringField;
  96. cdsZjjlSName: TWideStringField;
  97. cdsZjjlPhaseIndex: TWideStringField;
  98. cdsZjjlDealName: TWideStringField;
  99. cdsZjjlFlowIndex: TIntegerField;
  100. private
  101. FZjjlList: TList;
  102. FPreText: string;
  103. FPhaseIndex: Integer;
  104. function FindZjjl(ARec: TsdDataRecord; ANode: TBillsIDTreeNode): TZjjl;
  105. procedure GatherZjjl(AProjectData: TProjectData);
  106. procedure WriteData(AProjectData: TProjectData);
  107. public
  108. function AssignData(AProjectData: TProjectData): TDataSet;
  109. end;
  110. implementation
  111. uses
  112. ZhAPI, PhaseData, UtilMethods, BillsMeasureDm;
  113. {$R *.dfm}
  114. function GetThirdPartString(const AStr: string; AFilter: Char = '-'): string;
  115. var
  116. sgs: TStringList;
  117. begin
  118. sgs := TStringList.Create;
  119. try
  120. sgs.Delimiter := AFilter;
  121. sgs.DelimitedText := AStr;
  122. while sgs.Count > 3 do
  123. sgs.Delete(sgs.Count - 1);
  124. Result := sgs.DelimitedText;
  125. finally
  126. sgs.Free;
  127. end;
  128. end;
  129. function GetLeafXmj(ANode: TBillsIDTreeNode): TBillsIDTreeNode;
  130. begin
  131. Result := ANode;
  132. while Assigned(Result) and (Result.Rec.B_Code.AsString <> '') do
  133. Result := TBillsIDTreeNode(Result.Parent);
  134. end;
  135. function GetLeafXmjDrawingCode(ANode: TBillsIDTreeNode): String;
  136. var
  137. vLeafXmj: TsdIDTreeNode;
  138. begin
  139. Result := '';
  140. vLeafXmj := GetLeafXmj(ANode);
  141. if Assigned(vLeafXmj) then
  142. Result := vLeafXmj.Rec.ValueByName('DrawingCode').AsString;
  143. end;
  144. { TZjjl }
  145. constructor TZjjl.Create(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  146. // 取树结构的第ALevel层节点的名称(level从0开始)
  147. function GetNameByLevel(ANode: TBillsIDTreeNode; ALevel: Integer): string;
  148. begin
  149. Result := '';
  150. if not Assigned(ANode) then Exit;
  151. if ANode.Level = ALevel then
  152. Result := ANode.Rec.Name.AsString
  153. else if ANode.Level > ALevel then
  154. Result := GetNameByLevel(TBillsIDTreeNode(ANode.Parent), ALevel);
  155. end;
  156. function GetNameDanWei(ANode: TBillsIDTreeNode): string;
  157. begin
  158. // 取树结构的第二层节点的名称
  159. Result := GetNameByLevel(ANode, 1);
  160. end;
  161. // ANode为计量单元节点,APegNode为桩号节点
  162. function GetNameFenBu(ANode, APegNode: TBillsIDTreeNode): string;
  163. var
  164. vCurNode: TBillsIDTreeNode;
  165. begin
  166. // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
  167. if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
  168. // 取树结构的第三层节点的名称
  169. Result := GetNameByLevel(ANode, 2)
  170. // 否则,取桩号节点的子节点的名称
  171. else
  172. begin
  173. vCurNode := ANode;
  174. while vCurNode.Level > APegNode.Level + 1 do
  175. vCurNode := TBillsIDTreeNode(vCurNode.Parent);
  176. Result := vCurNode.Rec.Name.AsString;
  177. end;
  178. end;
  179. function GetPegNode(ANode: TBillsIDTreeNode): TBillsIDTreeNode;
  180. begin
  181. Result := nil;
  182. if not Assigned(ANode) then Exit;
  183. if CheckPeg(ANode.Rec.Name.AsString) then
  184. Result := ANode
  185. else
  186. Result := GetPegNode(TBillsIDTreeNode(ANode.Parent));
  187. end;
  188. var
  189. vLeafXmj, vPegNode: TBillsIDTreeNode;
  190. begin
  191. FCode := ARec.ValueByName('Code').AsString;
  192. FCertificateCode := ARec.ValueByName('CertificateCode').AsString;
  193. FBGLCode := ARec.ValueByName('BGLCode').AsString;
  194. FPegName := ARec.ValueByName('PegName').AsString;
  195. FBeginPeg := ARec.ValueByName('BeginPeg').AsString;
  196. FEndPeg := ARec.ValueByName('EndPeg').AsString;
  197. FFBFXName := ARec.ValueByName('FBFXName').AsString;
  198. FUnitName := ARec.ValueByName('UnitName').AsString;
  199. FDrawingCode := ARec.ValueByName('DrawingCode').AsString;
  200. FFormulaMemo := ARec.ValueByName('FormulaMemo').AsString;
  201. FRelaFile := ARec.ValueByName('RelaFile').AsString;
  202. FBillsCode := ANode.Rec.ValueByName('B_Code').AsString;
  203. FBillsName := ANode.Rec.ValueByName('Name').AsString;
  204. FBillsUnits := ANode.Rec.ValueByName('Units').AsString;
  205. FBillsPrice := ANode.Rec.ValueByName('Price').AsFloat;
  206. FFilterDrawingCode := GetThirdPartString(GetLeafXmjDrawingCode(ANode));
  207. if Assigned(AStageRec) then
  208. begin
  209. FBillsCurDealQuantity := AStageRec.ValueByName('DealQuantity').AsFloat;
  210. FBillsCurDealTotalPrice := AStageRec.ValueByName('DealTotalPrice').AsFloat;
  211. FBillsCurQcQuantity := AStageRec.ValueByName('QcQuantity').AsFloat;
  212. FBillsCurQcTotalPrice := AStageRec.ValueByName('QcTotalPrice').AsFloat;
  213. FBillsCurGatherQuantity := AStageRec.ValueByName('GatherQuantity').AsFloat;
  214. FBillsCurGatherTotalPrice := AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  215. FBillsEndDealQuantity := AStageRec.ValueByName('DealQuantity').AsFloat;
  216. FBillsEndDealTotalPrice := AStageRec.ValueByName('DealTotalPrice').AsFloat;
  217. FBillsEndQcQuantity := AStageRec.ValueByName('QcQuantity').AsFloat;
  218. FBillsEndQcTotalPrice := AStageRec.ValueByName('QcTotalPrice').AsFloat;
  219. FBillsEndGatherQuantity := AStageRec.ValueByName('GatherQuantity').AsFloat;
  220. FBillsEndGatherTotalPrice := AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  221. end;
  222. FBillsOrgQuantity := ANode.Rec.OrgQuantity.AsFloat;
  223. FBillsOrgTotalPrice := ANode.Rec.OrgTotalPrice.AsFloat;
  224. FBillsMisQuantity := ANode.Rec.MisQuantity.AsFloat;
  225. FBillsMisTotalPrice := ANode.Rec.MisTotalPrice.AsFloat;
  226. FBillsOthQuantity := ANode.Rec.OthQuantity.AsFloat;
  227. FBillsOthTotalPrice := ANode.Rec.OthTotalPrice.AsFloat;
  228. FBillsQuantity := ANode.Rec.Quantity.AsFloat;
  229. FBillsTotalPrice := ANode.Rec.TotalPrice.AsFloat;
  230. vLeafXmj := GetLeafXmj(ANode);
  231. vPegNode := GetPegNode(ANode);
  232. FFenBuName := GetNameFenBu(vLeafXmj, vPegNode);
  233. FDanWeiName := GetNameDanWei(vLeafXmj);
  234. FIndexCode := B_CodeToIndexCode(FBillsCode);
  235. FSerialNo := ANode.MajorIndex;
  236. end;
  237. procedure TZjjl.Merge(ARec, AStageRec: TsdDataRecord; ANode: TBillsIDTreeNode);
  238. begin
  239. FCertificateCode := MergeStr(FCertificateCode, ARec.ValueByName('CertificateCode').AsString);
  240. FBGLCode := MergeRelaBGL(FBGLCode, ARec.ValueByName('BGLCode').AsString);
  241. FDrawingCode := MergeStr(FDrawingCode, ARec.ValueByName('DrawingCode').AsString);
  242. FFormulaMemo := MergeStr(FFormulaMemo, ARec.ValueByName('FormulaMemo').AsString);
  243. FRelaFile := MergeStr(FRelaFile, ARec.ValueByName('RelaFile').AsString);
  244. if Assigned(AStageRec) then
  245. begin
  246. FBillsCurDealQuantity := FBillsCurDealQuantity + AStageRec.ValueByName('DealQuantity').AsFloat;
  247. FBillsCurDealTotalPrice := FBillsCurDealTotalPrice + AStageRec.ValueByName('DealTotalPrice').AsFloat;
  248. FBillsCurQcQuantity := FBillsCurQcQuantity + AStageRec.ValueByName('QcQuantity').AsFloat;
  249. FBillsCurQcTotalPrice := FBillsCurQcTotalPrice + AStageRec.ValueByName('QcTotalPrice').AsFloat;
  250. FBillsCurGatherQuantity := FBillsCurGatherQuantity + AStageRec.ValueByName('GatherQuantity').AsFloat;
  251. FBillsCurGatherTotalPrice := FBillsCurGatherTotalPrice + AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  252. FBillsEndDealQuantity := FBillsEndDealQuantity + AStageRec.ValueByName('DealQuantity').AsFloat;
  253. FBillsEndDealTotalPrice := FBillsEndDealTotalPrice + AStageRec.ValueByName('DealTotalPrice').AsFloat;
  254. FBillsEndQcQuantity := FBillsEndQcQuantity + AStageRec.ValueByName('QcQuantity').AsFloat;
  255. FBillsEndQcTotalPrice := FBillsEndQcTotalPrice + AStageRec.ValueByName('QcTotalPrice').AsFloat;
  256. FBillsEndGatherQuantity := FBillsEndGatherQuantity + AStageRec.ValueByName('GatherQuantity').AsFloat;
  257. FBillsEndGatherTotalPrice := FBillsEndGatherTotalPrice + AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  258. end;
  259. FBillsOrgQuantity := FBillsOrgQuantity + ANode.Rec.OrgQuantity.AsFloat;
  260. FBillsOrgTotalPrice := FBillsOrgTotalPrice + ANode.Rec.OrgTotalPrice.AsFloat;
  261. FBillsMisQuantity := FBillsMisQuantity + ANode.Rec.MisQuantity.AsFloat;
  262. FBillsMisTotalPrice := FBillsMisTotalPrice + ANode.Rec.MisTotalPrice.AsFloat;
  263. FBillsOthQuantity := FBillsOthQuantity + ANode.Rec.OthQuantity.AsFloat;
  264. FBillsOthTotalPrice := FBillsOthTotalPrice + ANode.Rec.OthTotalPrice.AsFloat;
  265. FBillsQuantity := FBillsQuantity + ANode.Rec.Quantity.AsFloat;
  266. FBillsTotalPrice := FBillsTotalPrice + ANode.Rec.TotalPrice.AsFloat;
  267. if ANode.MajorIndex < FSerialNo then
  268. FSerialNo := ANode.MajorIndex;
  269. end;
  270. function TZjjl.MergeStr(AStr1, AStr2: string): string;
  271. begin
  272. if (AStr1 <> '') then
  273. begin
  274. if (AStr2 <> '') then
  275. Result := AStr1 + ';' + AStr2
  276. else
  277. Result := AStr1;
  278. end
  279. else
  280. begin
  281. if (AStr2 <> '') then
  282. Result := AStr2
  283. else
  284. Result := '';
  285. end;
  286. end;
  287. { TrmWeiWuZjjlGatherData }
  288. function TrmWeiWuZjjlGatherData.AssignData(
  289. AProjectData: TProjectData): TDataSet;
  290. function IndexCodeCompare(Item1, Item2: Pointer): Integer;
  291. var
  292. vZjjl1, vZjjl2: TZjjl;
  293. begin
  294. vZjjl1 := TZjjl(Item1);
  295. vZjjl2 := TZjjl(Item2);
  296. Result := CompareStr(vZjjl1.FIndexCode, vZjjl2.FIndexCode);
  297. if Result = 0 then
  298. Result := vZjjl1.FSerialNo - vZjjl2.FSerialNo;
  299. end;
  300. begin
  301. FZjjlList := TList.Create;
  302. try
  303. if AProjectData.PhaseData.Active then
  304. begin
  305. FPreText := AProjectData.PhaseData.PhaseProperty.ZJJLPreText;
  306. FPhaseIndex := AProjectData.PhaseIndex;
  307. GatherZjjl(AProjectData);
  308. FZjjlList.Sort(@IndexCodeCompare);
  309. WriteData(AProjectData);
  310. end;
  311. Result := cdsZjjl;
  312. finally
  313. ClearObjects(FZjjlList);
  314. FZjjlList.Free;
  315. end;
  316. end;
  317. function TrmWeiWuZjjlGatherData.FindZjjl(ARec: TsdDataRecord; ANode: TBillsIDTreeNode): TZjjl;
  318. var
  319. sCode, sName, sUnits, sDrawingCode: string;
  320. fPrice: Double;
  321. i: Integer;
  322. vZ: TZjjl;
  323. begin
  324. sCode := ANode.Rec.ValueByName('B_Code').AsString;
  325. sName := ANode.Rec.ValueByName('Name').AsString;
  326. sUnits := ANode.Rec.ValueByName('Units').AsString;
  327. sDrawingCode := GetThirdPartString(GetLeafXmjDrawingCode(ANode));
  328. fPrice := ANode.Rec.valueByName('Price').AsFloat;
  329. Result := nil;
  330. for i := 0 to FZjjlList.Count - 1 do
  331. begin
  332. vZ := TZjjl(FZjjlList.Items[i]);
  333. if SameText(vZ.FBillsCode, sCode) and SameText(vZ.FBillsName, sName) and SameText(vZ.FBillsUnits, sUnits) and
  334. (PriceRoundTo(fPrice - vZ.FBillsPrice) < 0.00001) and
  335. SameText(sDrawingCode, vZ.FFilterDrawingCode) then
  336. begin
  337. Result := vZ;
  338. Break;
  339. end;
  340. end;
  341. end;
  342. procedure TrmWeiWuZjjlGatherData.GatherZjjl(AProjectData: TProjectData);
  343. var
  344. i: Integer;
  345. vNode: TBillsIDTreeNode;
  346. Rec, BillsRec, StageRec: TsdDataRecord;
  347. vZ: TZjjl;
  348. begin
  349. for i := 0 to AProjectData.PhaseData.ZJJLData.sddZJJL.RecordCount - 1 do
  350. begin
  351. Rec := AProjectData.PhaseData.ZJJLData.sddZJJL.Records[I];
  352. vNode := TBillsIDTreeNode(AProjectData.BillsMeasureData.BillsMeasureTree.FindNode(Rec.ValueByName('BillsID').AsInteger));
  353. StageRec := AProjectData.PhaseData.StageData.StageRecord(Rec.ValueByName('BillsID').AsInteger);
  354. if Assigned(Rec) and Assigned(vNode) then
  355. begin
  356. vZ := FindZjjl(Rec, vNode);
  357. if not Assigned(vZ) then
  358. begin
  359. vZ := TZjjl.Create(Rec, StageRec, vNode);
  360. FZjjlList.Add(vZ);
  361. end
  362. else
  363. vZ.Merge(Rec, StageRec, vNode);
  364. end;
  365. end;
  366. end;
  367. procedure TrmWeiWuZjjlGatherData.WriteData;
  368. function GetCodeFormat(ACount: Integer): string;
  369. begin
  370. if ACount < 10 then
  371. Result := '-%d'
  372. else if ACount < 100 then
  373. REsult := '-%.2d'
  374. else if ACount < 1000 then
  375. Result := '-%.3d'
  376. else if ACount < 10000 then
  377. Result := '-%.4d'
  378. else if ACount < 100000 then
  379. Result := '-%.5d';
  380. end;
  381. var
  382. i: Integer;
  383. vZ: TZjjl;
  384. sFormat: String;
  385. begin
  386. cdsZjjl.Active := True;
  387. cdsZjjl.EmptyDataSet;
  388. if FPreText <> '' then
  389. sFormat := FPreText + Format('-%.2d', [FPhaseIndex]) + GetCodeFormat(FZjjlList.Count)
  390. else
  391. sFormat := FPreText + Format('%.2d', [FPhaseIndex]) + GetCodeFormat(FZjjlList.Count);
  392. for i := 0 to FZjjlList.Count - 1 do
  393. begin
  394. vZ := TZjjl(FZjjlList.Items[i]);
  395. cdsZjjl.Append;
  396. cdsZjjlCode.AsString := Format(sFormat, [i+1]);
  397. cdsZjjlCertificateCode.AsString := vZ.FCertificateCode;
  398. cdsZjjlBGLCode.AsString := vZ.FBGLCode;
  399. cdsZjjlPegName.AsString := vZ.FPegName;
  400. cdsZjjlBeginPeg.AsString := vZ.FBeginPeg;
  401. cdsZjjlEndPeg.AsString := vZ.FEndPeg;
  402. cdsZjjlFBFXName.AsString := vZ.FFBFXName;
  403. cdsZjjlUnitName.AsString := vZ.FUnitName;
  404. cdsZjjlDrawingCode.AsString := vZ.FDrawingCode;
  405. cdsZjjlFormulaMemo.AsString := vZ.FFormulaMemo;
  406. cdsZjjlRelaFile.AsString := vZ.FRelaFile;
  407. cdsZjjlBillsCode.AsString := vZ.FBillsCode;
  408. cdsZjjlBillsName.AsString := vZ.FBillsName;
  409. cdsZjjlBillsUnits.AsString := vZ.FBillsUnits;
  410. cdsZjjlBillsPrice.AsFloat := vZ.FBillsPrice;
  411. cdsZjjlFilterDrawingCode.AsString := vZ.FFilterDrawingCode;
  412. cdsZjjlBillsCurDealQuantity.AsFloat := vZ.FBillsCurDealQuantity;
  413. cdsZjjlBillsCurDealTotalPrice.AsFloat := vZ.FBillsCurDealTotalPrice;
  414. cdsZjjlBillsCurQcQuantity.AsFloat := vZ.FBillsCurQcQuantity;
  415. cdsZjjlBillsCurQcTotalPrice.AsFloat := vZ.FBillsCurQcTotalPrice;
  416. cdsZjjlBillsCurGatherQuantity.AsFloat := vZ.FBillsCurGatherQuantity;
  417. cdsZjjlBillsCurGatherTotalPrice.AsFloat := vZ.FBillsCurGatherTotalPrice;
  418. cdsZjjlBillsEndDealQuantity.AsFloat := vZ.FBillsEndDealQuantity;
  419. cdsZjjlBillsEndDealTotalPrice.AsFloat := vZ.FBillsEndDealTotalPrice;
  420. cdsZjjlBillsEndQcQuantity.AsFloat := vZ.FBillsEndQcQuantity;
  421. cdsZjjlBillsEndQcTotalPrice.AsFloat := vZ.FBillsEndQcTotalPrice;
  422. cdsZjjlBillsEndGatherQuantity.AsFloat := vZ.FBillsEndGatherQuantity;
  423. cdsZjjlBillsEndGatherTotalPrice.AsFloat := vZ.FBillsEndGatherTotalPrice;
  424. cdsZjjlBillsOrgQuantity.AsFloat := vZ.FBillsOrgQuantity;
  425. cdsZjjlBillsOrgTotalPrice.AsFloat := vZ.FBillsOrgTotalPrice;
  426. cdsZjjlBillsMisQuantity.AsFloat := vZ.FBillsMisQuantity;
  427. cdsZjjlBillsMisTotalPrice.AsFloat := vZ.FBillsMisTotalPrice;
  428. cdsZjjlBillsOthQuantity.AsFloat := vZ.FBillsOthQuantity;
  429. cdsZjjlBillsOthTotalPrice.AsFloat := vZ.FBillsOthTotalPrice;
  430. cdsZjjlBillsQuantity.AsFloat := vZ.FBillsQuantity;
  431. cdsZjjlBillsTotalPrice.AsFloat := vZ.FBillsTotalPrice;
  432. cdsZjjlFenBuName.AsString := vZ.FFenBuName;
  433. cdsZjjlDanWeiName.AsString := vZ.FDanWeiName;
  434. cdsZjjlProjectName.AsString := AProjectData.ProjProperties.ProjectName;
  435. cdsZjjlDealCode.AsString := AProjectData.ProjProperties.DealIndex;
  436. cdsZjjlCName.AsString := AProjectData.ProjProperties.CName;
  437. cdsZjjlSName.AsString := AProjectData.ProjProperties.SName;
  438. cdsZjjlPhaseIndex.AsString := Format('%d 期', [AProjectData.PhaseIndex]);
  439. cdsZjjlDealName.AsString := AProjectData.ProjProperties.DealName;
  440. cdsZjjlFlowIndex.AsInteger := 0;
  441. cdsZjjl.Post;
  442. end;
  443. end;
  444. end.