123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475 |
- unit rmGclBillsBGDm;
- // Report Memory Gcl Bills BianGeng DataModule
- // For 連깊05 헌데긴뫘寧응깊
- interface
- uses
- 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;
- implementation
- uses
- 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.
|