Explorar o código

武九定制报表,取值调整

MaiXinRong %!s(int64=6) %!d(string=hai) anos
pai
achega
32432d2362
Modificáronse 1 ficheiros con 74 adicións e 26 borrados
  1. 74 26
      DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

+ 74 - 26
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

@@ -172,18 +172,39 @@ procedure TrmWuJiuZqzfGatherData.LoadPhaseData(APhaseIndex: Integer;
       end;
   end;
 
+  procedure GetDealPayRecords(AList: TList; AName: string; AMinus: Boolean = false; ACalcType: Integer = 0);
+  var
+    iRec: Integer;
+    Rec: TsdDataRecord;
+  begin
+    AList.Clear;
+    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)
+           and (Rec.ValueByName('CalcType').AsInteger = ACalcType) then
+        begin
+          AList.Add(Rec);
+        end;
+      end;
+  end;
+
 var
   PhaseData: TPhaseData;
   sTPField: string;
   iDealPayId: Integer;
   Rec: TsdDataRecord;
+  vRecList: TList;
+  iRec: Integer;
 begin
   PhaseData := TPhaseData.Create(AProjectData);
+  vRecList := TList.Create;
   try
     PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [AProjectData.TempPath, APhaseIndex]));
     cdsZqzf.Append;
     cdsZqzfPhaseIndex.AsInteger := APhaseIndex;
-    cdsZqzfQyht.AsFloat := FQyht;              
+    cdsZqzfQyht.AsFloat := FQyht;
     cdsZqzfFhqd.AsFloat := FFhqd;
     cdsZqzfBg.AsFloat := AProjectData.BGLData.EndTotalPrice[APhaseIndex];
     cdsZqzfSp.AsFloat := FSp;
@@ -198,40 +219,66 @@ begin
       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
+
+      GetDealPayRecords(vRecList, '괏즛쏜', true);
+      for iRec := 0 to vRecList.Count - 1 do
       begin
-        cdsZqzfAddKhBlj.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
-        cdsZqzfCurKhBlj.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhBlj.AsFloat := cdsZqzfAddKhBlj.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhBlj.AsFloat := cdsZqzfCurKhBlj.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
       end;
-      iDealPayId := GetDealPayID('크췽묏묏栗', true);
-      Rec := sddPhasePay.Locate('ID', iDealPayId);
-      if Assigned(Rec) then
+
+      GetDealPayRecords(vRecList, '크췽묏묏栗', true);
+      for iRec := 0 to vRecList.Count - 1 do
       begin
-        cdsZqzfAddKhNmggz.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
-        cdsZqzfCurKhNmggz.AsFloat := Rec.ValueByName(sTPField).AsFloat;
-      end;                                            
-      iDealPayId := GetDealPayID('땡逃渡마운', false);
-      Rec := sddPhasePay.Locate('ID', iDealPayId);
-      if Assigned(Rec) then
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhNmggz.AsFloat := cdsZqzfAddKhNmggz.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhNmggz.AsFloat := cdsZqzfCurKhNmggz.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      GetDealPayRecords(vRecList, '땡逃渡마운', false);
+      for iRec := 0 to vRecList.Count - 1 do
       begin
-        cdsZqzfDyyfk.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfDyyfk.AsFloat := cdsZqzfDyyfk.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
       end;
-      iDealPayId := GetDealPayID('땡逃渡마운', true);
-      Rec := sddPhasePay.Locate('ID', iDealPayId);
-      if Assigned(Rec) then
+
+      GetDealPayRecords(vRecList, '땡逃渡마운', true);
+      for iRec := 0 to vRecList.Count - 1 do
       begin
-        cdsZqzfAddKhDyyfk.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
-        cdsZqzfCurKhDyyfk.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhDyyfk.AsFloat := cdsZqzfAddKhDyyfk.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhDyyfk.AsFloat := cdsZqzfCurKhDyyfk.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
       end;
-      iDealPayId := GetDealPayID('藤令江', true);
-      Rec := sddPhasePay.Locate('ID', iDealPayId);
-      if Assigned(Rec) then
+
+      GetDealPayRecords(vRecList, '藤令江', true);
+      for iRec := 0 to vRecList.Count - 1 do
       begin
-        cdsZqzfAddKAddedTax.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
-        cdsZqzfCurKAddedTax.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKAddedTax.AsFloat := cdsZqzfAddKAddedTax.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKAddedTax.AsFloat := cdsZqzfCurKAddedTax.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
       end;
+
       iDealPayId := GetDealPayID('굶퍅壇마');
       Rec := sddPhasePay.Locate('ID', iDealPayId);
       if Assigned(Rec) then
@@ -242,6 +289,7 @@ begin
     end;
     cdsZqzf.Post;
   finally
+    vRecList.Free;
     PhaseData.Free;
   end;
 end;