&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME D-Lagerbestand &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS D-Lagerbestand /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress UIB. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ DEFINE VARIABLE LHandle AS HANDLE NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE TEMP-TABLE tArtst LIKE Artst. DEF TEMP-TABLE tBestand FIELD Lager AS INT FIELD ilRecid AS RECID FIELD iaRecid AS RECID FIELD Inv_Datum AS DATE FIELD Inv_Bestand AS DEC FIELD Eingang AS DEC FIELD Ausgang AS DEC FIELD iTrnr AS INT . /* ---------- Globale Variablen ---------------------------------- */ { v8/globvar.i" " " " "SHARED" } { v8/debivar.i " " " " "SHARED" } { v8/artivar.i " " " " "SHARED" } { v8/contvar.i " " " " "SHARED" } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME D-Lagerbestand /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-20 RECT-21 CB_Lager F_Artnr F_Inhalt ~ F_Jahr F_Bezeichnung F_Bestand T_Alle F_Letzt_Inv F_Inventar F_Eingang ~ F_Ausgang F_Bestand_Neu Btn_OK Btn_Cancel &Scoped-Define DISPLAYED-OBJECTS CB_Lager F_Artnr F_Inhalt F_Jahr ~ F_Bezeichnung F_Bestand T_Alle F_Letzt_Inv T_Inaktive F_Inventar F_Eingang ~ F_Ausgang F_Bestand_Neu /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-5 F_Artnr F_Inhalt F_Jahr F_Bezeichnung F_Bestand ~ T_Alle F_Letzt_Inv T_Inaktive F_Inventar F_Eingang F_Ausgang F_Bestand_Neu &Scoped-define List-6 F_Artnr F_Inhalt F_Jahr T_Alle T_Inaktive /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel LABEL "&Schliessen" SIZE 15 BY 1.14 BGCOLOR 8 . DEFINE BUTTON Btn_OK LABEL "&Rechnen" SIZE 15 BY 1.14 BGCOLOR 8 . DEFINE VARIABLE CB_Lager AS CHARACTER FORMAT "X(256)":U LABEL "Lager" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 27 BY 1 NO-UNDO. DEFINE VARIABLE F_Artnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "Artikel" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Ausgang AS DECIMAL FORMAT "zz,zzz,zz9-":U INITIAL 0 LABEL "Ausgang" VIEW-AS FILL-IN SIZE 17 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Bestand AS DECIMAL FORMAT "zz,zzz,zz9.99-":U INITIAL 0 LABEL "Bestand alt" VIEW-AS FILL-IN NATIVE SIZE 21 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Bestand_Neu AS DECIMAL FORMAT "zz,zzz,zz9-":U INITIAL 0 LABEL "Bestand neu" VIEW-AS FILL-IN SIZE 17 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Bezeichnung AS CHARACTER FORMAT "X(256)":U VIEW-AS FILL-IN NATIVE SIZE 50 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Eingang AS DECIMAL FORMAT "zz,zzz,zz9-":U INITIAL 0 LABEL "Eingang" VIEW-AS FILL-IN SIZE 17 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Inhalt AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Inventar AS DECIMAL FORMAT "zz,zzz,zz9.99-":U INITIAL 0 LABEL "Inventar" VIEW-AS FILL-IN NATIVE SIZE 21 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Jahr AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Letzt_Inv AS DATE FORMAT "99.99.9999":U LABEL "Letztes Inventar" VIEW-AS FILL-IN NATIVE SIZE 21 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-20 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 85 BY .33 BGCOLOR 12 . DEFINE RECTANGLE RECT-21 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 85 BY .33 BGCOLOR 12 . DEFINE VARIABLE T_Alle AS LOGICAL INITIAL NO LABEL "Alle Artikel neu rechnen ?" VIEW-AS TOGGLE-BOX SIZE 30.4 BY 1 NO-UNDO. DEFINE VARIABLE T_Inaktive AS LOGICAL INITIAL NO LABEL "inaktive Artikel auch" VIEW-AS TOGGLE-BOX SIZE 25 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME D-Lagerbestand CB_Lager AT ROW 1.52 COL 9 COLON-ALIGNED WIDGET-ID 2 F_Artnr AT ROW 2.52 COL 9 COLON-ALIGNED F_Inhalt AT ROW 2.52 COL 20 COLON-ALIGNED NO-LABEL F_Jahr AT ROW 2.52 COL 28 COLON-ALIGNED NO-LABEL F_Bezeichnung AT ROW 2.52 COL 36 COLON-ALIGNED NO-LABEL F_Bestand AT ROW 3.52 COL 65 COLON-ALIGNED T_Alle AT ROW 4.52 COL 11 F_Letzt_Inv AT ROW 4.52 COL 65 COLON-ALIGNED T_Inaktive AT ROW 5.52 COL 11 WIDGET-ID 4 F_Inventar AT ROW 5.52 COL 65 COLON-ALIGNED F_Eingang AT ROW 8 COL 9 COLON-ALIGNED F_Ausgang AT ROW 8 COL 37 COLON-ALIGNED F_Bestand_Neu AT ROW 8 COL 69 COLON-ALIGNED Btn_OK AT ROW 11 COL 21.2 Btn_Cancel AT ROW 11 COL 42.4 RECT-20 AT ROW 7 COL 3 RECT-21 AT ROW 10 COL 3 SPACE(3.39) SKIP(2.47) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Lagerbestand eines Artikels neu rechnen". /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB D-Lagerbestand /* ************************* Included-Libraries *********************** */ {src/adm/method/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX D-Lagerbestand FRAME-NAME */ ASSIGN FRAME D-Lagerbestand:SCROLLABLE = FALSE FRAME D-Lagerbestand:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_Artnr IN FRAME D-Lagerbestand 5 6 */ /* SETTINGS FOR FILL-IN F_Ausgang IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Bestand IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Bestand_Neu IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Bezeichnung IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Eingang IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Inhalt IN FRAME D-Lagerbestand 5 6 */ /* SETTINGS FOR FILL-IN F_Inventar IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR FILL-IN F_Jahr IN FRAME D-Lagerbestand 5 6 */ /* SETTINGS FOR FILL-IN F_Letzt_Inv IN FRAME D-Lagerbestand 5 */ /* SETTINGS FOR TOGGLE-BOX T_Alle IN FRAME D-Lagerbestand 5 6 */ /* SETTINGS FOR TOGGLE-BOX T_Inaktive IN FRAME D-Lagerbestand NO-ENABLE 5 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX D-Lagerbestand /* Query rebuild information for DIALOG-BOX D-Lagerbestand _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX D-Lagerbestand */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME D-Lagerbestand &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL D-Lagerbestand D-Lagerbestand ON WINDOW-CLOSE OF FRAME D-Lagerbestand /* Lagerbestand eines Artikels neu rechnen */ DO: /* Add Trigger to equate WINDOW-CLOSE to END-ERROR. */ APPLY "END-ERROR":U TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Cancel &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel D-Lagerbestand ON CHOOSE OF Btn_Cancel IN FRAME D-Lagerbestand /* Schliessen */ DO: APPLY 'GO' TO FRAME {&FRAME-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel D-Lagerbestand ON END-ERROR OF Btn_Cancel IN FRAME D-Lagerbestand /* Schliessen */ DO: APPLY 'ENTRY' TO F_Artnr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK D-Lagerbestand ON CHOOSE OF Btn_OK IN FRAME D-Lagerbestand /* Rechnen */ DO: DO WITH FRAME {&FRAME-NAME}: DISABLE Btn_OK Btn_Cancel. ASSIGN {&List-6}. iLager = INTEGER(CB_Lager:SCREEN-VALUE). IF T_Alle = TRUE THEN RUN WORKFILE. ELSE DO: EMPTY TEMP-TABLE tArtst. FIND Artst NO-LOCK WHERE Artst.Firma = GVFirma AND Artst.Artnr = F_Artnr AND Artst.Inhalt = F_Inhalt AND Artst.Jahr = F_Jahr NO-ERROR. IF AVAILABLE Artst THEN DO: CREATE tArtst. BUFFER-COPY Artst TO tArtst. END. END. RUN RECHNEN. ENABLE Btn_OK Btn_Cancel. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK D-Lagerbestand ON END-ERROR OF Btn_OK IN FRAME D-Lagerbestand /* Rechnen */ DO: APPLY 'ENTRY' TO F_Artnr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Artnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Artnr D-Lagerbestand ON LEAVE OF F_Artnr IN FRAME D-Lagerbestand /* Artikel */ DO: DO WITH FRAME {&FRAME-NAME}: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. LKY = LASTKEY. LHandle = LAST-EVENT:WIDGET-ENTER. IF VALID-HANDLE(LHandle) THEN DO: IF LHandle:TYPE <> 'BUTTON' THEN RETURN. IF LHandle:NAME = 'Btn_Cancel' THEN RETURN. END. ASSIGN {&List-6}. FIND FIRST Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND Artst.Artnr = F_Artnr NO-LOCK NO-ERROR. IF NOT AVAILABLE Artst THEN DO: BELL. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. IF F_Inhalt = 0 THEN F_Inhalt = Artst.Inhalt. IF F_Jahr = 0 THEN F_Jahr = Artst.Jahr. DISPLAY {&List-6}. APPLY 'ENTRY' TO F_Inhalt. RETURN NO-APPLY. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Artnr D-Lagerbestand ON RETURN OF F_Artnr IN FRAME D-Lagerbestand /* Artikel */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Ausgang &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Ausgang D-Lagerbestand ON ENTRY OF F_Ausgang IN FRAME D-Lagerbestand /* Ausgang */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Bestand &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Bestand D-Lagerbestand ON ENTRY OF F_Bestand IN FRAME D-Lagerbestand /* Bestand alt */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Bestand_Neu &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Bestand_Neu D-Lagerbestand ON ENTRY OF F_Bestand_Neu IN FRAME D-Lagerbestand /* Bestand neu */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Bezeichnung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Bezeichnung D-Lagerbestand ON ENTRY OF F_Bezeichnung IN FRAME D-Lagerbestand DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Eingang &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Eingang D-Lagerbestand ON ENTRY OF F_Eingang IN FRAME D-Lagerbestand /* Eingang */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Inhalt &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Inhalt D-Lagerbestand ON END-ERROR OF F_Inhalt IN FRAME D-Lagerbestand DO: APPLY 'ENTRY' TO F_Artnr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Inhalt D-Lagerbestand ON LEAVE OF F_Inhalt IN FRAME D-Lagerbestand DO: DO WITH FRAME {&FRAME-NAME}: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. IF KEYFUNCTION(LASTKEY) = 'BACK-TAB' THEN RETURN. ASSIGN {&List-6}. FIND FIRST Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND Artst.Artnr = F_Artnr AND Artst.Inhalt >= F_Inhalt NO-LOCK NO-ERROR. IF NOT AVAILABLE Artst THEN DO: BELL. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. F_Inhalt = Artst.Inhalt. IF F_Jahr = 0 THEN F_Jahr = Artst.Jahr. DISPLAY {&List-6}. APPLY 'ENTRY' TO F_Jahr. RETURN NO-APPLY. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Inhalt D-Lagerbestand ON RETURN OF F_Inhalt IN FRAME D-Lagerbestand DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Inventar &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Inventar D-Lagerbestand ON ENTRY OF F_Inventar IN FRAME D-Lagerbestand /* Inventar */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Jahr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Jahr D-Lagerbestand ON END-ERROR OF F_Jahr IN FRAME D-Lagerbestand DO: APPLY 'ENTRY' TO F_Artnr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Jahr D-Lagerbestand ON LEAVE OF F_Jahr IN FRAME D-Lagerbestand DO: DO WITH FRAME {&FRAME-NAME}: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. IF KEYFUNCTION(LASTKEY) = 'BACK-TAB' THEN RETURN. ASSIGN {&List-6}. FIND Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND Artst.Artnr = F_Artnr AND Artst.Inhalt = F_Inhalt AND Artst.Jahr = F_Jahr NO-LOCK NO-ERROR. IF NOT AVAILABLE Artst THEN DO: BELL. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. FIND FIRST Artbez OF Artst NO-LOCK NO-ERROR. FIND FIRST ArtLager OF Artst NO-LOCK NO-ERROR. F_Artnr = Artbez.Artnr. F_Inhalt = Artbez.Inhalt. F_Jahr = Artbez.Jahr. F_Bezeichnung = Artbez.Bez1. F_Bestand = Artst.Bestand. F_Letzt_Inv = ArtLager.Datum_Inv. F_Inventar = ArtLager.Inv_Best. F_Eingang = 0. F_Ausgang = 0. F_Bestand_Neu = 0. IF F_Letzt_Inv <> ? THEN DO: FIND FIRST Artbw USE-INDEX Artbw-k7 WHERE Artbw.Firma = GVFirma AND Artbw.Artnr = F_Artnr AND Artbw.Inhalt = F_Inhalt AND Artbw.Jahr = F_Jahr AND Artbw.Tr_Art = 21 AND Artbw.Datum = F_Letzt_Inv NO-LOCK NO-ERROR. IF NOT AVAILABLE Artbw THEN F_Letzt_Inv = 01/01/0001. END. DISPLAY {&List-5}. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Jahr D-Lagerbestand ON RETURN OF F_Jahr IN FRAME D-Lagerbestand DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Letzt_Inv &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Letzt_Inv D-Lagerbestand ON ENTRY OF F_Letzt_Inv IN FRAME D-Lagerbestand /* Letztes Inventar */ DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME T_Alle &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL T_Alle D-Lagerbestand ON VALUE-CHANGED OF T_Alle IN FRAME D-Lagerbestand /* Alle Artikel neu rechnen ? */ DO: IF SELF:SCREEN-VALUE BEGINS 'n' THEN DO: T_Inaktive:SCREEN-VALUE = STRING(FALSE). T_Inaktive:SENSITIVE = FALSE. END. ELSE DO: T_Inaktive:SENSITIVE = TRUE . END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK D-Lagerbestand /* *************************** Main Block *************************** */ SESSION:DATA-ENTRY-RETURN = TRUE. FIND Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND Artst.Artnr = LVArtnr AND Artst.Inhalt = LVInhalt AND Artst.Jahr = LVJahr NO-LOCK NO-ERROR. DO WHILE TRUE: IF NOT AVAILABLE Artst THEN LEAVE. FIND FIRST Artbez OF Artst NO-LOCK NO-ERROR. FIND FIRST ArtLager OF Artst NO-LOCK NO-ERROR. F_Artnr = Artbez.Artnr. F_Inhalt = Artbez.Inhalt. F_Jahr = Artbez.Jahr. F_Bezeichnung = Artbez.Bez1. F_Bestand = Artst.Bestand. F_Letzt_Inv = ArtLager.Datum_Inv. F_Inventar = ArtLager.Inv_Best. LEAVE. END. {src/adm/template/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects D-Lagerbestand _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: ------------------------------------------------------------------------------*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available D-Lagerbestand _ADM-ROW-AVAILABLE PROCEDURE adm-row-available : /*------------------------------------------------------------------------------ Purpose: Dispatched to this procedure when the Record- Source has a new row available. This procedure tries to get the new row (or foriegn keys) from the Record-Source and process it. Parameters: ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/row-head.i} /* Process the newly available records (i.e. display fields, open queries, and/or pass records on to any RECORD-TARGETS). */ {src/adm/template/row-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI D-Lagerbestand _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME D-Lagerbestand. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI D-Lagerbestand _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ DISPLAY CB_Lager F_Artnr F_Inhalt F_Jahr F_Bezeichnung F_Bestand T_Alle F_Letzt_Inv T_Inaktive F_Inventar F_Eingang F_Ausgang F_Bestand_Neu WITH FRAME D-Lagerbestand. ENABLE RECT-20 RECT-21 CB_Lager F_Artnr F_Inhalt F_Jahr F_Bezeichnung F_Bestand T_Alle F_Letzt_Inv F_Inventar F_Eingang F_Ausgang F_Bestand_Neu Btn_OK Btn_Cancel WITH FRAME D-Lagerbestand. VIEW FRAME D-Lagerbestand. {&OPEN-BROWSERS-IN-QUERY-D-Lagerbestand} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-initialize D-Lagerbestand PROCEDURE local-initialize : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ /* Dispatch standard ADM method. */ RUN dispatch IN THIS-PROCEDURE ( INPUT 'initialize':U ) . DO WITH FRAME {&FRAME-NAME}: iLager = DYNAMIC-FUNCTION('getBenLager':U) NO-ERROR. RUN COMBO_LAGER ( CB_Lager:HANDLE ). CB_Lager:SCREEN-VALUE = STRING(iLager,'999999') NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RECHNEN D-Lagerbestand PROCEDURE RECHNEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VInvBest AS DECIMAL NO-UNDO DECIMALS 4. DEFINE VARIABLE VEingang AS DECIMAL NO-UNDO DECIMALS 4. DEFINE VARIABLE VAusgang AS DECIMAL NO-UNDO DECIMALS 4. DEFINE VARIABLE VDatum AS DATE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE nOldBest AS INTEGER NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEF BUFFER bArtLager FOR ArtLager. DEF BUFFER bArtst FOR Artst . DEF BUFFER bArtbw FOR Artbw . DISABLE TRIGGERS FOR LOAD OF Artst . DISABLE TRIGGERS FOR LOAD OF ArtLager. REPEAT ON ERROR UNDO, LEAVE WITH FRAME {&FRAME-NAME}: FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN LEAVE. FIND FIRST bArtst OF tArtst NO-LOCK NO-ERROR. FIND FIRST Artbez OF tArtst NO-LOCK NO-ERROR. FIND FIRST ArtLager OF tArtst NO-LOCK NO-ERROR. F_Artnr = tArtst.Artnr. F_Inhalt = tArtst.Inhalt. F_Jahr = tArtst.Jahr. F_Eingang = 0. F_Ausgang = 0. F_Bestand = 0. IF AVAILABLE ArtLager THEN DO: F_Letzt_Inv = ArtLager.Datum_Inv. F_Inventar = ArtLager.Inv_Best. F_Bestand = ArtLager.Bestand. END. DISPLAY {&List-6}. DISPLAY {&List-5}. EMPTY TEMP-TABLE tBestand. FOR EACH bArtLager NO-LOCK WHERE bArtLager.Firma = bArtst.Firma AND bArtLager.Artnr = bArtst.Artnr AND bArtLager.Inhalt = bArtst.Inhalt AND bArtLager.Jahr = bArtst.Jahr: CREATE tBestand. ASSIGN tBestand.Lager = bArtLager.Lager tBestand.ilRecid = RECID(bArtLager) tBestand.iaRecid = RECID(bArtst) tBestand.Inv_Datum = bArtLager.Datum_Inv tBestand.iTrnr = 0. IF tBestand.Inv_Datum <> ? THEN DO: FOR EACH bArtbw NO-LOCK WHERE bArtbw.Firma = bArtst.Firma AND bArtbw.Artnr = bArtst.Artnr AND bArtbw.Inhalt = bArtst.Inhalt AND bArtbw.Jahr = bArtst.Jahr AND bArtbw.Lager = bArtLager.Lager AND bArtbw.Tr_Art = 21 AND bArtbw.Datum = tBestand.Inv_Datum : IF bArtbw.Trnr > tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr. END. END. IF tBestand.Inv_Datum = ? THEN DO: FIND FIRST bArtbw NO-LOCK USE-INDEX Artbw-k7 WHERE bArtbw.Firma = bArtst.Firma AND bArtbw.Artnr = bArtst.Artnr AND bArtbw.Inhalt = bArtst.Inhalt AND bArtbw.Jahr = bArtst.Jahr AND bArtbw.Lager = bArtLager.Lager AND bArtbw.Tr_Art = 21 NO-ERROR. IF AVAILABLE bArtbw THEN tBestand.Inv_Datum = bArtbw.Datum. ELSE tBestand.Inv_Datum = 01/01/0001. IF AVAILABLE bArtbw AND bArtbw.Trnr < tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr. END. END. FIND FIRST tBestand NO-ERROR. IF NOT AVAILABLE (tBestand) THEN NEXT. FOR EACH tBestand: iLager = tBestand.Lager. FOR EACH bArtbw NO-LOCK USE-INDEX Artbw-k2 WHERE bArtbw.Firma = bArtst.Firma AND bArtbw.Artnr = bArtst.Artnr AND bArtbw.Inhalt = bArtst.Inhalt AND bArtbw.Jahr = bArtst.Jahr AND bArtbw.Lag_Buch = TRUE AND bArtbw.Lager = tBestand.Lager AND bArtbw.Datum >= tBestand.Inv_Datum: IF bArtbw.Datum = tBestand.Inv_Datum AND bArtbw.Tr_Art < 21 AND bArtbw.Trnr < tBestand.iTrnr THEN NEXT. DO WHILE TRUE: IF bArtbw.Tr_Art < 11 THEN DO: tBestand.Ausgang = tBestand.Ausgang + bArtbw.Menge. LEAVE. END. IF bArtbw.Tr_Art < 21 THEN DO: tBestand.Eingang = tBestand.Eingang + bArtbw.Menge. LEAVE. END. tBestand.Inv_Bestand = tBestand.Inv_Bestand + bArtbw.Menge. LEAVE. END. END. END. REPEAT TRANSACTION: FIND FIRST tBestand. iLager = tBestand.Lager. FIND Artst EXCLUSIVE-LOCK WHERE RECID(Artst) = tBestand.iaRecid NO-WAIT NO-ERROR. IF NOT AVAILABLE Artst AND LOCKED Artst THEN DO: cString = SUBSTITUTE('Artst &1 ist in Zugriff', Artst.Artnr ). /* MESSAGE cString */ /* VIEW-AS ALERT-BOX.*/ NEXT. END. nOldBest = Artst.Bestand. Artst.Bestand = 0. FOR EACH tBestand: FIND ArtLager EXCLUSIVE-LOCK WHERE RECID(ArtLager) = tBestand.ilRecid NO-WAIT NO-ERROR. IF NOT AVAILABLE ArtLager AND LOCKED ArtLager THEN DO: cString = SUBSTITUTE('ArtLager &1 ist in Zugriff', Artst.Artnr ). /* MESSAGE cString */ /* VIEW-AS ALERT-BOX.*/ NEXT. END. ASSIGN ArtLager.Inv_Best = tBestand.Inv_Bestand ArtLager.Eingang = tBestand.Eingang ArtLager.Ausgang = tBestand.Ausgang ArtLager.Bestand = tBestand.Inv_Bestand + tBestand.Eingang - tBestand.Ausgang. IF tBestand.Inv_Datum <> 01/01/0001 THEN ArtLager.Datum_Inv = tBestand.Inv_Datum. Artst.Bestand = Artst.Bestand + ArtLager.Bestand. RELEASE ArtLager. END. IF Artst.Bestand <> nOldBest THEN DO: cString = SUBSTITUTE('&1;&2;&3', Artst.Artnr, Artst.Bestand, nOldBest ). /* MESSAGE cString */ /* VIEW-AS ALERT-BOX.*/ END. FIND FIRST ArtLager NO-LOCK WHERE ArtLager.Firma = Artst.Firma AND ArtLager.Lager = iLager AND ArtLager.Artnr = Artst.Artnr AND ArtLager.Inhalt = Artst.Inhalt AND ArtLager.Jahr = Artst.Jahr NO-ERROR. ASSIGN F_Eingang = ArtLager.Eingang F_Ausgang = ArtLager.Ausgang F_Bestand_Neu = ArtLager.Bestand F_Eingang :SCREEN-VALUE = STRING(ArtLager.Eingang) F_Ausgang :SCREEN-VALUE = STRING(ArtLager.Ausgang) F_Bestand_Neu:SCREEN-VALUE = STRING(ArtLager.Bestand) . RELEASE Artst. RELEASE ArtLager. LEAVE. END. DELETE tArtst. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records D-Lagerbestand _ADM-SEND-RECORDS PROCEDURE send-records : /*------------------------------------------------------------------------------ Purpose: Send record ROWID's for all tables used by this file. Parameters: see template/snd-head.i ------------------------------------------------------------------------------*/ /* SEND-RECORDS does nothing because there are no External Tables specified for this SmartDialog, and there are no tables specified in any contained Browse, Query, or Frame. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed D-Lagerbestand PROCEDURE state-changed : /* ----------------------------------------------------------- Purpose: Parameters: Notes: -------------------------------------------------------------*/ DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO. DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WORKFILE D-Lagerbestand PROCEDURE WORKFILE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ EMPTY TEMP-TABLE tArtst. FOR EACH Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND ((T_Inaktive = TRUE) OR (T_Inaktive = FALSE AND Artst.Aktiv = TRUE)) AND Artst.Lager = TRUE NO-LOCK: CREATE tArtst. BUFFER-COPY Artst TO tArtst. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME