|
@@ -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;
|
|
|
|