DealPayFinalDm.pas 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. unit DealPayFinalDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdDB, sdProvider, ADODB, Variants;
  5. type
  6. TDealPayFinalData = class(TDataModule)
  7. sdpDealPayFinal: TsdADOProvider;
  8. sddDealPayFinal: TsdDataSet;
  9. private
  10. FProjectData: TObject;
  11. public
  12. constructor Create(AProjectData: TObject);
  13. destructor Destroy; override;
  14. procedure Open(AConnection: TADOConnection);
  15. procedure Close;
  16. procedure Save;
  17. procedure LoadLastestDealPayData;
  18. end;
  19. implementation
  20. uses
  21. ProjectData, DealPaymentDm;
  22. {$R *.dfm}
  23. { TDealPayFinalData }
  24. procedure TDealPayFinalData.Close;
  25. begin
  26. sddDealPayFinal.Close;
  27. end;
  28. constructor TDealPayFinalData.Create(AProjectData: TObject);
  29. begin
  30. inherited Create(nil);
  31. FProjectData := AProjectData;
  32. end;
  33. destructor TDealPayFinalData.Destroy;
  34. begin
  35. inherited;
  36. end;
  37. procedure TDealPayFinalData.Open(AConnection: TADOConnection);
  38. begin
  39. sdpDealPayFinal.Connection := AConnection;
  40. sddDealPayFinal.Open;
  41. end;
  42. procedure TDealPayFinalData.Save;
  43. begin
  44. sddDealPayFinal.Save;
  45. end;
  46. procedure TDealPayFinalData.LoadLastestDealPayData;
  47. var
  48. iPhase, iRec: Integer;
  49. vDealRec, vRec, vDealPayRec: TsdDataRecord;
  50. sTpField: string;
  51. begin
  52. iPhase := TProjectData(FProjectData).PhaseIndex;
  53. sTpField := 'TotalPrice' + IntToStr(TProjectData(FProjectData).PhaseData.PhaseProperty.AuditCount);
  54. for iRec := 0 to TProjectData(FProjectData).DealPaymentData.sddDealPayment.RecordCount - 1 do
  55. begin
  56. vDealRec := TProjectData(FProjectData).DealPaymentData.sddDealPayment.Records[iRec];
  57. vRec := sddDealPayFinal.Locate('PhaseID;DealID', VarArrayOf([iPhase, vDealRec.ValueByName('ID').AsInteger]));
  58. if not Assigned(vRec) then
  59. begin
  60. vRec := sddDealPayFinal.Add;
  61. vRec.ValueByName('PhaseID').AsInteger := iPhase;
  62. vRec.ValueByName('DealID').AsInteger := vDealRec.ValueByName('ID').AsInteger;
  63. end;
  64. vDealPayRec := TProjectData(FProjectData).PhaseData.PhasePayData.PayRecord(vDealRec.ValueByName('ID').AsInteger);
  65. if Assigned(vDealPayRec) then
  66. begin
  67. vRec.ValueByName('TotalPrice').AsFloat := vDealPayRec.ValueByName(sTpField).AsFloat;
  68. vRec.ValueByName('EndTotalPrice').AsFloat := vDealPayRec.ValueByName('End' + sTpField).AsFloat;
  69. vRec.ValueByName('PreTotalPrice').AsFloat := vDealPayRec.ValueByName('Pre' + sTpField).AsFloat;
  70. end;
  71. end;
  72. end;
  73. end.