123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- unit stgGclGather;
- interface
- uses
- Classes, stgGatherGclCacheData, ProjectData, BillsTree, sdIDTree;
- type
- TProgramHintEvent = procedure (const ATenderName: string) of Object;
- TstgSubTenderFileGatherGcl = class
- private
- FCacheData: TstgGatherGclCacheData;
- FProjectData: TProjectData;
- FCurSubTenderID: Integer;
- FLoadHint: TProgramHintEvent;
- procedure GatherDetailData(AGatherGcl: TstgGatherGcl; ASourceNode: TMeasureBillsIDTreeNode);
- procedure GatherSubTenderTreeNode(ANode: TsdIDTreeNode);
- procedure GatherSubTender(ASubTenderID: Integer);
- public
- procedure GatherTo(AGatherGclCacheData: TstgGatherGclCacheData; ASubTenders: TList);
- property LoadHint: TProgramHintEvent read FLoadHint write FLoadHint;
- end;
- implementation
- uses Math, Globals, mDataRecord, UtilMethods, SysUtils, XMLDoc, XMLIntf;
- { TstgSubTenderFileGatherGcl }
- procedure TstgSubTenderFileGatherGcl.GatherDetailData(
- AGatherGcl: TstgGatherGcl; ASourceNode: TMeasureBillsIDTreeNode);
- var
- vSubTender: TstgGclSubTenderStageData;
- begin
- vSubTender := AGatherGcl.SafeSubTender(FCurSubTenderID);
- vSubTender.AddDetail(ASourceNode);
- end;
- procedure TstgSubTenderFileGatherGcl.GatherSubTender(ASubTenderID: Integer);
- var
- vNode: TsdIDTreeNode;
- begin
- FCurSubTenderID := ASubTenderID;
- vNode := ProjectManager.ProjectsTree.FindNode(ASubTenderID);
- if vNode.Rec.ValueByName('Type').AsInteger = 1 then
- begin;
- FLoadHint(vNode.Rec.ValueByName('Name').AsString);
- FProjectData := OpenProjectManager.FindProjectData(ASubTenderID);
- try
- if not Assigned(FProjectData) then
- begin
- FProjectData := TProjectData.Create;
- FProjectData.OpenForSumUpGather(GetMyProjectsFilePath + vNode.Rec.ValueByName('FileName').AsString);
- end;
- FCacheData.AddSubTender(vNode.Rec);
- GatherSubTenderTreeNode(FProjectData.BillsMeasureData.BillsMeasureTree.FirstNode);
- finally
- if not Assigned(OpenProjectManager.FindProjectData(ASubTenderID)) then
- FProjectData.Free;
- end;
- end;
- end;
- procedure TstgSubTenderFileGatherGcl.GatherSubTenderTreeNode(
- ANode: TsdIDTreeNode);
- var
- vNode: TMeasureBillsIDTreeNode;
- vCur: TstgGatherGcl;
- begin
- if not Assigned(ANode) then Exit;
- vNode := TMeasureBillsIDTreeNode(ANode);
- if (not vNode.HasChildren) then
- begin
- if (vNode.Rec.B_Code.AsString <> '') then
- begin
- vCur := FCacheData.AddGatherGcl(vNode.Rec);
- GatherDetailData(vCur, vNode);
- end;
- end
- else
- GatherSubTenderTreeNode(ANode.FirstChild);
- GatherSubTenderTreeNode(ANode.NextSibling);
- end;
- procedure TstgSubTenderFileGatherGcl.GatherTo(AGatherGclCacheData: TstgGatherGclCacheData;
- ASubTenders: TList);
- var
- i, iSubTenderID: Integer;
- begin
- FCacheData := AGatherGclCacheData;
- for i := 0 to ASubTenders.Count - 1 do
- GatherSubTender(Integer(ASubTenders.Items[i]));
- FCacheData.CalculateAll;
- end;
- end.
|