StageLeafXmjGlDm.pas 16 KB

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