فهرست منبع

超计判断调整

MaiXinRong 4 سال پیش
والد
کامیت
f051b9969f
1فایلهای تغییر یافته به همراه49 افزوده شده و 3 حذف شده
  1. 49 3
      Frames/BillsMeasureFme.pas

+ 49 - 3
Frames/BillsMeasureFme.pas

@@ -236,7 +236,7 @@ var
   stnNode: TMeasureBillsIDTreeNode;
   iCreatePhaseID: Integer;
   StageRec: TStageRecord;
-  fDiffer, fCompare: Double;
+  fDiffer, fCompare, fDeal, fLedger: Double;
 begin
   AColor := clWindow;
   if ACoord.Y > stdBillsMeasure.IDTree.Count + 1 then Exit;
@@ -268,21 +268,67 @@ begin
   // 叶子节点,累计合同计量超过0号台账,整行数据的底色变为暗红提示用户
   if TProjectData(FBillsMeasureData.ProjectData).ProjProperties.ShowOverRange and not stnNode.HasChildren then
   begin
+   (*
     with stnNode.Rec do
     begin
       if CalcType.AsInteger = 0 then
       begin
-        fDiffer := QuantityRoundTo(AddDealQuantity.AsFloat - Quantity.AsFloat);
+        if Quantity.AsFloat > 0 then
+          fDiffer := QuantityRoundTo(AddDealQuantity.AsFloat - Quantity.AsFloat)
+        else if AddDealQuantity.AsFloat > 0 then
+          fDiffer := 1
+        else
+          fDiffer := QuantityRoundTo(Quantity.AsFloat - AddDealQuantity.AsFloat);
+        // fDiffer := QuantityRoundTo(AddDealQuantity.AsFloat - Quantity.AsFloat);
         fCompare := TProjectData(FBillsMeasureData.ProjectData).ProjProperties.DecimalManager.Common.Quantity.CompareValue;
       end
       else
       begin
-        fDiffer := TotalPriceRoundTo(AddDealTotalPrice.AsFloat - TotalPrice.AsFloat);
+        if TotalPrice.AsFloat > 0 then
+          fDiffer := QuantityRoundTo(AddDealTotalPrice.AsFloat - TotalPrice.AsFloat)
+        else if AddDealTotalPrice.AsFloat > 0 then
+          fDiffer := 1
+        else
+          fDiffer := QuantityRoundTo(TotalPrice.AsFloat - AddDealTotalPrice.AsFloat);
+        // fDiffer := TotalPriceRoundTo(TotalPrice.AsFloat - EndDealTotalPrice.AsFloat);
         fCompare := TProjectData(FBillsMeasureData.ProjectData).ProjProperties.DecimalManager.Common.TotalPrice.CompareValue;
       end;
       if fDiffer > fCompare then
         AColor := $00646AFE;
     end;
+    *)
+    if (stnNode.Rec.CalcType.AsInteger > 0) then
+    begin
+      if Assigned(stnNode.StageRec) then
+      begin
+        if stnNode.Rec.Quantity.AsFloat > 0 then
+          fDiffer := QuantityRoundTo(stnNode.StageRec.EndDealQuantity.AsFloat - stnNode.Rec.Quantity.AsFloat)
+        else if stnNode.StageRec.EndDealQuantity.AsFloat > 0 then
+          fDiffer := 1
+        else
+          fDiffer := QuantityRoundTo(stnNode.Rec.Quantity.AsFloat - stnNode.StageRec.EndDealQuantity.AsFloat);
+        fCompare := TProjectData(FBillsMeasureData.ProjectData).ProjProperties.DecimalManager.Common.Quantity.CompareValue;
+      end
+      else
+        fDiffer := 0;
+    end
+    else
+    begin
+      if Assigned(stnNode.StageRec) then
+      begin
+        if stnNode.Rec.TotalPrice.AsFloat > 0 then
+          fDiffer := QuantityRoundTo(stnNode.StageRec.EndDealTotalPrice.AsFloat - stnNode.Rec.TotalPrice.AsFloat)
+        else if stnNode.StageRec.EndDealTotalPrice.AsFloat > 0 then
+          fDiffer := 1
+        else
+          fDiffer := QuantityRoundTo(stnNode.Rec.TotalPrice.AsFloat - stnNode.StageRec.EndDealTotalPrice.AsFloat);
+        fCompare := TProjectData(FBillsMeasureData.ProjectData).ProjProperties.DecimalManager.Common.TotalPrice.CompareValue;
+      end
+      else
+        fDiffer := 0;
+    end;
+    if fDiffer > fCompare then
+      AColor := $00646AFE;
   end;
   if Assigned(stdBillsMeasure.IDTree.Selected) and (ACoord.Y = stdBillsMeasure.IDTree.Selected.MajorIndex + 2) then
     AColor := $00cdfaff;