Sfoglia il codice sorgente

Merge branch 'master' of http://192.168.1.12:3000/maixinrong/measure

builder 8 anni fa
parent
commit
c1ff3481c7
2 ha cambiato i file con 42 aggiunte e 2 eliminazioni
  1. 40 1
      DataModules/BillsGatherDm.pas
  2. 2 1
      Frames/ProjectManagerFme.pas

+ 40 - 1
DataModules/BillsGatherDm.pas

@@ -109,6 +109,9 @@ begin
 end;
 
 procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
+var
+  sCurB_Code, sCurName, sCurUnits, sCurPrice: string;
+  bHasCurrrent: Boolean;
 
   procedure DisableAndClearDataSet(ADataSet: TsdDataSet);
   begin
@@ -125,6 +128,15 @@ procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
 
   procedure BeforeWrite;
   begin
+    bHasCurrrent := Assigned(sdvGclBills.Current);
+    if Assigned(sdvGclBills.Current) then
+    begin
+      sCurB_Code := sdvGclBills.Current.ValueByName('B_Code').AsString;
+      sCurName := sdvGclBills.Current.ValueByName('Name').AsString;
+      sCurUnits := sdvGclBills.Current.ValueByName('Units').AsString;
+      sCurPrice := sdvGclBills.Current.ValueByName('Price').AsString;
+    end;
+
     sdvDetailGclBills.Filtered := False;
     sdvDetailDealBills.Filtered := False;
     sdvDetailBGLBills.Filtered := False;
@@ -135,14 +147,41 @@ procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
     DisableAndClearDataSet(sddDetailBGLBills);
   end;
 
+  function FindCurrentRecord: TsdDataRecord;
+  var
+    i: Integer;
+    Rec: TsdDataRecord;
+  begin
+    Result := nil;
+    for i := 0 to sddGclBills.RecordCount - 1 do
+    begin
+      Rec := sddGclBills.Records[i];
+      if SameText(sCurB_Code, Rec.ValueByName('B_Code').AsString) and
+         SameText(sCurName, Rec.ValueByName('Name').AsString) and
+         SameText(sCurUnits, Rec.ValueByName('Units').AsString) and
+         SameText(sCurPrice, Rec.ValueByName('Price').AsString) then
+      begin
+        Result := Rec;
+        Break;
+      end;
+    end;
+  end;
+
   procedure AfterWrite;
+  var
+    Rec: TsdDataRecord;
   begin
     EnableDataSet(sddDetailBGLBills);
     EnableDataSet(sddDetailDealBills);
     EnableDataSet(sddDetailGclBills);
     EnableDataSet(sddGclBills);
 
-    sdvGclBills.LocateInControl(sddGclBills.Records[0]);
+    if bHasCurrrent then
+      Rec := FindCurrentRecord;
+    if not Assigned(Rec) and (sdvGclBills.RecordCount > 0) then
+      Rec := sdvGclBills.Records[0];
+    sdvGclBills.LocateInControl(Rec);
+    
     sdvDetailGclBills.Filtered := True;
     sdvDetailDealBills.Filtered := True;
     sdvDetailBGLBills.Filtered := True;

+ 2 - 1
Frames/ProjectManagerFme.pas

@@ -176,7 +176,8 @@ implementation
 uses
   MainFrm, UtilMethods, ProjectCommands, Globals, ConfigDoc, ConstUnit,
   WebNewTenderFrm, PHPWebDm, Math, mProgressFrm, ProgressHintFrm,
-  ShellAPI, ProjectFme, SelectOnlineSignPhaseFrm, SignOnlineReportsFrm;
+  ShellAPI, ProjectFme, SelectOnlineSignPhaseFrm, SignOnlineReportsFrm,
+  ConditionalDefines;
 
 {$R *.dfm}