rmGclBillsBGDm.pas 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. unit rmGclBillsBGDm;
  2. // Report Memory Gcl Bills BianGeng DataModule
  3. // For 連깊05 헌데긴뫘寧응깊
  4. interface
  5. uses
  6. SysUtils, Classes, DB, DBClient, ProjectData, sdIDTree, sdDB,
  7. PhaseData;
  8. type
  9. TGclNode = class
  10. private
  11. FB_Code: string;
  12. FIndexCode: string;
  13. FName: string;
  14. FUnits: string;
  15. FPrice: Double;
  16. FNewPrice: Double;
  17. FDealQuantity: Double;
  18. FDealTotalPrice: Double;
  19. FQuantity: Double;
  20. FTotalPrice: Double;
  21. FCurDealQuantity: Double;
  22. FCurDealTotalPrice: Double;
  23. FCurQcQuantity: Double;
  24. FCurQcTotalPrice: Double;
  25. FCurQcBGLCode: string;
  26. FCurPcQuantity: Double;
  27. FCurPcTotalPrice: Double;
  28. FCurPcBGLCode: string;
  29. FCurGatherQuantity: Double;
  30. FCurGatherTotalPrice: Double;
  31. FEndDealQuantity: Double;
  32. FEndDealTotalPrice: Double;
  33. FEndQcQuantity: Double;
  34. FEndQcTotalPrice: Double;
  35. FEndQcBGLCode: string;
  36. FEndPcQuantity: Double;
  37. FEndPcTotalPrice: Double;
  38. FEndPcBGLCode: string;
  39. FEndGatherQuantity: Double;
  40. FEndGatherTotalPrice: Double;
  41. FAddDealQuantity: Double;
  42. FAddDealTotalPrice: Double;
  43. FAddQcQuantity: Double;
  44. FAddQcTotalPrice: Double;
  45. FAddQcBGLCode: string;
  46. FAddPcQuantity: Double;
  47. FAddPcTotalPrice: Double;
  48. FAddPcBGLCode: string;
  49. FAddGatherQuantity: Double;
  50. FAddGatherTotalPrice: Double;
  51. end;
  52. TrmType = (rmtPhaseDeal, rmtPhaseQc, rmtPhasePc, rmtPhaseGather,
  53. rmtEndDeal, rmtEndQc, rmtEndPc, rmtEndGather);
  54. TrmGatherType = (rmgtGather, rmgtFlow);
  55. TrmGclBillsBGData = class(TDataModule)
  56. cdsBills: TClientDataSet;
  57. cdsBillsB_Code: TStringField;
  58. cdsBillsIndexCode: TStringField;
  59. cdsBillsName: TWideStringField;
  60. cdsBillsUnits: TWideStringField;
  61. cdsBillsPrice: TFloatField;
  62. cdsBillsNewPrice: TFloatField;
  63. cdsBillsDealQuantity: TFloatField;
  64. cdsBillsDealTotalPrice: TFloatField;
  65. cdsBillsQuantity: TFloatField;
  66. cdsBillsTotalPrice: TFloatField;
  67. cdsBillsCurDealQuantity: TFloatField;
  68. cdsBillsCurDealTotalPrice: TFloatField;
  69. cdsBillsCurQcQuantity: TFloatField;
  70. cdsBillsCurQcTotalPrice: TFloatField;
  71. cdsBillsCurQcBGLCode: TWideStringField;
  72. cdsBillsCurPcQuantity: TFloatField;
  73. cdsBillsCurPcTotalPrice: TFloatField;
  74. cdsBillsCurPcBGLCode: TWideStringField;
  75. cdsBillsCurGatherQuantity: TFloatField;
  76. cdsBillsCurGatherTotalPrice: TFloatField;
  77. cdsBillsEndDealQuantity: TFloatField;
  78. cdsBillsEndDealTotalPrice: TFloatField;
  79. cdsBillsEndQcQuantity: TFloatField;
  80. cdsBillsEndQcTotalPrice: TFloatField;
  81. cdsBillsEndPcQuantity: TFloatField;
  82. cdsBillsEndPcTotalPrice: TFloatField;
  83. cdsBillsEndGatherQuantity: TFloatField;
  84. cdsBillsEndGatherTotalPrice: TFloatField;
  85. cdsBillsAddDealQuantity: TFloatField;
  86. cdsBillsAddDealTotalPrice: TFloatField;
  87. cdsBillsAddQcQuantity: TFloatField;
  88. cdsBillsAddQcTotalPrice: TFloatField;
  89. cdsBillsAddPcQuantity: TFloatField;
  90. cdsBillsAddPcTotalPrice: TFloatField;
  91. cdsBillsAddGatherQuantity: TFloatField;
  92. cdsBillsAddGatherTotalPrice: TFloatField;
  93. cdsBillsEndQcBGLCode: TWideStringField;
  94. cdsBillsEndPcBGLCode: TWideStringField;
  95. cdsBillsAddQcBGLCode: TWideStringField;
  96. cdsBillsAddPcBGLCode: TWideStringField;
  97. cdsBillsSerialNo: TIntegerField;
  98. private
  99. FProjectData: TProjectData;
  100. FrmType: TrmType;
  101. FrmGatherType: TrmGatherType;
  102. FGclList: TList;
  103. procedure FilterGclBills(ANode: TsdIDTreeNode);
  104. procedure FilterBills(ANode: TsdIDTreeNode);
  105. procedure WriteBills;
  106. procedure WriteGclBills(APhaseData: TPhaseData; ANode: TsdIDTreeNode;
  107. APhaseIndex: Integer);
  108. procedure WritePhaseBills(APhaseData: TPhaseData; ANode: TsdIDTreeNode;
  109. APhaseIndex: Integer);
  110. procedure WritePhaseFlowBills(APhaseIndex: Integer);
  111. procedure WriteFlowBills;
  112. public
  113. constructor Create;
  114. destructor Destroy; override;
  115. function AssignData(AProjectData: TProjectData;
  116. ArmType: TrmType; ArmGatherType: TrmGatherType): TDataSet;
  117. end;
  118. implementation
  119. uses
  120. ZhAPI, UtilMethods;
  121. {$R *.dfm}
  122. { TrmGclBillsBGData }
  123. function TrmGclBillsBGData.AssignData(AProjectData: TProjectData;
  124. ArmType: TrmType; ArmGatherType: TrmGatherType): TDataSet;
  125. begin
  126. FProjectData := AProjectData;
  127. FrmType := ArmType;
  128. FrmGatherType := ArmGatherType;
  129. cdsBills.Active := True;
  130. cdsBills.DisableControls;
  131. try
  132. cdsBills.EmptyDataSet;
  133. if FrmGatherType = rmgtGather then
  134. begin
  135. FilterBills(FProjectData.BillsMeasureData.BillsMeasureTree.FirstNode);
  136. WriteBills;
  137. end
  138. else if FrmGatherType = rmgtFlow then
  139. WriteFlowBills;
  140. finally
  141. ClearObjects(FGclList);
  142. cdsBills.EnableControls;
  143. Result := cdsBills;
  144. end;
  145. end;
  146. constructor TrmGclBillsBGData.Create;
  147. begin
  148. inherited Create(nil);
  149. FGclList := TList.Create;
  150. cdsBills.IndexFieldNames := 'IndexCode';
  151. end;
  152. destructor TrmGclBillsBGData.Destroy;
  153. begin
  154. ClearObjects(FGclList);
  155. FGclList.Free;
  156. inherited;
  157. end;
  158. procedure TrmGclBillsBGData.FilterBills(ANode: TsdIDTreeNode);
  159. begin
  160. if not Assigned(ANode) then Exit;
  161. if ANode.HasChildren then
  162. FilterBills(ANode.FirstChild)
  163. else
  164. FilterGclBills(ANode);
  165. FilterBills(ANode.NextSibling);
  166. end;
  167. procedure TrmGclBillsBGData.FilterGclBills(ANode: TsdIDTreeNode);
  168. function CreateGclNode(ARec: TsdDataRecord): TGclNode;
  169. begin
  170. Result := TGclNode.Create;
  171. FGclList.Add(Result);
  172. Result.FB_Code := ARec.ValueByName('B_Code').AsString;
  173. Result.FIndexCode := B_CodeToIndexCode(ARec.ValueByName('B_Code').AsString);
  174. Result.FName := ARec.ValueByName('Name').AsString;
  175. Result.FUnits := ARec.ValueByName('Units').AsString;
  176. Result.FPrice := ARec.ValueByName('Price').AsFloat;
  177. Result.FNewPrice := ARec.ValueByName('NewPrice').AsFloat;
  178. end;
  179. function GetGclNode(ARec: TsdDataRecord): TGclNode;
  180. var
  181. I: Integer;
  182. GclNode: TGclNode;
  183. begin
  184. Result := nil;
  185. for I := 0 to FGclList.Count - 1 do
  186. begin
  187. GclNode := TGclNode(FGclList.Items[I]);
  188. if SameText(GclNode.FB_Code, ARec.ValueByName('B_Code').AsString) and
  189. SameText(GclNode.FName, ARec.ValueByName('Name').AsString) and
  190. SameText(GclNode.FUnits, ARec.ValueByName('Units').AsString) and
  191. (GclNode.FPrice = ARec.ValueByName('Price').AsFloat) then
  192. begin
  193. Result := GclNode;
  194. Break;
  195. end;
  196. end;
  197. if not Assigned(Result) then
  198. Result := CreateGclNode(ARec);
  199. end;
  200. procedure LoadPhaseData(AGclNode: TGclNode; AID: Integer);
  201. var
  202. Rec: TsdDataRecord;
  203. begin
  204. Rec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(AID);
  205. if not Assigned(Rec) then Exit;
  206. AGclNode.FCurDealQuantity := AGclNode.FCurDealQuantity + Rec.ValueByName('DealQuantity').AsFloat;
  207. AGclNode.FCurDealTotalPrice := AGclNode.FCurDealTotalPrice + Rec.ValueByName('DealTotalPrice').AsFloat;
  208. AGclNode.FCurQcQuantity := AGclNode.FCurQcQuantity + Rec.ValueByName('QcQuantity').AsFloat;
  209. AGclNode.FCurQcTotalPrice := AGclNode.FCurQcTotalPrice + Rec.ValueByName('QcTotalPrice').AsFloat;
  210. AGclNode.FCurQcBGLCode := MergeRelaBGL(AGclNode.FCurQcBGLCode, Rec.ValueByName('QcBGLCode').AsString);
  211. AGclNode.FCurPcQuantity := AGclNode.FCurPcQuantity + Rec.ValueByName('PcQuantity').AsFloat;
  212. AGclNode.FCurPcTotalPrice := AGclNode.FCurPcTotalPrice + Rec.ValueByName('PcTotalPrice').AsFloat;
  213. AGclNode.FCurPcBGLCode := MergeRelaBGL(AGclNode.FCurPcBGLCode, Rec.ValueByName('PcBGLCode').AsString);
  214. AGclNode.FCurGatherQuantity := AGclNode.FCurGatherQuantity + Rec.ValueByName('GatherQuantity').AsFloat;
  215. AGclNode.FCurGatherTotalPrice := AGclNode.FCurGatherTotalPrice + Rec.ValueByName('GatherTotalPrice').AsFloat;
  216. AGclNode.FEndDealQuantity := AGclNode.FEndDealQuantity + Rec.ValueByName('EndDealQuantity').AsFloat;
  217. AGclNode.FEndDealTotalPrice := AGclNode.FEndDealTotalPrice + Rec.ValueByName('EndDealTotalPrice').AsFloat;
  218. AGclNode.FEndQcQuantity := AGclNode.FEndQcQuantity + Rec.ValueByName('EndQcQuantity').AsFloat;
  219. AGclNode.FEndQcTotalPrice := AGclNode.FEndQcTotalPrice + Rec.ValueByName('EndQcTotalPrice').AsFloat;
  220. AGclNode.FEndQcBGLCode := MergeRelaBGL(AGclNode.FEndQcBGLCode, Rec.ValueByName('EndQcBGLCode').AsString);
  221. AGclNode.FEndPcQuantity := AGclNode.FEndPcQuantity + Rec.ValueByName('EndPcQuantity').AsFloat;
  222. AGclNode.FEndPcTotalPrice := AGclNode.FEndPcTotalPrice + Rec.ValueByName('EndPcTotalPrice').AsFloat;
  223. AGclNode.FEndPcBGLCode := MergeRelaBGL(AGclNode.FEndPcBGLCode, Rec.ValueByName('EndPcBGLCode').AsString);
  224. AGclNode.FEndGatherQuantity := AGclNode.FEndGatherQuantity + Rec.ValueByName('EndGatherQuantity').AsFloat;
  225. AGclNode.FEndGatherTotalPrice := AGclNode.FEndGatherTotalPrice + Rec.ValueByName('EndGatherTotalPrice').AsFloat;
  226. end;
  227. procedure LoadMeasureData(AGclNode: TGclNode; ARec: TsdDataRecord);
  228. begin
  229. AGclNode.FQuantity := AGclNode.FQuantity + ARec.ValueByName('Quantity').AsFloat;
  230. AGclNode.FTotalPrice := AGclNode.FTotalPrice + ARec.ValueByName('TotalPrice').AsFloat;
  231. if TProjectData(FProjectData).ProjProperties.PhaseCount = 0 then Exit;
  232. LoadPhaseData(AGclNode, ARec.ValueByName('ID').AsInteger);
  233. AGclNode.FAddDealQuantity := AGclNode.FAddDealQuantity + ARec.ValueByName('AddDealQuantity').AsFloat;
  234. AGclNode.FAddDealTotalPrice := AGclNode.FAddDealTotalPrice + ARec.ValueByName('AddDealTotalPrice').AsFloat;
  235. AGclNode.FAddQcQuantity := AGclNode.FAddQcQuantity + ARec.ValueByName('AddQcQuantity').AsFloat;
  236. AGclNode.FAddQcTotalPrice := AGclNode.FAddQcTotalPrice + ARec.ValueByName('AddQcTotalPrice').AsFloat;
  237. AGclNode.FAddQcBGLCode := MergeRelaBGL(AGclNode.FAddQcBGLCode, ARec.ValueByName('AddQcBGLCode').AsString);
  238. AGclNode.FAddPcQuantity := AGclNode.FAddPcQuantity + ARec.ValueByName('AddPcQuantity').AsFloat;
  239. AGclNode.FAddPcTotalPrice := AGclNode.FAddPcTotalPrice + ARec.ValueByName('AddPcTotalPrice').AsFloat;
  240. AGclNode.FAddPcBGLCode := MergeRelaBGL(AGclNode.FAddPcBGLCode, ARec.ValueByName('AddPcBGLCode').AsString);
  241. AGclNode.FAddGatherQuantity := AGclNode.FAddGatherQuantity + ARec.ValueByName('AddGatherQuantity').AsFloat;
  242. AGclNode.FAddGatherTotalPrice := AGclNode.FAddGatherTotalPrice + ARec.ValueByName('AddGatherTotalPrice').AsFloat;
  243. end;
  244. procedure LoadDealData(AGclNode: TGclNode; AB_Code: string);
  245. var
  246. DealRec: TsdDataRecord;
  247. begin
  248. DealRec := TProjectData(FProjectData).DealBillsData.DealRecord(AB_Code);
  249. if Assigned(DealRec) then
  250. begin
  251. AGclNode.FDealQuantity := DealRec.ValueByName('Quantity').AsFloat;
  252. AGclNode.FDealTotalPrice := DealRec.ValueByName('TotalPrice').AsFloat;
  253. end;
  254. end;
  255. var
  256. Rec, StageRec: TsdDataRecord;
  257. GclNode: TGclNode;
  258. begin
  259. if not Assigned(ANode) then Exit;
  260. Rec := ANode.Rec;
  261. if Rec.ValueByName('B_Code').AsString = '' then Exit;
  262. StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID);
  263. if not Assigned(StageRec) then Exit;
  264. case FrmType of
  265. rmtPhaseDeal: if StageRec.ValueByName('DealTotalPrice').AsFloat = 0 then Exit;
  266. rmtPhaseQc: if StageRec.ValueByName('QcTotalPrice').AsFloat = 0 then Exit;
  267. rmtPhasePc: if StageRec.ValueByName('PcTotalPrice').AsFloat = 0 then Exit;
  268. rmtPhaseGather: if StageRec.ValueByName('GatherTotalPrice').AsFloat = 0 then Exit;
  269. rmtEndDeal: if StageRec.ValueByName('EndDealTotalPrice').AsFloat = 0 then Exit;
  270. rmtEndQc: if StageRec.ValueByName('EndQcTotalPrice').AsFloat = 0 then Exit;
  271. rmtEndPc: if StageRec.ValueByName('EndPcTotalPrice').AsFloat = 0 then Exit;
  272. rmtEndGather: if StageRec.ValueByName('EndGatherTotalPrice').AsFloat = 0 then Exit;
  273. end;
  274. GclNode := GetGclNode(Rec);
  275. LoadDealData(GclNode, Rec.ValueByName('B_Code').AsString);
  276. LoadMeasureData(GclNode, Rec);
  277. end;
  278. procedure TrmGclBillsBGData.WriteBills;
  279. var
  280. I: Integer;
  281. GclNode: TGclNode;
  282. begin
  283. for I := 0 to FGclList.Count - 1 do
  284. begin
  285. GclNode := TGclNode(FGclList.Items[I]);
  286. cdsBills.Append;
  287. cdsBillsB_Code.AsString := GclNode.FB_Code;
  288. cdsBillsIndexCode.AsString := GclNode.FIndexCode;
  289. cdsBillsName.AsString := GclNode.FName;
  290. cdsBillsUnits.AsString := GclNode.FUnits;
  291. cdsBillsPrice.AsFloat := GclNode.FPrice;
  292. cdsBillsNewPrice.AsFloat := GclNode.FNewPrice;
  293. cdsBillsDealQuantity.AsFloat := GclNode.FDealQuantity;
  294. cdsBillsDealTotalPrice.AsFloat := GclNode.FDealTotalPrice;
  295. cdsBillsQuantity.AsFloat := GclNode.FQuantity;
  296. cdsBillsTotalPrice.AsFloat := GclNode.FTotalPrice;
  297. cdsBillsCurDealQuantity.AsFloat := GclNode.FCurDealQuantity;
  298. cdsBillsCurDealTotalPrice.AsFloat := GclNode.FCurDealTotalPrice;
  299. cdsBillsCurQcQuantity.AsFloat := GclNode.FCurQcQuantity;
  300. cdsBillsCurQcTotalPrice.AsFloat := GclNode.FCurQcTotalPrice;
  301. cdsBillsCurQcBGLCode.AsString := GclNode.FCurQcBGLCode;
  302. cdsBillsCurPcQuantity.AsFloat := GclNode.FCurPcQuantity;
  303. cdsBillsCurPcTotalPrice.AsFloat := GclNode.FCurPcTotalPrice;
  304. cdsBillsCurPcBGLCode.AsString := GclNode.FCurPcBGLCode;
  305. cdsBillsCurGatherQuantity.AsFloat := GclNode.FCurGatherQuantity;
  306. cdsBillsCurGatherTotalPrice.AsFloat := GclNode.FCurGatherTotalPrice;
  307. cdsBillsEndDealQuantity.AsFloat := GclNode.FEndDealQuantity;
  308. cdsBillsEndDealTotalPrice.AsFloat := GclNode.FEndDealTotalPrice;
  309. cdsBillsEndQcQuantity.AsFloat := GclNode.FEndQcQuantity;
  310. cdsBillsEndQcTotalPrice.AsFloat := GclNode.FEndQcTotalPrice;
  311. cdsBillsEndQcBGLCode.AsString := GclNode.FEndQcBGLCode;
  312. cdsBillsEndPcQuantity.AsFloat := GclNode.FEndPcQuantity;
  313. cdsBillsEndPcTotalPrice.AsFloat := GclNode.FEndPcTotalPrice;
  314. cdsBillsEndPcBGLCode.AsString := GclNode.FEndPcBGLCode;
  315. cdsBillsEndGatherQuantity.AsFloat := GclNode.FEndGatherQuantity;
  316. cdsBillsEndGatherTotalPrice.AsFloat := GclNode.FEndGatherTotalPrice;
  317. cdsBillsAddDealQuantity.AsFloat := GclNode.FAddDealQuantity;
  318. cdsBillsAddDealTotalPrice.AsFloat := GclNode.FAddDealTotalPrice;
  319. cdsBillsAddQcQuantity.AsFloat := GclNode.FAddQcQuantity;
  320. cdsBillsAddQcTotalPrice.AsFloat := GclNode.FAddQcTotalPrice;
  321. cdsBillsAddQcBGLCode.AsString := GclNode.FAddQcBGLCode;
  322. cdsBillsAddPcQuantity.AsFloat := GclNode.FAddPcQuantity;
  323. cdsBillsAddPcTotalPrice.AsFloat := GclNode.FAddPcTotalPrice;
  324. cdsBillsAddPcBGLCode.AsString := GclNode.FAddPcBGLCode;
  325. cdsBillsAddGatherQuantity.AsFloat := GclNode.FAddGatherQuantity;
  326. cdsBillsAddGatherTotalPrice.AsFloat := GclNode.FAddGatherTotalPrice;
  327. cdsBills.Post;
  328. end;
  329. end;
  330. procedure TrmGclBillsBGData.WriteFlowBills;
  331. var
  332. iPhase: Integer;
  333. begin
  334. for iPhase := 1 to FProjectData.PhaseIndex do
  335. WritePhaseFlowBills(iPhase);
  336. end;
  337. procedure TrmGclBillsBGData.WriteGclBills(APhaseData: TPhaseData;
  338. ANode: TsdIDTreeNode; APhaseIndex: Integer);
  339. procedure WriteGclBillsData(ARec, AStageRec: TsdDataRecord);
  340. begin
  341. cdsBills.Append;
  342. cdsBillsB_Code.AsString := ARec.ValueByName('B_Code').AsString;
  343. cdsBillsIndexCode.AsString := B_CodeToIndexCode(ARec.ValueByName('B_Code').AsString);
  344. cdsBillsName.AsString := ARec.ValueByName('Name').AsString;
  345. cdsBillsUnits.AsString := ARec.ValueByName('Units').AsString;
  346. cdsBillsPrice.AsFloat := ARec.ValueByName('Price').AsFloat;
  347. cdsBillsNewPrice.AsFloat := ARec.ValueByName('NewPrice').AsFloat;
  348. cdsBillsQuantity.AsFloat := ARec.ValueByName('Quantity').AsFloat;
  349. cdsBillsTotalPrice.AsFloat := ARec.ValueByName('TotalPrice').AsFloat;
  350. cdsBillsCurDealQuantity.AsFloat := AStageRec.ValueByName('DealQuantity').AsFloat;
  351. cdsBillsCurDealTotalPrice.AsFloat := AStageRec.ValueByName('DealTotalPrice').AsFloat;
  352. cdsBillsCurQcQuantity.AsFloat := AStageRec.ValueByName('QcQuantity').AsFloat;
  353. cdsBillsCurQcTotalPrice.AsFloat := AStageRec.ValueByName('QcTotalPrice').AsFloat;
  354. cdsBillsCurQcBGLCode.AsString := AStageRec.ValueByName('QcBGLCode').AsString;
  355. cdsBillsCurPcQuantity.AsFloat := AStageRec.ValueByName('PcQuantity').AsFloat;
  356. cdsBillsCurPcTotalPrice.AsFloat := AStageRec.ValueByName('PcTotalPrice').AsFloat;
  357. cdsBillsCurPcBGLCode.AsString := AStageRec.ValueByName('PcBGLCode').AsString;
  358. cdsBillsCurGatherQuantity.AsFloat := AStageRec.ValueByName('GatherQuantity').AsFloat;
  359. cdsBillsCurGatherTotalPrice.AsFloat := AStageRec.ValueByName('GatherTotalPrice').AsFloat;
  360. cdsBillsEndDealQuantity.AsFloat := AStageRec.ValueByName('EndDealQuantity').AsFloat;
  361. cdsBillsEndDealTotalPrice.AsFloat := AStageRec.ValueByName('EndDealTotalPrice').AsFloat;
  362. cdsBillsEndQcQuantity.AsFloat := AStageRec.ValueByName('EndQcQuantity').AsFloat;
  363. cdsBillsEndQcTotalPrice.AsFloat := AStageRec.ValueByName('EndQcTotalPrice').AsFloat;
  364. cdsBillsEndQcBGLCode.AsString := AStageRec.ValueByName('EndQcBGLCode').AsString;
  365. cdsBillsEndPcQuantity.AsFloat := AStageRec.ValueByName('EndPcQuantity').AsFloat;
  366. cdsBillsEndPcTotalPrice.AsFloat := AStageRec.ValueByName('EndPcTotalPrice').AsFloat;
  367. cdsBillsEndPcBGLCode.AsString := AStageRec.ValueByName('EndPcBGLCode').AsString;
  368. cdsBillsEndGatherQuantity.AsFloat := AStageRec.ValueByName('EndGatherQuantity').AsFloat;
  369. cdsBillsEndGatherTotalPrice.AsFloat := AStageRec.ValueByName('EndGatherTotalPrice').AsFloat;
  370. cdsBillsAddDealQuantity.AsFloat := ARec.ValueByName('AddDealQuantity').AsFloat;
  371. cdsBillsAddDealTotalPrice.AsFloat := ARec.ValueByName('AddDealTotalPrice').AsFloat;
  372. cdsBillsAddQcQuantity.AsFloat := ARec.ValueByName('AddQcQuantity').AsFloat;
  373. cdsBillsAddQcTotalPrice.AsFloat := ARec.ValueByName('AddQcTotalPrice').AsFloat;
  374. cdsBillsAddQcBGLCode.AsString := ARec.ValueByName('AddQcBGLCode').AsString;
  375. cdsBillsAddPcQuantity.AsFloat := ARec.ValueByName('AddPcQuantity').AsFloat;
  376. cdsBillsAddPcTotalPrice.AsFloat := ARec.ValueByName('AddPcTotalPrice').AsFloat;
  377. cdsBillsAddPcBGLCode.AsString := ARec.ValueByName('AddPcBGLCode').AsString;
  378. cdsBillsAddGatherQuantity.AsFloat := ARec.ValueByName('AddGatherQuantity').AsFloat;
  379. cdsBillsAddGatherTotalPrice.AsFloat := ARec.ValueByName('AddGatherTotalPrice').AsFloat;
  380. cdsBillsSerialNo.AsInteger := APhaseIndex;
  381. cdsBills.Post;
  382. end;
  383. var
  384. Rec, StageRec: TsdDataRecord;
  385. begin
  386. if not Assigned(ANode) then Exit;
  387. Rec := ANode.Rec;
  388. if Rec.ValueByName('B_Code').AsString = '' then Exit;
  389. StageRec := APhaseData.StageData.StageRecord(ANode.ID);
  390. if not Assigned(StageRec) then Exit;
  391. case FrmType of
  392. rmtPhaseDeal: if StageRec.ValueByName('DealTotalPrice').AsFloat = 0 then Exit;
  393. rmtPhaseQc: if StageRec.ValueByName('QcTotalPrice').AsFloat = 0 then Exit;
  394. rmtPhasePc: if StageRec.ValueByName('PcTotalPrice').AsFloat = 0 then Exit;
  395. rmtPhaseGather: if StageRec.ValueByName('GatherTotalPrice').AsFloat = 0 then Exit;
  396. rmtEndDeal: if StageRec.ValueByName('EndDealTotalPrice').AsFloat = 0 then Exit;
  397. rmtEndQc: if StageRec.ValueByName('EndQcTotalPrice').AsFloat = 0 then Exit;
  398. rmtEndPc: if StageRec.ValueByName('EndPcTotalPrice').AsFloat = 0 then Exit;
  399. rmtEndGather: if StageRec.ValueByName('EndGatherTotalPrice').AsFloat = 0 then Exit;
  400. end;
  401. WriteGclBillsData(Rec, StageRec);
  402. end;
  403. procedure TrmGclBillsBGData.WritePhaseBills(APhaseData: TPhaseData;
  404. ANode: TsdIDTreeNode; APhaseIndex: Integer);
  405. begin
  406. if not Assigned(ANode) then Exit;
  407. if ANode.HasChildren then
  408. WritePhaseBills(APhaseData, ANode.FirstChild, APhaseIndex)
  409. else
  410. WriteGclBills(APhaseData, ANode, APhaseIndex);
  411. WritePhaseBills(APhaseData, ANode.NextSibling, APhaseIndex);
  412. end;
  413. procedure TrmGclBillsBGData.WritePhaseFlowBills(APhaseIndex: Integer);
  414. var
  415. PhaseData: TPhaseData;
  416. begin
  417. PhaseData := TPhaseData.Create(FProjectData);
  418. try
  419. PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [FProjectData.TempPath, APhaseIndex]));
  420. cdsBills.Append;
  421. cdsBillsName.AsString := Format('뒤 %d 퍅', [APhaseIndex]);
  422. cdsBillsSerialNo.AsInteger := APhaseIndex;
  423. cdsBills.Post;
  424. WritePhaseBills(PhaseData, FProjectData.BillsCompileData.BillsCompileTree.FirstNode, APhaseIndex);
  425. finally
  426. PhaseData.Free;
  427. end;
  428. end;
  429. end.