OBJECT Table 308 No. Series { OBJECT-PROPERTIES { Date=15.02.17; Time=10:11:46; Modified=Yes; Version List=NAVW110.00,TM; } PROPERTIES { DataCaptionFields=Code,Description; OnDelete=VAR NoSeriesLine@1000000001 : Record 309; NoSeriesRelationship@1000000000 : Record 310; BEGIN NoSeriesLine.SETRANGE("Series Code",Code); NoSeriesLine.DELETEALL; NoSeriesRelationship.SETRANGE(Code,Code); NoSeriesRelationship.DELETEALL; NoSeriesRelationship.SETRANGE(Code); NoSeriesRelationship.SETRANGE("Series Code",Code); NoSeriesRelationship.DELETEALL; NoSeriesRelationship.SETRANGE("Series Code"); END; CaptionML=[DEU=Nummernserie; ENU=No. Series]; LookupPageID=Page571; DrillDownPageID=Page571; } FIELDS { { 1 ; ;Code ;Code10 ;CaptionML=[DEU=Code; ENU=Code]; NotBlank=Yes } { 2 ; ;Description ;Text50 ;CaptionML=[DEU=Beschreibung; ENU=Description] } { 3 ; ;Default Nos. ;Boolean ;OnValidate=BEGIN IF ("Default Nos." = FALSE) AND (xRec."Default Nos." <> "Default Nos.") AND ("Manual Nos." = FALSE) THEN VALIDATE("Manual Nos.",TRUE); END; CaptionML=[DEU=Standardnr.; ENU=Default Nos.] } { 4 ; ;Manual Nos. ;Boolean ;OnValidate=BEGIN IF ("Manual Nos." = FALSE) AND (xRec."Manual Nos." <> "Manual Nos.") AND ("Default Nos." = FALSE) THEN VALIDATE("Default Nos.",TRUE); END; CaptionML=[DEU=Manuelle Nr.; ENU=Manual Nos.] } { 5 ; ;Date Order ;Boolean ;CaptionML=[DEU=Chronologisch; ENU=Date Order] } { 50000; ;Table No. of Series Line;Integer ;OnValidate=VAR RecRefFrom@1000000002 : RecordRef; FRefFrom@1000000001 : ARRAY [10] OF FieldRef; RecRefTo@1000000004 : RecordRef; FRefTo@1000000003 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; TableNoFrom@1000000005 : Integer; TableNoTo@1000000006 : Integer; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> IF ("Table No. of Series Line"<>xRec."Table No. of Series Line") THEN BEGIN IF (xRec."Table No. of Series Line" = 0) THEN TableNoFrom := 309 ELSE TableNoFrom := xRec."Table No. of Series Line"; IF ("Table No. of Series Line" = 0) THEN TableNoTo := 309 ELSE TableNoTo := "Table No. of Series Line"; IF (TableNoFrom<>TableNoTo) THEN BEGIN RecRefFrom.OPEN(TableNoFrom, FALSE); RecRefTo.OPEN(TableNoTo, FALSE); FOR i := 1 TO RecRefFrom.FIELDCOUNT DO FRefFrom[i] := RecRefFrom.FIELDINDEX(i); FOR i := 1 TO RecRefTo.FIELDCOUNT DO FRefTo[i] := RecRefTo.FIELDINDEX(i); RecRefFrom.RESET; RecRefFrom.CURRENTKEYINDEX(2); FRefFrom[1].SETRANGE(Code); IF RecRefFrom.FINDFIRST THEN REPEAT FOR i := 1 TO RecRefTo.FIELDCOUNT DO FRefTo[i].VALUE := FRefFrom[i].VALUE; IF NOT RecRefTo.INSERT(FALSE) THEN RecRefTo.MODIFY(FALSE); UNTIL RecRefFrom.NEXT=0; RecRefFrom.DELETEALL; END; END; // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< END; OnLookup=VAR Object@1000000000 : Record 2000000001; ObjectList@1000000001 : Page 50000; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> IF Object.FINDFIRST THEN; Object.SETRANGE(Type,Object.Type::Table); Object.SETFILTER(Name,'No. Series Line*'); IF Object.GET(Object.Type::Table,'',"Table No. of Series Line") THEN; IF PAGE.RUNMODAL(PAGE::"Object List",Object)=ACTION::LookupOK THEN "Table No. of Series Line" := Object.ID; // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< END; CaptionML=[DEU=Table Nr. der Serienzeile; ENU=Table No. of Series Line] } { 50001; ;Table Name of Series Line;Text65 ;FieldClass=FlowField; CalcFormula=Lookup(Object.Name WHERE (Type=FILTER(Table), ID=FIELD(Table No. of Series Line))); CaptionML=[DEU=Tabelle Name Serienzeile; ENU=Table Name of Series Line]; Editable=No } } KEYS { { ;Code ;Clustered=Yes } } FIELDGROUPS { } CODE { PROCEDURE DrillDown@6(); VAR NoSeriesLine@1000 : TEMPORARY Record 309; NoSeriesMgt@1000000000 : Codeunit 396; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine change to TEMPORARY //FindNoSeriesLineToShow(NoSeriesLine); NoSeriesLine.DELETEALL; NoSeriesMgt.SetNoSeriesLineFilter2(NoSeriesLine,Code); // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< IF NoSeriesLine.FIND('-') THEN; NoSeriesLine.SETRANGE("Starting Date"); NoSeriesLine.SETRANGE(Open); PAGE.RUNMODAL(0,NoSeriesLine); END; PROCEDURE UpdateLine@3(VAR StartDate@1007 : Date;VAR StartNo@1006 : Code[20];VAR EndNo@1005 : Code[20];VAR LastNoUsed@1004 : Code[20];VAR WarningNo@1003 : Code[20];VAR IncrementByNo@1002 : Integer;VAR LastDateUsed@1001 : Date); VAR NoSeriesLine@1000 : TEMPORARY Record 309; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine change to TEMPORARY // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< FindNoSeriesLineToShow(NoSeriesLine); IF NOT NoSeriesLine.FIND('-') THEN NoSeriesLine.INIT; StartDate := NoSeriesLine."Starting Date"; StartNo := NoSeriesLine."Starting No."; EndNo := NoSeriesLine."Ending No."; LastNoUsed := NoSeriesLine."Last No. Used"; WarningNo := NoSeriesLine."Warning No."; IncrementByNo := NoSeriesLine."Increment-by No."; LastDateUsed := NoSeriesLine."Last Date Used" END; LOCAL PROCEDURE FindNoSeriesLineToShow@1(VAR NoSeriesLine@1001 : TEMPORARY Record 309); VAR NoSeriesMgt@1000 : Codeunit 396; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine change to TEMPORARY // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< NoSeriesMgt.SetNoSeriesLineFilter(NoSeriesLine,Code,0D); IF NoSeriesLine.FINDLAST THEN EXIT; NoSeriesLine.RESET; NoSeriesLine.SETRANGE("Series Code",Code); END; BEGIN END. } } OBJECT Table 309 No. Series Line { OBJECT-PROPERTIES { Date=15.02.17; Time=09:52:49; Modified=Yes; Version List=NAVW17.00,TM; } PROPERTIES { OnInsert=VAR NoSeries@1000000004 : Record 308; RecRef@1000000002 : RecordRef; FRef@1000000001 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; BEGIN // TM 2017-02-15 001 >>>>>>>>>>>>>>>>>>>> IF ISTEMPORARY THEN BEGIN IF Rec."Series Code"<>'' THEN NoSeries.GET(Rec."Series Code") ELSE NoSeries.GET(xRec."Series Code"); IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.LOCKTABLE; FOR i := 1 TO RecRef.FIELDCOUNT DO FRef[i] := RecRef.FIELDINDEX(i); FRef[1].VALUE := NoSeries.Code; FRef[2].VALUE := Rec."Line No."; FRef[3].VALUE := Rec."Starting Date"; FRef[4].VALUE := Rec."Starting No."; FRef[5].VALUE := Rec."Ending No."; FRef[6].VALUE := Rec."Warning No."; FRef[7].VALUE := Rec."Increment-by No."; FRef[8].VALUE := Rec."Last No. Used"; FRef[9].VALUE := Rec.Open; FRef[10].VALUE := Rec."Last Date Used"; RecRef.INSERT(FALSE); END; // TM 2017-02-15 001 <<<<<<<<<<<<<<<<<<<< END; OnModify=VAR NoSeries@1000000000 : Record 308; NoSeriesLine@1000000004 : TEMPORARY Record 309; RecRef@1000000001 : RecordRef; FRef@1000000002 : ARRAY [10] OF FieldRef; i@1000000003 : Integer; BEGIN // TM 2017-02-15 001 >>>>>>>>>>>>>>>>>>>> IF ISTEMPORARY THEN BEGIN NoSeries.GET("Series Code"); IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.LOCKTABLE; FOR i := 1 TO RecRef.FIELDCOUNT DO FRef[i] := RecRef.FIELDINDEX(i); FRef[1].SETRANGE(Rec."Series Code"); FRef[2].SETRANGE(Rec."Line No."); IF RecRef.FINDFIRST THEN BEGIN NoSeriesLine.INIT; NoSeriesLine."Series Code" := FRef[1].VALUE; NoSeriesLine."Line No." := FRef[2].VALUE; NoSeriesLine."Starting Date" := FRef[3].VALUE; NoSeriesLine."Starting No." := FRef[4].VALUE; NoSeriesLine."Ending No." := FRef[5].VALUE; NoSeriesLine."Warning No." := FRef[6].VALUE; NoSeriesLine."Increment-by No." := FRef[7].VALUE; NoSeriesLine."Last No. Used" := FRef[8].VALUE; NoSeriesLine.Open := FRef[9].VALUE; NoSeriesLine."Last Date Used" := FRef[10].VALUE; IF (NoSeriesLine."Series Code" <> Rec."Series Code") OR (NoSeriesLine."Line No." <> Rec."Line No.") OR (NoSeriesLine."Starting Date" <> Rec."Starting Date") OR (NoSeriesLine."Starting No." <> Rec."Starting No.") OR (NoSeriesLine."Ending No." <> Rec."Ending No.") OR (NoSeriesLine."Warning No." <> Rec."Warning No.") OR (NoSeriesLine."Increment-by No." <> Rec."Increment-by No.") OR (NoSeriesLine."Last No. Used" <> Rec."Last No. Used") OR (NoSeriesLine.Open <> Rec.Open) OR (NoSeriesLine."Last Date Used" <> Rec."Last Date Used") THEN BEGIN FRef[1].VALUE := Rec."Series Code"; FRef[2].VALUE := Rec."Line No."; FRef[3].VALUE := Rec."Starting Date"; FRef[4].VALUE := Rec."Starting No."; FRef[5].VALUE := Rec."Ending No."; FRef[6].VALUE := Rec."Warning No."; FRef[7].VALUE := Rec."Increment-by No."; FRef[8].VALUE := Rec."Last No. Used"; FRef[9].VALUE := Rec.Open; FRef[10].VALUE := Rec."Last Date Used"; RecRef.MODIFY(FALSE); END; END; END; // TM 2017-02-15 001 <<<<<<<<<<<<<<<<<<<< END; OnDelete=VAR NoSeries@1000000004 : Record 308; RecRef@1000000002 : RecordRef; FRef@1000000001 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; BEGIN // TM 2017-02-15 001 >>>>>>>>>>>>>>>>>>>> IF ISTEMPORARY THEN BEGIN NoSeries.GET("Series Code"); IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.LOCKTABLE; FOR i := 1 TO RecRef.FIELDCOUNT DO FRef[i] := RecRef.FIELDINDEX(i); FRef[1].SETRANGE(Rec."Series Code"); FRef[2].SETRANGE(Rec."Line No."); IF RecRef.FINDFIRST THEN RecRef.DELETE(FALSE); END; // TM 2017-02-15 001 <<<<<<<<<<<<<<<<<<<< END; CaptionML=[DEU=Nr.-Serienzeile; ENU=No. Series Line]; LookupPageID=Page457; DrillDownPageID=Page457; } FIELDS { { 1 ; ;Series Code ;Code10 ;TableRelation="No. Series"; CaptionML=[DEU=Seriencode; ENU=Series Code]; NotBlank=Yes } { 2 ; ;Line No. ;Integer ;CaptionML=[DEU=Zeilennr.; ENU=Line No.] } { 3 ; ;Starting Date ;Date ;CaptionML=[DEU=Startdatum; ENU=Starting Date] } { 4 ; ;Starting No. ;Code20 ;OnValidate=BEGIN UpdateLine("Starting No.",FIELDCAPTION("Starting No.")); END; CaptionML=[DEU=Startnr.; ENU=Starting No.] } { 5 ; ;Ending No. ;Code20 ;OnValidate=BEGIN IF "Ending No." = '' THEN "Warning No." := ''; UpdateLine("Ending No.",FIELDCAPTION("Ending No.")); VALIDATE(Open); END; CaptionML=[DEU=Endnr.; ENU=Ending No.] } { 6 ; ;Warning No. ;Code20 ;OnValidate=BEGIN TESTFIELD("Ending No."); UpdateLine("Warning No.",FIELDCAPTION("Warning No.")); END; CaptionML=[DEU=Warnungsnr.; ENU=Warning No.] } { 7 ; ;Increment-by No. ;Integer ;InitValue=1; CaptionML=[DEU=Erh”hung um Nr.; ENU=Increment-by No.]; MinValue=1 } { 8 ; ;Last No. Used ;Code20 ;OnValidate=BEGIN UpdateLine("Last No. Used",FIELDCAPTION("Last No. Used")); VALIDATE(Open); END; CaptionML=[DEU=Letzte Nr. verwendet; ENU=Last No. Used] } { 9 ; ;Open ;Boolean ;InitValue=Yes; OnValidate=BEGIN Open := ("Ending No." = '') OR ("Ending No." <> "Last No. Used"); END; CaptionML=[DEU=Offen; ENU=Open]; Editable=No } { 10 ; ;Last Date Used ;Date ;CaptionML=[DEU=Letztes Datum verwendet; ENU=Last Date Used] } } KEYS { { ;Series Code,Line No. ;Clustered=Yes } { ;Series Code,Starting Date,Starting No. } { ;Starting No. } } FIELDGROUPS { } CODE { VAR NoSeriesMgt@1000 : Codeunit 396; LOCAL PROCEDURE UpdateLine@1(NewNo@1000 : Code[20];NewFieldName@1001 : Text[100]); BEGIN NoSeriesMgt.UpdateNoSeriesLine(Rec,NewNo,NewFieldName); END; BEGIN END. } } OBJECT Table 50001 No. Series Line 2 { OBJECT-PROPERTIES { Date=30.01.17; Time=00:06:20; Modified=Yes; Version List=TM; } PROPERTIES { CaptionML=[DEU=Nr.-Serienzeile; ENU=No. Series Line]; LookupPageID=Page50001; DrillDownPageID=Page50001; } FIELDS { { 1 ; ;Series Code ;Code10 ;TableRelation="No. Series"; CaptionML=[DEU=Seriencode; ENU=Series Code]; NotBlank=Yes } { 2 ; ;Line No. ;Integer ;CaptionML=[DEU=Zeilennr.; ENU=Line No.] } { 3 ; ;Starting Date ;Date ;CaptionML=[DEU=Startdatum; ENU=Starting Date] } { 4 ; ;Starting No. ;Code20 ;OnValidate=BEGIN UpdateLine("Starting No.",FIELDCAPTION("Starting No.")); END; CaptionML=[DEU=Startnr.; ENU=Starting No.] } { 5 ; ;Ending No. ;Code20 ;OnValidate=BEGIN IF "Ending No." = '' THEN "Warning No." := ''; UpdateLine("Ending No.",FIELDCAPTION("Ending No.")); VALIDATE(Open); END; CaptionML=[DEU=Endnr.; ENU=Ending No.] } { 6 ; ;Warning No. ;Code20 ;OnValidate=BEGIN TESTFIELD("Ending No."); UpdateLine("Warning No.",FIELDCAPTION("Warning No.")); END; CaptionML=[DEU=Warnungsnr.; ENU=Warning No.] } { 7 ; ;Increment-by No. ;Integer ;InitValue=1; CaptionML=[DEU=Erh”hung um Nr.; ENU=Increment-by No.]; MinValue=1 } { 8 ; ;Last No. Used ;Code20 ;OnValidate=BEGIN UpdateLine("Last No. Used",FIELDCAPTION("Last No. Used")); VALIDATE(Open); END; CaptionML=[DEU=Letzte Nr. verwendet; ENU=Last No. Used] } { 9 ; ;Open ;Boolean ;InitValue=Yes; OnValidate=BEGIN Open := ("Ending No." = '') OR ("Ending No." <> "Last No. Used"); END; CaptionML=[DEU=Offen; ENU=Open]; Editable=No } { 10 ; ;Last Date Used ;Date ;CaptionML=[DEU=Letztes Datum verwendet; ENU=Last Date Used] } } KEYS { { ;Series Code,Line No. ;Clustered=Yes } { ;Series Code,Starting Date,Starting No. } { ;Starting No. } } FIELDGROUPS { } CODE { VAR NoSeriesMgt@1000 : Codeunit 396; LOCAL PROCEDURE UpdateLine@1(NewNo@1000 : Code[20];NewFieldName@1001 : Text[100]); VAR RecRef@1000000000 : RecordRef; BEGIN // TM 2017-01-29 001 >>>>>>>>>>>>>>>>>>>> RecRef.GETTABLE(Rec); NoSeriesMgt.SetNoSeriesLineFilter2(RecRef,NewNo,NewFieldName); //Original : NoSeriesMgt.UpdateNoSeriesLine(Rec,NewNo,NewFieldName); // TM 2017-01-29 001 <<<<<<<<<<<<<<<<<<<< END; BEGIN END. } } OBJECT Codeunit 396 NoSeriesManagement { OBJECT-PROPERTIES { Date=15.02.17; Time=10:06:51; Modified=Yes; Version List=NAVW110.00,TM; } PROPERTIES { Permissions=TableData 309=rimd; OnRun=BEGIN TryNo := GetNextNo(TryNoSeriesCode,TrySeriesDate,FALSE); END; } CODE { VAR Text000@1000 : TextConst 'DEU="Sie drfen keine Nummern manuell eingeben. ";ENU="You may not enter numbers manually. "'; Text001@1001 : TextConst 'DEU=Wenn Sie Nummern manuell zuweisen m”chten, aktivieren Sie %1 in %2 %3.;ENU=If you want to enter numbers manually, please activate %1 in %2 %3.'; Text002@1002 : TextConst 'DEU="Es ist nicht m”glich, Nummern automatisch zuzuweisen. ";ENU="It is not possible to assign numbers automatically. "'; Text003@1003 : TextConst 'DEU=Wenn die Anwendung automatisch Nummern zuweisen soll, aktivieren Sie %1 in %2 %3.;ENU=If you want the program to assign numbers automatically, please activate %1 in %2 %3.'; Text004@1004 : TextConst 'DEU=Sie k”nnen keine neuen Nummern aus der Nummernserie %1 auf %2 zuweisen.;ENU=You cannot assign new numbers from the number series %1 on %2.'; Text005@1005 : TextConst 'DEU=Sie k”nnen keine neuen Nummern aus der Nummernserie %1 zuweisen.;ENU=You cannot assign new numbers from the number series %1.'; Text006@1006 : TextConst 'DEU=Sie k”nnen keine neuen Nummern aus der Nummernserie %1 an einem Datum vor %2 zuweisen.;ENU=You cannot assign new numbers from the number series %1 on a date before %2.'; Text007@1007 : TextConst 'DEU=Sie k”nnen keine Nummern gr”áer als %1 aus der Nummernserie %2 zuweisen.;ENU=You cannot assign numbers greater than %1 from the number series %2.'; Text009@1009 : TextConst 'DEU=Das Nummernformat in %1 muss dasselbe sein wie das Nummernformat in %2.;ENU=The number format in %1 must be the same as the number format in %2.'; Text010@1010 : TextConst 'DEU=Die Nummer %1 kann nicht mehr als 20 Zeichen umfassen.;ENU=The number %1 cannot be extended to more than 20 characters.'; NoSeries@1011 : Record 308; LastNoSeriesLine@1012 : TEMPORARY Record 309; NoSeriesCode@1013 : Code[10]; WarningNoSeriesCode@1014 : Code[10]; TryNoSeriesCode@1015 : Code[10]; TrySeriesDate@1016 : Date; TryNo@1017 : Code[20]; PROCEDURE TestManual@21(DefaultNoSeriesCode@1000 : Code[10]); BEGIN IF DefaultNoSeriesCode <> '' THEN BEGIN NoSeries.GET(DefaultNoSeriesCode); IF NOT NoSeries."Manual Nos." THEN ERROR( Text000 + Text001, NoSeries.FIELDCAPTION("Manual Nos."),NoSeries.TABLECAPTION,NoSeries.Code); END; END; PROCEDURE InitSeries@3(DefaultNoSeriesCode@1000 : Code[10];OldNoSeriesCode@1001 : Code[10];NewDate@1002 : Date;VAR NewNo@1003 : Code[20];VAR NewNoSeriesCode@1004 : Code[10]); BEGIN IF NewNo = '' THEN BEGIN NoSeries.GET(DefaultNoSeriesCode); IF NOT NoSeries."Default Nos." THEN ERROR( Text002 + Text003, NoSeries.FIELDCAPTION("Default Nos."),NoSeries.TABLECAPTION,NoSeries.Code); IF OldNoSeriesCode <> '' THEN BEGIN NoSeriesCode := DefaultNoSeriesCode; FilterSeries; NoSeries.Code := OldNoSeriesCode; IF NOT NoSeries.FIND THEN NoSeries.GET(DefaultNoSeriesCode); END; NewNo := GetNextNo(NoSeries.Code,NewDate,TRUE); NewNoSeriesCode := NoSeries.Code; END ELSE TestManual(DefaultNoSeriesCode); END; PROCEDURE SetDefaultSeries@5(VAR NewNoSeriesCode@1000 : Code[10];NoSeriesCode@1001 : Code[10]); BEGIN IF NoSeriesCode <> '' THEN BEGIN NoSeries.GET(NoSeriesCode); IF NoSeries."Default Nos." THEN NewNoSeriesCode := NoSeries.Code; END; END; PROCEDURE SelectSeries@2(DefaultNoSeriesCode@1000 : Code[10];OldNoSeriesCode@1001 : Code[10];VAR NewNoSeriesCode@1002 : Code[10]) : Boolean; BEGIN NoSeriesCode := DefaultNoSeriesCode; FilterSeries; IF NewNoSeriesCode = '' THEN BEGIN IF OldNoSeriesCode <> '' THEN NoSeries.Code := OldNoSeriesCode; END ELSE NoSeries.Code := NewNoSeriesCode; IF PAGE.RUNMODAL(0,NoSeries) = ACTION::LookupOK THEN BEGIN NewNoSeriesCode := NoSeries.Code; EXIT(TRUE); END; END; PROCEDURE LookupSeries@16(DefaultNoSeriesCode@1000 : Code[10];VAR NewNoSeriesCode@1001 : Code[10]) : Boolean; BEGIN EXIT(SelectSeries(DefaultNoSeriesCode,NewNoSeriesCode,NewNoSeriesCode)); END; PROCEDURE TestSeries@8(DefaultNoSeriesCode@1000 : Code[10];NewNoSeriesCode@1001 : Code[10]); BEGIN NoSeriesCode := DefaultNoSeriesCode; FilterSeries; NoSeries.Code := NewNoSeriesCode; NoSeries.FIND; END; PROCEDURE SetSeries@6(VAR NewNo@1000 : Code[20]); VAR NoSeriesCode2@1001 : Code[10]; BEGIN NoSeriesCode2 := NoSeries.Code; FilterSeries; NoSeries.Code := NoSeriesCode2; NoSeries.FIND; NewNo := GetNextNo(NoSeries.Code,0D,TRUE); END; LOCAL PROCEDURE FilterSeries@1(); VAR NoSeriesRelationship@1000 : Record 310; BEGIN NoSeries.RESET; NoSeriesRelationship.SETRANGE(Code,NoSeriesCode); IF NoSeriesRelationship.FINDSET THEN REPEAT NoSeries.Code := NoSeriesRelationship."Series Code"; NoSeries.MARK := TRUE; UNTIL NoSeriesRelationship.NEXT = 0; NoSeries.GET(NoSeriesCode); NoSeries.MARK := TRUE; NoSeries.MARKEDONLY := TRUE; END; PROCEDURE GetNextNo@12(NoSeriesCode@1000 : Code[10];SeriesDate@1001 : Date;ModifySeries@1002 : Boolean) : Code[20]; BEGIN EXIT(GetNextNo3(NoSeriesCode,SeriesDate,ModifySeries,FALSE)); END; PROCEDURE GetNextNo3@22(NoSeriesCode@1000 : Code[10];SeriesDate@1001 : Date;ModifySeries@1002 : Boolean;NoErrorsOrWarnings@1004 : Boolean) : Code[20]; VAR NoSeriesLine@1003 : TEMPORARY Record 309; "<<>>"@1000000003 : Integer; RecRef@1000000002 : RecordRef; FRef@1000000001 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine is now TEMPORARY // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< IF SeriesDate = 0D THEN SeriesDate := WORKDATE; IF ModifySeries OR (LastNoSeriesLine."Series Code" = '') THEN BEGIN IF ModifySeries THEN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine.LOCKTABLE; BEGIN RecRef.CLOSE; IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.LOCKTABLE; END; // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< NoSeries.GET(NoSeriesCode); SetNoSeriesLineFilter(NoSeriesLine,NoSeriesCode,SeriesDate); IF NOT NoSeriesLine.FINDFIRST THEN BEGIN IF NoErrorsOrWarnings THEN EXIT(''); NoSeriesLine.SETRANGE("Starting Date"); IF NOT NoSeriesLine.ISEMPTY THEN ERROR( Text004, NoSeriesCode,SeriesDate); ERROR( Text005, NoSeriesCode); END; END ELSE NoSeriesLine := LastNoSeriesLine; IF NoSeries."Date Order" AND (SeriesDate < NoSeriesLine."Last Date Used") THEN BEGIN IF NoErrorsOrWarnings THEN EXIT(''); ERROR( Text006, NoSeries.Code,NoSeriesLine."Last Date Used"); END; NoSeriesLine."Last Date Used" := SeriesDate; IF NoSeriesLine."Last No. Used" = '' THEN BEGIN IF NoErrorsOrWarnings AND (NoSeriesLine."Starting No." = '') THEN EXIT(''); NoSeriesLine.TESTFIELD("Starting No."); NoSeriesLine."Last No. Used" := NoSeriesLine."Starting No."; END ELSE IF NoSeriesLine."Increment-by No." <= 1 THEN NoSeriesLine."Last No. Used" := INCSTR(NoSeriesLine."Last No. Used") ELSE IncrementNoText(NoSeriesLine."Last No. Used",NoSeriesLine."Increment-by No."); IF (NoSeriesLine."Ending No." <> '') AND (NoSeriesLine."Last No. Used" > NoSeriesLine."Ending No.") THEN BEGIN IF NoErrorsOrWarnings THEN EXIT(''); ERROR( Text007, NoSeriesLine."Ending No.",NoSeriesCode); END; IF (NoSeriesLine."Ending No." <> '') AND (NoSeriesLine."Warning No." <> '') AND (NoSeriesLine."Last No. Used" >= NoSeriesLine."Warning No.") AND (NoSeriesCode <> WarningNoSeriesCode) AND (TryNoSeriesCode = '') THEN BEGIN IF NoErrorsOrWarnings THEN EXIT(''); WarningNoSeriesCode := NoSeriesCode; MESSAGE( Text007, NoSeriesLine."Ending No.",NoSeriesCode); END; NoSeriesLine.VALIDATE(Open); IF ModifySeries THEN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> //NoSeriesLine.MODIFY BEGIN FOR i := 1 TO RecRef.FIELDCOUNT DO FRef[i] := RecRef.FIELDINDEX(i); FRef[1].SETRANGE(NoSeriesLine."Series Code"); FRef[2].SETRANGE(NoSeriesLine."Line No."); IF RecRef.FINDFIRST THEN BEGIN FRef[1].VALUE := NoSeriesLine."Series Code"; FRef[2].VALUE := NoSeriesLine."Line No."; FRef[3].VALUE := NoSeriesLine."Starting Date"; FRef[4].VALUE := NoSeriesLine."Starting No."; FRef[5].VALUE := NoSeriesLine."Ending No."; FRef[6].VALUE := NoSeriesLine."Warning No."; FRef[7].VALUE := NoSeriesLine."Increment-by No."; FRef[8].VALUE := NoSeriesLine."Last No. Used"; FRef[9].VALUE := NoSeriesLine.Open; FRef[10].VALUE := NoSeriesLine."Last Date Used"; RecRef.MODIFY(FALSE); END; END // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< ELSE LastNoSeriesLine := NoSeriesLine; EXIT(NoSeriesLine."Last No. Used"); END; PROCEDURE TryGetNextNo@10(NoSeriesCode@1000 : Code[10];SeriesDate@1001 : Date) : Code[20]; VAR NoSeriesMgt@1002 : Codeunit 396; BEGIN NoSeriesMgt.GetNextNo1(NoSeriesCode,SeriesDate); IF NoSeriesMgt.RUN THEN EXIT(NoSeriesMgt.GetNextNo2); END; PROCEDURE GetNextNo1@19(NoSeriesCode@1000 : Code[10];SeriesDate@1001 : Date); BEGIN TryNoSeriesCode := NoSeriesCode; TrySeriesDate := SeriesDate; END; PROCEDURE GetNextNo2@17() : Code[20]; BEGIN EXIT(TryNo); END; PROCEDURE SaveNoSeries@18(); BEGIN IF LastNoSeriesLine."Series Code" <> '' THEN LastNoSeriesLine.MODIFY; END; PROCEDURE SetNoSeriesLineFilter@11(VAR NoSeriesLine@1000 : TEMPORARY Record 309;NoSeriesCode@1001 : Code[10];StartDate@1002 : Date); VAR "<<>>"@1000000003 : Integer; RecRef@1000000002 : RecordRef; FRef@1000000001 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; BEGIN IF StartDate = 0D THEN StartDate := WORKDATE; // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // NoSeriesLine is now TEMPORARY // NoSeriesLine.RESET; // NoSeriesLine.SETCURRENTKEY("Series Code","Starting Date"); // NoSeriesLine.SETRANGE("Series Code",NoSeriesCode); // NoSeriesLine.SETRANGE("Starting Date",0D,StartDate); // IF NoSeriesLine.FINDLAST THEN BEGIN // NoSeriesLine.SETRANGE("Starting Date",NoSeriesLine."Starting Date"); // NoSeriesLine.SETRANGE(Open,TRUE); // END; IF (NoSeriesCode<>NoSeries.Code) AND (NoSeriesCode<>'') THEN NoSeries.GET(NoSeriesCode); RecRef.CLOSE; IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.RESET; RecRef.CURRENTKEYINDEX(2); FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN FRef[i] := RecRef.FIELDINDEX(i); END; FRef[1].SETRANGE(NoSeriesCode); FRef[3].SETRANGE(0D,StartDate); IF RecRef.FINDLAST THEN BEGIN FRef[3].SETRANGE(FRef[3].VALUE); FRef[9].SETRANGE(TRUE); END; IF RecRef.FINDSET(FALSE) THEN BEGIN REPEAT NoSeriesLine.INIT; NoSeriesLine."Series Code" := FRef[1].VALUE; NoSeriesLine."Line No." := FRef[2].VALUE; NoSeriesLine."Starting Date" := FRef[3].VALUE; NoSeriesLine."Starting No." := FRef[4].VALUE; NoSeriesLine."Ending No." := FRef[5].VALUE; NoSeriesLine."Warning No." := FRef[6].VALUE; NoSeriesLine."Increment-by No." := FRef[7].VALUE; NoSeriesLine."Last No. Used" := FRef[8].VALUE; NoSeriesLine.Open := FRef[9].VALUE; NoSeriesLine."Last Date Used" := FRef[10].VALUE; IF NOT NoSeriesLine.INSERT(FALSE) THEN NoSeriesLine.MODIFY(FALSE); UNTIL RecRef.NEXT = 0; END ELSE BEGIN NoSeriesLine.INIT; NoSeriesLine."Series Code" := NoSeriesCode; NoSeriesLine.INSERT(FALSE); END; RecRef.CLOSE; // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< END; PROCEDURE IncrementNoText@20(VAR No@1000 : Code[20];IncrementByNo@1001 : Decimal); VAR DecimalNo@1002 : Decimal; StartPos@1003 : Integer; EndPos@1004 : Integer; NewNo@1005 : Text[30]; BEGIN GetIntegerPos(No,StartPos,EndPos); EVALUATE(DecimalNo,COPYSTR(No,StartPos,EndPos - StartPos + 1)); NewNo := FORMAT(DecimalNo + IncrementByNo,0,1); ReplaceNoText(No,NewNo,0,StartPos,EndPos); END; PROCEDURE UpdateNoSeriesLine@15(VAR NoSeriesLine@1000 : Record 309;NewNo@1001 : Code[20];NewFieldName@1002 : Text[100]); VAR NoSeriesLine2@1003 : Record 309; TextManagement@1005 : Codeunit 41; Length@1004 : Integer; BEGIN // TM 2017-02-13 001 >>>>>>>>>>>>>>>>>>>> // ggf. noch anpassen // TM 2017-02-13 001 <<<<<<<<<<<<<<<<<<<< IF NewNo <> '' THEN BEGIN TextManagement.EvaluateIncStr(NewNo,NewFieldName); NoSeriesLine2 := NoSeriesLine; IF NewNo = GetNoText(NewNo) THEN Length := 0 ELSE BEGIN Length := STRLEN(GetNoText(NewNo)); UpdateLength(NoSeriesLine."Starting No.",Length); UpdateLength(NoSeriesLine."Ending No.",Length); UpdateLength(NoSeriesLine."Last No. Used",Length); UpdateLength(NoSeriesLine."Warning No.",Length); END; UpdateNo(NoSeriesLine."Starting No.",NewNo,Length); UpdateNo(NoSeriesLine."Ending No.",NewNo,Length); UpdateNo(NoSeriesLine."Last No. Used",NewNo,Length); UpdateNo(NoSeriesLine."Warning No.",NewNo,Length); IF (NewFieldName <> NoSeriesLine.FIELDCAPTION("Last No. Used")) AND (NoSeriesLine."Last No. Used" <> NoSeriesLine2."Last No. Used") THEN ERROR( Text009, NewFieldName,NoSeriesLine.FIELDCAPTION("Last No. Used")); END; END; LOCAL PROCEDURE UpdateLength@13(No@1000 : Code[20];VAR MaxLength@1001 : Integer); VAR Length@1002 : Integer; BEGIN IF No <> '' THEN BEGIN Length := STRLEN(DELCHR(GetNoText(No),'<','0')); IF Length > MaxLength THEN MaxLength := Length; END; END; LOCAL PROCEDURE UpdateNo@14(VAR No@1000 : Code[20];NewNo@1001 : Code[20];Length@1002 : Integer); VAR StartPos@1003 : Integer; EndPos@1004 : Integer; TempNo@1005 : Code[20]; BEGIN IF No <> '' THEN BEGIN IF Length <> 0 THEN BEGIN No := DELCHR(GetNoText(No),'<','0'); TempNo := No; No := NewNo; NewNo := TempNo; GetIntegerPos(No,StartPos,EndPos); ReplaceNoText(No,NewNo,Length,StartPos,EndPos); END; END; END; LOCAL PROCEDURE ReplaceNoText@7(VAR No@1000 : Code[20];NewNo@1001 : Code[20];FixedLength@1002 : Integer;StartPos@1003 : Integer;EndPos@1004 : Integer); VAR StartNo@1005 : Code[20]; EndNo@1006 : Code[20]; ZeroNo@1007 : Code[20]; NewLength@1008 : Integer; OldLength@1009 : Integer; BEGIN IF StartPos > 1 THEN StartNo := COPYSTR(No,1,StartPos - 1); IF EndPos < STRLEN(No) THEN EndNo := COPYSTR(No,EndPos + 1); NewLength := STRLEN(NewNo); OldLength := EndPos - StartPos + 1; IF FixedLength > OldLength THEN OldLength := FixedLength; IF OldLength > NewLength THEN ZeroNo := PADSTR('',OldLength - NewLength,'0'); IF STRLEN(StartNo) + STRLEN(ZeroNo) + STRLEN(NewNo) + STRLEN(EndNo) > 20 THEN ERROR( Text010, No); No := StartNo + ZeroNo + NewNo + EndNo; END; LOCAL PROCEDURE GetNoText@9(No@1000 : Code[20]) : Code[20]; VAR StartPos@1001 : Integer; EndPos@1002 : Integer; BEGIN GetIntegerPos(No,StartPos,EndPos); IF StartPos <> 0 THEN EXIT(COPYSTR(No,StartPos,EndPos - StartPos + 1)); END; LOCAL PROCEDURE GetIntegerPos@4(No@1000 : Code[20];VAR StartPos@1001 : Integer;VAR EndPos@1002 : Integer); VAR IsDigit@1003 : Boolean; i@1004 : Integer; BEGIN StartPos := 0; EndPos := 0; IF No <> '' THEN BEGIN i := STRLEN(No); REPEAT IsDigit := No[i] IN ['0'..'9']; IF IsDigit THEN BEGIN IF EndPos = 0 THEN EndPos := i; StartPos := i; END; i := i - 1; UNTIL (i = 0) OR (StartPos <> 0) AND NOT IsDigit; END; END; PROCEDURE SetNoSeriesLineFilter2@1000000000(VAR NoSeriesLine@1000 : TEMPORARY Record 309;NoSeriesCode@1001 : Code[10]); VAR "<<>>"@1000000003 : Integer; RecRef@1000000002 : RecordRef; FRef@1000000001 : ARRAY [10] OF FieldRef; i@1000000000 : Integer; BEGIN // TM 2017-02-15 001 >>>>>>>>>>>>>>>>>>>> IF (NoSeriesCode<>NoSeries.Code) AND (NoSeriesCode<>'') THEN NoSeries.GET(NoSeriesCode); RecRef.CLOSE; IF (NoSeries."Table No. of Series Line" = 0) THEN RecRef.OPEN(309, FALSE) ELSE RecRef.OPEN(NoSeries."Table No. of Series Line", FALSE); RecRef.RESET; RecRef.CURRENTKEYINDEX(2); FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN FRef[i] := RecRef.FIELDINDEX(i); END; FRef[1].SETRANGE(NoSeriesCode); IF RecRef.FINDSET(FALSE) THEN BEGIN REPEAT NoSeriesLine.INIT; NoSeriesLine."Series Code" := FRef[1].VALUE; NoSeriesLine."Line No." := FRef[2].VALUE; NoSeriesLine."Starting Date" := FRef[3].VALUE; NoSeriesLine."Starting No." := FRef[4].VALUE; NoSeriesLine."Ending No." := FRef[5].VALUE; NoSeriesLine."Warning No." := FRef[6].VALUE; NoSeriesLine."Increment-by No." := FRef[7].VALUE; NoSeriesLine."Last No. Used" := FRef[8].VALUE; NoSeriesLine.Open := FRef[9].VALUE; NoSeriesLine."Last Date Used" := FRef[10].VALUE; IF NOT NoSeriesLine.INSERT(FALSE) THEN NoSeriesLine.MODIFY(FALSE); UNTIL RecRef.NEXT = 0; END ELSE BEGIN NoSeriesLine.INIT; NoSeriesLine."Series Code" := NoSeriesCode; NoSeriesLine.INSERT(FALSE); END; RecRef.CLOSE; // TM 2017-02-15 001 <<<<<<<<<<<<<<<<<<<< END; BEGIN END. } } OBJECT Page 456 No. Series { OBJECT-PROPERTIES { Date=13.02.17; Time=16:21:28; Modified=Yes; Version List=NAVW110.00,TM; } PROPERTIES { CaptionML=[DEU=Nummernserie; ENU=No. Series]; SourceTable=Table308; PageType=List; RefreshOnActivate=Yes; PromotedActionCategoriesML=[DEU=Neu,Verarbeiten,Melden,Navigate; ENU=New,Process,Report,Navigate]; OnAfterGetRecord=BEGIN UpdateLineActionOnPage; END; OnNewRecord=BEGIN UpdateLineActionOnPage; END; ActionList=ACTIONS { { 1900000003;0 ;ActionContainer; ActionContainerType=RelatedInformation } { 24 ;1 ;ActionGroup; CaptionML=[DEU=&Serien; ENU=&Series]; Image=SerialNo } { 5 ;2 ;Action ; CaptionML=[DEU=Zeilen; ENU=Lines]; ToolTipML=[DEU=Zeigen Sie zus„tzliche Informationen ber die Nummernserienzeilen an, oder bearbeiten Sie sie.; ENU=View or edit additional information about the number series lines.]; ApplicationArea=#Basic,#Suite; RunObject=Page 457; RunPageLink=Series Code=FIELD(Code); Promoted=Yes; PromotedIsBig=Yes; Image=AllLines; PromotedCategory=Category4 } { 3 ;2 ;Action ; CaptionML=[DEU=Verbindungen; ENU=Relationships]; ToolTipML=[DEU=Zeigen Sie Verbindungen zwischen Nummernserien an, oder bearbeiten Sie sie.; ENU=View or edit relationships between number series.]; ApplicationArea=#Basic,#Suite; RunObject=Page 458; RunPageLink=Code=FIELD(Code); Promoted=Yes; Image=Relationship; PromotedCategory=Category4 } } } CONTROLS { { 1900000001;0;Container; ContainerType=ContentArea } { 1 ;1 ;Group ; GroupType=Repeater } { 2 ;2 ;Field ; ToolTipML=[DEU=Gibt den Code einer Nummernserie an.; ENU=Specifies a number series code.]; ApplicationArea=#Basic,#Suite; SourceExpr=Code } { 4 ;2 ;Field ; ToolTipML=[DEU=Gibt eine Beschreibung der Nummernserien an.; ENU=Specifies a description of the number series.]; ApplicationArea=#Basic,#Suite; SourceExpr=Description } { 22 ;2 ;Field ; CaptionML=[DEU=Startdatum; ENU=Starting Date]; ToolTipML=[DEU=Gibt das Datum an, ab dem diese Zeile gilt.; ENU=Specifies the date from which this line applies.]; SourceExpr=StartDate; Visible=FALSE; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 20 ;2 ;Field ; DrillDown=Yes; CaptionML=[DEU=Startnr.; ENU=Starting No.]; ToolTipML=[DEU=Gibt die erste Nummer der Serie an.; ENU=Specifies the first number in the series.]; ApplicationArea=#Basic,#Suite; SourceExpr=StartNo; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 14 ;2 ;Field ; DrillDown=Yes; CaptionML=[DEU=Endnr.; ENU=Ending No.]; ToolTipML=[DEU=Gibt die letzte Nummer der Serie an.; ENU=Specifies the last number in the series.]; ApplicationArea=#Basic,#Suite; SourceExpr=EndNo; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 28 ;2 ;Field ; CaptionML=[DEU=Letztes Datum verwendet; ENU=Last Date Used]; ToolTipML=[DEU=Gibt das Datum an, an dem zuletzt eine Nummer der Nummernserie vergeben wurde.; ENU=Specifies the date when a number was most recently assigned from the number series.]; ApplicationArea=#Basic,#Suite; SourceExpr=LastDateUsed; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 9 ;2 ;Field ; DrillDown=Yes; CaptionML=[DEU=Letzte Nr. verwendet; ENU=Last No. Used]; ToolTipML=[DEU=Gibt die zuletzt vergebene Nummer der Nummernserie an.; ENU=Specifies the last number that was used from the number series.]; ApplicationArea=#Basic,#Suite; SourceExpr=LastNoUsed; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 10 ;2 ;Field ; CaptionML=[DEU=Warnungsnr.; ENU=Warning No.]; ToolTipML=[DEU=Gibt den Namen der Sprache des Diagramms an.; ENU=Specifies the language name of the chart memo.]; SourceExpr=WarningNo; Visible=FALSE; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 16 ;2 ;Field ; CaptionML=[DEU=Erh”hung um Nr.; ENU=Increment-by No.]; ToolTipML=[DEU=Gibt die Intervallgr”áe an, um die die Nummern in der Serie jeweils erh”ht werden soll.; ENU=Specifies a number that represents the size of the interval by which the numbers in the series are spaced.]; SourceExpr=IncrementByNo; Visible=FALSE; Editable=FALSE; OnDrillDown=BEGIN DrillDownActionOnPage; END; } { 30 ;2 ;Field ; ToolTipML=[DEU=Legt fest, ob die Nummernserie automatisch als Vorgabe verwendet werden soll.; ENU=Specifies whether this number series will be used to assign numbers automatically.]; ApplicationArea=#Basic,#Suite; SourceExpr="Default Nos." } { 11 ;2 ;Field ; ToolTipML=[DEU=Legt fest, dass Sie Nummern manuell eingeben k”nnen, anstatt diese Nummernserien zu verwenden.; ENU=Specifies that you can enter numbers manually instead of using this number series.]; ApplicationArea=#Basic,#Suite; SourceExpr="Manual Nos." } { 32 ;2 ;Field ; ToolTipML=[DEU=Legt fest, dass geprft werden muss, dass Nummern chronologisch zugewiesen werden.; ENU=Specifies to check that numbers are assigned chronologically.]; ApplicationArea=#Basic,#Suite; SourceExpr="Date Order" } { 1000000000;2;Field ; SourceExpr="Table No. of Series Line" } { 1000000001;2;Field ; SourceExpr="Table Name of Series Line" } { 1900000007;0;Container; ContainerType=FactBoxArea } { 1900383207;1;Part ; Visible=FALSE; PartType=System; SystemPartID=RecordLinks } { 1905767507;1;Part ; Visible=FALSE; PartType=System; SystemPartID=Notes } } CODE { VAR StartDate@1003 : Date; StartNo@1004 : Code[20]; EndNo@1005 : Code[20]; LastNoUsed@1006 : Code[20]; WarningNo@1007 : Code[20]; IncrementByNo@1008 : Integer; LastDateUsed@1009 : Date; LOCAL PROCEDURE DrillDownActionOnPage@4(); BEGIN DrillDown; CurrPage.UPDATE(FALSE); END; LOCAL PROCEDURE UpdateLineActionOnPage@1(); BEGIN UpdateLine(StartDate,StartNo,EndNo,LastNoUsed,WarningNo,IncrementByNo,LastDateUsed); END; BEGIN END. } }