StageLeafXmjGlDm.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. unit StageLeafXmjGlDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdDB, sdProvider, ADODB, mDataRecord, CalcDecimal;
  5. type
  6. TStageLeafXmjGlData = class(TDataModule)
  7. sdpStageLeafXmjGl: TsdADOProvider;
  8. sddStageLeafXmjGl: TsdDataSet;
  9. procedure sddStageLeafXmjGlGetRecordClass(
  10. var ARecordClass: TsdRecordClass);
  11. procedure sddStageLeafXmjGlAfterValueChanged(AValue: TsdValue);
  12. private
  13. FPhaseData: TObject;
  14. procedure SaveCurStageData;
  15. procedure BeforeBatchOperation;
  16. procedure AfterBatchOperation;
  17. procedure UpdateEndTotalPrice(ARec: TStageLeafXmjGlRecord);
  18. procedure UpdateEndQuantity(ARec: TStageLeafXmjGlRecord);
  19. procedure CalculateQuantity(ARec: TStageLeafXmjGlRecord);
  20. procedure UpdateEndPALRela(ARec:TStageLeafXmjGlRecord);
  21. procedure CalculatePALRela(ARec:TStageLeafXmjGlRecord; AProjGLRec: TProjectGLRecord);
  22. function GetDecimal: TCalcDecimal;
  23. function GetActive: Boolean;
  24. public
  25. constructor Create(APhaseData: TObject);
  26. destructor Destroy; override;
  27. procedure Open(AConnection: TADOConnection);
  28. procedure Save;
  29. procedure CopyPrePhaseData;
  30. procedure LoadCurStageData;
  31. function StageLeafXmjGlRecord(AID: Integer): TStageLeafXmjGlRecord;
  32. procedure DeleteLeafXmjGLRecord(AID: Integer);
  33. procedure Calculate(AID: Integer);
  34. // 调整工料价格后,需计算项
  35. procedure CalculatePriceRela(AGLID: Integer);
  36. property Active: Boolean read GetActive;
  37. property Decimal: TCalcDecimal read GetDecimal;
  38. end;
  39. implementation
  40. uses
  41. PhaseData, ProjectData, UtilMethods, LeafXmjGlDm, ProjectGLDm, StrUtils,
  42. DetailGLDm, BillsTree, BillsMeasureDm;
  43. {$R *.dfm}
  44. { TStageLeafXmjGlData }
  45. procedure TStageLeafXmjGlData.AfterBatchOperation;
  46. begin
  47. sddStageLeafXmjGl.EndUpdate;
  48. sddStageLeafXmjGl.EnableControls;
  49. sddStageLeafXmjGl.AfterValueChanged := sddStageLeafXmjGlAfterValueChanged;
  50. end;
  51. procedure TStageLeafXmjGlData.BeforeBatchOperation;
  52. begin
  53. sddStageLeafXmjGl.DisableControls;
  54. sddStageLeafXmjGl.BeginUpdate;
  55. sddStageLeafXmjGl.AfterValueChanged := nil;
  56. end;
  57. procedure TStageLeafXmjGlData.Calculate(AID: Integer);
  58. var
  59. Rec: TStageLeafXmjGlRecord;
  60. ProjGLRec: TProjectGLRecord;
  61. fValue: Double;
  62. begin
  63. Rec := StageLeafXmjGlRecord(AID);
  64. CalculateQuantity(Rec);
  65. with TProjectData(TPhaseData(FPhaseData).ProjectData) do
  66. ProjGLRec := ProjectGLData.ProjectGLRec(Rec.GLID);
  67. // 计算调差金额
  68. fValue := Decimal.TotalPrice.RoundTo(Rec.Quantity.AsFloat * ProjGLRec.ValidDeltaPrice.AsFloat);
  69. Rec.SetFloatValue(Rec.TotalPrice, fValue);
  70. UpdateEndTotalPrice(Rec);
  71. // 计算本期实耗分析相关
  72. CalculatePALRela(Rec, ProjGLRec);
  73. end;
  74. procedure TStageLeafXmjGlData.CalculatePriceRela(AGLID: Integer);
  75. var
  76. i: Integer;
  77. Rec: TStageLeafXmjGlRecord;
  78. ProjGLRec: TProjectGLRecord;
  79. fValue: Double;
  80. begin
  81. with TProjectData(TPhaseData(FPhaseData).ProjectData) do
  82. ProjGLRec := ProjectGLData.ProjectGLRec(AGLID);
  83. for i := 0 to sddStageLeafXmjGl.RecordCount - 1 do
  84. begin
  85. Rec := TStageLeafXmjGlRecord(sddStageLeafXmjGl.Records[i]);
  86. if Rec.GLID = AGLID then
  87. begin
  88. // 计算调差金额
  89. fValue := Decimal.TotalPrice.RoundTo(Rec.Quantity.AsFloat * ProjGLRec.ValidDeltaPrice.AsFloat);
  90. Rec.SetFloatValue(Rec.TotalPrice, fValue);
  91. UpdateEndTotalPrice(Rec);
  92. // 计算本期实耗分析相关
  93. CalculatePALRela(Rec, ProjGLRec);
  94. end;
  95. end;
  96. end;
  97. procedure TStageLeafXmjGlData.CalculateQuantity(ARec: TStageLeafXmjGlRecord);
  98. var
  99. vDetails: TList;
  100. fQuantity: Double;
  101. i: Integer;
  102. GLRec: TDetailGLRecord;
  103. vNode: TMeasureBillsIDTreeNode;
  104. begin
  105. vDetails := TList.Create;
  106. try
  107. with TProjectData(TPhaseData(FPhaseData).ProjectData).DetailGLData do
  108. LoadXmjDetailGLs(ARec.XmjID, ARec.GLID, vDetails);
  109. fQuantity := 0;
  110. for i := 0 to vDetails.Count - 1 do
  111. begin
  112. GLRec := TDetailGLRecord(vDetails.Items[i]);
  113. with TProjectData(TPhaseData(FPhaseData).ProjectData).BillsMeasureData do
  114. vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.FindNode(GLRec.BillsID.AsInteger));
  115. if Assigned(vNode.StageRec) then
  116. fQuantity := fQuantity + Decimal.Quantity.RoundTo(vNode.StageRec.GatherQuantity.AsFloat * GLRec.Quantity.AsFloat);
  117. end;
  118. ARec.SetFloatValue(ARec.Quantity, fQuantity);
  119. UpdateEndQuantity(ARec);
  120. finally
  121. vDetails.Free;
  122. end;
  123. end;
  124. constructor TStageLeafXmjGlData.Create(APhaseData: TObject);
  125. begin
  126. inherited Create(nil);
  127. FPhaseData := APhaseData;
  128. end;
  129. destructor TStageLeafXmjGlData.Destroy;
  130. begin
  131. inherited;
  132. end;
  133. function TStageLeafXmjGlData.GetDecimal: TCalcDecimal;
  134. begin
  135. Result := TProjectData(TPhaseData(FPhaseData).ProjectData).ProjProperties.DecimalManager.Common;
  136. end;
  137. procedure TStageLeafXmjGlData.LoadCurStageData;
  138. const
  139. sSelectSql = 'Select * From PhaseLeafXmjGL Where StageID = %d';
  140. var
  141. vQuery: TADOQuery;
  142. procedure LoadData;
  143. var
  144. iRec: Integer;
  145. Rec: TStageLeafXmjGlRecord;
  146. begin
  147. for iRec := 0 to sddStageLeafXmjGl.RecordCount - 1 do
  148. begin
  149. Rec := TStageLeafXmjGlRecord(sddStageLeafXmjGl.Records[iRec]);
  150. if vQuery.Active and vQuery.Locate('ID', Rec.ID.AsInteger, []) then
  151. begin
  152. Rec.SetFloatValue(Rec.Quantity, vQuery.FieldByName('Quantity').AsFloat);
  153. Rec.SetFloatValue(Rec.TotalPrice, vQuery.FieldByName('TotalPrice').AsFloat);
  154. Rec.SetFloatValue(Rec.UsedQuantity, vQuery.FieldByName('UsedQuantity').AsFloat);
  155. Rec.SetFloatValue(Rec.UsedTotalPrice, vQuery.FieldByName('UsedTotalPrice').AsFloat);
  156. Rec.SetFloatValue(Rec.PAL_UsedQuantity, vQuery.FieldByName('PAL_UsedQuantity').AsFloat);
  157. Rec.SetFloatValue(Rec.PAL_UsedTotalPrice, vQuery.FieldByName('PAL_UsedTotalPrice').AsFloat);
  158. Rec.SetFloatValue(Rec.PAL_DeltaPrice, vQuery.FieldByName('PAL_DeltaPrice').AsFloat);
  159. Rec.SetFloatValue(Rec.PAL_Total, vQuery.FieldByName('PAL_Total').AsFloat);
  160. Rec.SetFloatValue(Rec.EndQuantity, Decimal.Quantity.RoundTo(Rec.PreQuantity.AsFloat + Rec.Quantity.AsFloat));
  161. Rec.SetFloatValue(Rec.EndTotalPrice, Decimal.TotalPrice.RoundTo(Rec.PreTotalPrice.AsFloat + Rec.TotalPrice.AsFloat));
  162. Rec.SetFloatValue(Rec.EndUsedQuantity, Decimal.Quantity.RoundTo(Rec.PreUsedQuantity.AsFloat + Rec.UsedQuantity.AsFloat));
  163. Rec.SetFloatValue(Rec.EndUsedTotalPrice, Decimal.TotalPrice.RoundTo(Rec.PreUsedTotalPrice.AsFloat + Rec.UsedTotalPrice.AsFloat));
  164. Rec.SetFloatValue(Rec.EndPAL_UsedQuantity, Decimal.Quantity.RoundTo(Rec.PrePAL_UsedQuantity.AsFloat + Rec.PAL_UsedQuantity.AsFloat));
  165. Rec.SetFloatValue(Rec.EndPAL_UsedTotalPrice, Decimal.TotalPrice.RoundTo(Rec.PrePAL_UsedTotalPrice.AsFloat + Rec.PAL_UsedTotalPrice.AsFloat));
  166. Rec.SetFloatValue(Rec.EndPAL_DeltaPrice, Decimal.TotalPrice.RoundTo(Rec.PrePAL_DeltaPrice.AsFloat + Rec.PAL_DeltaPrice.AsFloat));
  167. Rec.SetFloatValue(Rec.EndPAL_Total, Decimal.TotalPrice.RoundTo(Rec.PrePAL_Total.AsFloat + Rec.PAL_Total.AsFloat));
  168. end
  169. else
  170. begin
  171. Rec.SetFloatValue(Rec.Quantity, 0);
  172. Rec.SetFloatValue(Rec.TotalPrice, 0);
  173. Rec.SetFloatValue(Rec.UsedQuantity, 0);
  174. Rec.SetFloatValue(Rec.UsedTotalPrice, 0);
  175. Rec.SetFloatValue(Rec.PAL_UsedQuantity, 0);
  176. Rec.SetFloatValue(Rec.PAL_UsedTotalPrice, 0);
  177. Rec.SetFloatValue(Rec.PAL_DeltaPrice, 0);
  178. Rec.SetFloatValue(Rec.PAL_Total, 0);
  179. Rec.SetFloatValue(Rec.EndQuantity, Rec.PreQuantity.AsFloat);
  180. Rec.SetFloatValue(Rec.EndTotalPrice, Rec.PreTotalPrice.AsFloat);
  181. Rec.SetFloatValue(Rec.EndUsedQuantity, Rec.PreUsedQuantity.AsFloat);
  182. Rec.SetFloatValue(Rec.EndUsedTotalPrice, Rec.PreUsedTotalPrice.AsFloat);
  183. Rec.SetFloatValue(Rec.EndPAL_UsedQuantity, Rec.PrePAL_UsedQuantity.AsFloat);
  184. Rec.SetFloatValue(Rec.EndPAL_UsedTotalPrice, Rec.PrePAL_UsedTotalPrice.AsFloat);
  185. Rec.SetFloatValue(Rec.EndPAL_DeltaPrice, Rec.PrePAL_DeltaPrice.AsFloat);
  186. Rec.SetFloatValue(Rec.EndPAL_Total, Rec.PrePAL_Total.AsFloat);
  187. end;
  188. end;
  189. end;
  190. begin
  191. if not sddStageLeafXmjGl.Active then Exit;
  192. BeforeBatchOperation;
  193. vQuery := TADOQuery.Create(nil);
  194. try
  195. vQuery.Connection := sdpStageLeafXmjGl.Connection;
  196. vQuery.SQL.Clear;
  197. vQuery.SQL.Add(Format(sSelectSql, [TPhaseData(FPhaseData).StageIndex]));
  198. vQuery.Open;
  199. LoadData;
  200. finally
  201. vQuery.Free;
  202. AfterBatchOperation;
  203. end;
  204. end;
  205. procedure TStageLeafXmjGlData.Open(AConnection: TADOConnection);
  206. begin
  207. sdpStageLeafXmjGl.Connection := AConnection;
  208. sddStageLeafXmjGl.Open;
  209. if not Assigned(sddStageLeafXmjGl.FindIndex('idxID')) then
  210. sddStageLeafXmjGl.AddIndex('idxID', 'ID');
  211. LoadCurStageData;
  212. end;
  213. procedure TStageLeafXmjGlData.Save;
  214. begin
  215. if sddStageLeafXmjGl.Active then
  216. begin
  217. sddStageLeafXmjGl.Save;
  218. if not TPhaseData(FPhaseData).StageDataReadOnly then
  219. SaveCurStageData;
  220. end;
  221. end;
  222. procedure TStageLeafXmjGlData.SaveCurStageData;
  223. const
  224. sDeleteSql = 'Delete From PhaseLeafXmjGL where (StageID = %d)';
  225. sCopySql = 'Insert Into PhaseLeafXmjGL'+
  226. ' Select ID, %d As StageID, Quantity, TotalPrice, UsedQuantity, UsedTotalPrice,'+
  227. ' PAL_UsedQuantity, PAL_UsedTotalPrice, PAL_DeltaPrice, PAL_Total'+
  228. ' From StageLeafXmjGL' +
  229. ' Where (Quantity <> 0) or (UsedQuantity <> 0)';
  230. begin
  231. if TPhaseData(FPhaseData).StageDataReadOnly then Exit;
  232. ExecuteSql(sdpStageLeafXmjGl.Connection, Format(sDeleteSql, [TPhaseData(FPhaseData).StageIndex]));
  233. ExecuteSql(sdpStageLeafXmjGl.Connection, Format(sCopySql, [TPhaseData(FPhaseData).StageIndex]));
  234. // 不要问我为什么,不写下面这个,上面那句不执行
  235. ExecuteSql(sdpStageLeafXmjGl.Connection, Format(sDeleteSql, [-1]));
  236. ExecuteSql(sdpStageLeafXmjGl.Connection, Format(sCopySql, [-1]));
  237. end;
  238. procedure TStageLeafXmjGlData.sddStageLeafXmjGlGetRecordClass(
  239. var ARecordClass: TsdRecordClass);
  240. begin
  241. ARecordClass := TStageLeafXmjGlRecord;
  242. end;
  243. function TStageLeafXmjGlData.StageLeafXmjGlRecord(
  244. AID: Integer): TStageLeafXmjGlRecord;
  245. begin
  246. Result := TStageLeafXmjGlRecord(sddStageLeafXmjGl.FindKey('idxID', AID));
  247. if not Assigned(Result) then
  248. begin
  249. Result := TStageLeafXmjGlRecord(sddStageLeafXmjGl.Add);
  250. Result.ID.AsInteger := AID;
  251. end;
  252. end;
  253. procedure TStageLeafXmjGlData.sddStageLeafXmjGlAfterValueChanged(
  254. AValue: TsdValue);
  255. var
  256. Rec: TStageLeafXmjGlRecord;
  257. ProjGLRec: TProjectGLRecord;
  258. begin
  259. if SameText(AValue.FieldName, 'UsedQuantity') then
  260. begin
  261. Rec := TStageLeafXmjGlRecord(AValue.Owner);
  262. with TProjectData(TPhaseData(FPhaseData).ProjectData) do
  263. begin
  264. ProjGLRec := ProjectGLData.ProjectGLRec(Rec.GLID);
  265. CalculatePALRela(Rec, ProjGLRec);
  266. ProjectGLData.CalculatePALRela(ProjGLRec);
  267. PhaseData.StageData.CalculateMaterialNode;
  268. end;
  269. end;
  270. end;
  271. procedure TStageLeafXmjGlData.CalculatePALRela(
  272. ARec: TStageLeafXmjGlRecord; AProjGLRec: TProjectGLRecord);
  273. var
  274. fValue: Double;
  275. begin
  276. // 计算 材料实耗金额
  277. fValue := Decimal.TotalPrice.RoundTo(ARec.UsedQuantity.AsFloat * AProjGLRec.InfoPrice.AsFloat);
  278. ARec.SetFloatValue(ARec.UsedTotalPrice, fValue);
  279. // 计算 数量差
  280. fValue := Decimal.Quantity.RoundTo(ARec.Quantity.AsFloat - ARec.UsedQuantity.AsFloat);
  281. ARec.SetFloatValue(ARec.PAL_UsedQuantity, fValue);
  282. // 计算 数量差金额
  283. fValue := Decimal.Quantity.RoundTo(ARec.PAL_UsedQuantity.AsFloat * AProjGLRec.BasePrice.AsFloat);
  284. ARec.SetFloatValue(ARec.PAL_UsedTotalPrice, fValue);
  285. // 计算 实耗价差金额
  286. fValue := Decimal.TotalPrice.RoundTo( - ARec.UsedQuantity.AsFloat * AProjGLRec.DeltaPrice.AsFloat);
  287. ARec.SetFloatValue(ARec.PAL_DeltaPrice, fValue);
  288. // 计算 节余金额
  289. fValue := Decimal.TotalPrice.RoundTo(AProjGLRec.BasePrice.AsFloat*ARec.Quantity.AsFloat - AProjGLRec.InfoPrice.AsFloat*ARec.UsedQuantity.AsFloat);
  290. ARec.SetFloatValue(ARec.PAL_Total, fValue);
  291. UpdateEndPALRela(ARec);
  292. end;
  293. procedure TStageLeafXmjGlData.DeleteLeafXmjGLRecord(AID: Integer);
  294. var
  295. Rec: TsdDataRecord;
  296. begin
  297. Rec := sddStageLeafXmjGl.FindKey('idxID', AID);
  298. sddStageLeafXmjGl.Remove(Rec);
  299. end;
  300. procedure TStageLeafXmjGlData.UpdateEndQuantity(
  301. ARec: TStageLeafXmjGlRecord);
  302. var
  303. fQuantity: Double;
  304. AddRec: TLeafXmjGlRecord;
  305. begin
  306. fQuantity := Decimal.Quantity.RoundTo(ARec.PreQuantity.AsFloat + ARec.Quantity.AsFloat);
  307. ARec.SetFloatValue(ARec.EndQuantity, fQuantity);
  308. if Assigned(ARec.MainRec) then
  309. begin
  310. AddRec := TLeafXmjGlRecord(ARec.MainRec);
  311. AddRec.SetFloatValue(AddRec.AddQuantity, fQuantity);
  312. end;
  313. end;
  314. procedure TStageLeafXmjGlData.UpdateEndPALRela(
  315. ARec: TStageLeafXmjGlRecord);
  316. var
  317. fValue: Double;
  318. AddRec: TLeafXmjGlRecord;
  319. begin
  320. // 实耗数量
  321. fValue := Decimal.Quantity.RoundTo(ARec.PreUsedQuantity.AsFloat + ARec.UsedQuantity.AsFloat);
  322. ARec.SetFloatValue(ARec.EndUsedQuantity, fValue);
  323. // 实耗金额
  324. fValue := Decimal.TotalPrice.RoundTo(ARec.PreUsedTotalPrice.AsFloat + ARec.UsedTotalPrice.AsFloat);
  325. ARec.SetFloatValue(ARec.EndUsedTotalPrice, fValue);
  326. // 数量差
  327. fValue := Decimal.Quantity.RoundTo(ARec.PrePAL_UsedQuantity.AsFloat + ARec.PAL_UsedQuantity.AsFloat);
  328. ARec.SetFloatValue(ARec.EndPAL_UsedQuantity, fValue);
  329. // 数量差金额
  330. fValue := Decimal.TotalPrice.RoundTo(ARec.PrePAL_UsedTotalPrice.AsFloat + ARec.PAL_UsedTotalPrice.AsFloat);
  331. ARec.SetFloatValue(ARec.EndPAL_UsedTotalPrice, fValue);
  332. // 实耗价差金额
  333. fValue := Decimal.TotalPrice.RoundTo(ARec.PrePAL_DeltaPrice.AsFloat + ARec.PAL_DeltaPrice.AsFloat);
  334. ARec.SetFloatValue(ARec.EndPAL_DeltaPrice, fValue);
  335. // 节余金额
  336. fValue := Decimal.TotalPrice.RoundTo(ARec.PrePAL_Total.AsFloat + ARec.PAL_Total.AsFloat);
  337. ARec.SetFloatValue(ARec.EndPAL_Total, fValue);
  338. if Assigned(ARec.MainRec) then
  339. begin
  340. AddRec := TLeafXmjGlRecord(ARec.MainRec);
  341. AddRec.SetFloatValue(AddRec.AddUsedQuantity, ARec.EndUsedQuantity.AsFloat);
  342. AddRec.SetFloatValue(AddRec.AddUsedTotalPrice, ARec.EndUsedTotalPrice.AsFloat);
  343. AddRec.SetFloatValue(AddRec.AddPAL_UsedQuantity, ARec.EndPAL_UsedQuantity.AsFloat);
  344. AddRec.SetFloatValue(AddRec.AddPAL_UsedTotalPrice, ARec.EndPAL_UsedTotalPrice.AsFloat);
  345. AddRec.SetFloatValue(AddRec.AddPAL_DeltaPrice, ARec.EndPAL_DeltaPrice.AsFloat);
  346. AddRec.SetFloatValue(AddRec.AddPAL_Total, ARec.EndPAL_Total.AsFloat);
  347. end;
  348. end;
  349. procedure TStageLeafXmjGlData.UpdateEndTotalPrice(
  350. ARec: TStageLeafXmjGlRecord);
  351. var
  352. fValue: Double;
  353. AddRec: TLeafXmjGlRecord;
  354. begin
  355. fValue := Decimal.TotalPrice.RoundTo(ARec.PreTotalPrice.AsFloat + ARec.TotalPrice.AsFloat);
  356. ARec.SetFloatValue(ARec.EndTotalPrice, fValue);
  357. if Assigned(ARec.MainRec) then
  358. begin
  359. AddRec := TLeafXmjGlRecord(ARec.MainRec);
  360. AddRec.SetFloatValue(AddRec.AddTotalPrice, fValue);
  361. end;
  362. end;
  363. procedure TStageLeafXmjGlData.CopyPrePhaseData;
  364. var
  365. iRecord: Integer;
  366. Rec: TLeafXmjGlRecord;
  367. NewRec: TStageLeafXmjGlRecord;
  368. begin
  369. BeforeBatchOperation;
  370. try
  371. with TProjectData(TPhaseData(FPhaseData).ProjectData).LeafXmjGlData do
  372. for iRecord := 0 to sddLeafXmjGL.RecordCount - 1 do
  373. begin
  374. Rec := TLeafXmjGlRecord(sddLeafXmjGL.Records[iRecord]);
  375. NewRec := TStageLeafXmjGlRecord(Rec.StageRec);
  376. NewRec.ID.AsInteger := Rec.ID.AsInteger;
  377. NewRec.PreQuantity.AsFloat := Rec.AddQuantity.AsFloat;
  378. NewRec.PreTotalPrice.AsFloat := Rec.AddQuantity.AsFloat;
  379. NewRec.PreUsedQuantity.AsFloat := Rec.AddUsedQuantity.AsFloat;
  380. NewRec.PreUsedTotalPrice.AsFloat := Rec.AddUsedTotalPrice.AsFloat;
  381. NewRec.PrePAL_UsedQuantity.AsFloat := Rec.AddPAL_UsedQuantity.AsFloat;
  382. NewRec.PrePAL_UsedTotalPrice.AsFloat := Rec.AddPAL_UsedTotalPrice.AsFloat;
  383. NewRec.PrePAL_DeltaPrice.AsFloat := Rec.AddPAL_DeltaPrice.AsFloat;
  384. NewRec.PrePAL_Total.AsFloat := Rec.AddPAL_Total.AsFloat;
  385. NewRec.EndQuantity.AsFloat := Rec.AddQuantity.AsFloat;
  386. NewRec.EndTotalPrice.AsFloat := Rec.AddQuantity.AsFloat;
  387. NewRec.EndUsedQuantity.AsFloat := Rec.AddUsedQuantity.AsFloat;
  388. NewRec.EndUsedTotalPrice.AsFloat := Rec.AddUsedTotalPrice.AsFloat;
  389. NewRec.EndPAL_UsedQuantity.AsFloat := Rec.AddPAL_UsedQuantity.AsFloat;
  390. NewRec.EndPAL_UsedTotalPrice.AsFloat := Rec.AddPAL_UsedTotalPrice.AsFloat;
  391. NewRec.EndPAL_DeltaPrice.AsFloat := Rec.AddPAL_DeltaPrice.AsFloat;
  392. NewRec.EndPAL_Total.AsFloat := Rec.AddPAL_Total.AsFloat;
  393. end;
  394. finally
  395. AfterBatchOperation;
  396. end;
  397. end;
  398. function TStageLeafXmjGlData.GetActive: Boolean;
  399. begin
  400. Result := sddStageLeafXmjGl.Active;
  401. end;
  402. end.