| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 | unit rmGclBillsBGDm;// Report Memory Gcl Bills BianGeng DataModule// For 連깊05 헌데긴뫘寧응깊interfaceuses  SysUtils, Classes, DB, DBClient, ProjectData, sdIDTree, sdDB,  PhaseData;type  TGclNode = class  private    FB_Code: string;    FIndexCode: string;    FName: string;    FUnits: string;    FPrice: Double;    FNewPrice: Double;    FDealQuantity: Double;    FDealTotalPrice: Double;    FQuantity: Double;    FTotalPrice: Double;    FCurDealQuantity: Double;    FCurDealTotalPrice: Double;    FCurQcQuantity: Double;    FCurQcTotalPrice: Double;    FCurQcBGLCode: string;    FCurPcQuantity: Double;    FCurPcTotalPrice: Double;    FCurPcBGLCode: string;    FCurGatherQuantity: Double;    FCurGatherTotalPrice: Double;    FEndDealQuantity: Double;    FEndDealTotalPrice: Double;    FEndQcQuantity: Double;    FEndQcTotalPrice: Double;    FEndQcBGLCode: string;    FEndPcQuantity: Double;    FEndPcTotalPrice: Double;    FEndPcBGLCode: string;    FEndGatherQuantity: Double;    FEndGatherTotalPrice: Double;    FAddDealQuantity: Double;    FAddDealTotalPrice: Double;    FAddQcQuantity: Double;    FAddQcTotalPrice: Double;    FAddQcBGLCode: string;    FAddPcQuantity: Double;    FAddPcTotalPrice: Double;    FAddPcBGLCode: string;    FAddGatherQuantity: Double;    FAddGatherTotalPrice: Double;  end;  TrmType = (rmtPhaseDeal, rmtPhaseQc, rmtPhasePc, rmtPhaseGather,      rmtEndDeal, rmtEndQc, rmtEndPc, rmtEndGather);  TrmGatherType = (rmgtGather, rmgtFlow);  TrmGclBillsBGData = class(TDataModule)    cdsBills: TClientDataSet;    cdsBillsB_Code: TStringField;    cdsBillsIndexCode: TStringField;    cdsBillsName: TWideStringField;    cdsBillsUnits: TWideStringField;    cdsBillsPrice: TFloatField;    cdsBillsNewPrice: TFloatField;    cdsBillsDealQuantity: TFloatField;    cdsBillsDealTotalPrice: TFloatField;    cdsBillsQuantity: TFloatField;    cdsBillsTotalPrice: TFloatField;    cdsBillsCurDealQuantity: TFloatField;    cdsBillsCurDealTotalPrice: TFloatField;    cdsBillsCurQcQuantity: TFloatField;    cdsBillsCurQcTotalPrice: TFloatField;    cdsBillsCurQcBGLCode: TWideStringField;    cdsBillsCurPcQuantity: TFloatField;    cdsBillsCurPcTotalPrice: TFloatField;    cdsBillsCurPcBGLCode: TWideStringField;    cdsBillsCurGatherQuantity: TFloatField;    cdsBillsCurGatherTotalPrice: TFloatField;    cdsBillsEndDealQuantity: TFloatField;    cdsBillsEndDealTotalPrice: TFloatField;    cdsBillsEndQcQuantity: TFloatField;    cdsBillsEndQcTotalPrice: TFloatField;    cdsBillsEndPcQuantity: TFloatField;    cdsBillsEndPcTotalPrice: TFloatField;    cdsBillsEndGatherQuantity: TFloatField;    cdsBillsEndGatherTotalPrice: TFloatField;    cdsBillsAddDealQuantity: TFloatField;    cdsBillsAddDealTotalPrice: TFloatField;    cdsBillsAddQcQuantity: TFloatField;    cdsBillsAddQcTotalPrice: TFloatField;    cdsBillsAddPcQuantity: TFloatField;    cdsBillsAddPcTotalPrice: TFloatField;    cdsBillsAddGatherQuantity: TFloatField;    cdsBillsAddGatherTotalPrice: TFloatField;    cdsBillsEndQcBGLCode: TWideStringField;    cdsBillsEndPcBGLCode: TWideStringField;    cdsBillsAddQcBGLCode: TWideStringField;    cdsBillsAddPcBGLCode: TWideStringField;    cdsBillsSerialNo: TIntegerField;  private    FProjectData: TProjectData;    FrmType: TrmType;    FrmGatherType: TrmGatherType;    FGclList: TList;    procedure FilterGclBills(ANode: TsdIDTreeNode);    procedure FilterBills(ANode: TsdIDTreeNode);    procedure WriteBills;    procedure WriteGclBills(APhaseData: TPhaseData; ANode: TsdIDTreeNode;      APhaseIndex: Integer);    procedure WritePhaseBills(APhaseData: TPhaseData; ANode: TsdIDTreeNode;      APhaseIndex: Integer);    procedure WritePhaseFlowBills(APhaseIndex: Integer);    procedure WriteFlowBills;  public    constructor Create;    destructor Destroy; override;    function AssignData(AProjectData: TProjectData;      ArmType: TrmType; ArmGatherType: TrmGatherType): TDataSet;  end;implementationuses  ZhAPI, UtilMethods;{$R *.dfm}{ TrmGclBillsBGData }function TrmGclBillsBGData.AssignData(AProjectData: TProjectData;  ArmType: TrmType; ArmGatherType: TrmGatherType): TDataSet;begin  FProjectData := AProjectData;  FrmType := ArmType;  FrmGatherType := ArmGatherType;  cdsBills.Active := True;  cdsBills.DisableControls;  try    cdsBills.EmptyDataSet;    if FrmGatherType = rmgtGather then    begin      FilterBills(FProjectData.BillsMeasureData.BillsMeasureTree.FirstNode);      WriteBills;    end    else if FrmGatherType = rmgtFlow then      WriteFlowBills;  finally    ClearObjects(FGclList);    cdsBills.EnableControls;    Result := cdsBills;  end;end;constructor TrmGclBillsBGData.Create;begin  inherited Create(nil);  FGclList := TList.Create;  cdsBills.IndexFieldNames := 'IndexCode';end;destructor TrmGclBillsBGData.Destroy;begin  ClearObjects(FGclList);  FGclList.Free;  inherited;end;procedure TrmGclBillsBGData.FilterBills(ANode: TsdIDTreeNode);begin  if not Assigned(ANode) then Exit;  if ANode.HasChildren then    FilterBills(ANode.FirstChild)  else    FilterGclBills(ANode);  FilterBills(ANode.NextSibling);end;procedure TrmGclBillsBGData.FilterGclBills(ANode: TsdIDTreeNode);  function CreateGclNode(ARec: TsdDataRecord): TGclNode;  begin    Result := TGclNode.Create;    FGclList.Add(Result);    Result.FB_Code := ARec.ValueByName('B_Code').AsString;    Result.FIndexCode := B_CodeToIndexCode(ARec.ValueByName('B_Code').AsString);    Result.FName := ARec.ValueByName('Name').AsString;    Result.FUnits := ARec.ValueByName('Units').AsString;    Result.FPrice := ARec.ValueByName('Price').AsFloat;    Result.FNewPrice := ARec.ValueByName('NewPrice').AsFloat;  end;  function GetGclNode(ARec: TsdDataRecord): TGclNode;  var    I: Integer;    GclNode: TGclNode;  begin    Result := nil;    for I := 0 to FGclList.Count - 1 do    begin      GclNode := TGclNode(FGclList.Items[I]);      if SameText(GclNode.FB_Code, ARec.ValueByName('B_Code').AsString) and          SameText(GclNode.FName, ARec.ValueByName('Name').AsString) and          SameText(GclNode.FUnits, ARec.ValueByName('Units').AsString) and          (GclNode.FPrice = ARec.ValueByName('Price').AsFloat) then      begin        Result := GclNode;        Break;      end;    end;    if not Assigned(Result) then      Result := CreateGclNode(ARec);  end;  procedure LoadPhaseData(AGclNode: TGclNode; AID: Integer);  var    Rec: TsdDataRecord;  begin    Rec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(AID);    if not Assigned(Rec) then Exit;    AGclNode.FCurDealQuantity := AGclNode.FCurDealQuantity + Rec.ValueByName('DealQuantity').AsFloat;    AGclNode.FCurDealTotalPrice := AGclNode.FCurDealTotalPrice + Rec.ValueByName('DealTotalPrice').AsFloat;    AGclNode.FCurQcQuantity := AGclNode.FCurQcQuantity + Rec.ValueByName('QcQuantity').AsFloat;    AGclNode.FCurQcTotalPrice := AGclNode.FCurQcTotalPrice + Rec.ValueByName('QcTotalPrice').AsFloat;    AGclNode.FCurQcBGLCode := MergeRelaBGL(AGclNode.FCurQcBGLCode, Rec.ValueByName('QcBGLCode').AsString);    AGclNode.FCurPcQuantity := AGclNode.FCurPcQuantity + Rec.ValueByName('PcQuantity').AsFloat;    AGclNode.FCurPcTotalPrice := AGclNode.FCurPcTotalPrice + Rec.ValueByName('PcTotalPrice').AsFloat;    AGclNode.FCurPcBGLCode := MergeRelaBGL(AGclNode.FCurPcBGLCode, Rec.ValueByName('PcBGLCode').AsString);    AGclNode.FCurGatherQuantity := AGclNode.FCurGatherQuantity + Rec.ValueByName('GatherQuantity').AsFloat;    AGclNode.FCurGatherTotalPrice := AGclNode.FCurGatherTotalPrice + Rec.ValueByName('GatherTotalPrice').AsFloat;    AGclNode.FEndDealQuantity := AGclNode.FEndDealQuantity + Rec.ValueByName('EndDealQuantity').AsFloat;    AGclNode.FEndDealTotalPrice := AGclNode.FEndDealTotalPrice + Rec.ValueByName('EndDealTotalPrice').AsFloat;    AGclNode.FEndQcQuantity := AGclNode.FEndQcQuantity + Rec.ValueByName('EndQcQuantity').AsFloat;    AGclNode.FEndQcTotalPrice := AGclNode.FEndQcTotalPrice + Rec.ValueByName('EndQcTotalPrice').AsFloat;    AGclNode.FEndQcBGLCode := MergeRelaBGL(AGclNode.FEndQcBGLCode, Rec.ValueByName('EndQcBGLCode').AsString);    AGclNode.FEndPcQuantity := AGclNode.FEndPcQuantity + Rec.ValueByName('EndPcQuantity').AsFloat;    AGclNode.FEndPcTotalPrice := AGclNode.FEndPcTotalPrice + Rec.ValueByName('EndPcTotalPrice').AsFloat;    AGclNode.FEndPcBGLCode := MergeRelaBGL(AGclNode.FEndPcBGLCode, Rec.ValueByName('EndPcBGLCode').AsString);    AGclNode.FEndGatherQuantity := AGclNode.FEndGatherQuantity + Rec.ValueByName('EndGatherQuantity').AsFloat;    AGclNode.FEndGatherTotalPrice := AGclNode.FEndGatherTotalPrice + Rec.ValueByName('EndGatherTotalPrice').AsFloat;  end;  procedure LoadMeasureData(AGclNode: TGclNode; ARec: TsdDataRecord);  begin    AGclNode.FQuantity := AGclNode.FQuantity + ARec.ValueByName('Quantity').AsFloat;    AGclNode.FTotalPrice := AGclNode.FTotalPrice + ARec.ValueByName('TotalPrice').AsFloat;    if TProjectData(FProjectData).ProjProperties.PhaseCount = 0 then Exit;    LoadPhaseData(AGclNode, ARec.ValueByName('ID').AsInteger);    AGclNode.FAddDealQuantity := AGclNode.FAddDealQuantity + ARec.ValueByName('AddDealQuantity').AsFloat;    AGclNode.FAddDealTotalPrice := AGclNode.FAddDealTotalPrice + ARec.ValueByName('AddDealTotalPrice').AsFloat;    AGclNode.FAddQcQuantity := AGclNode.FAddQcQuantity + ARec.ValueByName('AddQcQuantity').AsFloat;    AGclNode.FAddQcTotalPrice := AGclNode.FAddQcTotalPrice + ARec.ValueByName('AddQcTotalPrice').AsFloat;    AGclNode.FAddQcBGLCode := MergeRelaBGL(AGclNode.FAddQcBGLCode, ARec.ValueByName('AddQcBGLCode').AsString);    AGclNode.FAddPcQuantity := AGclNode.FAddPcQuantity + ARec.ValueByName('AddPcQuantity').AsFloat;    AGclNode.FAddPcTotalPrice := AGclNode.FAddPcTotalPrice + ARec.ValueByName('AddPcTotalPrice').AsFloat;    AGclNode.FAddPcBGLCode := MergeRelaBGL(AGclNode.FAddPcBGLCode, ARec.ValueByName('AddPcBGLCode').AsString);    AGclNode.FAddGatherQuantity := AGclNode.FAddGatherQuantity + ARec.ValueByName('AddGatherQuantity').AsFloat;    AGclNode.FAddGatherTotalPrice := AGclNode.FAddGatherTotalPrice + ARec.ValueByName('AddGatherTotalPrice').AsFloat;  end;  procedure LoadDealData(AGclNode: TGclNode; AB_Code: string);  var    DealRec: TsdDataRecord;  begin    DealRec := TProjectData(FProjectData).DealBillsData.DealRecord(AB_Code);    if Assigned(DealRec) then    begin      AGclNode.FDealQuantity := DealRec.ValueByName('Quantity').AsFloat;      AGclNode.FDealTotalPrice := DealRec.ValueByName('TotalPrice').AsFloat;    end;  end;var  Rec, StageRec: TsdDataRecord;  GclNode: TGclNode;begin  if not Assigned(ANode) then Exit;  Rec := ANode.Rec;  if Rec.ValueByName('B_Code').AsString = '' then Exit;  StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID);  if not Assigned(StageRec) then Exit;  case FrmType of    rmtPhaseDeal: if StageRec.ValueByName('DealTotalPrice').AsFloat = 0 then Exit;    rmtPhaseQc: if StageRec.ValueByName('QcTotalPrice').AsFloat = 0 then Exit;    rmtPhasePc: if StageRec.ValueByName('PcTotalPrice').AsFloat = 0 then Exit;    rmtPhaseGather: if StageRec.ValueByName('GatherTotalPrice').AsFloat = 0 then Exit;    rmtEndDeal: if StageRec.ValueByName('EndDealTotalPrice').AsFloat = 0 then Exit;    rmtEndQc: if StageRec.ValueByName('EndQcTotalPrice').AsFloat = 0 then Exit;    rmtEndPc: if StageRec.ValueByName('EndPcTotalPrice').AsFloat = 0 then Exit;    rmtEndGather: if StageRec.ValueByName('EndGatherTotalPrice').AsFloat = 0 then Exit;  end;  GclNode := GetGclNode(Rec);  LoadDealData(GclNode, Rec.ValueByName('B_Code').AsString);  LoadMeasureData(GclNode, Rec);end;procedure TrmGclBillsBGData.WriteBills;var  I: Integer;  GclNode: TGclNode;begin  for I := 0 to FGclList.Count - 1 do  begin    GclNode := TGclNode(FGclList.Items[I]);    cdsBills.Append;    cdsBillsB_Code.AsString := GclNode.FB_Code;    cdsBillsIndexCode.AsString := GclNode.FIndexCode;    cdsBillsName.AsString := GclNode.FName;    cdsBillsUnits.AsString := GclNode.FUnits;    cdsBillsPrice.AsFloat := GclNode.FPrice;    cdsBillsNewPrice.AsFloat := GclNode.FNewPrice;    cdsBillsDealQuantity.AsFloat := GclNode.FDealQuantity;    cdsBillsDealTotalPrice.AsFloat := GclNode.FDealTotalPrice;    cdsBillsQuantity.AsFloat := GclNode.FQuantity;    cdsBillsTotalPrice.AsFloat := GclNode.FTotalPrice;    cdsBillsCurDealQuantity.AsFloat := GclNode.FCurDealQuantity;    cdsBillsCurDealTotalPrice.AsFloat := GclNode.FCurDealTotalPrice;    cdsBillsCurQcQuantity.AsFloat := GclNode.FCurQcQuantity;    cdsBillsCurQcTotalPrice.AsFloat := GclNode.FCurQcTotalPrice;    cdsBillsCurQcBGLCode.AsString := GclNode.FCurQcBGLCode;    cdsBillsCurPcQuantity.AsFloat := GclNode.FCurPcQuantity;    cdsBillsCurPcTotalPrice.AsFloat := GclNode.FCurPcTotalPrice;    cdsBillsCurPcBGLCode.AsString := GclNode.FCurPcBGLCode;    cdsBillsCurGatherQuantity.AsFloat := GclNode.FCurGatherQuantity;    cdsBillsCurGatherTotalPrice.AsFloat := GclNode.FCurGatherTotalPrice;    cdsBillsEndDealQuantity.AsFloat := GclNode.FEndDealQuantity;    cdsBillsEndDealTotalPrice.AsFloat := GclNode.FEndDealTotalPrice;    cdsBillsEndQcQuantity.AsFloat := GclNode.FEndQcQuantity;    cdsBillsEndQcTotalPrice.AsFloat := GclNode.FEndQcTotalPrice;    cdsBillsEndQcBGLCode.AsString := GclNode.FEndQcBGLCode;    cdsBillsEndPcQuantity.AsFloat := GclNode.FEndPcQuantity;    cdsBillsEndPcTotalPrice.AsFloat := GclNode.FEndPcTotalPrice;    cdsBillsEndPcBGLCode.AsString := GclNode.FEndPcBGLCode;    cdsBillsEndGatherQuantity.AsFloat := GclNode.FEndGatherQuantity;    cdsBillsEndGatherTotalPrice.AsFloat := GclNode.FEndGatherTotalPrice;    cdsBillsAddDealQuantity.AsFloat := GclNode.FAddDealQuantity;    cdsBillsAddDealTotalPrice.AsFloat := GclNode.FAddDealTotalPrice;    cdsBillsAddQcQuantity.AsFloat := GclNode.FAddQcQuantity;    cdsBillsAddQcTotalPrice.AsFloat := GclNode.FAddQcTotalPrice;    cdsBillsAddQcBGLCode.AsString := GclNode.FAddQcBGLCode;    cdsBillsAddPcQuantity.AsFloat := GclNode.FAddPcQuantity;    cdsBillsAddPcTotalPrice.AsFloat := GclNode.FAddPcTotalPrice;    cdsBillsAddPcBGLCode.AsString := GclNode.FAddPcBGLCode;        cdsBillsAddGatherQuantity.AsFloat := GclNode.FAddGatherQuantity;    cdsBillsAddGatherTotalPrice.AsFloat := GclNode.FAddGatherTotalPrice;    cdsBills.Post;  end;end;procedure TrmGclBillsBGData.WriteFlowBills;var  iPhase: Integer;begin  for iPhase := 1 to FProjectData.PhaseIndex do    WritePhaseFlowBills(iPhase);end;procedure TrmGclBillsBGData.WriteGclBills(APhaseData: TPhaseData;  ANode: TsdIDTreeNode; APhaseIndex: Integer);  procedure WriteGclBillsData(ARec, AStageRec: TsdDataRecord);  begin    cdsBills.Append;    cdsBillsB_Code.AsString := ARec.ValueByName('B_Code').AsString;    cdsBillsIndexCode.AsString := B_CodeToIndexCode(ARec.ValueByName('B_Code').AsString);    cdsBillsName.AsString := ARec.ValueByName('Name').AsString;    cdsBillsUnits.AsString := ARec.ValueByName('Units').AsString;    cdsBillsPrice.AsFloat := ARec.ValueByName('Price').AsFloat;    cdsBillsNewPrice.AsFloat := ARec.ValueByName('NewPrice').AsFloat;    cdsBillsQuantity.AsFloat := ARec.ValueByName('Quantity').AsFloat;    cdsBillsTotalPrice.AsFloat := ARec.ValueByName('TotalPrice').AsFloat;    cdsBillsCurDealQuantity.AsFloat := AStageRec.ValueByName('DealQuantity').AsFloat;    cdsBillsCurDealTotalPrice.AsFloat := AStageRec.ValueByName('DealTotalPrice').AsFloat;    cdsBillsCurQcQuantity.AsFloat := AStageRec.ValueByName('QcQuantity').AsFloat;    cdsBillsCurQcTotalPrice.AsFloat := AStageRec.ValueByName('QcTotalPrice').AsFloat;    cdsBillsCurQcBGLCode.AsString := AStageRec.ValueByName('QcBGLCode').AsString;    cdsBillsCurPcQuantity.AsFloat := AStageRec.ValueByName('PcQuantity').AsFloat;    cdsBillsCurPcTotalPrice.AsFloat := AStageRec.ValueByName('PcTotalPrice').AsFloat;    cdsBillsCurPcBGLCode.AsString := AStageRec.ValueByName('PcBGLCode').AsString;    cdsBillsCurGatherQuantity.AsFloat := AStageRec.ValueByName('GatherQuantity').AsFloat;    cdsBillsCurGatherTotalPrice.AsFloat := AStageRec.ValueByName('GatherTotalPrice').AsFloat;    cdsBillsEndDealQuantity.AsFloat := AStageRec.ValueByName('EndDealQuantity').AsFloat;    cdsBillsEndDealTotalPrice.AsFloat := AStageRec.ValueByName('EndDealTotalPrice').AsFloat;    cdsBillsEndQcQuantity.AsFloat := AStageRec.ValueByName('EndQcQuantity').AsFloat;    cdsBillsEndQcTotalPrice.AsFloat := AStageRec.ValueByName('EndQcTotalPrice').AsFloat;    cdsBillsEndQcBGLCode.AsString := AStageRec.ValueByName('EndQcBGLCode').AsString;    cdsBillsEndPcQuantity.AsFloat := AStageRec.ValueByName('EndPcQuantity').AsFloat;    cdsBillsEndPcTotalPrice.AsFloat := AStageRec.ValueByName('EndPcTotalPrice').AsFloat;    cdsBillsEndPcBGLCode.AsString := AStageRec.ValueByName('EndPcBGLCode').AsString;    cdsBillsEndGatherQuantity.AsFloat := AStageRec.ValueByName('EndGatherQuantity').AsFloat;    cdsBillsEndGatherTotalPrice.AsFloat := AStageRec.ValueByName('EndGatherTotalPrice').AsFloat;    cdsBillsAddDealQuantity.AsFloat := ARec.ValueByName('AddDealQuantity').AsFloat;    cdsBillsAddDealTotalPrice.AsFloat := ARec.ValueByName('AddDealTotalPrice').AsFloat;    cdsBillsAddQcQuantity.AsFloat := ARec.ValueByName('AddQcQuantity').AsFloat;    cdsBillsAddQcTotalPrice.AsFloat := ARec.ValueByName('AddQcTotalPrice').AsFloat;    cdsBillsAddQcBGLCode.AsString := ARec.ValueByName('AddQcBGLCode').AsString;    cdsBillsAddPcQuantity.AsFloat := ARec.ValueByName('AddPcQuantity').AsFloat;    cdsBillsAddPcTotalPrice.AsFloat := ARec.ValueByName('AddPcTotalPrice').AsFloat;    cdsBillsAddPcBGLCode.AsString := ARec.ValueByName('AddPcBGLCode').AsString;    cdsBillsAddGatherQuantity.AsFloat := ARec.ValueByName('AddGatherQuantity').AsFloat;    cdsBillsAddGatherTotalPrice.AsFloat := ARec.ValueByName('AddGatherTotalPrice').AsFloat;    cdsBillsSerialNo.AsInteger := APhaseIndex;    cdsBills.Post;  end;var  Rec, StageRec: TsdDataRecord;begin  if not Assigned(ANode) then Exit;  Rec := ANode.Rec;  if Rec.ValueByName('B_Code').AsString = '' then Exit;  StageRec := APhaseData.StageData.StageRecord(ANode.ID);  if not Assigned(StageRec) then Exit;  case FrmType of    rmtPhaseDeal: if StageRec.ValueByName('DealTotalPrice').AsFloat = 0 then Exit;    rmtPhaseQc: if StageRec.ValueByName('QcTotalPrice').AsFloat = 0 then Exit;    rmtPhasePc: if StageRec.ValueByName('PcTotalPrice').AsFloat = 0 then Exit;    rmtPhaseGather: if StageRec.ValueByName('GatherTotalPrice').AsFloat = 0 then Exit;    rmtEndDeal: if StageRec.ValueByName('EndDealTotalPrice').AsFloat = 0 then Exit;    rmtEndQc: if StageRec.ValueByName('EndQcTotalPrice').AsFloat = 0 then Exit;    rmtEndPc: if StageRec.ValueByName('EndPcTotalPrice').AsFloat = 0 then Exit;    rmtEndGather: if StageRec.ValueByName('EndGatherTotalPrice').AsFloat = 0 then Exit;  end;  WriteGclBillsData(Rec, StageRec);end;procedure TrmGclBillsBGData.WritePhaseBills(APhaseData: TPhaseData;  ANode: TsdIDTreeNode; APhaseIndex: Integer);begin  if not Assigned(ANode) then Exit;  if ANode.HasChildren then    WritePhaseBills(APhaseData, ANode.FirstChild, APhaseIndex)  else    WriteGclBills(APhaseData, ANode, APhaseIndex);  WritePhaseBills(APhaseData, ANode.NextSibling, APhaseIndex);end;procedure TrmGclBillsBGData.WritePhaseFlowBills(APhaseIndex: Integer);var  PhaseData: TPhaseData;begin  PhaseData := TPhaseData.Create(FProjectData);  try    PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [FProjectData.TempPath, APhaseIndex]));    cdsBills.Append;    cdsBillsName.AsString := Format('뒤 %d 퍅', [APhaseIndex]);    cdsBillsSerialNo.AsInteger := APhaseIndex;    cdsBills.Post;    WritePhaseBills(PhaseData, FProjectData.BillsCompileData.BillsCompileTree.FirstNode, APhaseIndex);  finally    PhaseData.Free;  end;end;end.
 |