CalcData.pas 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. unit CalcData;
  2. interface
  3. type
  4. TCalcData = class
  5. private
  6. FQuantity: Double;
  7. FTotalPrice: Double;
  8. public
  9. constructor Create; virtual;
  10. procedure AddQuantity(AValue: Double);
  11. procedure AddTotalPrice(AValue: Double);
  12. property Quantity: Double read FQuantity write FQuantity;
  13. property TotalPrice: Double read FTotalPrice write FTotalPrice;
  14. end;
  15. TReCalcData = class(TCalcData)
  16. private
  17. FTotalPrice_Rc: Double;
  18. public
  19. constructor Create; override;
  20. property TotalPrice_Rc: Double read FTotalPrice_Rc write FTotalPrice_Rc;
  21. end;
  22. TCompileCalc = class
  23. private
  24. FOrg: TReCalcData;
  25. FMis: TReCalcData;
  26. FOth: TReCalcData;
  27. FSubTotal: TReCalcData;
  28. public
  29. constructor Create;
  30. destructor Destroy; override;
  31. procedure InitTotalPrice_Rc;
  32. procedure UpdateTotalPrice_Rc(ACalc: TCompileCalc);
  33. procedure CalcTotalPrice_Rc(APrice: Double);
  34. procedure InitCalcData;
  35. procedure AddCalcData(ACalc: TCompileCalc);
  36. procedure MinusCalcData(ACalc: TCompileCalc);
  37. property Org: TReCalcData read FOrg write FOrg;
  38. property Mis: TReCalcData read FMis write FMis;
  39. property Oth: TReCalcData read FOth write FOth;
  40. property SubTotal: TReCalcData read FSubTotal write FSubTotal;
  41. end;
  42. TMeasureCalc = class
  43. private
  44. FDeal: TReCalcData;
  45. FQc: TReCalcData;
  46. FGather: TReCalcData;
  47. public
  48. constructor Create;
  49. destructor Destroy; override;
  50. procedure InitTotalPrice_Rc;
  51. procedure UpdateTotalPrice_Rc(ACalc: TMeasureCalc);
  52. procedure CalcTotalPrice_Rc(APrice: Double);
  53. procedure InitCalcData;
  54. procedure AddCalcData(ACalc: TMeasureCalc);
  55. procedure MinusCalcData(ACalc: TMeasureCalc);
  56. property Deal: TReCalcData read FDeal write FDeal;
  57. property Qc: TReCalcData read FQc write FQc;
  58. property Gather: TReCalcData read FGather write FGather;
  59. end;
  60. TProjCalc = class
  61. private
  62. FCompile: TCompileCalc;
  63. FAddMeasure: TMeasureCalc;
  64. FCurMeasure: TMeasureCalc;
  65. FPreMeasure: TMeasureCalc;
  66. FEndMeasure: TMeasureCalc;
  67. FZoneMeasure: TMeasureCalc;
  68. FDgnQuantity1: Double;
  69. FDgnQuantity2: Double;
  70. FDealDgnQuantity1: Double;
  71. FDealDgnQuantity2: Double;
  72. FCDgnQuantity1: Double;
  73. FCDgnQuantity2: Double;
  74. public
  75. constructor Create;
  76. destructor Destroy; override;
  77. procedure InitTotalPrice_Rc;
  78. procedure UpdateTotalPrice_Rc(AProjCalc: TProjCalc);
  79. procedure CalcTotalPrice_Rc(APrice: Double);
  80. procedure InitCalcData;
  81. procedure AddCalcData(AProjCalc: TProjCalc);
  82. procedure MinusCalcData(AProjCalc: TProjCalc);
  83. property Compile: TCompileCalc read FCompile;
  84. property AddMeasure: TMeasureCalc read FAddMeasure;
  85. property CurMeasure: TMeasureCalc read FCurMeasure;
  86. property PreMeasure: TMeasureCalc read FPreMeasure;
  87. property EndMeasure: TMeasureCalc read FEndMeasure;
  88. property ZoneMeasure: TMeasureCalc read FZoneMeasure;
  89. property DgnQuantity1: Double read FDgnQuantity1 write FDgnQuantity1;
  90. property DgnQuantity2: Double read FDgnQuantity2 write FDgnQuantity2;
  91. property DealDgnQuantity1: Double read FDealDgnQuantity1 write FDealDgnQuantity1;
  92. property DealDgnQuantity2: Double read FDealDgnQuantity2 write FDealDgnQuantity2;
  93. property CDgnQuantity1: Double read FCDgnQuantity1 write FCDgnQuantity1;
  94. property CDgnQuantity2: Double read FCDgnQuantity2 write FCDgnQuantity2;
  95. end;
  96. implementation
  97. { TCompileCalc }
  98. procedure TCompileCalc.AddCalcData(ACalc: TCompileCalc);
  99. begin
  100. Org.TotalPrice := Org.TotalPrice + ACalc.Org.TotalPrice;
  101. Mis.TotalPrice := Mis.TotalPrice + ACalc.Mis.TotalPrice;
  102. Oth.TotalPrice := Oth.TotalPrice + ACalc.Oth.TotalPrice;
  103. SubTotal.TotalPrice := SubTotal.TotalPrice + ACalc.SubTotal.TotalPrice;
  104. Org.TotalPrice_Rc := Org.TotalPrice_Rc + ACalc.Org.TotalPrice_Rc;
  105. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc + ACalc.Mis.TotalPrice_Rc;
  106. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc + ACalc.Oth.TotalPrice_Rc;
  107. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc + ACalc.SubTotal.TotalPrice_Rc;
  108. end;
  109. procedure TCompileCalc.CalcTotalPrice_Rc(APrice: Double);
  110. begin
  111. Org.TotalPrice_Rc := Org.Quantity * APrice;
  112. Mis.TotalPrice_Rc := Mis.Quantity * APrice;
  113. Oth.TotalPrice_Rc := Oth.Quantity * APrice;
  114. SubTotal.TotalPrice_Rc := SubTotal.Quantity * APrice;
  115. end;
  116. constructor TCompileCalc.Create;
  117. begin
  118. FOrg := TReCalcData.Create;
  119. FMis := TReCalcData.Create;
  120. FOth := TReCalcData.Create;
  121. FSubTotal := TReCalcData.Create;
  122. end;
  123. destructor TCompileCalc.Destroy;
  124. begin
  125. FOrg.Free;
  126. FMis.Free;
  127. FOth.Free;
  128. FSubTotal.Free;
  129. inherited;
  130. end;
  131. procedure TCompileCalc.InitCalcData;
  132. begin
  133. Org.TotalPrice := 0;
  134. Mis.TotalPrice := 0;
  135. Oth.TotalPrice := 0;
  136. SubTotal.TotalPrice := 0;
  137. InitTotalPrice_Rc;
  138. end;
  139. procedure TCompileCalc.InitTotalPrice_Rc;
  140. begin
  141. Org.TotalPrice_Rc := 0;
  142. Mis.TotalPrice_Rc := 0;
  143. Oth.TotalPrice_Rc := 0;
  144. SubTotal.TotalPrice_Rc := 0;
  145. end;
  146. procedure TCompileCalc.MinusCalcData(ACalc: TCompileCalc);
  147. begin
  148. Org.TotalPrice := Org.TotalPrice - ACalc.Org.TotalPrice;
  149. Mis.TotalPrice := Mis.TotalPrice - ACalc.Mis.TotalPrice;
  150. Oth.TotalPrice := Oth.TotalPrice - ACalc.Oth.TotalPrice;
  151. SubTotal.TotalPrice := SubTotal.TotalPrice - ACalc.SubTotal.TotalPrice;
  152. Org.TotalPrice_Rc := Org.TotalPrice_Rc - ACalc.Org.TotalPrice_Rc;
  153. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc - ACalc.Mis.TotalPrice_Rc;
  154. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc - ACalc.Oth.TotalPrice_Rc;
  155. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc - ACalc.SubTotal.TotalPrice_Rc;
  156. end;
  157. procedure TCompileCalc.UpdateTotalPrice_Rc(ACalc: TCompileCalc);
  158. begin
  159. Org.TotalPrice_Rc := Org.TotalPrice_Rc + ACalc.Org.TotalPrice_Rc;
  160. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc + ACalc.Mis.TotalPrice_Rc;
  161. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc + ACalc.Oth.TotalPrice_Rc;
  162. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc + ACalc.SubTotal.TotalPrice_Rc;
  163. end;
  164. { TMeasureCalc }
  165. procedure TMeasureCalc.AddCalcData(ACalc: TMeasureCalc);
  166. begin
  167. Deal.TotalPrice := Deal.TotalPrice + ACalc.Deal.TotalPrice;
  168. Qc.TotalPrice := Qc.TotalPrice + ACalc.Qc.TotalPrice;
  169. Gather.TotalPrice := Gather.TotalPrice + ACalc.Gather.TotalPrice;
  170. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc + ACalc.Deal.TotalPrice_Rc;
  171. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc + ACalc.Qc.TotalPrice_Rc;
  172. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc + ACalc.Gather.TotalPrice_Rc;
  173. end;
  174. procedure TMeasureCalc.CalcTotalPrice_Rc(APrice: Double);
  175. begin
  176. Deal.TotalPrice_Rc := Deal.Quantity * APrice;
  177. Qc.TotalPrice_Rc := Qc.Quantity * APrice;
  178. Gather.TotalPrice_Rc := Gather.Quantity * APrice;
  179. end;
  180. constructor TMeasureCalc.Create;
  181. begin
  182. FDeal := TReCalcData.Create;
  183. FQc := TReCalcData.Create;
  184. FGather := TReCalcData.Create;
  185. end;
  186. destructor TMeasureCalc.Destroy;
  187. begin
  188. FDeal.Free;
  189. FQc.Free;
  190. FGather.Free;
  191. inherited;
  192. end;
  193. procedure TMeasureCalc.InitCalcData;
  194. begin
  195. Deal.TotalPrice := 0;
  196. Qc.TotalPrice := 0;
  197. Gather.TotalPrice := 0;
  198. InitTotalPrice_Rc;
  199. end;
  200. procedure TMeasureCalc.InitTotalPrice_Rc;
  201. begin
  202. Deal.TotalPrice_Rc := 0;
  203. Qc.TotalPrice_Rc := 0;
  204. Gather.TotalPrice_Rc := 0;
  205. end;
  206. procedure TMeasureCalc.MinusCalcData(ACalc: TMeasureCalc);
  207. begin
  208. Deal.TotalPrice := Deal.TotalPrice - ACalc.Deal.TotalPrice;
  209. Qc.TotalPrice := Qc.TotalPrice - ACalc.Qc.TotalPrice;
  210. Gather.TotalPrice := Gather.TotalPrice - ACalc.Gather.TotalPrice;
  211. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc - ACalc.Deal.TotalPrice_Rc;
  212. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc - ACalc.Qc.TotalPrice_Rc;
  213. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc - ACalc.Gather.TotalPrice_Rc;
  214. end;
  215. procedure TMeasureCalc.UpdateTotalPrice_Rc(ACalc: TMeasureCalc);
  216. begin
  217. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc + ACalc.Deal.TotalPrice_Rc;
  218. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc + ACalc.Qc.TotalPrice_Rc;
  219. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc + ACalc.Gather.TotalPrice_Rc;
  220. end;
  221. { TProjCalc }
  222. procedure TProjCalc.AddCalcData(AProjCalc: TProjCalc);
  223. begin
  224. Compile.AddCalcData(AProjCalc.Compile);
  225. AddMeasure.AddCalcData(AProjCalc.AddMeasure);
  226. CurMeasure.AddCalcData(AProjCalc.CurMeasure);
  227. PreMeasure.AddCalcData(AProjCalc.PreMeasure);
  228. EndMeasure.AddCalcData(AProjCalc.EndMeasure);
  229. ZoneMeasure.AddCalcData(AProjCalc.ZoneMeasure);
  230. end;
  231. procedure TProjCalc.CalcTotalPrice_Rc(APrice: Double);
  232. begin
  233. Compile.CalcTotalPrice_Rc(APrice);
  234. AddMeasure.CalcTotalPrice_Rc(APrice);
  235. CurMeasure.CalcTotalPrice_Rc(APrice);
  236. PreMeasure.CalcTotalPrice_Rc(APrice);
  237. EndMeasure.CalcTotalPrice_Rc(APrice);
  238. ZoneMeasure.CalcTotalPrice_Rc(APrice);
  239. end;
  240. constructor TProjCalc.Create;
  241. begin
  242. FCompile := TCompileCalc.Create;
  243. FAddMeasure := TMeasureCalc.Create;
  244. FCurMeasure := TMeasureCalc.Create;
  245. FPreMeasure := TMeasureCalc.Create;
  246. FEndMeasure := TMeasureCalc.Create;
  247. FZoneMeasure := TMeasureCalc.Create;
  248. FDgnQuantity1 := 0;
  249. FDgnQuantity2 := 0;
  250. FDealDgnQuantity1 := 0;
  251. FDealDgnQuantity2 := 0;
  252. FCDgnQuantity1 := 0;
  253. FCDgnQuantity2 := 0;
  254. end;
  255. destructor TProjCalc.Destroy;
  256. begin
  257. FCompile.Free;
  258. FAddMeasure.Free;
  259. FCurMeasure.Free;
  260. FPreMeasure.Free;
  261. FEndMeasure.Free;
  262. FZoneMeasure.Free;
  263. inherited;
  264. end;
  265. procedure TProjCalc.InitCalcData;
  266. begin
  267. Compile.InitCalcData;
  268. AddMeasure.InitCalcData;
  269. CurMeasure.InitCalcData;
  270. PreMeasure.InitCalcData;
  271. EndMeasure.InitCalcData;
  272. ZoneMeasure.InitCalcData;
  273. end;
  274. procedure TProjCalc.InitTotalPrice_Rc;
  275. begin
  276. Compile.InitTotalPrice_Rc;
  277. AddMeasure.InitTotalPrice_Rc;
  278. CurMeasure.InitTotalPrice_Rc;
  279. PreMeasure.InitTotalPrice_Rc;
  280. EndMeasure.InitTotalPrice_Rc;
  281. ZoneMeasure.InitTotalPrice_Rc;
  282. end;
  283. procedure TProjCalc.MinusCalcData(AProjCalc: TProjCalc);
  284. begin
  285. Compile.MinusCalcData(AProjCalc.Compile);
  286. AddMeasure.MinusCalcData(AProjCalc.AddMeasure);
  287. CurMeasure.MinusCalcData(AProjCalc.CurMeasure);
  288. PreMeasure.MinusCalcData(AProjCalc.PreMeasure);
  289. EndMeasure.MinusCalcData(AProjCalc.EndMeasure);
  290. ZoneMeasure.MinusCalcData(AProjCalc.ZoneMeasure);
  291. end;
  292. procedure TProjCalc.UpdateTotalPrice_Rc(AProjCalc: TProjCalc);
  293. begin
  294. Compile.UpdateTotalPrice_Rc(AProjCalc.Compile);
  295. AddMeasure.UpdateTotalPrice_Rc(AProjCalc.AddMeasure);
  296. CurMeasure.UpdateTotalPrice_Rc(AProjCalc.CurMeasure);
  297. PreMeasure.UpdateTotalPrice_Rc(AProjCalc.PreMeasure);
  298. EndMeasure.UpdateTotalPrice_Rc(AProjCalc.EndMeasure);
  299. ZoneMeasure.UpdateTotalPrice_Rc(AProjCalc.ZoneMeasure);
  300. end;
  301. { TCalcData }
  302. procedure TCalcData.AddQuantity(AValue: Double);
  303. begin
  304. FQuantity := FQuantity + AValue;
  305. end;
  306. procedure TCalcData.AddTotalPrice(AValue: Double);
  307. begin
  308. FTotalPrice := FTotalPrice + AValue;
  309. end;
  310. constructor TCalcData.Create;
  311. begin
  312. FQuantity := 0;
  313. FTotalPrice := 0;
  314. end;
  315. { TReCalcData }
  316. constructor TReCalcData.Create;
  317. begin
  318. inherited;
  319. FTotalPrice_Rc := 0;
  320. end;
  321. end.