123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- 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.
|