&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases */ &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 sAktiv AS LOG NO-UNDO. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO. DEFINE VARIABLE hqUmsatz AS HANDLE NO-UNDO. DEFINE VARIABLE hbUmsatz AS HANDLE NO-UNDO. DEFINE TEMP-TABLE tUmsatz LIKE Umsatz. {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 fMain &Scoped-define BROWSE-NAME Br_Umsatz /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES tUmsatz /* Definitions for BROWSE Br_Umsatz */ &Scoped-define FIELDS-IN-QUERY-Br_Umsatz Jahr VP_Kum VP_Mon[01] VP_Mon[02] VP_Mon[03] VP_Mon[04] VP_Mon[05] VP_Mon[06] VP_Mon[07] VP_Mon[08] VP_Mon[09] VP_Mon[10] VP_Mon[11] VP_Mon[12] &Scoped-define ENABLED-FIELDS-IN-QUERY-Br_Umsatz &Scoped-define SELF-NAME Br_Umsatz &Scoped-define QUERY-STRING-Br_Umsatz FOR EACH tUmsatz &Scoped-define OPEN-QUERY-Br_Umsatz OPEN QUERY {&SELF-NAME} FOR EACH tUmsatz. &Scoped-define TABLES-IN-QUERY-Br_Umsatz tUmsatz &Scoped-define FIRST-TABLE-IN-QUERY-Br_Umsatz tUmsatz /* Definitions for FRAME fMain */ /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-42 Br_Umsatz Btn_Rechnen /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Rechnen LABEL "Rechnen" SIZE 21.2 BY 1. DEFINE RECTANGLE RECT-42 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 180 BY 24.76. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY Br_Umsatz FOR tUmsatz SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE Br_Umsatz &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Umsatz fFrameWin _FREEFORM QUERY Br_Umsatz DISPLAY Jahr FORMAT 'z9999' LABEL 'Jahr' VP_Kum FORMAT '->>>,>>>,>>9' LABEL 'VP Jahr' VP_Mon[01] FORMAT '->>,>>>,>>9' LABEL 'VP Jan' VP_Mon[02] FORMAT '->>,>>>,>>9' LABEL 'VP Feb' VP_Mon[03] FORMAT '->>,>>>,>>9' LABEL 'VP Mar' VP_Mon[04] FORMAT '->>,>>>,>>9' LABEL 'VP Apr' VP_Mon[05] FORMAT '->>,>>>,>>9' LABEL 'VP Mai' VP_Mon[06] FORMAT '->>,>>>,>>9' LABEL 'VP Jun' VP_Mon[07] FORMAT '->>,>>>,>>9' LABEL 'VP Jul' VP_Mon[08] FORMAT '->>,>>>,>>9' LABEL 'VP Aug' VP_Mon[09] FORMAT '->>,>>>,>>9' LABEL 'VP Sep' VP_Mon[10] FORMAT '->>,>>>,>>9' LABEL 'VP Okt' VP_Mon[11] FORMAT '->>,>>>,>>9' LABEL 'VP Nov' VP_Mon[12] FORMAT '->>,>>>,>>9' LABEL 'VP Dez' /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 178 BY 22.38. /* ************************ Frame Definitions *********************** */ DEFINE FRAME fMain Br_Umsatz AT ROW 1.48 COL 3 WIDGET-ID 200 Btn_Rechnen AT ROW 24.43 COL 156.2 WIDGET-ID 4 RECT-42 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 182 BY 25.24 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 Other Settings: PERSISTENT-ONLY 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 = 24.95 WIDTH = 181.8. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "SmartFrameCues" fFrameWin _INLINE /* Actions: adecomm/_so-cue.w ? adecomm/_so-cued.p ? adecomm/_so-cuew.p */ /* SmartFrame,ab,49268 Destroy on next read */ /* _UIB-CODE-BLOCK-END */ &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 fMain NOT-VISIBLE FRAME-NAME */ /* BROWSE-TAB Br_Umsatz RECT-42 fMain */ ASSIGN FRAME fMain:HIDDEN = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Umsatz /* Query rebuild information for BROWSE Br_Umsatz _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH tUmsatz. _END_FREEFORM _Query is NOT OPENED */ /* BROWSE Br_Umsatz */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain /* Query rebuild information for FRAME fMain _Options = "" _Query is NOT OPENED */ /* FRAME fMain */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME Btn_Rechnen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Rechnen fFrameWin ON CHOOSE OF Btn_Rechnen IN FRAME fMain /* Rechnen */ DO: RUN RECHNEN. APPLY 'ENTRY' TO Br_Umsatz. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME Br_Umsatz &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin /* *************************** Main Block *************************** */ SAktiv = DYNAMIC-FUNCTION('getSuperAktiv':U) NO-ERROR. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR. &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 AUFKO_BUCHEN fFrameWin PROCEDURE AUFKO_BUCHEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE iMM AS INTEGER NO-UNDO. DEFINE VARIABLE iJJ AS INTEGER NO-UNDO. SESSION:SET-WAIT-STATE('GENERAL'). EMPTY TEMP-TABLE tUmsatz. FOR EACH Umsatz NO-LOCK WHERE Umsatz.Firma = Firma AND Umsatz.Ums_Art = 'TOTAL': CREATE tUmsatz. BUFFER-COPY Umsatz TO tUmsatz. END. FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k1 WHERE Aufko.Firma = Firma AND NOT Aufko.AlsOfferte: IF Aufko.Fak_Datum = ? THEN dDatum = Aufko.Lief_Datum. ELSE dDatum = Aufko.Fak_Datum. IF dDatum = ? THEN dDatum = TODAY. iJJ = YEAR (dDatum). iMM = MONTH(dDatum). FIND tUmsatz USE-INDEX Umsatz-k1 WHERE tUmsatz.Firma = Aufko.Firma AND tUmsatz.Ums_Art = 'TOTAL' AND tUmsatz.Jahr = iJJ AND tUmsatz.Grp_01 = 0 NO-ERROR. IF NOT AVAILABLE tUmsatz THEN DO: CREATE tUmsatz. ASSIGN tUmsatz.Firma = Aufko.Firma tUmsatz.Ums_Art = 'TOTAL' tUmsatz.Jahr = iJJ tUmsatz.Grp_01 = 0. END. FOR EACH Aufze OF Aufko NO-LOCK: IF Aufze.Artnr = 0 THEN NEXT. tUmsatz.VP_Mon[iMM] = tUmsatz.VP_Mon[iMM] + Aufze.Net_Betr - Aufze.Auf_Rab - Aufze.Abh_Rab - Aufze.Auf_Sp_Rab. tUmsatz.VP_Kum = tUmsatz.VP_Kum + Aufze.Net_Betr - Aufze.Auf_Rab - Aufze.Abh_Rab - Aufze.Auf_Sp_Rab. tUmsatz.EP_Mon[iMM] = tUmsatz.EP_Mon[iMM] + ( Aufze.MGeli * Aufze.Ep ). tUmsatz.EP_Kum = tUmsatz.EP_Kum + ( Aufze.MGeli * Aufze.Ep ). END. END. RELEASE Aufko. RELEASE Aufze. RELEASE Umsatz. SESSION:SET-WAIT-STATE(''). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject fFrameWin PROCEDURE destroyObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ IF VALID-HANDLE ( hqUmsatz) THEN hqUmsatz:QUERY-CLOSE(). DELETE OBJECT hqUmsatz NO-ERROR. 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 fMain. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject fFrameWin PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ CREATE QUERY hqUmsatz. hbUmsatz = TEMP-TABLE tUmsatz:DEFAULT-BUFFER-HANDLE. hqUmsatz:SET-BUFFERS(hbUmsatz). hqUmsatz:QUERY-PREPARE('FOR EACH tUmsatz NO-LOCK BY tUmsatz.Jahr DESCENDING'). BROWSE {&BROWSE-NAME}:QUERY = hqUmsatz. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ 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-42 Br_Umsatz Btn_Rechnen WITH FRAME fMain. {&OPEN-BROWSERS-IN-QUERY-fMain} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RECHNEN fFrameWin PROCEDURE RECHNEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE iDatum AS INTEGER NO-UNDO. DEFINE VARIABLE dNetto AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE dStartDatum AS DATE NO-UNDO. DEFINE VARIABLE iMM AS INTEGER NO-UNDO. DEFINE VARIABLE iJJ AS INTEGER NO-UNDO. RUN 'g-umsatz-jahr.w':U ( OUTPUT iJahr, OUTPUT iDatum ) NO-ERROR. IF iJahr = ? THEN RETURN. dStartDatum = DATE(01,01,iJahr). SESSION:SET-WAIT-STATE('GENERAL'). FOR EACH Umsatz USE-INDEX Umsatz-k1 WHERE Umsatz.Firma = Firma AND Umsatz.Ums_Art = 'TOTAL' AND Umsatz.Jahr >= iJahr: ASSIGN Umsatz.Vp_Kum = 0 Umsatz.Vp_Mon = 0 Umsatz.Ep_Kum = 0 Umsatz.Ep_Mon = 0. END. FOR EACH Savko USE-INDEX Savko-k1 WHERE Savko.Firma = Firma AND (Savko.Fak_Datum >= dStartDatum OR Savko.Lief_Datum >= dStartDatum) NO-LOCK: IF Savko.Fak_Datum = ? THEN dDatum = Savko.Lief_Datum. ELSE dDatum = Savko.Fak_Datum. IF dDatum = ? THEN dDatum = 01/01/1900. FIND FIRST Debop NO-LOCK WHERE Debop.Firma = Savko.Firma AND Debop.Knr = Savko.Fak_Knr AND Debop.Faknr = Savko.Faknr NO-ERROR. IF AVAILABLE Debop AND iDatum = 2 THEN dDatum = Debop.FakDat. iJJ = YEAR (dDatum). iMM = MONTH(dDatum). IF iJJ < iJahr AND iJJ <> 1900 THEN NEXT. FIND Umsatz USE-INDEX Umsatz-k1 WHERE Umsatz.Firma = Savko.Firma AND Umsatz.Ums_Art = 'TOTAL' AND Umsatz.Jahr = iJJ AND Umsatz.Grp_01 = 0 NO-ERROR. IF NOT AVAILABLE Umsatz THEN DO: CREATE Umsatz. ASSIGN Umsatz.Firma = Savko.Firma Umsatz.Ums_Art = 'TOTAL' Umsatz.Jahr = iJJ Umsatz.Grp_01 = 0. END. FOR EACH Savze OF Savko NO-LOCK WHERE Savze.Artnr > 0 AND Savze.Net_Betr <> 0: dNetto = Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab. IF Savze.MWSt_Inkl THEN dNetto = dNetto * 100 / (100 + Savze.MWST%). Umsatz.VP_Mon[iMM] = Umsatz.VP_Mon[iMM] + dNetto. Umsatz.VP_Kum = Umsatz.VP_Kum + dNetto. Umsatz.EP_Mon[iMM] = Umsatz.EP_Mon[iMM] + ( Savze.MGeli * Savze.Ep ). Umsatz.EP_Kum = Umsatz.EP_Kum + ( Savze.MGeli * Savze.Ep ). END. END. RELEASE Umsatz. SESSION:SET-WAIT-STATE(''). RUN AUFKO_BUCHEN. hqUmsatz:QUERY-OPEN(). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject fFrameWin PROCEDURE viewObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN AUFKO_BUCHEN. RUN SUPER. IF VALID-HANDLE ( hqUmsatz ) THEN hqUmsatz:QUERY-OPEN(). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME