Browse Source

Merge branch 'master' of http://192.168.1.12:3000/maixinrong/measure

builder 9 năm trước cách đây
mục cha
commit
b32c524347
2 tập tin đã thay đổi với 49 bổ sung3 xóa
  1. 47 1
      DataModules/BillsCompileDm.pas
  2. 2 2
      DataModules/BillsMeasureDm.pas

+ 47 - 1
DataModules/BillsCompileDm.pas

@@ -83,6 +83,7 @@ type
 
     procedure ExpandNodeTo(ALevel: Integer);
     procedure ExpandXmjNode;
+    procedure ExpandPegXmjNode;
 
     procedure ReorderChildrenCode(ANode: TsdIDTreeNode);
 
@@ -635,7 +636,7 @@ procedure TBillsCompileData.sdvBillsCompileSetText(var Text: String;
     begin
       if Text = '' then
         Exit
-      else if (Pos('Quantity', AColumn.FieldName) > 0) or
+      else if ((Pos('Quantity', AColumn.FieldName) > 0) and (Pos('Dgn', AColumn.FieldName) <=0)) or
           (Pos('TotalPrice', AColumn.FieldName) > 0) then
         SetTextErrorHint('该清单有子计算项,不能直接修改!')
       else if (Pos('Price', AColumn.FieldName) > 0) then
@@ -1067,4 +1068,49 @@ begin
     ANode.Rec.DgnPrice.Clear;
 end;
 
+procedure TBillsCompileData.ExpandPegXmjNode;
+
+  function HasPegChild(ANode: TBillsIDTreeNode): Boolean;
+  var
+    NextNode: TBillsIDTreeNode;
+  begin
+    Result := False;
+    NextNode := TBillsIDTreeNode(ANode.NextNode);
+    while ((NextNode.MajorIndex - ANode.MajorIndex) <= ANode.PosterityCount) do
+    begin
+      if CheckPeg(NextNode.Rec.Name.AsString) then
+      begin
+        Result := True;
+        Break;
+      end;
+      NextNode := TBillsIDTreeNode(NextNode.NextNode);
+    end;
+  end;
+
+  function HasGclChild(ANode: TBillsIDTreeNode): Boolean;
+  var
+    vChild: TBillsIDTreeNode;
+  begin
+    Result := True;
+    vChild := TBillsIDTreeNode(ANode.FirstChild);
+    while Assigned(vChild) and not Result do
+    begin
+      if vChild.Rec.B_Code.AsString <> '' then
+        Result := False;
+      vChild := TBillsIDTreeNode(vChild.NextSibling);
+    end;
+  end;
+
+var
+  iIndex: Integer;
+  vNode: TBillsIDTreeNode;
+begin
+  for iIndex := 0 to BillsCompileTree.Count - 1 do
+  begin
+    vNode := TBillsIDTreeNode(BillsCompileTree.Items[iIndex]);
+    if vNode.HasChildren then
+      vNode.Expanded := HasPegChild(vNode) or not HasGclChild(vNode);
+  end;
+end;
+
 end.

+ 2 - 2
DataModules/BillsMeasureDm.pas

@@ -371,12 +371,12 @@ procedure TBillsMeasureData.sdvBillsMeasureSetText(var Text: String;
     AValue.Owner.ValueByName(AField + 'Quantity').AsString := '';
     if CheckStringNull(Text) or CheckNumeric(Text) then
     begin
-      AValue.Owner.ValueByName('Formula').AsString := '';
+      AValue.Owner.ValueByName(AField + 'Formula').AsString := '';
       Text := FloatToStr(TotalPriceRoundTo(StrToFloatDef(Text, 0)));
     end
     else
     begin
-      AValue.Owner.ValueByName('Formula').AsString := Text;
+      AValue.Owner.ValueByName(AField + 'Formula').AsString := Text;
       Text := FloatToStr(TotalPriceRoundTo(EvaluateExprs(Text)));
     end;
   end;