rpgBillsCalcDm.pas 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. procedure SaveBillsNodeCalc(ANode: TProjGatherTreeNode; AProjCalc: TProjCalc; AProjIndex: Integer);
  11. procedure SaveBillsCalc(ATree: TProjGatherTree; AProjIndex: Integer);
  12. procedure SaveBillsGather(ATree: TProjGatherTree);
  13. public
  14. constructor Create(AConnection: TADOConnection);
  15. procedure SaveProjDataTo(ATree: TProjGatherTree; AProjIndex: Integer; const ATableName: string);
  16. procedure SaveGatherDataTo(ATree: TProjGatherTree; const ATableName: string);
  17. end;
  18. implementation
  19. uses CacheTree;
  20. {$R *.dfm}
  21. { TrpgBillsCalcData }
  22. constructor TrpgBillsCalcData.Create(AConnection: TADOConnection);
  23. begin
  24. inherited Create(nil);
  25. sdpBillsCalc.Connection := AConnection;
  26. end;
  27. procedure TrpgBillsCalcData.SaveBillsCalc(ATree: TProjGatherTree;
  28. AProjIndex: Integer);
  29. var
  30. iNode: Integer;
  31. vNode: TProjGatherTreeNode;
  32. begin
  33. for iNode := 0 to ATree.CacheNodes.Count - 1 do
  34. begin
  35. vNode := TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]);
  36. SaveBillsNodeCalc(vNode, vNode.Proj[AProjIndex], AProjIndex);
  37. end;
  38. end;
  39. procedure TrpgBillsCalcData.SaveBillsGather(ATree: TProjGatherTree);
  40. var
  41. iNode: Integer;
  42. vNode: TProjGatherTreeNode;
  43. begin
  44. for iNode := 0 to ATree.CacheNodes.Count - 1 do
  45. begin
  46. vNode := TProjGatherTreeNode(ATree.CacheNodes.Items[iNode]);
  47. SaveBillsNodeCalc(vNode, vNode.GatherCalc, -2);
  48. end;
  49. end;
  50. procedure TrpgBillsCalcData.SaveBillsNodeCalc(ANode: TProjGatherTreeNode;
  51. AProjCalc: TProjCalc; AProjIndex: Integer);
  52. var
  53. Rec: TsdDataRecord;
  54. begin
  55. Rec := sddBillsCalc.Add;
  56. Rec.ValueByName('ID').AsInteger := ANode.ID;
  57. Rec.ValueByName('ProjID').AsInteger := AProjIndex;
  58. Rec.ValueByName('OrgQuantity').AsFloat := AProjCalc.Compile.Org.Quantity;
  59. Rec.ValueByName('OrgTotalPrice').AsFloat := AProjCalc.Compile.Org.TotalPrice;
  60. Rec.ValueByName('OrgTotalPrice_Rc').AsFloat := AProjCalc.Compile.Org.TotalPrice_Rc;
  61. Rec.ValueByName('MisQuantity').AsFloat := AProjCalc.Compile.Mis.Quantity;
  62. Rec.ValueByName('MisTotalPrice').AsFloat := AProjCalc.Compile.Mis.TotalPrice;
  63. Rec.ValueByName('MisTotalPrice_Rc').AsFloat := AProjCalc.Compile.Mis.TotalPrice_Rc;
  64. Rec.ValueByName('OthQuantity').AsFloat := AProjCalc.Compile.Oth.Quantity;
  65. Rec.ValueByName('OthTotalPrice').AsFloat := AProjCalc.Compile.Oth.TotalPrice;
  66. Rec.ValueByName('OthTotalPrice_Rc').AsFloat := AProjCalc.Compile.Oth.TotalPrice_Rc;
  67. Rec.ValueByName('Quantity').AsFloat := AProjCalc.Compile.SubTotal.Quantity;
  68. Rec.ValueByName('TotalPrice').AsFloat := AProjCalc.Compile.SubTotal.TotalPrice;
  69. Rec.ValueByName('TotalPrice_Rc').AsFloat := AProjCalc.Compile.SubTotal.TotalPrice_Rc;
  70. Rec.ValueByName('AddDealQuantity').AsFloat := AProjCalc.AddMeasure.Deal.Quantity;
  71. Rec.ValueByName('AddDealTotalPrice').AsFloat := AProjCalc.AddMeasure.Deal.TotalPrice;
  72. Rec.ValueByName('AddDealTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Deal.TotalPrice_Rc;
  73. Rec.ValueByName('AddQcQuantity').AsFloat := AProjCalc.AddMeasure.Qc.Quantity;
  74. Rec.ValueByName('AddQcTotalPrice').AsFloat := AProjCalc.AddMeasure.Qc.TotalPrice;
  75. Rec.ValueByName('AddQcTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Qc.TotalPrice_Rc;
  76. Rec.ValueByName('AddGatherQuantity').AsFloat := AProjCalc.AddMeasure.Gather.Quantity;
  77. Rec.ValueByName('AddGatherTotalPrice').AsFloat := AProjCalc.AddMeasure.Gather.TotalPrice;
  78. Rec.ValueByName('AddGatherTotalPrice_Rc').AsFloat := AProjCalc.AddMeasure.Gather.TotalPrice_Rc;
  79. Rec.ValueByName('CurDealQuantity').AsFloat := AProjCalc.CurMeasure.Deal.Quantity;
  80. Rec.ValueByName('CurDealTotalPrice').AsFloat := AProjCalc.CurMeasure.Deal.TotalPrice;
  81. Rec.ValueByName('CurDealTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Deal.TotalPrice_Rc;
  82. Rec.ValueByName('CurQcQuantity').AsFloat := AProjCalc.CurMeasure.Qc.Quantity;
  83. Rec.ValueByName('CurQcTotalPrice').AsFloat := AProjCalc.CurMeasure.Qc.TotalPrice;
  84. Rec.ValueByName('CurQcTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Qc.TotalPrice_Rc;
  85. Rec.ValueByName('CurGatherQuantity').AsFloat := AProjCalc.CurMeasure.Gather.Quantity;
  86. Rec.ValueByName('CurGatherTotalPrice').AsFloat := AProjCalc.CurMeasure.Gather.TotalPrice;
  87. Rec.ValueByName('CurGatherTotalPrice_Rc').AsFloat := AProjCalc.CurMeasure.Gather.TotalPrice_Rc;
  88. Rec.ValueByName('PreDealQuantity').AsFloat := AProjCalc.PreMeasure.Deal.Quantity;
  89. Rec.ValueByName('PreDealTotalPrice').AsFloat := AProjCalc.PreMeasure.Deal.TotalPrice;
  90. Rec.ValueByName('PreDealTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Deal.TotalPrice_Rc;
  91. Rec.ValueByName('PreQcQuantity').AsFloat := AProjCalc.PreMeasure.Qc.Quantity;
  92. Rec.ValueByName('PreQcTotalPrice').AsFloat := AProjCalc.PreMeasure.Qc.TotalPrice;
  93. Rec.ValueByName('PreQcTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Qc.TotalPrice_Rc;
  94. Rec.ValueByName('PreGatherQuantity').AsFloat := AProjCalc.PreMeasure.Gather.Quantity;
  95. Rec.ValueByName('PreGatherTotalPrice').AsFloat := AProjCalc.PreMeasure.Gather.TotalPrice;
  96. Rec.ValueByName('PreGatherTotalPrice_Rc').AsFloat := AProjCalc.PreMeasure.Gather.TotalPrice_Rc;
  97. Rec.ValueByName('EndDealQuantity').AsFloat := AProjCalc.EndMeasure.Deal.Quantity;
  98. Rec.ValueByName('EndDealTotalPrice').AsFloat := AProjCalc.EndMeasure.Deal.TotalPrice;
  99. Rec.ValueByName('EndDealTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Deal.TotalPrice_Rc;
  100. Rec.ValueByName('EndQcQuantity').AsFloat := AProjCalc.EndMeasure.Qc.Quantity;
  101. Rec.ValueByName('EndQcTotalPrice').AsFloat := AProjCalc.EndMeasure.Qc.TotalPrice;
  102. Rec.ValueByName('EndQcTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Qc.TotalPrice_Rc;
  103. Rec.ValueByName('EndGatherQuantity').AsFloat := AProjCalc.EndMeasure.Gather.Quantity;
  104. Rec.ValueByName('EndGatherTotalPrice').AsFloat := AProjCalc.EndMeasure.Gather.TotalPrice;
  105. Rec.ValueByName('EndGatherTotalPrice_Rc').AsFloat := AProjCalc.EndMeasure.Gather.TotalPrice_Rc;
  106. Rec.ValueByName('DgnQuantity1').AsFloat := AProjCalc.DgnQuantity1;
  107. Rec.ValueByName('DgnQuantity2').AsFloat := AProjCalc.DgnQuantity2;
  108. Rec.ValueByName('DealDgnQuantity1').AsFloat := AProjCalc.DealDgnQuantity1;
  109. Rec.ValueByName('DealDgnQuantity2').AsFloat := AProjCalc.DealDgnQuantity2;
  110. Rec.ValueByName('CDgnQuantity1').AsFloat := AProjCalc.CDgnQuantity1;
  111. Rec.ValueByName('CDgnQuantity2').AsFloat := AProjCalc.CDgnQuantity2;
  112. end;
  113. procedure TrpgBillsCalcData.SaveGatherDataTo(ATree: TProjGatherTree;
  114. const ATableName: string);
  115. begin
  116. sdpBillsCalc.TableName := ATableName;
  117. sddBillsCalc.Open;
  118. sddBillsCalc.BeginUpdate;
  119. try
  120. SaveBillsGather(ATree);
  121. SaveBillsNodeCalc(ATree.GatherNode, ATree.GatherNode.GatherCalc, -2);
  122. finally
  123. sddBillsCalc.EndUpdate;
  124. sddBillsCalc.Save;
  125. end;
  126. end;
  127. procedure TrpgBillsCalcData.SaveProjDataTo(ATree: TProjGatherTree; AProjIndex: Integer;
  128. const ATableName: string);
  129. begin
  130. sdpBillsCalc.TableName := ATableName;
  131. sddBillsCalc.Open;
  132. sddBillsCalc.BeginUpdate;
  133. try
  134. SaveBillsCalc(ATree, AProjIndex);
  135. SaveBillsNodeCalc(ATree.GatherNode, ATree.GatherNode.Proj[AProjIndex], AProjIndex);
  136. finally
  137. sddBillsCalc.EndUpdate;
  138. sddBillsCalc.Save;
  139. end;
  140. end;
  141. end.