rpgDealPayDm.pas 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. unit rpgDealPayDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdProvider, sdDB, ProjGatherDealPay, ADODB;
  5. type
  6. TrgpDealPayData = class(TDataModule)
  7. sdpDealPay: TsdADOProvider;
  8. sddDealPay: TsdDataSet;
  9. private
  10. FProjIndex: Integer;
  11. FProjType: Integer;
  12. procedure SaveDealPayNodeCalc(ADealPay: TProjGatherDealPayNode; ACalc: TDealPayCalcData);
  13. procedure SaveDealPayCalc(ADealPays: TProjGatherDealPayList);
  14. procedure SaveDealPayGather(ADealPays: TProjGatherDealPayList);
  15. public
  16. constructor Create(AConnection: TADOConnection);
  17. procedure SaveSpecialProjDataTo(ADealPays: TProjGatherDealPayList; AProjType: Integer; const ATableName: string);
  18. procedure SaveProjDataTo(ADealPays: TProjGatherDealPayList; AProjIndex: Integer; const ATableName: string);
  19. procedure SaveGatherDataTo(ADealPays: TProjGatherDealPayList; const ATableName: string);
  20. end;
  21. implementation
  22. {$R *.dfm}
  23. { TrgpDealPayData }
  24. constructor TrgpDealPayData.Create(AConnection: TADOConnection);
  25. begin
  26. inherited Create(nil);
  27. sdpDealPay.Connection := AConnection;
  28. end;
  29. procedure TrgpDealPayData.SaveDealPayCalc(
  30. ADealPays: TProjGatherDealPayList);
  31. var
  32. iDeal: Integer;
  33. vDealPay: TProjGatherDealPayNode;
  34. begin
  35. for iDeal := 0 to ADealPays.Count - 1 do
  36. begin
  37. vDealPay := ADealPays.DealPay[iDeal];
  38. if FProjType = 0 then
  39. SaveDealPayNodeCalc(vDealPay, vDealPay.Proj[FProjIndex])
  40. else if FProjType > 0 then
  41. SaveDealPayNodeCalc(vDealPay, vDealPay.SpecialProj[FProjType-1]);
  42. end;
  43. end;
  44. procedure TrgpDealPayData.SaveDealPayGather(
  45. ADealPays: TProjGatherDealPayList);
  46. var
  47. iDeal: Integer;
  48. vDealPay: TProjGatherDealPayNode;
  49. begin
  50. for iDeal := 0 to ADealPays.Count - 1 do
  51. begin
  52. vDealPay := ADealPays.DealPay[iDeal];
  53. SaveDealPayNodeCalc(vDealPay, vDealPay.GatherCalc);
  54. end;
  55. end;
  56. procedure TrgpDealPayData.SaveDealPayNodeCalc(
  57. ADealPay: TProjGatherDealPayNode; ACalc: TDealPayCalcData);
  58. var
  59. Rec: TsdDataRecord;
  60. begin
  61. Rec := sddDealPay.Add;
  62. Rec.ValueByName('ID').AsInteger := ADealPay.ID;
  63. Rec.ValueByName('ProjID').AsInteger := FProjIndex;
  64. Rec.ValueByName('ProjType').AsInteger := FProjType;
  65. Rec.ValueByName('Name').AsString := ADealPay.Name;
  66. Rec.ValueByName('CalcType').AsInteger := ADealPay.CalcType;
  67. Rec.ValueByName('IsMinus').AsBoolean := ADealPay.IsMinus;
  68. Rec.ValueByName('SerialNo').AsInteger := ADealPay.SerialNo;
  69. Rec.ValueByName('LinkSerialNo').AsInteger := ADealPay.LinkSerialNo;
  70. Rec.ValueByName('CurTotalPrice').AsFloat := ACalc.CurTotalPrice;
  71. Rec.ValueByName('PreTotalPrice').AsFloat := ACalc.PreTotalPrice;
  72. Rec.ValueByName('EndTotalPrice').AsFloat := ACalc.EndTotalPrice;
  73. Rec.ValueByName('AddTotalPrice').AsFloat := ACalc.AddTotalPrice;
  74. Rec.ValueByName('ZoneTotalPrice').AsFloat := ACalc.ZoneTotalPrice;
  75. end;
  76. procedure TrgpDealPayData.SaveGatherDataTo(
  77. ADealPays: TProjGatherDealPayList; const ATableName: string);
  78. begin
  79. FProjIndex := -2;
  80. FProjType := 0;
  81. sdpDealPay.TableName := ATableName;
  82. sddDealPay.Open;
  83. sddDealPay.BeginUpdate;
  84. try
  85. SaveDealPayGather(ADealPays);
  86. finally
  87. sddDealPay.EndUpdate;
  88. sddDealPay.Save;
  89. end;
  90. end;
  91. procedure TrgpDealPayData.SaveProjDataTo(ADealPays: TProjGatherDealPayList;
  92. AProjIndex: Integer; const ATableName: string);
  93. begin
  94. FProjIndex := AProjIndex;
  95. FProjType := 0;
  96. sdpDealPay.TableName := ATableName;
  97. sddDealPay.Open;
  98. sddDealPay.BeginUpdate;
  99. try
  100. SaveDealPayCalc(ADealPays);
  101. finally
  102. sddDealPay.EndUpdate;
  103. sddDealPay.Save;
  104. end;
  105. end;
  106. procedure TrgpDealPayData.SaveSpecialProjDataTo(
  107. ADealPays: TProjGatherDealPayList; AProjType: Integer;
  108. const ATableName: string);
  109. begin
  110. FProjIndex := -3;
  111. FProjType := AProjType;
  112. sdpDealPay.TableName := ATableName;
  113. sddDealPay.Open;
  114. sddDealPay.BeginUpdate;
  115. try
  116. SaveDealPayCalc(ADealPays);
  117. finally
  118. sddDealPay.EndUpdate;
  119. sddDealPay.Save;
  120. end;
  121. end;
  122. end.