MaiXinRong 6 سال پیش
والد
کامیت
6d8d6b4d79
2فایلهای تغییر یافته به همراه312 افزوده شده و 0 حذف شده
  1. 98 0
      DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.dfm
  2. 214 0
      DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

+ 98 - 0
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.dfm

@@ -0,0 +1,98 @@
+object rmWuJiuZqzfGatherData: TrmWuJiuZqzfGatherData
+  OldCreateOrder = False
+  Left = 591
+  Top = 352
+  Height = 150
+  Width = 215
+  object cdsZqzf: TClientDataSet
+    Active = True
+    Aggregates = <>
+    Params = <>
+    Left = 48
+    Top = 40
+    Data = {
+      960100009619E0BD01000000180000001700000000000300000096010A506861
+      7365496E64657804000100000000000451796874080004000000000004466871
+      6408000400000000000242670800040000000000025370080004000000000002
+      5779080004000000000004436C6A670800040000000000034267680800040000
+      00000009456E6447617468657208000400000000000950726547617468657208
+      00040000000000094375724761746865720800040000000000084164644B6842
+      6C6A0800040000000000084375724B68426C6A08000400000000000A4164644B
+      684E6D67677A08000400000000000A4375724B684E6D67677A08000400000000
+      0005447979666B08000400000000000A4164644B68447979666B080004000000
+      00000A4375724B68447979666B08000400000000000C4164644B416464656454
+      617808000400000000000C4375724B4164646564546178080004000000000007
+      416464536A7A66080004000000000007437572536A7A66080004000000000004
+      4D656D6F02004A000000010005574944544802000200FE010000}
+    object cdsZqzfPhaseIndex: TIntegerField
+      FieldName = 'PhaseIndex'
+    end
+    object cdsZqzfQyht: TFloatField
+      FieldName = 'Qyht'
+    end
+    object cdsZqzfFhqd: TFloatField
+      FieldName = 'Fhqd'
+    end
+    object cdsZqzfBg: TFloatField
+      FieldName = 'Bg'
+    end
+    object cdsZqzfSp: TFloatField
+      FieldName = 'Sp'
+    end
+    object cdsZqzfWy: TFloatField
+      FieldName = 'Wy'
+    end
+    object cdsZqzfCljg: TFloatField
+      FieldName = 'Cljg'
+    end
+    object cdsZqzfBgh: TFloatField
+      FieldName = 'Bgh'
+    end
+    object cdsZqzfEndGather: TFloatField
+      FieldName = 'EndGather'
+    end
+    object cdsZqzfPreGather: TFloatField
+      FieldName = 'PreGather'
+    end
+    object cdsZqzfCurGather: TFloatField
+      FieldName = 'CurGather'
+    end
+    object cdsZqzfAddKhBlj: TFloatField
+      FieldName = 'AddKhBlj'
+    end
+    object cdsZqzfCurKhBlj: TFloatField
+      FieldName = 'CurKhBlj'
+    end
+    object cdsZqzfAddKhNmggz: TFloatField
+      FieldName = 'AddKhNmggz'
+    end
+    object cdsZqzfCurKhNmggz: TFloatField
+      FieldName = 'CurKhNmggz'
+    end
+    object cdsZqzfDyyfk: TFloatField
+      FieldName = 'Dyyfk'
+    end
+    object cdsZqzfAddKhDyyfk: TFloatField
+      FieldName = 'AddKhDyyfk'
+    end
+    object cdsZqzfCurKhDyyfk: TFloatField
+      FieldName = 'CurKhDyyfk'
+    end
+    object cdsZqzfAddKAddedTax: TFloatField
+      FieldName = 'AddKAddedTax'
+    end
+    object cdsZqzfCurKAddedTax: TFloatField
+      FieldName = 'CurKAddedTax'
+    end
+    object cdsZqzfAddSjzf: TFloatField
+      FieldName = 'AddSjzf'
+    end
+    object cdsZqzfCurSjzf: TFloatField
+      FieldName = 'CurSjzf'
+    end
+    object cdsZqzfMemo: TWideStringField
+      FieldName = 'Memo'
+      Size = 255
+    end
+  end
+end

+ 214 - 0
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

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