Просмотр исходного кода

Merge branch '3.1.3.3' of http://192.168.1.12:3000/maixinrong/measure into 3.1.3.3

MaiXinRong 9 лет назад
Родитель
Сommit
2f097e2f1b

+ 1 - 0
DataModules/PriceMarginBillsDm.dfm

@@ -217,6 +217,7 @@ object PriceMarginBillsData: TPriceMarginBillsData
     AfterDeleteRecord = sdvDetailGLAfterDeleteRecord
     AfterValueChanged = sdvDetailGLAfterValueChanged
     OnFilterRecord = sdvDetailGLFilterRecord
+    OnSetText = sdvDetailGLSetText
     Left = 264
     Top = 136
   end

+ 12 - 1
DataModules/PriceMarginBillsDm.pas

@@ -4,7 +4,7 @@ interface
 
 uses
   SysUtils, Classes, sdDB, sdProvider, BillsTree, mDataRecord,
-  GclBillsGatherModel;
+  GclBillsGatherModel, DB;
 
 type
   TPriceMarginBillsData = class(TDataModule)
@@ -28,6 +28,8 @@ type
     procedure sdvDetailGLAfterDeleteRecord(ARecord: TsdDataRecord);
     procedure sdvGclBillsGetText(var Text: String; ARecord: TsdDataRecord;
       AValue: TsdValue; AColumn: TsdViewColumn; DisplayText: Boolean);
+    procedure sdvDetailGLSetText(var Text: String; ARecord: TsdDataRecord;
+      AValue: TsdValue; AColumn: TsdViewColumn; var Allow: Boolean);
   private
     FProjectData: TObject;
     procedure WriteGclBillsData(AGcls: TList);
@@ -374,4 +376,13 @@ begin
   end;
 end;
 
+procedure TPriceMarginBillsData.sdvDetailGLSetText(var Text: String;
+  ARecord: TsdDataRecord; AValue: TsdValue; AColumn: TsdViewColumn;
+  var Allow: Boolean);
+begin
+  if AValue.DataType in [ftInteger, ftFloat] then
+    if not CheckNumeric(Text) then
+      Text := '';
+end;
+
 end.

+ 5 - 1
DataModules/ProjectGLDm.pas

@@ -74,7 +74,7 @@ implementation
 
 uses
   ProjectData, UtilMethods, DB, Variants, PhaseData, DetailGLDm,
-  BillsMeasureDm, BillsTree, sdIDTree, PhasePayDm, DateUtils;
+  BillsMeasureDm, BillsTree, sdIDTree, PhasePayDm, DateUtils, ZhAPI;
 
 {$R *.dfm}
 
@@ -493,6 +493,10 @@ begin
     if iPhaseID > 0 then
       DataSetErrorMessage(Allow, Format('该工料在第%d期已进行调差计算,不可修改基础数据。', [iPhaseID]));
   end;
+
+  if AValue.DataType in [ftInteger, ftFloat] then
+    if not CheckNumeric(Text) then
+      Text := '';
 end;
 
 procedure TProjectGLData.LoadStagePM_CalcData;

+ 156 - 2
DataModules/ReportMemoryDm/rmBillsGatherDm.dfm

@@ -134,6 +134,84 @@ object rmBillsGatherData: TrmBillsGatherData
       item
         Name = 'AddRatioPercent'
         DataType = ftFloat
+      end
+      item
+        Name = 'DealDgnQuantity1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'DealDgnQuantity2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'DealDgnQuantity'
+        DataType = ftString
+        Size = 50
+      end
+      item
+        Name = 'DealDgnPrice1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'DealDgnPrice2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'DealDgnPrice'
+        DataType = ftString
+        Size = 50
+      end
+      item
+        Name = 'CDgnQuantity1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'CDgnQuantity2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'CDgnQuantity'
+        DataType = ftString
+        Size = 50
+      end
+      item
+        Name = 'CDgnPrice1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'CDgnPrice2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'CDgnPrice'
+        DataType = ftString
+        Size = 50
+      end
+      item
+        Name = 'FinalDgnQuantity1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'FinalDgnQuantity2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'FinalDgnQuantity'
+        DataType = ftString
+        Size = 50
+      end
+      item
+        Name = 'FinalDgnPrice1'
+        DataType = ftFloat
+      end
+      item
+        Name = 'FinalDgnPrice2'
+        DataType = ftFloat
+      end
+      item
+        Name = 'FinalDgnPrice'
+        DataType = ftString
+        Size = 50
       end>
     IndexDefs = <>
     Params = <>
@@ -141,7 +219,7 @@ object rmBillsGatherData: TrmBillsGatherData
     Left = 32
     Top = 24
     Data = {
-      CD0200009619E0BD01000000180000001D000000000003000000CD0209586961
+      AA0400009619E0BD01000000180000002F000000000003000000AA0409586961
       6E67436F64650100490000000100055749445448020002000A00064D75436F64
       650100490000000100055749445448020002000A00074A6965436F6465010049
       0000000100055749445448020002000A000858694D75436F6465010049000000
@@ -163,7 +241,22 @@ object rmBillsGatherData: TrmBillsGatherData
       000944676E50726963653208000400000000000944676E507269636531080004
       00000000000844676E5072696365010049000000010005574944544802000200
       32000C526174696F50657263656E7408000400000000000F416464526174696F
-      50657263656E7408000400000000000000}
+      50657263656E740800040000000000104465616C44676E5175616E7469747931
+      0800040000000000104465616C44676E5175616E746974793208000400000000
+      000F4465616C44676E5175616E74697479010049000000010005574944544802
+      00020032000D4465616C44676E50726963653108000400000000000D4465616C
+      44676E50726963653208000400000000000C4465616C44676E50726963650100
+      4900000001000557494454480200020032000D4344676E5175616E7469747931
+      08000400000000000D4344676E5175616E746974793208000400000000000C43
+      44676E5175616E7469747901004900000001000557494454480200020032000A
+      4344676E50726963653108000400000000000A4344676E507269636532080004
+      0000000000094344676E50726963650100490000000100055749445448020002
+      0032001146696E616C44676E5175616E74697479310800040000000000114669
+      6E616C44676E5175616E746974793208000400000000001046696E616C44676E
+      5175616E7469747901004900000001000557494454480200020032000E46696E
+      616C44676E50726963653108000400000000000E46696E616C44676E50726963
+      653208000400000000000D46696E616C44676E50726963650100490000000100
+      0557494454480200020032000000}
     object cdsFxBillsXiangCode: TStringField
       FieldName = 'XiangCode'
       Size = 10
@@ -261,6 +354,67 @@ object rmBillsGatherData: TrmBillsGatherData
     object cdsFxBillsAddRatioPercent: TFloatField
       FieldName = 'AddRatioPercent'
     end
+    object cdsFxBillsDealDgnQuantity1: TFloatField
+      FieldName = 'DealDgnQuantity1'
+    end
+    object cdsFxBillsDealDgnQuantity2: TFloatField
+      FieldName = 'DealDgnQuantity2'
+    end
+    object cdsFxBillsDealDgnQuantity: TStringField
+      FieldName = 'DealDgnQuantity'
+      Size = 50
+    end
+    object cdsFxBillsDealDgnPrice1: TFloatField
+      FieldName = 'DealDgnPrice1'
+    end
+    object cdsFxBillsDealDgnPrice2: TFloatField
+      FieldName = 'DealDgnPrice2'
+    end
+    object cdsFxBillsDealDgnPrice: TStringField
+      FieldName = 'DealDgnPrice'
+      Size = 50
+    end
+    object cdsFxBillsCDgnQuantity1: TFloatField
+      FieldName = 'CDgnQuantity1'
+    end
+    object cdsFxBillsCDgnQuantity2: TFloatField
+      FieldName = 'CDgnQuantity2'
+    end
+    object cdsFxBillsCDgnQuantity: TStringField
+      FieldName = 'CDgnQuantity'
+      Size = 50
+    end
+    object cdsFxBillsCDgnPrice1: TFloatField
+      FieldName = 'CDgnPrice1'
+    end
+    object cdsFxBillsCDgnPrice2: TFloatField
+      FieldName = 'CDgnPrice2'
+    end
+    object cdsFxBillsCDgnPrice: TStringField
+      FieldName = 'CDgnPrice'
+      Size = 50
+    end
+    object cdsFxBillsFinalDgnQuantity1: TFloatField
+      FieldName = 'FinalDgnQuantity1'
+    end
+    object cdsFxBillsFinalDgnQuantity2: TFloatField
+      FieldName = 'FinalDgnQuantity2'
+    end
+    object cdsFxBillsFinalDgnQuantity: TStringField
+      DisplayWidth = 50
+      FieldName = 'FinalDgnQuantity'
+      Size = 50
+    end
+    object cdsFxBillsFinalDgnPrice1: TFloatField
+      FieldName = 'FinalDgnPrice1'
+    end
+    object cdsFxBillsFinalDgnPrice2: TFloatField
+      FieldName = 'FinalDgnPrice2'
+    end
+    object cdsFxBillsFinalDgnPrice: TStringField
+      FieldName = 'FinalDgnPrice'
+      Size = 50
+    end
   end
   object cdsGclBills: TClientDataSet
     Active = True

+ 39 - 0
DataModules/ReportMemoryDm/rmBillsGatherDm.pas

@@ -70,6 +70,24 @@ type
     cdsFxBillsDgnPrice: TStringField;
     cdsFxBillsRatioPercent: TFloatField;
     cdsFxBillsAddRatioPercent: TFloatField;
+    cdsFxBillsDealDgnQuantity1: TFloatField;
+    cdsFxBillsDealDgnQuantity2: TFloatField;
+    cdsFxBillsDealDgnQuantity: TStringField;
+    cdsFxBillsDealDgnPrice1: TFloatField;
+    cdsFxBillsDealDgnPrice2: TFloatField;
+    cdsFxBillsDealDgnPrice: TStringField;
+    cdsFxBillsCDgnQuantity1: TFloatField;
+    cdsFxBillsCDgnQuantity2: TFloatField;
+    cdsFxBillsCDgnQuantity: TStringField;
+    cdsFxBillsCDgnPrice1: TFloatField;
+    cdsFxBillsCDgnPrice2: TFloatField;
+    cdsFxBillsCDgnPrice: TStringField;
+    cdsFxBillsFinalDgnQuantity1: TFloatField;
+    cdsFxBillsFinalDgnQuantity2: TFloatField;
+    cdsFxBillsFinalDgnQuantity: TStringField;
+    cdsFxBillsFinalDgnPrice1: TFloatField;
+    cdsFxBillsFinalDgnPrice2: TFloatField;
+    cdsFxBillsFinalDgnPrice: TStringField;
     // ¾öËã05-2
     cdsGclBills: TClientDataSet;
     cdsGclBillsB_Code: TStringField;
@@ -646,6 +664,27 @@ begin
     cdsFxBillsDgnPrice2.AsFloat := PriceRoundTo(ANode.TotalPrice/ANode.DesignQuantity2);
   if cdsFxBillsDgnPrice1.AsFloat <> 0 then
     cdsFxBillsDgnPrice.AsString := GetDgnQuantity(cdsFxBillsDgnPrice1.AsFloat, cdsFxBillsDgnPrice2.AsFloat);
+
+  cdsFxBillsDealDgnQuantity1.AsFloat := ANode.DealDesignQuantity1;
+  cdsFxBillsDealDgnQuantity2.AsFloat := ANode.DealDesignQuantity2;
+  cdsFxBillsDealDgnQuantity.AsString := GetDgnQuantity(ANode.DealDesignQuantity1, ANode.DesignQuantity2);
+  cdsFxBillsDealDgnPrice1.AsFloat := GetDgnPrice(cdsFxBillsAddDealTotalPrice.AsFloat, cdsFxBillsDealDgnQuantity1.AsFloat);
+  cdsFxBillsDealDgnPrice2.AsFloat := GetDgnPrice(cdsFxBillsAddDealTotalPrice.AsFloat, cdsFxBillsDealDgnQuantity2.AsFloat);
+  cdsFxBillsDealDgnPrice.AsString := GetDgnQuantity(cdsFxBillsDealDgnPrice1.AsFloat, cdsFxBillsDealDgnPrice2.AsFloat);
+
+  cdsFxBillsCDgnQuantity1.AsFloat := ANode.CDesignQuantity1;
+  cdsFxBillsCDgnQuantity2.AsFloat := ANode.CDesignQuantity2;
+  cdsFxBillsCDgnQuantity.AsString := GetDgnQuantity(ANode.CDesignQuantity1, ANode.CDesignQuantity2);
+  cdsFxBillsCDgnPrice1.AsFloat := GetDgnPrice(cdsFxBillsAddQcTotalPrice.AsFloat, cdsFxBillsCDgnQuantity1.AsFloat);
+  cdsFxBillsCDgnPrice2.AsFloat := GetDgnPrice(cdsFxBillsAddQcTotalPrice.AsFloat, cdsFxBillsCDgnQuantity2.AsFloat);
+  cdsFxBillsCDgnPrice.AsString := GetDgnQuantity(cdsFxBillsCDgnPrice1.AsFloat, cdsFxBillsCDgnPrice2.AsFloat);
+
+  cdsFxBillsFinalDgnQuantity1.AsFloat := ANode.DealDesignQuantity1 + ANode.CDesignQuantity1;
+  cdsFxBillsFinalDgnQuantity2.AsFloat := ANode.DealDesignQuantity2 + ANode.CDesignQuantity2;
+  cdsFxBillsFinalDgnQuantity.AsString := GetDgnQuantity(cdsFxBillsFinalDgnQuantity1.AsFloat, cdsFxBillsFinalDgnQuantity2.AsFloat);
+  cdsFxBillsFinalDgnPrice1.AsFloat := GetDgnPrice(cdsFxBillsAddGatherTotalPrice.AsFloat, cdsFxBillsFinalDgnQuantity1.AsFloat);
+  cdsFxBillsFinalDgnPrice2.AsFloat := GetDgnPrice(cdsFxBillsAddGatherTotalPrice.AsFloat, cdsFxBillsFinalDgnQuantity2.AsFloat);
+  cdsFxBillsFinalDgnPrice.AsString := GetDgnQuantity(cdsFxBillsFinalDgnPrice1.AsFloat, cdsFxBillsFinalDgnPrice2.AsFloat);
   cdsFxBills.Post;
   WriteNode(TReportCacheNode(ANode.FirstChild));
   WriteNode(TReportCacheNode(ANode.NextSibling));

+ 14 - 0
DataModules/StageDm.pas

@@ -31,6 +31,8 @@ type
     procedure UpdateParentRecord(ABillsID: Integer; ATotalPrice: Double; const AFieldName: string);
     procedure UpdateComplete(ABillsID: Integer; AQuantity, ATotalPrice: Double);
 
+    function HasPriceMarginBills: Boolean;
+
     // 向父项增量--PM_TotalPrice
     procedure UpdateParentPriceMargin(ABillsID: Integer; ADiffer: Double);
     // 向价差调整节点增量--GatherTotalPrice
@@ -812,6 +814,8 @@ var
   Rec: TStageRecord;
   fDiffer: Double;
 begin
+  if not HasPriceMarginBills then Exit;
+   
   with TProjectData(TPhaseData(FPhaseData).ProjectData) do
   begin
     Rec := StageRecord(iPriceMarginID);
@@ -854,6 +858,8 @@ var
   Rec: TStageRecord;
   fPM, fPMDiffer: Double;
 begin
+  if not HasPriceMarginBills then Exit;
+  
   Rec := StageRecord(ABillsID);
   if not Assigned(Rec) then Exit;
 
@@ -940,4 +946,12 @@ begin
   end;
 end;
 
+function TStageData.HasPriceMarginBills: Boolean;
+var
+  vPM_Node: TsdIDTreeNode;
+begin
+  vPM_Node := MainBillsTree.FindNode(iPriceMarginID);
+  Result := Assigned(vPM_Node);
+end;
+
 end.

+ 41 - 0
Dprs/CSL/Measure_Cloud.cfg

@@ -0,0 +1,41 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"C:\Program Files (x86)\李뷘흡숭\셕좆連마 (데샙경+暾경) 1"
+-N"E:\DelphiTemp"
+-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-D_mCloud;_mEncrypt;_Test
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST

+ 156 - 0
Dprs/CSL/Measure_Cloud.dof

@@ -0,0 +1,156 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=C:\Program Files (x86)\纵横软件\计量支付 (单机版+云版) 1
+UnitOutputDir=E:\DelphiTemp
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;ZjGridD7;DPanel;ExTree;JimComboBoxs;JimTab;PrintComRep;XPMenu_tom;ZjGridFereD7;ZjCommon;SmartDataSet;ZjGridActns
+Conditionals=_mCloud;_mEncrypt;_Test
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=D:\Program Files\Borland\Delphi7\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=3
+MinorVer=1
+Release=3
+Build=1056
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=2052
+CodePage=936
+[Version Info Keys]
+CompanyName=珠海纵横创新软件有限公司
+FileDescription=纵横结算决算计量一体化云版
+FileVersion=3.1.3.1056
+InternalName=Measure
+LegalCopyright=版权所有(C) 珠海纵横创新软件有限公司 2003-2014。保留所有权利。
+LegalTrademarks=Measure
+OriginalFilename=
+ProductName=纵横公路工程计量决算一体化软件
+ProductVersion=3
+Comments=
+[HistoryLists\hlConditionals]
+Count=1
+Item0=_mCloud;_mEncrypt;_Test
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=E:\DelphiTemp
+Item1=D:\Dcu
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=C:\Program Files (x86)\纵横软件\计量支付 (单机版+云版) 1
+Item1=C:\Program Files (x86)\纵横软件\纵横结算决算计量一体化软件(云版)
+[HistoryLists\hlBPLOutput]
+Count=1
+Item0=..\Bin
+[HistoryLists\hlDCPOutput]
+Count=1
+Item0=D:\Dcu

+ 204 - 0
Dprs/CSL/Measure_Cloud.dpr

@@ -0,0 +1,204 @@
+program Measure_Cloud;
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  Controls,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  LoginFrm in '..\..\Forms\LoginFrm.pas' {LoginFrm},
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mS4Utils in '..\..\Encrypt\mS4Utils.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  Rockey1 in '..\..\Encrypt\Rockey1.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  CslJson in '..\..\Units\CslJson.pas',
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {rmGclBillsBGData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  IPFrm in '..\..\Forms\IPFrm.pas' {IPForm},
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  Checker in '..\..\Units\Checker.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  //DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm};
+
+{$R *.res}
+
+var
+  Mutex: THandle;
+  IPForm: TIPForm;
+
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件云版';
+    {$IFDEF _mCloud}
+      IPForm := TIPForm.Create(nil);
+      try
+        if not IPForm.HasIP then
+        begin
+          IPForm.ShowModal;
+          if IPForm.ModalResult <> mrOK then
+          begin
+            Application.Terminate;
+            Exit;
+          end;
+        end;
+      finally
+        IPForm.Free;
+      end;
+
+      if not LoginForm then
+      begin
+        Application.Terminate;
+        Exit;
+      end;
+    {$ENDIF}
+
+    if CheckDogExists then
+    begin
+      Application.CreateForm(TMainForm, MainForm);
+  end;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

BIN
Dprs/CSL/Measure_Cloud.res


+ 1 - 1
Forms/DealPayPlanFrm.dfm

@@ -142,7 +142,7 @@ object DealPayPlanForm: TDealPayPlanForm
       Ctl3D = False
       EditLabel.Width = 66
       EditLabel.Height = 12
-      EditLabel.Caption = #38480#21046#37329#39069#65306' '
+      EditLabel.Caption = #38480#21046#26399#25968#65306' '
       LabelPosition = lpLeft
       ParentCtl3D = False
       TabOrder = 0

+ 1 - 0
Frames/DealPaymentFme.dfm

@@ -330,6 +330,7 @@ object DealPaymentFrame: TDealPaymentFrame
       Caption = #35774#32622#35745#25552#26399#38480
       Hint = #36798#21040#26465#20214#26102#65292#21363#21051#35745#37327#33267#20184'('#25187')'#27454#38480#39069
       OnExecute = actnSetDealPayPlanExecute
+      OnUpdate = actnSetDealPayPlanUpdate
     end
   end
 end

+ 6 - 0
Frames/DealPaymentFme.pas

@@ -45,6 +45,7 @@ type
     procedure actnSetDealPayPlanExecute(Sender: TObject);
     procedure zgDealPaymentShowHint(var HintStr: String;
       var CanShow: Boolean; var HintInfo: THintInfo; const ACoord: TPoint);
+    procedure actnSetDealPayPlanUpdate(Sender: TObject);
   private
     FDealPaymentData: TDealPaymentData;
 
@@ -372,4 +373,9 @@ begin
   end;
 end;
 
+procedure TDealPaymentFrame.actnSetDealPayPlanUpdate(Sender: TObject);
+begin
+  TAction(Sender).Enabled := Assigned(sdDealPayment.DataView.Current);
+end;
+
 end.

+ 19 - 6
Frames/ProjectFme.pas

@@ -566,8 +566,17 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
   end;
 
   procedure DisplayPriceMargin;
+  var
+    vPM_Node: TsdIDTreeNode;
   begin
-    if ProjectData.ProjProperties.PhaseCount = 0 then
+    vPM_Node := FProjectData.BillsCompileData.BillsCompileTree.FindNode(iPriceMarginID);
+    if not Assigned(vPM_Node) then
+    begin
+      ErrorMessage('台账中无预定义价差节点,不可使用价差功能。');
+      dxsbViewControl.SelectedItem := dxsbViewControl.ActiveGroup.Items[jpsMain.ActivePageIndex];
+      Abort;
+    end
+    else if ProjectData.ProjProperties.PhaseCount = 0 then
     begin
       TipMessage('未计量前不可进行材料调差。');
       dxsbViewControl.SelectedItem := dxsbViewControl.ActiveGroup.Items[jpsMain.ActivePageIndex];
@@ -576,11 +585,12 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
     ChangeView;
   end;
 
+var
+  bCloseCompare: Boolean;
 begin
   if Item.Tag = jpsMain.ActivePageIndex then Exit;
 
-  if (Item.Tag in [0..3]) and (jpsMain.ActivePageIndex = 4) then
-    CloseCompare;
+  bCloseCompare := (Item.Tag in [0..3]) and (jpsMain.ActivePageIndex = 4);
 
   case Item.Tag of
     0..2: ChangeView;
@@ -588,6 +598,9 @@ begin
     4: DisplayCompare;
     5: DisplayReports;
   end;
+
+  if bCloseCompare then
+    CloseCompare;
 end;
 
 procedure TProjectFrame.CreateBillsFrame;
@@ -624,8 +637,8 @@ end;
 
 procedure TProjectFrame.dxpmExpandBillsPopup(Sender: TObject);
 begin
-  dxpmExpandBills.ItemLinks.Items[7].Visible := jpsMain.ActivePageIndex in [0, 1, 3];
-  dxpmExpandBills.ItemLinks.Items[6].Visible := jpsMain.ActivePageIndex in [1, 3];
+  dxpmExpandBills.ItemLinks.Items[7].Visible := jpsMain.ActivePageIndex in [0, 1, 4];
+  dxpmExpandBills.ItemLinks.Items[6].Visible := jpsMain.ActivePageIndex in [1, 4];
   SetDxBtnAction(actnFirstLevel, MainForm.dxbtnFirstLevel);
   SetDxBtnAction(actnSecondLevel, MainForm.dxbtnSecondLevel);
   SetDxBtnAction(actnThirdLevel, MainForm.dxbtnThirdLevel);
@@ -1340,7 +1353,7 @@ begin
   try
     case jpsMain.ActivePageIndex of
       1: FBillsMeasureFrame.ExpandCurPhase;
-      3: FPhaseCompareFrame.ExpandCurPhase;
+      4: FPhaseCompareFrame.ExpandCurPhase;
     end;
   finally
     UpdateSysProgress(0, '就绪');

+ 6 - 6
Frames/ProjectManagerFme.pas

@@ -346,12 +346,12 @@ var
         end;
       end;
     end
-    else if (iSearch = 10) then
-    begin
-      sHint :='该项目[' + FBidName + ']在云端已被删除,点击"确定"后,可手动删除该项目。';
-      Application.MessageBox(PChar(sHint), '系统提示', MB_OK + MB_ICONINFORMATION);
-      Exit;
-    end
+//    else if (iSearch = 10) then
+//    begin
+//      sHint :='该项目[' + FBidName + ']在云端已被删除,点击"确定"后,可手动删除该项目。';
+//      Application.MessageBox(PChar(sHint), '系统提示', MB_OK + MB_ICONINFORMATION);
+//      Exit;
+//    end
     else if (iSearch = 0) or (iSearch = -1) then
     begin
       sHint := sError + '(因网络出错,无法检测[' + FBidName + ']在云端是否有更新,本次操作已取消,请重试)。';

+ 51 - 40
Units/Connections.pas

@@ -7,7 +7,8 @@ uses
 
 const
   ProductName = 'Measure';
-  FileVersion = '1.0.0.0';
+  EmptyFileVersion = '1.0.0.0';
+  FileVersion = '1.0.0.1';
   EncryptVersion = 'Auto1.0';
 
 type
@@ -50,7 +51,9 @@ type
     CreateExeVersion: string[20];
     // 最后一次打开 -- Exe版本号
     LastestExeVersion: string[20];
-    Reserve: array [0..1024 - 21 - 21] of Char;
+    // 历史最大 -- exe版本号
+    MaxExeVersion: string[20];
+    Reserve: array [0..1024 -21 -21 -21] of Char;
   end;
 
   TEncryptConnection = class(TCommonConnection)
@@ -68,7 +71,8 @@ type
     procedure ResetFileHead;
     function CheckFileEncrypt: Boolean; overload;
     function CheckFileEncrypt(AFileName: string): Boolean; overload;
-    function GetIsLastest: Boolean;
+    function GetNeedUpdate: Boolean;
+    function GetOverExe: Boolean;
   public
     destructor Destroy; override;
     procedure Open(const AFileName: string); override;
@@ -76,7 +80,8 @@ type
 
     procedure UpdateFileVersion;
 
-    property IsLastest: Boolean read GetIsLastest;
+    property NeedUpdate: Boolean read GetNeedUpdate;
+    property OverExe: Boolean read GetOverExe;
   end;
 
   procedure SimpleDecrypt(const ASourceFile, AResultFile: string);
@@ -340,9 +345,10 @@ begin
     FFileHead.ProductName := ProductName;
     FFileHead.FileType := 1;
     FFileHead.EncryptVersion := EncryptVersion;
-    FFileHead.FileVersion := FileVersion;
+    FFileHead.FileVersion := EmptyFileVersion;
     FFileHead.CreateExeVersion := GetVersion;
     FFileHead.LastestExeVersion := GetVersion;
+    FFileHead.MaxExeVersion := GetVersion;
   end;
 end;
 
@@ -359,6 +365,46 @@ begin
   FFileHead.LastestExeVersion := GetVersion;
 end;
 
+procedure TEncryptConnection.UpdateFileVersion;
+begin
+  FFileHead.FileVersion := FileVersion;
+end;
+
+procedure TEncryptConnection.RecoverFileHead(AFileName: string);
+var
+  sTempFile: string;
+  FileStream: TFileStream;
+begin
+  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
+  CopyFile(PChar(AFileName), PChar(sTempFile), False);
+  try
+    if FileExists(sTempFile) then
+    begin
+      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
+      try
+        FileStream.Seek($00, soFromBeginning);
+        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
+      finally
+        FileStream.Free;
+      end;
+      CopyFile(PChar(sTempFile), PChar(AFileName), False);
+      DeleteFile(PChar(sTempFile));
+    end;
+  except
+    DeleteFile(PChar(sTempFile));
+  end;
+end;
+
+function TEncryptConnection.GetNeedUpdate: Boolean;
+begin
+  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') > 0;
+end;
+
+function TEncryptConnection.GetOverExe: Boolean;
+begin
+  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') < 0;
+end;
+
 { TConnection }
 
 procedure TConnection.Close;
@@ -416,39 +462,4 @@ begin
   FConnection.Open;
 end;
 
-function TEncryptConnection.GetIsLastest: Boolean;
-begin
-  Result := CompareCode(CurrencyString, FFileHead.FileVersion, '.') > 0;
-end;
-
-procedure TEncryptConnection.UpdateFileVersion;
-begin
-  FFileHead.FileVersion := CurrencyString;
-end;
-
-procedure TEncryptConnection.RecoverFileHead(AFileName: string);
-var
-  sTempFile: string;
-  FileStream: TFileStream;
-begin
-  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
-  CopyFile(PChar(AFileName), PChar(sTempFile), False);
-  try
-    if FileExists(sTempFile) then
-    begin
-      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
-      try
-        FileStream.Seek($00, soFromBeginning);
-        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
-      finally
-        FileStream.Free;
-      end;
-      CopyFile(PChar(sTempFile), PChar(AFileName), False);
-      DeleteFile(PChar(sTempFile));
-    end;
-  except
-    DeleteFile(PChar(sTempFile));
-  end;
-end;
-
 end.

+ 6 - 0
Units/ProjectData.pas

@@ -542,6 +542,8 @@ end;
 
 procedure TProjectData.UpdateProjectDataBase;
 begin
+  if TEncryptConnection(FConnection).OverExe then
+    WarningMessage('标段版本高于当前软件版本,可能会产生错误。');
   FUpdator.Update(FConnection);
 end;
 
@@ -558,6 +560,7 @@ begin
   FProjectID := -1;
   UnZipFile(AFileName, TempPath);
   FConnection.Open(MainFileName);
+  UpdateProjectDataBase;
   FProjProperties.Open(FConnection.Connection);
   if ProjProperties.PhaseCount > 0 then
   begin
@@ -1275,6 +1278,7 @@ begin
   FProjectID := -1;
   UnZipFile(AFileName, TempPath);
   FConnection.Open(MainFileName);
+  UpdateProjectDataBase;
   FProjProperties.Open(FConnection.Connection);
   FStaffData.Open(FConnection.Connection);
 end;
@@ -1333,6 +1337,7 @@ begin
   FProjectID := -1;
   UnZipFile(AFileName, TempPath);
   FConnection.Open(MainFileName);
+  UpdateProjectDataBase;
   FProjProperties.Open(FConnection.Connection);
   if ProjProperties.PhaseCount > 0 then
   begin
@@ -1359,6 +1364,7 @@ begin
   FProjectID := -1;
   UnZipFile(AFileName, TempPath);
   FConnection.Open(MainFileName);
+  UpdateProjectDataBase;
   FProjProperties.Open(FConnection.Connection);
   if ProjProperties.PhaseCount > 0 then
   begin

+ 1 - 1
Units/UpdateDataBase.pas

@@ -55,7 +55,7 @@ end;
 
 procedure TUpdateDB.Update(AConnection: TEncryptConnection);
 begin
-  if not AConnection.IsLastest then
+  if AConnection.NeedUpdate then
   begin
     UpdateAllTables(AConnection.Connection);
     AConnection.UpdateFileVersion;