123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- unit rmOtherReport1Dm;
- interface
- uses
- SysUtils, Classes, DB, DBClient, rmSelectProjectFrm, ProjectData,
- sdDB;
- const
- FixedID: array [1..10] of Integer = (1, 2, 3, 21, 57, 36, 25, 26, 15, 34);
- XiangCode: array [1..10] of string = ('1-1', '1-2', '1-3', '1-4', '1-5', '1-6', '1-7', '1-8', '1-9', '1-10');
- type
- TDataArray = array [1..10] of Double;
- TrmOtherReport1Data = class(TDataModule)
- cdsOtherReport1: TClientDataSet;
- cdsOtherReport1Value1: TFloatField;
- cdsOtherReport1Value1_1: TFloatField;
- cdsOtherReport1Value1_2: TFloatField;
- cdsOtherReport1Value1_3: TFloatField;
- cdsOtherReport1Value1_4: TFloatField;
- cdsOtherReport1Value1_5: TFloatField;
- cdsOtherReport1Value1_6: TFloatField;
- cdsOtherReport1Value1_7: TFloatField;
- cdsOtherReport1Value1_8: TFloatField;
- cdsOtherReport1Value1_9: TFloatField;
- cdsOtherReport1Value1_10: TFloatField;
- cdsOtherReport1Value2: TFloatField;
- cdsOtherReport1Value3: TFloatField;
- cdsOtherReport1Value4: TFloatField;
- cdsOtherReport1Value5: TFloatField;
- cdsOtherReport1Value6: TFloatField;
- cdsOtherReport1Value7: TFloatField;
- cdsOtherReport1Value8: TFloatField;
- cdsOtherReport1Value9: TFloatField;
- cdsOtherReport1Value10: TFloatField;
- cdsOtherReport1Value: TFloatField;
- private
- FProjectData: TProjectData;
- FFixedAB: TDataArray;
- FFixedFinal: TDataArray;
- FXiangAB: TDataArray;
- FXiangFinal: TDataArray;
- FGatherAB: Double;
- FGatherFinal: Double;
- procedure ResetDataZero;
- function OpenProject(AProject: TSelectProject): TProjectData;
- procedure FreeProject(AProjectData: TProjectData);
- procedure GatherFixedData(var AArray: TDataArray; AIndex: Integer);
- procedure GatherXiangData(var AArray: TDataArray; AIndex: Integer);
- procedure GatherProject(AProject: TSelectProject);
- procedure WriteData;
- public
- function AssignData(AProjects: TList): TDataSet;
- end;
- implementation
- uses
- Globals, UtilMethods;
- {$R *.dfm}
- { TrmOtherReport1Data }
- function TrmOtherReport1Data.AssignData(AProjects: TList): TDataSet;
- var
- iProject: Integer;
- SelectProject: TSelectProject;
- begin
- cdsOtherReport1.Active := True;
- cdsOtherReport1.DisableControls;
- cdsOtherReport1.EmptyDataSet;
- ResetDataZero;
- try
- for iProject := 0 to AProjects.Count - 1 do
- GatherProject(TSelectProject(AProjects.Items[iProject]));
- WriteData;
- finally
- cdsOtherReport1.EnableControls;
- Result := cdsOtherReport1;
- end;
- end;
- procedure TrmOtherReport1Data.FreeProject(AProjectData: TProjectData);
- begin
- if not Assigned(OpenProjectManager.FindProjectData(FProjectData.ProjectID)) then
- FProjectData.Free;
- end;
- procedure TrmOtherReport1Data.GatherFixedData(
- var AArray: TDataArray; AIndex: Integer);
- var
- i: Integer;
- begin
- for i := Low(FixedID) to High(FixedID) do
- AArray[i] := AArray[i] + FProjectData.BillsData.GetGatherTotalPrice(FixedID[i], AIndex);
- end;
- procedure TrmOtherReport1Data.GatherProject(AProject: TSelectProject);
- begin
- FProjectData := OpenProject(AProject);
- try
- if AProject.IsAB then
- begin
- GatherFixedData(FFixedAB, 0);
- GatherXiangData(FXiangAB, 0);
- FGatherAB := FProjectData.BillsData.Settlement[0];
- end
- else
- begin
- GatherFixedData(FFixedFinal, 4);
- GatherXiangData(FXiangFinal, 4);
- FGatherFinal := FGatherFinal + FProjectData.BillsData.Settlement[4];
- end;
- finally
- FreeProject(FProjectData);
- end;
- end;
- procedure TrmOtherReport1Data.GatherXiangData(
- var AArray: TDataArray; AIndex: Integer);
- var
- i: Integer;
- Rec: TsdDataRecord;
- begin
- for i := Low(XiangCode) to High(XiangCode) do
- begin
- Rec := FProjectData.BillsData.sddBills.Locate('Code', XiangCode[i]);
- if Assigned(Rec) then
- begin
- case AIndex of
- 0: AArray[i] := AArray[i] + Rec.ValueByName('TotalPrice').AsFloat;
- 4: AArray[i] := AArray[i] + Rec.ValueByName('AddGatherTotalPrice').AsFloat;
- end;
- end;
- end;
- end;
- function TrmOtherReport1Data.OpenProject(AProject: TSelectProject): TProjectData;
- var
- Rec: TsdDataRecord;
- begin
- Result := OpenProjectManager.FindProjectData(AProject.ProjectID);
- if not Assigned(Result) then
- begin
- Rec := ProjectManager.sddProjectsInfo.FindKey('idxID', AProject.ProjectID);
- Result := TProjectData.Create;
- Result.OpenForReport(GetMyProjectsFilePath + Rec.ValueByName('FileName').AsString);
- end;
- end;
- procedure TrmOtherReport1Data.ResetDataZero;
- begin
- FillChar(FFixedAB, SizeOf(FFixedAB), 0);
- FillChar(FFixedFinal, SizeOf(FFixedFinal), 0);
- FillChar(FXiangAB, SizeOf(FXiangAB), 0);
- FillChar(FXiangFinal, SizeOf(FXiangFinal), 0);
- FGatherAB := 0;
- FGatherFinal := 0;
- end;
- procedure TrmOtherReport1Data.WriteData;
- begin
- //Åú×¼¸ÅËã
- cdsOtherReport1.Append;
- cdsOtherReport1Value1.AsFloat := FFixedAB[1];
- cdsOtherReport1Value2.AsFloat := FFixedAB[2];
- cdsOtherReport1Value3.AsFloat := FFixedAB[3];
- cdsOtherReport1Value4.AsFloat := FFixedAB[4];
- cdsOtherReport1Value5.AsFloat := FFixedAB[5];
- cdsOtherReport1Value6.AsFloat := FFixedAB[6];
- cdsOtherReport1Value7.AsFloat := FFixedAB[7];
- cdsOtherReport1Value8.AsFloat := FFixedAB[8];
- cdsOtherReport1Value9.AsFloat := FFixedAB[9];
- cdsOtherReport1Value10.AsFloat := FFixedAB[10];
- cdsOtherReport1Value1_1.AsFloat := FXiangAB[1];
- cdsOtherReport1Value1_2.AsFloat := FXiangAB[2];
- cdsOtherReport1Value1_3.AsFloat := FXiangAB[3];
- cdsOtherReport1Value1_4.AsFloat := FXiangAB[4];
- cdsOtherReport1Value1_5.AsFloat := FXiangAB[5];
- cdsOtherReport1Value1_6.AsFloat := FXiangAB[6];
- cdsOtherReport1Value1_7.AsFloat := FXiangAB[7];
- cdsOtherReport1Value1_8.AsFloat := FXiangAB[8];
- cdsOtherReport1Value1_9.AsFloat := FXiangAB[9];
- cdsOtherReport1Value1_10.AsFloat := FXiangAB[10];
- cdsOtherReport1Value.AsFloat := FGatherAB;
- cdsOtherReport1.Post;
- // ¾öËã
- cdsOtherReport1.Append;
- cdsOtherReport1Value1.AsFloat := FFixedFinal[1];
- cdsOtherReport1Value2.AsFloat := FFixedFinal[2];
- cdsOtherReport1Value3.AsFloat := FFixedFinal[3];
- cdsOtherReport1Value4.AsFloat := FFixedFinal[4];
- cdsOtherReport1Value5.AsFloat := FFixedFinal[5];
- cdsOtherReport1Value6.AsFloat := FFixedFinal[6];
- cdsOtherReport1Value7.AsFloat := FFixedFinal[7];
- cdsOtherReport1Value8.AsFloat := FFixedFinal[8];
- cdsOtherReport1Value9.AsFloat := FFixedFinal[9];
- cdsOtherReport1Value10.AsFloat := FFixedFinal[10];
- cdsOtherReport1Value1_1.AsFloat := FXiangFinal[1];
- cdsOtherReport1Value1_2.AsFloat := FXiangFinal[2];
- cdsOtherReport1Value1_3.AsFloat := FXiangFinal[3];
- cdsOtherReport1Value1_4.AsFloat := FXiangFinal[4];
- cdsOtherReport1Value1_5.AsFloat := FXiangFinal[5];
- cdsOtherReport1Value1_6.AsFloat := FXiangFinal[6];
- cdsOtherReport1Value1_7.AsFloat := FXiangFinal[7];
- cdsOtherReport1Value1_8.AsFloat := FXiangFinal[8];
- cdsOtherReport1Value1_9.AsFloat := FXiangFinal[9];
- cdsOtherReport1Value1_10.AsFloat := FXiangFinal[10];
- cdsOtherReport1Value.AsFloat := FGatherFinal;
- cdsOtherReport1.Post;
- // Ôö¼õ
- cdsOtherReport1.Append;
- cdsOtherReport1Value1.AsFloat := FFixedFinal[1] - FFixedAB[1];
- cdsOtherReport1Value2.AsFloat := FFixedFinal[2] - FFixedAB[2];
- cdsOtherReport1Value3.AsFloat := FFixedFinal[3] - FFixedAB[3];
- cdsOtherReport1Value4.AsFloat := FFixedFinal[4] - FFixedAB[4];
- cdsOtherReport1Value5.AsFloat := FFixedFinal[5] - FFixedAB[5];
- cdsOtherReport1Value6.AsFloat := FFixedFinal[6] - FFixedAB[6];
- cdsOtherReport1Value7.AsFloat := FFixedFinal[7] - FFixedAB[7];
- cdsOtherReport1Value8.AsFloat := FFixedFinal[8] - FFixedAB[8];
- cdsOtherReport1Value9.AsFloat := FFixedFinal[9] - FFixedAB[9];
- cdsOtherReport1Value10.AsFloat := FFixedFinal[10] - FFixedAB[10];
- cdsOtherReport1Value1_1.AsFloat := FXiangFinal[1] - FXiangAB[1];
- cdsOtherReport1Value1_2.AsFloat := FXiangFinal[2] - FXiangAB[2];
- cdsOtherReport1Value1_3.AsFloat := FXiangFinal[3] - FXiangAB[3];
- cdsOtherReport1Value1_4.AsFloat := FXiangFinal[4] - FXiangAB[4];
- cdsOtherReport1Value1_5.AsFloat := FXiangFinal[5] - FXiangAB[5];
- cdsOtherReport1Value1_6.AsFloat := FXiangFinal[6] - FXiangAB[6];
- cdsOtherReport1Value1_7.AsFloat := FXiangFinal[7] - FXiangAB[7];
- cdsOtherReport1Value1_8.AsFloat := FXiangFinal[8] - FXiangAB[8];
- cdsOtherReport1Value1_9.AsFloat := FXiangFinal[9] - FXiangAB[9];
- cdsOtherReport1Value1_10.AsFloat := FXiangFinal[10] - FXiangAB[10];
- cdsOtherReport1Value.AsFloat := FGatherFinal - FGatherAB;
- cdsOtherReport1.Post;
- end;
- end.
|