CalcData.pas 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  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. FDgnQuantity1: Double;
  68. FDgnQuantity2: Double;
  69. FDealDgnQuantity1: Double;
  70. FDealDgnQuantity2: Double;
  71. FCDgnQuantity1: Double;
  72. FCDgnQuantity2: Double;
  73. public
  74. constructor Create;
  75. destructor Destroy; override;
  76. procedure InitTotalPrice_Rc;
  77. procedure UpdateTotalPrice_Rc(AProjCalc: TProjCalc);
  78. procedure CalcTotalPrice_Rc(APrice: Double);
  79. procedure InitCalcData;
  80. procedure AddCalcData(AProjCalc: TProjCalc);
  81. procedure MinusCalcData(AProjCalc: TProjCalc);
  82. property Compile: TCompileCalc read FCompile;
  83. property AddMeasure: TMeasureCalc read FAddMeasure;
  84. property CurMeasure: TMeasureCalc read FCurMeasure;
  85. property PreMeasure: TMeasureCalc read FPreMeasure;
  86. property EndMeasure: TMeasureCalc read FEndMeasure;
  87. property DgnQuantity1: Double read FDgnQuantity1 write FDgnQuantity1;
  88. property DgnQuantity2: Double read FDgnQuantity2 write FDgnQuantity2;
  89. property DealDgnQuantity1: Double read FDealDgnQuantity1 write FDealDgnQuantity1;
  90. property DealDgnQuantity2: Double read FDealDgnQuantity2 write FDealDgnQuantity2;
  91. property CDgnQuantity1: Double read FCDgnQuantity1 write FCDgnQuantity1;
  92. property CDgnQuantity2: Double read FCDgnQuantity2 write FCDgnQuantity2;
  93. end;
  94. implementation
  95. { TCompileCalc }
  96. procedure TCompileCalc.AddCalcData(ACalc: TCompileCalc);
  97. begin
  98. Org.TotalPrice := Org.TotalPrice + ACalc.Org.TotalPrice;
  99. Mis.TotalPrice := Mis.TotalPrice + ACalc.Mis.TotalPrice;
  100. Oth.TotalPrice := Oth.TotalPrice + ACalc.Oth.TotalPrice;
  101. SubTotal.TotalPrice := SubTotal.TotalPrice + ACalc.SubTotal.TotalPrice;
  102. Org.TotalPrice_Rc := Org.TotalPrice_Rc + ACalc.Org.TotalPrice_Rc;
  103. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc + ACalc.Mis.TotalPrice_Rc;
  104. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc + ACalc.Oth.TotalPrice_Rc;
  105. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc + ACalc.SubTotal.TotalPrice_Rc;
  106. end;
  107. procedure TCompileCalc.CalcTotalPrice_Rc(APrice: Double);
  108. begin
  109. Org.TotalPrice_Rc := Org.Quantity * APrice;
  110. Mis.TotalPrice_Rc := Mis.Quantity * APrice;
  111. Oth.TotalPrice_Rc := Oth.Quantity * APrice;
  112. SubTotal.TotalPrice_Rc := SubTotal.Quantity * APrice;
  113. end;
  114. constructor TCompileCalc.Create;
  115. begin
  116. FOrg := TReCalcData.Create;
  117. FMis := TReCalcData.Create;
  118. FOth := TReCalcData.Create;
  119. FSubTotal := TReCalcData.Create;
  120. end;
  121. destructor TCompileCalc.Destroy;
  122. begin
  123. FOrg.Free;
  124. FMis.Free;
  125. FOth.Free;
  126. FSubTotal.Free;
  127. inherited;
  128. end;
  129. procedure TCompileCalc.InitCalcData;
  130. begin
  131. Org.TotalPrice := 0;
  132. Mis.TotalPrice := 0;
  133. Oth.TotalPrice := 0;
  134. SubTotal.TotalPrice := 0;
  135. InitTotalPrice_Rc;
  136. end;
  137. procedure TCompileCalc.InitTotalPrice_Rc;
  138. begin
  139. Org.TotalPrice_Rc := 0;
  140. Mis.TotalPrice_Rc := 0;
  141. Oth.TotalPrice_Rc := 0;
  142. SubTotal.TotalPrice_Rc := 0;
  143. end;
  144. procedure TCompileCalc.MinusCalcData(ACalc: TCompileCalc);
  145. begin
  146. Org.TotalPrice := Org.TotalPrice - ACalc.Org.TotalPrice;
  147. Mis.TotalPrice := Mis.TotalPrice - ACalc.Mis.TotalPrice;
  148. Oth.TotalPrice := Oth.TotalPrice - ACalc.Oth.TotalPrice;
  149. SubTotal.TotalPrice := SubTotal.TotalPrice - ACalc.SubTotal.TotalPrice;
  150. Org.TotalPrice_Rc := Org.TotalPrice_Rc - ACalc.Org.TotalPrice_Rc;
  151. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc - ACalc.Mis.TotalPrice_Rc;
  152. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc - ACalc.Oth.TotalPrice_Rc;
  153. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc - ACalc.SubTotal.TotalPrice_Rc;
  154. end;
  155. procedure TCompileCalc.UpdateTotalPrice_Rc(ACalc: TCompileCalc);
  156. begin
  157. Org.TotalPrice_Rc := Org.TotalPrice_Rc + ACalc.Org.TotalPrice_Rc;
  158. Mis.TotalPrice_Rc := Mis.TotalPrice_Rc + ACalc.Mis.TotalPrice_Rc;
  159. Oth.TotalPrice_Rc := Oth.TotalPrice_Rc + ACalc.Oth.TotalPrice_Rc;
  160. SubTotal.TotalPrice_Rc := SubTotal.TotalPrice_Rc + ACalc.SubTotal.TotalPrice_Rc;
  161. end;
  162. { TMeasureCalc }
  163. procedure TMeasureCalc.AddCalcData(ACalc: TMeasureCalc);
  164. begin
  165. Deal.TotalPrice := Deal.TotalPrice + ACalc.Deal.TotalPrice;
  166. Qc.TotalPrice := Qc.TotalPrice + ACalc.Qc.TotalPrice;
  167. Gather.TotalPrice := Gather.TotalPrice + ACalc.Gather.TotalPrice;
  168. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc + ACalc.Deal.TotalPrice_Rc;
  169. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc + ACalc.Qc.TotalPrice_Rc;
  170. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc + ACalc.Gather.TotalPrice_Rc;
  171. end;
  172. procedure TMeasureCalc.CalcTotalPrice_Rc(APrice: Double);
  173. begin
  174. Deal.TotalPrice_Rc := Deal.Quantity * APrice;
  175. Qc.TotalPrice_Rc := Qc.Quantity * APrice;
  176. Gather.TotalPrice_Rc := Gather.Quantity * APrice;
  177. end;
  178. constructor TMeasureCalc.Create;
  179. begin
  180. FDeal := TReCalcData.Create;
  181. FQc := TReCalcData.Create;
  182. FGather := TReCalcData.Create;
  183. end;
  184. destructor TMeasureCalc.Destroy;
  185. begin
  186. FDeal.Free;
  187. FQc.Free;
  188. FGather.Free;
  189. inherited;
  190. end;
  191. procedure TMeasureCalc.InitCalcData;
  192. begin
  193. Deal.TotalPrice := 0;
  194. Qc.TotalPrice := 0;
  195. Gather.TotalPrice := 0;
  196. InitTotalPrice_Rc;
  197. end;
  198. procedure TMeasureCalc.InitTotalPrice_Rc;
  199. begin
  200. Deal.TotalPrice_Rc := 0;
  201. Qc.TotalPrice_Rc := 0;
  202. Gather.TotalPrice_Rc := 0;
  203. end;
  204. procedure TMeasureCalc.MinusCalcData(ACalc: TMeasureCalc);
  205. begin
  206. Deal.TotalPrice := Deal.TotalPrice - ACalc.Deal.TotalPrice;
  207. Qc.TotalPrice := Qc.TotalPrice - ACalc.Qc.TotalPrice;
  208. Gather.TotalPrice := Gather.TotalPrice - ACalc.Gather.TotalPrice;
  209. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc - ACalc.Deal.TotalPrice_Rc;
  210. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc - ACalc.Qc.TotalPrice_Rc;
  211. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc - ACalc.Gather.TotalPrice_Rc;
  212. end;
  213. procedure TMeasureCalc.UpdateTotalPrice_Rc(ACalc: TMeasureCalc);
  214. begin
  215. Deal.TotalPrice_Rc := Deal.TotalPrice_Rc + ACalc.Deal.TotalPrice_Rc;
  216. Qc.TotalPrice_Rc := Qc.TotalPrice_Rc + ACalc.Qc.TotalPrice_Rc;
  217. Gather.TotalPrice_Rc := Gather.TotalPrice_Rc + ACalc.Gather.TotalPrice_Rc;
  218. end;
  219. { TProjCalc }
  220. procedure TProjCalc.AddCalcData(AProjCalc: TProjCalc);
  221. begin
  222. Compile.AddCalcData(AProjCalc.Compile);
  223. AddMeasure.AddCalcData(AProjCalc.AddMeasure);
  224. CurMeasure.AddCalcData(AProjCalc.CurMeasure);
  225. PreMeasure.AddCalcData(AProjCalc.PreMeasure);
  226. EndMeasure.AddCalcData(AProjCalc.EndMeasure);
  227. end;
  228. procedure TProjCalc.CalcTotalPrice_Rc(APrice: Double);
  229. begin
  230. Compile.CalcTotalPrice_Rc(APrice);
  231. AddMeasure.CalcTotalPrice_Rc(APrice);
  232. CurMeasure.CalcTotalPrice_Rc(APrice);
  233. PreMeasure.CalcTotalPrice_Rc(APrice);
  234. EndMeasure.CalcTotalPrice_Rc(APrice);
  235. end;
  236. constructor TProjCalc.Create;
  237. begin
  238. FCompile := TCompileCalc.Create;
  239. FAddMeasure := TMeasureCalc.Create;
  240. FCurMeasure := TMeasureCalc.Create;
  241. FPreMeasure := TMeasureCalc.Create;
  242. FEndMeasure := TMeasureCalc.Create;
  243. FDgnQuantity1 := 0;
  244. FDgnQuantity2 := 0;
  245. FDealDgnQuantity1 := 0;
  246. FDealDgnQuantity2 := 0;
  247. FCDgnQuantity1 := 0;
  248. FCDgnQuantity2 := 0;
  249. end;
  250. destructor TProjCalc.Destroy;
  251. begin
  252. FCompile.Free;
  253. FAddMeasure.Free;
  254. FCurMeasure.Free;
  255. FPreMeasure.Free;
  256. FEndMeasure.Free;
  257. inherited;
  258. end;
  259. procedure TProjCalc.InitCalcData;
  260. begin
  261. Compile.InitCalcData;
  262. AddMeasure.InitCalcData;
  263. CurMeasure.InitCalcData;
  264. PreMeasure.InitCalcData;
  265. EndMeasure.InitCalcData;
  266. end;
  267. procedure TProjCalc.InitTotalPrice_Rc;
  268. begin
  269. Compile.InitTotalPrice_Rc;
  270. AddMeasure.InitTotalPrice_Rc;
  271. CurMeasure.InitTotalPrice_Rc;
  272. PreMeasure.InitTotalPrice_Rc;
  273. EndMeasure.InitTotalPrice_Rc;
  274. end;
  275. procedure TProjCalc.MinusCalcData(AProjCalc: TProjCalc);
  276. begin
  277. Compile.MinusCalcData(AProjCalc.Compile);
  278. AddMeasure.MinusCalcData(AProjCalc.AddMeasure);
  279. CurMeasure.MinusCalcData(AProjCalc.CurMeasure);
  280. PreMeasure.MinusCalcData(AProjCalc.PreMeasure);
  281. EndMeasure.MinusCalcData(AProjCalc.EndMeasure);
  282. end;
  283. procedure TProjCalc.UpdateTotalPrice_Rc(AProjCalc: TProjCalc);
  284. begin
  285. Compile.UpdateTotalPrice_Rc(AProjCalc.Compile);
  286. AddMeasure.UpdateTotalPrice_Rc(AProjCalc.AddMeasure);
  287. CurMeasure.UpdateTotalPrice_Rc(AProjCalc.CurMeasure);
  288. PreMeasure.UpdateTotalPrice_Rc(AProjCalc.PreMeasure);
  289. EndMeasure.UpdateTotalPrice_Rc(AProjCalc.EndMeasure);
  290. end;
  291. { TCalcData }
  292. procedure TCalcData.AddQuantity(AValue: Double);
  293. begin
  294. FQuantity := FQuantity + AValue;
  295. end;
  296. procedure TCalcData.AddTotalPrice(AValue: Double);
  297. begin
  298. FTotalPrice := FTotalPrice + AValue;
  299. end;
  300. constructor TCalcData.Create;
  301. begin
  302. FQuantity := 0;
  303. FTotalPrice := 0;
  304. end;
  305. { TReCalcData }
  306. constructor TReCalcData.Create;
  307. begin
  308. inherited;
  309. FTotalPrice_Rc := 0;
  310. end;
  311. end.