소스 검색

本期合同计量--金额超计,应标红

MaiXinRong 9 년 전
부모
커밋
e55ca27a31
2개의 변경된 파일21개의 추가작업 그리고 11개의 파일을 삭제
  1. 8 2
      DataModules/BillsMeasureDm.pas
  2. 13 9
      Frames/BillsMeasureFme.pas

+ 8 - 2
DataModules/BillsMeasureDm.pas

@@ -341,6 +341,8 @@ procedure TBillsMeasureData.sdvBillsMeasureSetText(var Text: String;
   end;
 
   procedure SetQuantity(const AField: string);
+  var
+    vNode: TBillsIDTreeNode;
   begin
     // ±ä¸üӦѡÔñ±ä¸üÁî
     if SameText(AField , 'Qc') or SameText(AField , 'Pc') then
@@ -359,10 +361,13 @@ procedure TBillsMeasureData.sdvBillsMeasureSetText(var Text: String;
       AValue.Owner.ValueByName(AField + 'Formula').AsString := Text;
       Text := FloatToStr(QuantityRoundTo(EvaluateExprs(Text)));
     end;
-    ARecord.ValueByName('CalcType').AsInteger := 0;
+    vNode := TBillsIDTreeNode(BillsMeasureTree.FindNode(GetBillsID));
+    vNode.Rec.CalcType.AsInteger := 1;
   end;
 
   procedure SetTotalPrice(const AField: string);
+  var
+    vNode: TBillsIDTreeNode;
   begin
     // ±ä¸üӦѡÔñ±ä¸üÁî
     if SameText(AField , 'Qc') or SameText(AField , 'Pc') then
@@ -381,7 +386,8 @@ procedure TBillsMeasureData.sdvBillsMeasureSetText(var Text: String;
       AValue.Owner.ValueByName(AField + 'Formula').AsString := Text;
       Text := FloatToStr(TotalPriceRoundTo(EvaluateExprs(Text)));
     end;
-    ARecord.ValueByName('CalcType').AsInteger := 1;
+    vNode := TBillsIDTreeNode(BillsMeasureTree.FindNode(GetBillsID));
+    vNode.Rec.CalcType.AsInteger := 1;
   end;
 
   procedure DoCurChanged;

+ 13 - 9
Frames/BillsMeasureFme.pas

@@ -185,20 +185,20 @@ end;
 procedure TBillsMeasureFrame.zgBillsMeasureCellGetColor(Sender: TObject; ACoord: TPoint;
   var AColor: TColor);
 var
-  stnNode: TsdIDTreeNode;
+  stnNode: TBillsIDTreeNode;
   iCreatePhaseID: Integer;
   StageRec: TsdDataRecord;
-  fQtyDiffer: Double;
+  fDiffer: Double;
 begin
   AColor := clWindow;
   if ACoord.Y > stdBillsMeasure.IDTree.Count + 1 then Exit;
-  stnNode := stdBillsMeasure.IDTree.Items[ACoord.Y - 2];
+  stnNode := TBillsIDTreeNode(stdBillsMeasure.IDTree.Items[ACoord.Y - 2]);
   if not Assigned(stnNode) then Exit;
-  iCreatePhaseID := stnNode.Rec.ValueByName('CreatePhaseID').AsInteger;
+  iCreatePhaseID := stnNode.Rec.CreatePhaseID.AsInteger;
   // ¸ù¾Ý²ã´Îµ×É«²»Í¬
   if stnNode.ParentID = 1 then
     AColor := $00FBCAC4
-  else if (stnNode.Rec.ValueByName('B_Code').AsString = '') and (stnNode.Level > 0) then
+  else if (stnNode.Rec.B_Code.AsString = '') and (stnNode.Level > 0) then
     AColor := $00F9E8DF;
   // ÊéÇ©
   if TProjectData(FBillsMeasureData.ProjectData).ProjProperties.PhaseCount > 0 then
@@ -221,10 +221,14 @@ begin
   if not stnNode.HasChildren then
   begin
     with stnNode.Rec do
-      fQtyDiffer := QuantityRoundTo(
-          ValueByName('AddDealQuantity').AsFloat - ValueByName('Quantity').AsFloat);
-    if fQtyDiffer > 0 then
-      AColor := $00646AFE;
+    begin
+      if CalcType.AsInteger = 0 then
+        fDiffer := QuantityRoundTo(AddDealQuantity.AsFloat - Quantity.AsFloat)
+      else
+        fDiffer := TotalPriceRoundTo(AddDealTotalPrice.AsFloat - TotalPrice.AsFloat);
+      if fDiffer > 0 then
+        AColor := $00646AFE;
+    end;
   end;
 end;