Browse Source

复制整块,粘贴数据,应含金额模式数据
台账分解,应根据项目状态,控制部分右键菜单

MaiXinRong 9 years ago
parent
commit
71a81e44b3
4 changed files with 78 additions and 20 deletions
  1. 1 1
      DataModules/DealPaymentDm.pas
  2. 42 19
      Frames/BillsCompileFme.pas
  3. 25 0
      Units/BillsClipboard.pas
  4. 10 0
      Units/ProjectData.pas

+ 1 - 1
DataModules/DealPaymentDm.pas

@@ -688,7 +688,7 @@ begin
   else if ARec.ValueByName('PlanSubType').AsInteger = 1 then
     Result := Format('ÀۼƺÏͬ¼ÆÁ¿½ð¶î >= %f', [ARec.ValueByName('PlanDeadline').AsFloat])
   else if ARec.ValueByName('PlanSubType').AsInteger = 2 then
-    Result := Format('ÀۼƱä¸ü¼ÆÁ¿½ð¶î >= %f', [ARec.ValueByName('PlanDeadline').AsFloat])
+    Result := Format('ÀۼƱä¸ü¼ÆÁ¿½ð¶î >= %f', [ARec.ValueByName('PlanDeadline').AsFloat]);
 end;
 
 procedure TDealPaymentData.UpdateLinkSerialNo;

+ 42 - 19
Frames/BillsCompileFme.pas

@@ -173,7 +173,10 @@ begin
   if HasBillsBlockFormat then
   begin
     Allow := False;
-    PasteBillsBlock(stdBillsCompile.IDTree.Selected, ABounds);
+    if TProjectData(FBillsCompileData.ProjectData).CanInsertNormalBills then
+      PasteBillsBlock(stdBillsCompile.IDTree.Selected, ABounds)
+    else
+      TipMessage('当前标段未解锁,如需使用此功能,请先解锁标段');
   end;
 end;
 
@@ -310,13 +313,23 @@ end;
 procedure TBillsCompileFrame.actnBatchAddChildExecute(Sender: TObject);
 begin
   if CheckCompileEdition then
-    AddLeafBills(FBillsCompileData, itChild);
+  begin
+    if TProjectData(FBillsCompileData.ProjectData).CanInsertNormalBills then
+      AddLeafBills(FBillsCompileData, itChild)
+    else
+      TipMessage('当前标段未解锁,如需使用此功能,请先解锁标段');
+  end;
 end;
 
 procedure TBillsCompileFrame.actnBatchAddNextExecute(Sender: TObject);
 begin
   if CheckCompileEdition then
-    AddLeafBills(FBillsCompileData, itNextSibling);
+  begin
+    if TProjectData(FBillsCompileData.ProjectData).CanInsertNormalBills then
+      AddLeafBills(FBillsCompileData, itNextSibling)
+    else
+      TipMessage('当前标段未解锁,如需使用此功能,请先解锁标段');
+  end;
 end;
 
 procedure TBillsCompileFrame.actnBatchAddChildUpdate(Sender: TObject);
@@ -513,16 +526,21 @@ var
   sFileName: string;
   Importor: TGclBillsExcelImport;
 begin
-  if SelectFile(sFileName, '.xls') then
+  if TProjectData(FBillsCompileData.ProjectData).CanInsertNormalBills then
   begin
-    Importor := TGclBillsExcelImport.Create(TProjectData(FBillsCompileData.ProjectData));
-    try
-      Importor.ParentID := stdBillsCompile.IDTree.Selected.ID;
-      Importor.ImportFile(sFileName);
-    finally
-      Importor.Free;
+    if SelectFile(sFileName, '.xls') then
+    begin
+      Importor := TGclBillsExcelImport.Create(TProjectData(FBillsCompileData.ProjectData));
+      try
+        Importor.ParentID := stdBillsCompile.IDTree.Selected.ID;
+        Importor.ImportFile(sFileName);
+      finally
+        Importor.Free;
+      end;
     end;
-  end;
+  end
+  else
+    TipMessage('当前标段未解锁,如需使用此功能,请先解锁标段');
 end;
 
 procedure TBillsCompileFrame.ExpandNodeTo(ALevel: Integer);
@@ -594,16 +612,21 @@ var
   sFileName: string;
   Importor: TPlaneFxBillsExcelImport;
 begin
-  if SelectFile(sFileName, '.xls') then
+  if TProjectData(FBillsCompileData.ProjectData).CanInsertNormalBills then
   begin
-    Importor := TPlaneFxBillsExcelImport.Create(TProjectData(FBillsCompileData.ProjectData));
-    try
-      Importor.ParentID := stdBillsCompile.IDTree.Selected.ID;
-      Importor.ImportFile(sFileName);
-    finally
-      Importor.Free;
+    if SelectFile(sFileName, '.xls') then
+    begin
+      Importor := TPlaneFxBillsExcelImport.Create(TProjectData(FBillsCompileData.ProjectData));
+      try
+        Importor.ParentID := stdBillsCompile.IDTree.Selected.ID;
+        Importor.ImportFile(sFileName);
+      finally
+        Importor.Free;
+      end;
     end;
-  end;
+  end
+  else
+    TipMessage('当前标段未解锁,如需使用此功能,请先解锁标段');
 end;
 
 procedure TBillsCompileFrame.ExpandPegXmjNode;

+ 25 - 0
Units/BillsClipboard.pas

@@ -17,9 +17,14 @@ type
     FUnits: string;
     FPrice: Double;
     FOrgQuantity: Double;
+    FOrgTotalPrice: Double;
     FMisQuantity: Double;
+    FMisTotalPrice: Double;
     FOthQuantity: Double;
+    FOthTotalPrice: Double;
     FQuantity: Double;
+    FTotalPrice: Double;
+    FCalcType: Integer;
     FDrawingCode: string;
     FAlias: string;
     FDgnQuantity1: Double;
@@ -135,9 +140,14 @@ begin
   vNode.FUnits := ANode.Rec.ValueByName('Units').AsString;
   vNode.FPrice := ANode.Rec.ValueByName('Price').AsFloat;
   vNode.FOrgQuantity := ANode.Rec.ValueByName('OrgQuantity').AsFloat;
+  vNode.FOrgTotalPrice := ANode.Rec.ValueByName('OrgTotalPrice').AsFloat;
   vNode.FMisQuantity := ANode.Rec.ValueByName('MisQuantity').AsFloat;
+  vNode.FMisTotalPrice := ANode.Rec.ValueByName('MisTotalPrice').AsFloat;
   vNode.FOthQuantity := ANode.Rec.ValueByName('OthQuantity').AsFloat;
+  vNode.FOthTotalPrice := ANode.Rec.ValueByName('OthTotalPrice').AsFloat;
   vNode.FQuantity := ANode.Rec.ValueByName('Quantity').AsFloat;
+  vNode.FTotalPrice := ANode.Rec.ValueByName('TotalPrice').AsFloat;
+  vNode.FCalcType := ANode.Rec.ValueByName('CalcType').AsInteger;
   vNode.FDrawingCode := ANode.Rec.ValueByName('DrawingCode').AsString;
   vNode.FAlias := ANode.Rec.ValueByName('Alias').AsString;
   vNode.FDgnQuantity1 := ANode.Rec.ValueByName('DgnQuantity1').AsFloat;
@@ -221,9 +231,14 @@ begin
   ANode.Rec.ValueByName('Units').AsString := APasteNode.FUnits;
   ANode.Rec.ValueByName('Price').AsFloat := APasteNode.FPrice;
   ANode.Rec.ValueByName('OrgQuantity').AsFloat := QuantityRoundTo(APasteNode.FOrgQuantity);
+  ANode.Rec.ValueByName('OrgTotalPrice').AsFloat := TotalPriceRoundTo(APasteNode.FOrgTotalPrice);
   ANode.Rec.ValueByName('MisQuantity').AsFloat := QuantityRoundTo(APasteNode.FMisQuantity);
+  ANode.Rec.ValueByName('MisTotalPrice').AsFloat := TotalPriceRoundTo(APasteNode.FMisTotalPrice);
   ANode.Rec.ValueByName('OthQuantity').AsFloat := QuantityRoundTo(APasteNode.FOthQuantity);
+  ANode.Rec.ValueByName('OthTotalPrice').AsFloat := TotalPriceRoundTo(APasteNode.FOthTotalPrice);
   ANode.Rec.ValueByName('Quantity').AsFloat := QuantityRoundTo(APasteNode.FQuantity);
+  ANode.Rec.ValueByName('TotalPrice').AsFloat := TotalPriceRoundTo(APasteNode.FTotalPrice);
+  ANode.Rec.ValueByName('CalcType').AsInteger := APasteNode.FCalcType;
   ANode.Rec.ValueByName('DrawingCode').AsString := APasteNode.FDrawingCode;
   ANode.Rec.ValueByName('Alias').AsString := APasteNode.FAlias;
   ANode.Rec.ValueByName('DgnQuantity1').AsFloat := QuantityRoundTo(APasteNode.FDgnQuantity1);
@@ -302,9 +317,14 @@ begin
   FUnits := AXmlNode.Attributes['Units'];
   FPrice := AXmlNode.Attributes['Price'];
   FOrgQuantity := AXmlNode.Attributes['OrgQuantity'];
+  FOrgTotalPrice := AXmlNode.Attributes['OrgTotalPrice'];
   FMisQuantity := AXmlNode.Attributes['MisQuantity'];
+  FMisTotalPrice := AXmlNode.Attributes['MisTotalPrice'];
   FOthQuantity := AXmlNode.Attributes['OthQuantity'];
+  FOthTotalPrice := AXmlNode.Attributes['OthTotalPrice'];
   FQuantity := AXmlNode.Attributes['Quantity'];
+  FTotalPrice := AXmlNode.Attributes['TotalPrice'];
+  FCalcType := AXmlNode.Attributes['CalcType'];
   FDrawingCode := AXmlNode.Attributes['DrawingCode'];
   FAlias := AXmlNode.Attributes['Alias'];
   FDgnQuantity1 := AXmlNode.Attributes['DgnQuantity1'];
@@ -325,9 +345,14 @@ begin
   AXmlNode.Attributes['Units'] := FUnits;
   AXmlNode.Attributes['Price'] := FPrice;
   AXmlNode.Attributes['OrgQuantity'] := FOrgQuantity;
+  AXmlNode.Attributes['OrgTotalPrice'] := FOrgTotalPrice;
   AXmlNode.Attributes['MisQuantity'] := FMisQuantity;
+  AXmlNode.Attributes['MisTotalPrice'] := FMisTotalPrice;
   AXmlNode.Attributes['OthQuantity'] := FOthQuantity;
+  AXmlNode.Attributes['OthTotalPrice'] := FOthTotalPrice;
   AXmlNode.Attributes['Quantity'] := FQuantity;
+  AXmlNode.Attributes['TotalPrice'] := FTotalPrice;
+  AXmlNode.Attributes['CalcType'] := FCalcType;
   AXmlNode.Attributes['DrawingCode'] := FDrawingCode;
   AXmlNode.Attributes['Alias'] := FAlias;
   AXmlNode.Attributes['DgnQuantity1'] := FDgnQuantity1;

+ 10 - 0
Units/ProjectData.pas

@@ -95,6 +95,7 @@ type
     function GetPriceMarginReadOnly: Boolean;
     function GetStageIndex: Integer;
     procedure SetStageIndex(const Value: Integer);
+    function GetCanInsertNormalBills: Boolean;
   public
     constructor Create;
     destructor Destroy; override;
@@ -207,6 +208,7 @@ type
     property PriceMarginReadOnly: Boolean read GetPriceMarginReadOnly;
 
     property CanUnlockInfo: Boolean read FCanUnlockInfo write FCanUnlockInfo;
+    property CanInsertNormalBills: Boolean read GetCanInsertNormalBills;
 
     property ProjectName: string read FProjectName;
     // 磁盘上存储该项目的文件名称
@@ -1717,4 +1719,12 @@ begin
   end;
 end;
 
+function TProjectData.GetCanInsertNormalBills: Boolean;
+begin
+  if FProjProperties.PhaseCount > 0 then
+    Result := CanUnlockInfo
+  else
+    Result := True;
+end;
+
 end.