rpgBillsCalcDm.pas 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. unit rpgBillsCalcDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdDB, sdProvider, ADODB, ProjGatherTree, CalcData;
  5. type
  6. TrpgBillsCalcData = class(TDataModule)
  7. sdpBillsCalc: TsdADOProvider;
  8. sddBillsCalc: TsdDataSet;
  9. private
  10. FProjIndex: Integer;
  11. FProjType: Integer;
  12. procedure SaveBillsNodeCalc(ANode: TProjGatherTreeNode; AProjCalc: TProjCalc);
  13. procedure SaveBillsCalc(ATree: TProjGatherTree);
  14. procedure SaveBillsGather(ATree: TProjGatherTree);
  15. public
  16. constructor Create(AConnection: TADOConnection);
  17. procedure SaveSpecialProjDataTo(ATree: TProjGatherTree; AProjType: Integer; const ATableName: string);
  18. procedure SaveProjDataTo(ATree: TProjGatherTree; AProjIndex: Integer; const ATableName: string);
  19. procedure SaveGatherDataTo(ATree: TProjGatherTree; const ATableName: string);
  20. end;
  21. implementation
  22. uses CacheTree;
  23. {$R *.dfm}
  24. { TrpgBillsCalcData }
  25. constructor TrpgBillsCalcData.Create(AConnection: TADOConnection);
  26. begin
  27. inherited Create(nil);
  28. sdpBillsCalc.Connection := AConnection;
  29. end;
  30. procedure TrpgBillsCalcData.SaveBillsCalc(ATree: TProjGatherTree);
  31. var
  32. iNode: Integer;
  33. vNode: TProjGatherTreeNode;
  34. begin
  35. for iNode := 0 to ATree.CacheNodes.Count - 1 do
  36. begin
  37. vNode := TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]);
  38. if FProjType = 0 then
  39. SaveBillsNodeCalc(vNode, vNode.Proj[FProjIndex])
  40. else if FProjType > 0 then
  41. SaveBillsNodeCalc(vNode, vNode.SpecialProj[FProjType-1]);
  42. end;
  43. end;
  44. procedure TrpgBillsCalcData.SaveBillsGather(ATree: TProjGatherTree);
  45. var
  46. iNode: Integer;
  47. vNode: TProjGatherTreeNode;
  48. begin
  49. for iNode := 0 to ATree.CacheNodes.Count - 1 do
  50. begin
  51. vNode := TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]);
  52. SaveBillsNodeCalc(vNode, vNode.GatherCalc);
  53. end;
  54. end;
  55. procedure TrpgBillsCalcData.SaveBillsNodeCalc(ANode: TProjGatherTreeNode;
  56. AProjCalc: TProjCalc);
  57. var
  58. Rec: TsdDataRecord;
  59. begin
  60. Rec := sddBillsCalc.Add;
  61. Rec.ValueByName('ID').AsInteger := ANode.ID;
  62. Rec.ValueByName('ProjID').AsInteger := FProjIndex;
  63. Rec.ValueByName('ProjType').AsInteger := FProjType;
  64. Rec.ValueByName('OrgQuantity').AsFloat := AProjCalc.Compile.Org.Quantity;
  65. Rec.ValueByName('OrgTotalPrice').AsFloat := AProjCalc.Compile.Org.TotalPrice;
  66. Rec.ValueByName('OrgTotalPrice_Rc').AsFloat := AProjCalc.Compile.Org.TotalPrice_Rc;
  67. Rec.ValueByName('MisQuantity').AsFloat := AProjCalc.Compile.Mis.Quantity;
  68. Rec.ValueByName('MisTotalPrice').AsFloat := AProjCalc.Compile.Mis.TotalPrice;
  69. Rec.ValueByName('MisTotalPrice_Rc').AsFloat := AProjCalc.Compile.Mis.TotalPrice_Rc;
  70. Rec.ValueByName('OthQuantity').AsFloat := AProjCalc.Compile.Oth.Quantity;
  71. Rec.ValueByName('OthTotalPrice').AsFloat := AProjCalc.Compile.Oth.TotalPrice;
  72. Rec.ValueByName('OthTotalPrice_Rc').AsFloat := AProjCalc.Compile.Oth.TotalPrice_Rc;
  73. Rec.ValueByName('Quantity').AsFloat := AProjCalc.Compile.SubTotal.Quantity;
  74. Rec.ValueByName('TotalPrice').AsFloat := AProjCalc.Compile.SubTotal.TotalPrice;
  75. Rec.ValueByName('TotalPrice_Rc').AsFloat := AProjCalc.Compile.SubTotal.TotalPrice_Rc;
  76. Rec.ValueByName('AddDealQuantity').AsFloat := AProjCalc.AddMeasure.Deal.Quantity;
  77. Rec.ValueByName('AddDealTotalPrice').AsFloat := AProjCalc.AddMeasure.Deal.TotalPrice;
  78. Rec.ValueByName('AddDealTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Deal.TotalPrice_Rc;
  79. Rec.ValueByName('AddQcQuantity').AsFloat := AProjCalc.AddMeasure.Qc.Quantity;
  80. Rec.ValueByName('AddQcTotalPrice').AsFloat := AProjCalc.AddMeasure.Qc.TotalPrice;
  81. Rec.ValueByName('AddQcTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Qc.TotalPrice_Rc;
  82. Rec.ValueByName('AddGatherQuantity').AsFloat := AProjCalc.AddMeasure.Gather.Quantity;
  83. Rec.ValueByName('AddGatherTotalPrice').AsFloat := AProjCalc.AddMeasure.Gather.TotalPrice;
  84. Rec.ValueByName('AddGatherTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Gather.TotalPrice_Rc;
  85. Rec.ValueByName('CurDealQuantity').AsFloat := AProjCalc.CurMeasure.Deal.Quantity;
  86. Rec.ValueByName('CurDealTotalPrice').AsFloat := AProjCalc.CurMeasure.Deal.TotalPrice;
  87. Rec.ValueByName('CurDealTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Deal.TotalPrice_Rc;
  88. Rec.ValueByName('CurQcQuantity').AsFloat := AProjCalc.CurMeasure.Qc.Quantity;
  89. Rec.ValueByName('CurQcTotalPrice').AsFloat := AProjCalc.CurMeasure.Qc.TotalPrice;
  90. Rec.ValueByName('CurQcTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Qc.TotalPrice_Rc;
  91. Rec.ValueByName('CurGatherQuantity').AsFloat := AProjCalc.CurMeasure.Gather.Quantity;
  92. Rec.ValueByName('CurGatherTotalPrice').AsFloat := AProjCalc.CurMeasure.Gather.TotalPrice;
  93. Rec.ValueByName('CurGatherTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Gather.TotalPrice_Rc;
  94. Rec.ValueByName('PreDealQuantity').AsFloat := AProjCalc.PreMeasure.Deal.Quantity;
  95. Rec.ValueByName('PreDealTotalPrice').AsFloat := AProjCalc.PreMeasure.Deal.TotalPrice;
  96. Rec.ValueByName('PreDealTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Deal.TotalPrice_Rc;
  97. Rec.ValueByName('PreQcQuantity').AsFloat := AProjCalc.PreMeasure.Qc.Quantity;
  98. Rec.ValueByName('PreQcTotalPrice').AsFloat := AProjCalc.PreMeasure.Qc.TotalPrice;
  99. Rec.ValueByName('PreQcTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Qc.TotalPrice_Rc;
  100. Rec.ValueByName('PreGatherQuantity').AsFloat := AProjCalc.PreMeasure.Gather.Quantity;
  101. Rec.ValueByName('PreGatherTotalPrice').AsFloat := AProjCalc.PreMeasure.Gather.TotalPrice;
  102. Rec.ValueByName('PreGatherTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Gather.TotalPrice_Rc;
  103. Rec.ValueByName('EndDealQuantity').AsFloat := AProjCalc.EndMeasure.Deal.Quantity;
  104. Rec.ValueByName('EndDealTotalPrice').AsFloat := AProjCalc.EndMeasure.Deal.TotalPrice;
  105. Rec.ValueByName('EndDealTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Deal.TotalPrice_Rc;
  106. Rec.ValueByName('EndQcQuantity').AsFloat := AProjCalc.EndMeasure.Qc.Quantity;
  107. Rec.ValueByName('EndQcTotalPrice').AsFloat := AProjCalc.EndMeasure.Qc.TotalPrice;
  108. Rec.ValueByName('EndQcTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Qc.TotalPrice_Rc;
  109. Rec.ValueByName('EndGatherQuantity').AsFloat := AProjCalc.EndMeasure.Gather.Quantity;
  110. Rec.ValueByName('EndGatherTotalPrice').AsFloat := AProjCalc.EndMeasure.Gather.TotalPrice;
  111. Rec.ValueByName('EndGatherTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Gather.TotalPrice_Rc;
  112. Rec.ValueByName('ZoneDealQuantity').AsFloat := AProjCalc.ZoneMeasure.Deal.Quantity;
  113. Rec.ValueByName('ZoneDealTotalPrice').AsFloat := AProjCalc.ZoneMeasure.Deal.TotalPrice;
  114. Rec.ValueByName('ZoneDealTotalPrice_Rc').AsFloat := AProjCalc.ZoneMeasure.Deal.TotalPrice_Rc;
  115. Rec.ValueByName('ZoneQcQuantity').AsFloat := AProjCalc.ZoneMeasure.Qc.Quantity;
  116. Rec.ValueByName('ZoneQcTotalPrice').AsFloat := AProjCalc.ZoneMeasure.Qc.TotalPrice;
  117. Rec.ValueByName('ZoneQcTotalPrice_Rc').AsFloat := AProjCalc.ZoneMeasure.Qc.TotalPrice_Rc;
  118. Rec.ValueByName('ZoneGatherQuantity').AsFloat := AProjCalc.ZoneMeasure.Gather.Quantity;
  119. Rec.ValueByName('ZoneGatherTotalPrice').AsFloat := AProjCalc.ZoneMeasure.Gather.TotalPrice;
  120. Rec.ValueByName('ZoneGatherTotalPrice_Rc').AsFloat := AProjCalc.ZoneMeasure.Gather.TotalPrice_Rc;
  121. Rec.ValueByName('DgnQuantity1').AsFloat := AProjCalc.DgnQuantity1;
  122. Rec.ValueByName('DgnQuantity2').AsFloat := AProjCalc.DgnQuantity2;
  123. Rec.ValueByName('DealDgnQuantity1').AsFloat := AProjCalc.DealDgnQuantity1;
  124. Rec.ValueByName('DealDgnQuantity2').AsFloat := AProjCalc.DealDgnQuantity2;
  125. Rec.ValueByName('CDgnQuantity1').AsFloat := AProjCalc.CDgnQuantity1;
  126. Rec.ValueByName('CDgnQuantity2').AsFloat := AProjCalc.CDgnQuantity2;
  127. end;
  128. procedure TrpgBillsCalcData.SaveGatherDataTo(ATree: TProjGatherTree;
  129. const ATableName: string);
  130. begin
  131. FProjIndex := -2;
  132. FProjType := 0;
  133. sdpBillsCalc.TableName := ATableName;
  134. sddBillsCalc.Open;
  135. sddBillsCalc.BeginUpdate;
  136. try
  137. SaveBillsGather(ATree);
  138. SaveBillsNodeCalc(ATree.GatherNode, ATree.GatherNode.GatherCalc);
  139. finally
  140. sddBillsCalc.EndUpdate;
  141. sddBillsCalc.Save;
  142. end;
  143. end;
  144. procedure TrpgBillsCalcData.SaveProjDataTo(ATree: TProjGatherTree; AProjIndex: Integer;
  145. const ATableName: string);
  146. begin
  147. FProjIndex := AProjIndex;
  148. FProjType := 0;
  149. sdpBillsCalc.TableName := ATableName;
  150. sddBillsCalc.Open;
  151. sddBillsCalc.BeginUpdate;
  152. try
  153. SaveBillsCalc(ATree);
  154. SaveBillsNodeCalc(ATree.GatherNode, ATree.GatherNode.Proj[AProjIndex]);
  155. finally
  156. sddBillsCalc.EndUpdate;
  157. sddBillsCalc.Save;
  158. end;
  159. end;
  160. procedure TrpgBillsCalcData.SaveSpecialProjDataTo(ATree: TProjGatherTree;
  161. AProjType: Integer; const ATableName: string);
  162. begin
  163. FProjIndex := -3;
  164. FProjType := AProjType;
  165. sdpBillsCalc.TableName := ATableName;
  166. sddBillsCalc.Open;
  167. sddBillsCalc.BeginUpdate;
  168. try
  169. SaveBillsCalc(ATree);
  170. SaveBillsNodeCalc(ATree.GatherNode, ATree.GatherNode.SpecialProj[AProjType-1]);
  171. finally
  172. sddBillsCalc.EndUpdate;
  173. sddBillsCalc.Save;
  174. end;
  175. end;
  176. end.