&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW {adecomm/appserv.i} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS fFrameWin /*------------------------------------------------------------------------ File: Description: from cntnrfrm.w - ADM2 SmartFrame Template Input Parameters: Output Parameters: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* 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 iLager AS INTEGER NO-UNDO. DEFINE VARIABLE lAufAb AS LOG INIT FALSE NO-UNDO. DEFINE VARIABLE cAufAb AS CHARACTER INIT 'DESCENDING' NO-UNDO. DEFINE VARIABLE cSort AS CHARACTER INIT 'iZeile' NO-UNDO. DEFINE VARIABLE hQuery AS HANDLE NO-UNDO. DEFINE VARIABLE xWhere AS CHARACTER NO-UNDO. DEFINE VARIABLE lLager AS LOG NO-UNDO. DEFINE VARIABLE lOpen AS LOGICAL NO-UNDO INIT FALSE. { incl/tmpbrowser.i } DEFINE TEMP-TABLE tArtbw FIELD Knr AS INTEGER FORMAT '999999' FIELD Kunde AS CHARACTER FORMAT 'x(60)' FIELD Datum AS DATE FORMAT '99.99.9999' FIELD DokNr AS CHARACTER FORMAT 'x(10)' FIELD Menge AS DECIMAL FORMAT '->>>>,>>9' FIELD Lager AS INTEGER FORMAT 'z9' LABEL 'LG' FIELD Tr_Art AS INTEGER FORMAT 'z9' LABEL 'TA' FIELD Bestand AS DECIMAL FORMAT '->>>>,>>9' FIELD Aktion AS LOG FORMAT 'J/N' LABEL 'AK' FIELD Preis AS DECIMAL FORMAT 'zz,zz9.999' DECIMALS 4 FIELD Bru_Betr AS DECIMAL LABEL 'Brutto' FIELD Net_Betr AS DECIMAL LABEL 'Netto' FIELD Lag_Buch AS LOG FORMAT 'J/N' LABEL 'LB' FIELD Rab_Art AS INTEGER FORMAT '9' LABEL 'RabArt' FIELD Rab_Wert AS DECIMAL FORMAT '->>9.99' LABEL 'RabWert' FIELD iZeile AS INTEGER INDEX tArtbw-k1 IS PRIMARY iZeile DESCENDING. {src/adm2/widgetprto.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartFrame &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER FRAME &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME f-artbw-bestand &Scoped-define BROWSE-NAME Br-artbw-bestand /* Definitions for FRAME f-artbw-bestand */ /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-1 Br-artbw-bestand /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setZeilenFarbe fFrameWin FUNCTION setZeilenFarbe RETURNS LOGICAL ( ipFarbe AS INTEGER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE RECTANGLE RECT-1 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 146 BY 12.86. /* Browse definitions */ DEFINE BROWSE Br-artbw-bestand &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br-artbw-bestand fFrameWin _STRUCTURED /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 144 BY 12.38 TOOLTIP "grün = ohne Bestandesver., Cyan = Aktion, gelb = Inventar, grau = Eingang". /* ************************ Frame Definitions *********************** */ DEFINE FRAME f-artbw-bestand Br-artbw-bestand AT ROW 1.48 COL 3 WIDGET-ID 200 RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 148 BY 13.19 WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartFrame Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: PERSISTENT-ONLY COMPILE APPSERVER */ /* This procedure should always be RUN PERSISTENT. Report the error, */ /* then cleanup and return. */ IF NOT THIS-PROCEDURE:PERSISTENT THEN DO: MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U VIEW-AS ALERT-BOX ERROR BUTTONS OK. RETURN. END. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW fFrameWin ASSIGN HEIGHT = 13.19 WIDTH = 147.6. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB fFrameWin /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW fFrameWin VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME f-artbw-bestand NOT-VISIBLE FRAME-NAME */ /* BROWSE-TAB Br-artbw-bestand RECT-1 f-artbw-bestand */ ASSIGN FRAME f-artbw-bestand:HIDDEN = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br-artbw-bestand /* Query rebuild information for BROWSE Br-artbw-bestand _Query is NOT OPENED */ /* BROWSE Br-artbw-bestand */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK FRAME f-artbw-bestand /* Query rebuild information for FRAME f-artbw-bestand _Options = "" _Query is NOT OPENED */ /* FRAME f-artbw-bestand */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define BROWSE-NAME Br-artbw-bestand &Scoped-define SELF-NAME Br-artbw-bestand &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br-artbw-bestand fFrameWin ON ROW-DISPLAY OF Br-artbw-bestand IN FRAME f-artbw-bestand DO: Farbe = 15. IF tArtbw.Aktion THEN Farbe = 11. IF tArtbw.Tr_Art = 11 THEN Farbe = 8. IF tArtbw.Tr_Art = 21 THEN Farbe = 14. IF NOT tArtbw.Lag_Buch AND lLager THEN Farbe = 10. DYNAMIC-FUNCTION('setZeilenFarbe':U, Farbe) NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br-artbw-bestand fFrameWin ON START-SEARCH OF Br-artbw-bestand IN FRAME f-artbw-bestand DO: DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE hCol AS HANDLE NO-UNDO. DEFINE VARIABLE iSort AS INTEGER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: hCol = SELF:CURRENT-COLUMN. cString = hCol:NAME . APPLY 'END-SEARCH' TO {&BROWSE-NAME}. END. IF cString = cSort THEN lAufAb = NOT lAufAb. cAufAb = (IF lAufAb THEN '' ELSE 'DESCENDING'). cSort = cString. RUN OPENQUERY NO-ERROR. APPLY 'U1'. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin /* *************************** Main Block *************************** */ lOpen = FALSE. { incl/dynbrwmainblock.i } { incl/brwinternproc.i } &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN /* Now enable the interface if in test mode - otherwise this happens when the object is explicitly initialized from its container. */ RUN initializeObject. &ENDIF /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects fFrameWin _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 destroyObject fFrameWin PROCEDURE destroyObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE hBrowser AS HANDLE NO-UNDO. hBrowser = {&BROWSE-NAME}:HANDLE IN FRAME {&FRAME-NAME}. DYNAMIC-FUNCTION('setBrowserDaten':U, INPUT hBrowser, INPUT Sektion ) NO-ERROR. IF VALID-HANDLE ( hQuery ) THEN DO: hQuery:QUERY-CLOSE() NO-ERROR. DELETE OBJECT hQuery. END. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI fFrameWin _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 f-artbw-bestand. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI fFrameWin _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. ------------------------------------------------------------------------------*/ ENABLE RECT-1 WITH FRAME f-artbw-bestand. {&OPEN-BROWSERS-IN-QUERY-f-artbw-bestand} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject fFrameWin PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cExceptList AS CHARACTER NO-UNDO INIT 'iZeile'. CREATE QUERY hQuery. hQuery:SET-BUFFERS(TEMP-TABLE tArtbw:DEFAULT-BUFFER-HANDLE). hQUery:QUERY-PREPARE('FOR EACH tArtbw NO-LOCK'). BROWSE {&BROWSE-NAME}:QUERY = hQuery. hBrowser = {&BROWSE-NAME}:HANDLE IN FRAME {&FRAME-NAME}. hBrowser:ADD-COLUMNS-FROM( 'tArtbw', cExceptList ). { incl/brwinitialize.i } APPLY 'VALUE-CHANGED' TO hItem_Sort. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPENQUERY fFrameWin PROCEDURE OPENQUERY : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ xWhere = SUBSTITUTE('FOR EACH tArtbw NO-LOCK BY &1 &2', cSort, cAufAb). hQuery:QUERY-PREPARE(xWhere) NO-ERROR. hQuery:QUERY-OPEN() NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_LOGICAL_OPEN fFrameWin PROCEDURE SET_LOGICAL_OPEN : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER iplOpen AS LOGICAL NO-UNDO. lOpen = iplOpen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEMP_TABLE_FUELLEN fFrameWin PROCEDURE TEMP_TABLE_FUELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER iLager AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER iArtnr AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER iInhalt AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE invDatum AS DATE NO-UNDO. DEFINE VARIABLE lInventar AS LOG NO-UNDO. DEFINE VARIABLE iBestand AS INTEGER NO-UNDO. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE iTrnr AS INTEGER NO-UNDO. IF NOT lOpen THEN RETURN. SESSION:SET-WAIT-STATE ('GENERAL'). FIND FIRST ArtLager NO-LOCK USE-INDEX ArtLager-k1 WHERE ArtLager.Firma = Firma AND ArtLager.Artnr = iArtnr AND ArtLager.Inhalt = iInhalt AND ArtLager.Jahr = iJahr AND ArtLager.Lager = iLager NO-ERROR. ASSIGN lInventar = FALSE invDatum = 01/01/0001 iBestand = 0 iZeile = 0. IF AVAILABLE ArtLager AND ArtLager.Datum_Inv <> ? THEN DO: ASSIGN lInventar = TRUE invDatum = ArtLager.Datum_inv. iTrnr = 0. FOR EACH Artbw NO-LOCK WHERE Artbw.Firma = ArtLager.Firma AND Artbw.Artnr = ArtLager.Artnr AND Artbw.Inhalt = ArtLager.Inhalt AND Artbw.Jahr = ArtLager.Jahr AND Artbw.Lager = ArtLager.Lager AND Artbw.Tr_Art = 21 AND Artbw.Datum = InvDatum : IF Artbw.Trnr > iTrnr THEN iTrnr = Artbw.Trnr. END. END. FIND FIRST Artst NO-LOCK WHERE Artst.Firma = ArtLager.Firma AND Artst.Artnr = ArtLager.Artnr AND Artst.Inhalt = ArtLager.Inhalt AND Artst.Jahr = ArtLager.Jahr. lLager = Artst.Lager. EMPTY TEMP-TABLE tArtbw. FOR EACH Artbw NO-LOCK USE-INDEX Artbw-k2 WHERE Artbw.Firma = Firma AND Artbw.Artnr = iArtnr AND Artbw.Inhalt = iInhalt AND Artbw.Jahr = iJahr AND Artbw.Datum >= invDatum AND Artbw.Lager = iLager BY Artbw.Datum BY Artbw.Trnr: IF Artbw.Datum = invDatum AND Artbw.Tr_Art <> 21 AND Artbw.Trnr < iTrnr THEN NEXT. IF Artbw.Lag_Buch THEN DO: IF Artbw.Tr_Art > 00 AND Artbw.Tr_Art < 11 THEN iBestand = iBestand - Artbw.Menge. IF Artbw.Tr_Art > 10 AND Artbw.Tr_Art < 21 THEN iBestand = iBestand + Artbw.Menge. IF Artbw.Tr_Art > 20 AND Artbw.Tr_Art < 31 THEN iBestand = iBestand + Artbw.Menge. END. iZeile = iZeile + 1. CREATE tArtbw. BUFFER-COPY Artbw TO tArtbw ASSIGN tArtbw.Bestand = iBestand tArtbw.iZeile = iZeile. ASSIGN tArtbw.Kunde = DYNAMIC-FUNCTION('getAdressAnzeige':U, Artbw.Knr) tArtbw.DokNr = (IF Artbw.Faknr > 0 THEN ('F' + TRIM(STRING(Artbw.Faknr,'>>999999'))) ELSE ('A' + TRIM(STRING(Artbw.Aufnr,'>>999999')))). IF Artbw.Knr = 0 THEN DO: cString = DYNAMIC-FUNCTION('getLagerTransArt':U, Artbw.Tr_Art) . tArtbw.Kunde = cString. END. END. RUN OPENQUERY. SESSION:SET-WAIT-STATE (''). APPLY 'ENTRY' TO {&BROWSE-NAME} IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setZeilenFarbe fFrameWin FUNCTION setZeilenFarbe RETURNS LOGICAL ( ipFarbe AS INTEGER ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ { incl/brwsetzeilenfarbe.i } END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME