浏览代码

Bug #892 首次金额模式计算,输入无效
合并3.1.3.3代码至3.1.5,3.1.5版本号应高于3.1.3.3,低于主版本

MaiXinRong 9 年之前
父节点
当前提交
86e1ce1d2e
共有 2 个文件被更改,包括 21 次插入15 次删除
  1. 20 14
      DataModules/BillsMeasureDm.pas
  2. 1 1
      Units/Connections.pas

+ 20 - 14
DataModules/BillsMeasureDm.pas

@@ -471,7 +471,7 @@ procedure TBillsMeasureData.sdvBillsMeasureNeedLookupRecord(
     end;
   end;
 
-  procedure SetQuantityRec(APhaseRec: TsdDataRecord; const AType: string);
+  procedure SetQuantityRec(ANode: TBillsIDTreeNode; APhaseRec: TsdDataRecord; const AType: string);
   var
     bAllow: Boolean;
   begin
@@ -482,7 +482,10 @@ procedure TBillsMeasureData.sdvBillsMeasureNeedLookupRecord(
           APhaseRec, StrToFloatDef(ANewText, 0), AType);
 
     if bAllow then
-    begin
+    begin 
+      if ANode.Rec.CalcType.AsInteger <> 0 then
+        ANode.Rec.CalcType.AsInteger := 0;
+
       if CheckNumeric(ANewText) then
         APhaseRec.ValueByName(AType + 'Quantity').AsFloat := QuantityRoundTo(StrToFloatDef(ANewText, 0))
       else
@@ -494,9 +497,12 @@ procedure TBillsMeasureData.sdvBillsMeasureNeedLookupRecord(
     end;
   end;
 
-  procedure SetTotalPriceRec(APhaseRec: TsdDataRecord; const AType: string);
-  begin
+  procedure SetTotalPriceRec(ANode: TBillsIDTreeNode; APhaseRec: TsdDataRecord; const AType: string);
+  begin  
+    if ANode.Rec.CalcType.AsInteger <> 1 then
+      ANode.Rec.CalcType.AsInteger := 1;
     APhaseRec.ValueByName(AType + 'Flag').AsInteger := 2;
+
     if CheckNumeric(ANewText) then
       APhaseRec.ValueByName(AType + 'TotalPrice').AsFloat := TotalPriceRoundTo(StrToFloatDef(ANewText, 0))
     else
@@ -506,20 +512,20 @@ procedure TBillsMeasureData.sdvBillsMeasureNeedLookupRecord(
     end;
   end;
 
-  procedure SetNewRecValue(APhaseRec: TsdDataRecord);
+  procedure SetNewRecValue(ANode: TBillsIDTreeNode; APhaseRec: TsdDataRecord);
   begin
     if SameText(AColumn.FieldName, 'CurDealQuantity') then
-      SetQuantityRec(APhaseRec, 'Deal')
+      SetQuantityRec(ANode, APhaseRec, 'Deal')
     else if SameText(AColumn.FieldName, 'CurQcQuantity') then
-      SetQuantityRec(APhaseRec, 'Qc')
+      SetQuantityRec(ANode, APhaseRec, 'Qc')
     else if SameText(AColumn.FieldName, 'CurPcQuantity') then
-      SetQuantityRec(APhaseRec, 'Pc')
+      SetQuantityRec(ANode, APhaseRec, 'Pc')
     else if SameText(AColumn.FieldName, 'CurDealTotalPrice') then
-      SetTotalPriceRec(APhaseRec, 'Deal')
+      SetTotalPriceRec(ANode, APhaseRec, 'Deal')
     else if SameText(AColumn.FieldName, 'CurQcTotalPrice') then
-      SetTotalPriceRec(APhaseRec, 'Qc')
+      SetTotalPriceRec(ANode, APhaseRec, 'Qc')
     else if SameText(AColumn.FieldName, 'CurPcTotalPrice') then
-      SetTotalPriceRec(APhaseRec, 'Pc');
+      SetTotalPriceRec(ANode, APhaseRec, 'Pc');
   end;
 
   function CheckNodeWritable(ANode: TBillsIDTreeNode): Boolean;
@@ -576,13 +582,13 @@ begin
 
   if CheckNeedAddPhaseRecord(vNode) then
   begin
-    if Pos('Quantity', AColumn.FieldName) > 0 then
+    if(Pos('Quantity', AColumn.FieldName) > 0) or (Pos('TotalPrice', AColumn.FieldName) > 0) then
       if HasCardinalNum(ANewText) then
-        raise Exception.Create('数量列公式不可输入参数');
+        raise Exception.Create('公式不可输入参数');
     NewRec := StageData.AddStageRecord(ARecord.ValueByName('ID').AsInteger);
     vNode.StageRec := NewRec;
 
-    SetNewRecValue(NewRec);
+    SetNewRecValue(vNode, NewRec);
   end;
 end;
 

+ 1 - 1
Units/Connections.pas

@@ -8,7 +8,7 @@ uses
 const
   ProductName = 'Measure';
   EmptyFileVersion = '1.0.0.0';
-  FileVersion = '1.0.0.2';
+  FileVersion = '1.0.1.0';
   EncryptVersion = 'Auto1.0';
 
 type