Browse Source

合同支付,使用“本期完成计量”基数,本期金额计算错误:
1. 双击本期金额
2. 初次输入本期金额
PS:均须设置起扣金额,且操作时,初次达到起扣金额

MaiXinRong 9 years ago
parent
commit
931309e4b7
1 changed files with 5 additions and 2 deletions
  1. 5 2
      DataModules/DealPaymentDm.pas

+ 5 - 2
DataModules/DealPaymentDm.pas

@@ -332,7 +332,7 @@ procedure TDealPaymentData.sdvDealPaymentNeedLookupRecord(
       AID := ARecord.ValueByName('ID').AsInteger;
       APayRec.ValueByName(sFField).AsString := ANewText;
       ARecord.ValueByName('Formula').AsString := ANewText;
-      fTotalPrice := FPayFormula.Calculate(ANewText);
+      fTotalPrice := FPayFormula.Calculate(ANewText, ARecord.ValueByName('StartedPrice').AsFloat);
       if CheckStartedPrice(AID) then
         APayRec.ValueByName(sTPField).AsFloat := GetAllowTotalPrice(AID, fTotalPrice);
     end;
@@ -454,7 +454,10 @@ procedure TDealPaymentData.sdvDealPaymentSetText(var Text: string;
       Rec.ValueByName('Formula').AsString := Text;
       AValue.Owner.ValueByName(sFField).AsString := Text;
       AID := ARecord.ValueByName('ID').AsInteger;
-      fTotalPrice := FPayFormula.Calculate(Text) - AValue.AsFloat;
+      if ARecord.ValueByName('Pre' + AValue.FieldName).AsFloat = 0 then
+        fTotalPrice := FPayFormula.Calculate(Text, Rec.ValueByName('StartedPrice').AsFloat) - AValue.AsFloat
+      else
+        fTotalPrice := FPayFormula.Calculate(Text) - AValue.AsFloat;
       if CheckStartedPrice(AID) then
         Text := FloatToStr(AValue.AsFloat + GetAllowTotalPrice(AID, fTotalPrice))
       else