|
@@ -0,0 +1,214 @@
|
|
|
+unit rmWuJiuZqzfGatherDm;
|
|
|
+
|
|
|
+interface
|
|
|
+
|
|
|
+uses
|
|
|
+ SysUtils, Classes, DB, DBClient, ProjectData, sdIDTree, sdDB;
|
|
|
+
|
|
|
+type
|
|
|
+ TrmWuJiuZqzfGatherData = class(TDataModule)
|
|
|
+ cdsZqzf: TClientDataSet;
|
|
|
+ cdsZqzfPhaseIndex: TIntegerField;
|
|
|
+ cdsZqzfQyht: TFloatField;
|
|
|
+ cdsZqzfFhqd: TFloatField;
|
|
|
+ cdsZqzfBg: TFloatField;
|
|
|
+ cdsZqzfSp: TFloatField;
|
|
|
+ cdsZqzfWy: TFloatField;
|
|
|
+ cdsZqzfCljg: TFloatField;
|
|
|
+ cdsZqzfBgh: TFloatField;
|
|
|
+ cdsZqzfEndGather: TFloatField;
|
|
|
+ cdsZqzfPreGather: TFloatField;
|
|
|
+ cdsZqzfCurGather: TFloatField;
|
|
|
+ cdsZqzfAddKhBlj: TFloatField;
|
|
|
+ cdsZqzfCurKhBlj: TFloatField;
|
|
|
+ cdsZqzfAddKhNmggz: TFloatField;
|
|
|
+ cdsZqzfCurKhNmggz: TFloatField;
|
|
|
+ cdsZqzfDyyfk: TFloatField;
|
|
|
+ cdsZqzfAddKhDyyfk: TFloatField;
|
|
|
+ cdsZqzfCurKhDyyfk: TFloatField;
|
|
|
+ cdsZqzfAddKAddedTax: TFloatField;
|
|
|
+ cdsZqzfCurKAddedTax: TFloatField;
|
|
|
+ cdsZqzfAddSjzf: TFloatField;
|
|
|
+ cdsZqzfCurSjzf: TFloatField;
|
|
|
+ cdsZqzfMemo: TWideStringField;
|
|
|
+ private
|
|
|
+ FQyht: Double;
|
|
|
+ FFhqd: Double;
|
|
|
+ FBg: Double;
|
|
|
+ FSp: Double;
|
|
|
+ FWy: Double;
|
|
|
+ FCljg: Double;
|
|
|
+ FBgh: Double;
|
|
|
+ procedure GatherMainData(AProjectData: TProjectData);
|
|
|
+ procedure LoadPhaseData(APhaseIndex: Integer; AProjectData: TProjectData = nil);
|
|
|
+ public
|
|
|
+ function AssignData(AProjectData: TProjectData): TDataSet;
|
|
|
+ end;
|
|
|
+
|
|
|
+implementation
|
|
|
+
|
|
|
+uses BillsDm, BGLDm, DealPaymentDm, PhaseData, PhasePayDm;
|
|
|
+
|
|
|
+{$R *.dfm}
|
|
|
+
|
|
|
+{ TrmWuJiuZqzfGatherData }
|
|
|
+
|
|
|
+function TrmWuJiuZqzfGatherData.AssignData(
|
|
|
+ AProjectData: TProjectData): TDataSet;
|
|
|
+var
|
|
|
+ iPhase: Integer;
|
|
|
+begin
|
|
|
+ cdsZqzf.Active := True;
|
|
|
+ cdsZqzf.EmptyDataSet;
|
|
|
+ GatherMainData(AProjectData);
|
|
|
+ for iPhase := 1 to AProjectData.ProjProperties.PhaseCount do
|
|
|
+ LoadPhaseData(iPhase, AProjectData);
|
|
|
+ Result := cdsZqzf;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TrmWuJiuZqzfGatherData.GatherMainData(AProjectData: TProjectData);
|
|
|
+
|
|
|
+ function FindNode(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
|
|
|
+ var
|
|
|
+ vNode: TsdIDTreeNode;
|
|
|
+ begin
|
|
|
+ Result := nil;
|
|
|
+ if Assigned(AParent) then
|
|
|
+ vNode := AParent.FirstChild
|
|
|
+ else
|
|
|
+ vNode := AProjectData.BillsCompileData.BillsCompileTree.FirstNode;
|
|
|
+ while Assigned(vNode) do
|
|
|
+ begin
|
|
|
+ if Pos(AName, vNode.Rec.ValueByName('Name').AsString) > 0 then
|
|
|
+ begin
|
|
|
+ Result := vNode;
|
|
|
+ Break;
|
|
|
+ end
|
|
|
+ else
|
|
|
+ vNode := vNode.NextSibling;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ vQtFyNode, vChild: TsdIDTreeNode;
|
|
|
+begin
|
|
|
+ // 签约合同金额
|
|
|
+ FQyht := AProjectData.ProjProperties.ContractPrice;
|
|
|
+ // 复核清单金额
|
|
|
+ vQtFyNode := FindNode('建安工程量其他费用');
|
|
|
+ with AProjectData.BillsData do
|
|
|
+ FFhqd := FirstPart[0] + SecondPart[0] + ThirdPart[0] + ReservedFee[0];
|
|
|
+ if Assigned(vQtFyNode) then
|
|
|
+ FFhqd := FFhqd - vQtFyNode.Rec.ValueByName('TotalPrice').AsFloat;
|
|
|
+ // 变更金额
|
|
|
+ FBg := AProjectData.BGLData.TotalPrice;
|
|
|
+ // 索赔金额
|
|
|
+ vChild := FindNode('索赔', vQtFyNode);
|
|
|
+ if Assigned(vChild) then
|
|
|
+ FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
|
|
|
+ else
|
|
|
+ FSp := 0;
|
|
|
+ // 违约罚金
|
|
|
+ vChild := FindNode('违约罚金', vQtFyNode);
|
|
|
+ if Assigned(vChild) then
|
|
|
+ FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
|
|
|
+ else
|
|
|
+ FSp := 0;
|
|
|
+ // 材料价格调整金额
|
|
|
+ vChild := FindNode('价差调整', vQtFyNode);
|
|
|
+ if Assigned(vChild) then
|
|
|
+ FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
|
|
|
+ else
|
|
|
+ FSp := 0;
|
|
|
+ FBgh := FFhqd + FBg + FSp + FWy + FCljg;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure TrmWuJiuZqzfGatherData.LoadPhaseData(APhaseIndex: Integer;
|
|
|
+ AProjectData: TProjectData);
|
|
|
+
|
|
|
+ function GetDealPayID(const AName: string; AMinus: Boolean = false): Integer;
|
|
|
+ var
|
|
|
+ iRec: Integer;
|
|
|
+ Rec: TsdDataRecord;
|
|
|
+ begin
|
|
|
+ Result := -1;
|
|
|
+ with AProjectData.DealPaymentData do
|
|
|
+ for iRec := 0 to sddDealPayment.RecordCount - 1 do
|
|
|
+ begin
|
|
|
+ Rec := sddDealPayment.Records[iRec];
|
|
|
+ if (Pos(AName, Rec.ValueByName('Name').AsString) > 0) and (Rec.ValueByName('IsMinus').AsBoolean = AMinus) then
|
|
|
+ begin
|
|
|
+ Result := Rec.ValueByName('ID').AsInteger;
|
|
|
+ Break;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ PhaseData: TPhaseData;
|
|
|
+ sTPField: string;
|
|
|
+ iDealPayId: Integer;
|
|
|
+ Rec: TsdDataRecord;
|
|
|
+begin
|
|
|
+ PhaseData := TPhaseData.Create(AProjectData);
|
|
|
+ try
|
|
|
+ PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [AProjectData.TempPath, APhaseIndex]));
|
|
|
+ cdsZqzf.Append;
|
|
|
+ cdsZqzfPhaseIndex.AsInteger := APhaseIndex;
|
|
|
+ cdsZqzfQyht.AsFloat := FQyht;
|
|
|
+ cdsZqzfBg.AsFloat := FBg;
|
|
|
+ cdsZqzfSp.AsFloat := FSp;
|
|
|
+ cdsZqzfWy.AsFloat := FWy;
|
|
|
+ cdsZqzfCljg.AsFloat := FCljg;
|
|
|
+ cdsZqzfBgh.AsFloat := FBgh;
|
|
|
+ sTPField := 'TotalPrice' + IntToStr(TPhaseData(PhaseData).PhaseProperty.AuditCount);
|
|
|
+ with PhaseData.PhasePayData do
|
|
|
+ begin
|
|
|
+ iDealPayId := GetDealPayID('本期完成计量');
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ cdsZqzfEndGather.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfPreGather.AsFloat := Rec.ValueByName('Pre' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurGather.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ iDealPayId := GetDealPayID('保留金', true);
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ if Assigned(Rec) then
|
|
|
+ begin
|
|
|
+ cdsZqzfAddKhBlj.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurKhBlj.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ end;
|
|
|
+ iDealPayId := GetDealPayID('农民工工资', true);
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ if Assigned(Rec) then
|
|
|
+ begin
|
|
|
+ cdsZqzfAddKhNmggz.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurKhNmggz.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ end;
|
|
|
+ iDealPayId := GetDealPayID('动员预付款', true);
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ if Assigned(Rec) then
|
|
|
+ begin
|
|
|
+ cdsZqzfAddKhDyyfk.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurKhDyyfk.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ end;
|
|
|
+ iDealPayId := GetDealPayID('增值税', true);
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ if Assigned(Rec) then
|
|
|
+ begin
|
|
|
+ cdsZqzfAddKAddedTax.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurKAddedTax.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ end;
|
|
|
+ iDealPayId := GetDealPayID('本期实付');
|
|
|
+ Rec := sddPhasePay.Locate('ID', iDealPayId);
|
|
|
+ if Assigned(Rec) then
|
|
|
+ begin
|
|
|
+ cdsZqzfAddSjzf.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
|
|
|
+ cdsZqzfCurSjzf.AsFloat := Rec.ValueByName(sTPField).AsFloat;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ cdsZqzf.Post;
|
|
|
+ finally
|
|
|
+ PhaseData.Free;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+end.
|