&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME wProvisionsabrechnung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS wProvisionsabrechnung /*------------------------------------------------------------------------ File: Description: from cntnrwin.w - ADM SmartWindow Template Input Parameters: Output Parameters: History: New V9 Version - January 15, 1998 ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AB. */ /*----------------------------------------------------------------------*/ /* 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 --- */ DEF VAR MaxPage AS INT NO-UNDO. DEF VAR AktSeite AS INT NO-UNDO. DEF VAR Fenster AS HANDLE NO-UNDO. DEF VAR hToolbar AS HANDLE NO-UNDO. DEF VAR FMutFlag AS LOG NO-UNDO INIT FALSE. DEF VAR SAktiv AS LOG NO-UNDO INIT FALSE. DEF VAR Firma AS CHAR NO-UNDO. DEF VAR Progname AS CHAR NO-UNDO. DEF VAR Vertr AS INT NO-UNDO. DEF VAR iMaxPer AS INT NO-UNDO. DEF VAR cVorlage AS CHAR NO-UNDO. DEF VAR cDokument AS CHAR NO-UNDO. DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR cDateiName AS CHAR NO-UNDO. DEF VAR excelAppl AS COM-HANDLE NO-UNDO. DEF TEMP-TABLE TProv FIELD Vertr AS INT FIELD Knr AS INT FIELD Artnr AS INT FIELD Inhalt AS INT FIELD Jahr AS INT FIELD Wgr AS INT FIELD Datum AS DATE FIELD Menge AS DEC FIELD Netto AS DEC FIELD Liter AS DEC FIELD Prov_Summ AS INT FIELD Prov_Art AS INT INDEX TProv-k1 AS PRIMARY Vertr Knr Artnr Inhalt Jahr INDEX TProv-k2 Vertr Prov_Summ Artnr Inhalt Jahr. DEF TEMP-TABLE tProvMonat FIELD Vertr AS INT FIELD Knr AS INT FIELD Artnr AS INT FIELD Inhalt AS INT FIELD Jahr AS INT FIELD iJahr AS INT FIELD iMonat AS INT FIELD Menge AS DEC FIELD Netto AS DEC FIELD Liter AS DEC INDEX tProvMonat-k1 IS PRIMARY Vertr Knr Artnr Inhalt Jahr iJahr iMonat. DEF TEMP-TABLE tPerioden FIELD Periode AS INT FIELD Jahr AS INT FIELD Monat AS INT INDEX tPerioden-k1 IS PRIMARY Jahr Monat . /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartWindow &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER WINDOW &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME fMain /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-13 CB_Vertreter F_VonKnr F_BisKnr ~ F_VonArtnr F_BisArtnr F_VonDatum F_BisDatum R_Vertr T_Monat Btn_OK ~ Btn_Cancel &Scoped-Define DISPLAYED-OBJECTS CB_Vertreter F_VonKnr F_BisKnr F_VonArtnr ~ F_BisArtnr F_VonDatum F_BisDatum R_Vertr T_Monat /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 F_VonKnr F_BisKnr F_VonArtnr F_BisArtnr F_VonDatum ~ F_BisDatum R_Vertr T_Monat /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD XGET_VERTRETER wProvisionsabrechnung FUNCTION XGET_VERTRETER RETURNS INTEGER ( ipKnr AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD XGET_WARENGRUPPE wProvisionsabrechnung FUNCTION XGET_WARENGRUPPE RETURNS INTEGER ( ipArtnr AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR wProvisionsabrechnung AS WIDGET-HANDLE NO-UNDO. /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel AUTO-END-KEY LABEL "&abbrechen" SIZE 14 BY 1. DEFINE BUTTON Btn_OK IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/results%.ico":U LABEL "Excel" SIZE 7 BY 1.71. DEFINE VARIABLE CB_Vertreter AS CHARACTER FORMAT "X(256)":U LABEL "Vertreter" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisDatum AS DATE FORMAT "99.99.9999":U LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisKnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Artikelnummer" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonDatum AS DATE FORMAT "99.99.9999":U LABEL "von - bis Fakturadatum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonKnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Kundennummer" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE R_Vertr AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Vertreter aus Auftrag", 1, "Vertreter aus Debitorstamm", 2 SIZE 36.8 BY 1.43 NO-UNDO. DEFINE RECTANGLE RECT-13 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 72 BY 10. DEFINE VARIABLE T_Monat AS LOGICAL INITIAL no LABEL "Monatsspalten" VIEW-AS TOGGLE-BOX SIZE 38.2 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME fMain CB_Vertreter AT ROW 1.52 COL 26 COLON-ALIGNED F_VonKnr AT ROW 2.52 COL 26 COLON-ALIGNED F_BisKnr AT ROW 2.52 COL 44 COLON-ALIGNED F_VonArtnr AT ROW 3.52 COL 26 COLON-ALIGNED F_BisArtnr AT ROW 3.52 COL 44 COLON-ALIGNED F_VonDatum AT ROW 4.52 COL 26 COLON-ALIGNED F_BisDatum AT ROW 4.52 COL 44 COLON-ALIGNED R_Vertr AT ROW 5.86 COL 28 NO-LABEL T_Monat AT ROW 7.62 COL 28 WIDGET-ID 2 Btn_OK AT ROW 9 COL 28.4 Btn_Cancel AT ROW 9.48 COL 52 RECT-13 AT ROW 1.24 COL 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 74 BY 11.14. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartWindow Allow: Basic,Browse,DB-Fields,Query,Smart,Window Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source Design Page: 1 Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW wProvisionsabrechnung ASSIGN HIDDEN = YES TITLE = "Provisionsabrechnung" HEIGHT = 11.14 WIDTH = 74 MAX-HEIGHT = 48.76 MAX-WIDTH = 256 VIRTUAL-HEIGHT = 48.76 VIRTUAL-WIDTH = 256 RESIZE = no SCROLL-BARS = no STATUS-AREA = no BGCOLOR = ? FGCOLOR = ? THREE-D = yes MESSAGE-AREA = no SENSITIVE = yes. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. /* END WINDOW DEFINITION */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB wProvisionsabrechnung /* ************************* 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 wProvisionsabrechnung VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME fMain FRAME-NAME */ /* SETTINGS FOR FILL-IN F_BisArtnr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisDatum IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisKnr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonArtnr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonDatum IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonKnr IN FRAME fMain 6 */ /* SETTINGS FOR RADIO-SET R_Vertr IN FRAME fMain 6 */ /* SETTINGS FOR TOGGLE-BOX T_Monat IN FRAME fMain 6 */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wProvisionsabrechnung) THEN wProvisionsabrechnung:HIDDEN = yes. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME wProvisionsabrechnung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL wProvisionsabrechnung wProvisionsabrechnung ON END-ERROR OF wProvisionsabrechnung /* Provisionsabrechnung */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL wProvisionsabrechnung wProvisionsabrechnung ON WINDOW-CLOSE OF wProvisionsabrechnung /* Provisionsabrechnung */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Cancel &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel wProvisionsabrechnung ON CHOOSE OF Btn_Cancel IN FRAME fMain /* abbrechen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK wProvisionsabrechnung ON CHOOSE OF Btn_OK IN FRAME fMain /* Excel */ DO: DO WITH FRAME {&FRAME-NAME}: Btn_OK:SENSITIVE = FALSE. Btn_Cancel:SENSITIVE = FALSE. SESSION:SET-WAIT-STATE ('GENERAL'). END. RUN REPORT. DO WITH FRAME {&FRAME-NAME}: Btn_OK:SENSITIVE = TRUE. Btn_Cancel:SENSITIVE = TRUE. SESSION:SET-WAIT-STATE(''). END. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK wProvisionsabrechnung /* *************************** Main Block *************************** */ MaxPage = 1. AktSeite = 1. Progname = ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.') NO-ERROR. SAktiv = DYNAMIC-FUNCTION('getSuperAktiv':U) NO-ERROR. IF SAktiv THEN DO: Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. END. SESSION:DATA-ENTRY-RETURN = TRUE. /* TRIGGERS ------------------------------------------------------ */ ON 'END-ERROR':U OF {&WINDOW-NAME} ANYWHERE DO: RUN ENDE. RETURN NO-APPLY. END. /* Include custom Main Block code for SmartWindows. */ {src/adm2/windowmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects wProvisionsabrechnung _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 disable_UI wProvisionsabrechnung _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. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wProvisionsabrechnung) THEN DELETE WIDGET wProvisionsabrechnung. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject wProvisionsabrechnung PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR wx AS INT NO-UNDO. DEF VAR wy AS INT NO-UNDO. DEF VAR xString AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: RUN COMBO_VERTRETER ( INPUT CB_Vertreter:HANDLE ) NO-ERROR. Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION NO-ERROR. DYNAMIC-FUNCTION('GET_FEHLWERTE':U, INPUT Progname, INPUT Fenster ) NO-ERROR. ASSIGN {&List-6}. END. GET-KEY-VALUE SECTION 'FensterPositionen' KEY Progname VALUE xString. IF xString = ? THEN xString = '30;30'. IF xString = '' THEN xString = '30;30'. wx = INTEGER(ENTRY(1, xString, ';')). wy = INTEGER(ENTRY(2, xString, ';')). IF wx < 0 THEN wx = 1. IF wy < 0 THEN wy = 1. {&WINDOW-NAME}:X = wx. {&WINDOW-NAME}:Y = wy. RUN SUPER. IF SAktiv THEN RUN FENSTER_TITEL ( INPUT {&WINDOW-NAME}:HANDLE ) NO-ERROR. DO WITH FRAME {&FRAME-NAME}: DISPLAY {&List-6}. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI wProvisionsabrechnung _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_Vertreter F_VonKnr F_BisKnr F_VonArtnr F_BisArtnr F_VonDatum F_BisDatum R_Vertr T_Monat WITH FRAME fMain IN WINDOW wProvisionsabrechnung. ENABLE RECT-13 CB_Vertreter F_VonKnr F_BisKnr F_VonArtnr F_BisArtnr F_VonDatum F_BisDatum R_Vertr T_Monat Btn_OK Btn_Cancel WITH FRAME fMain IN WINDOW wProvisionsabrechnung. {&OPEN-BROWSERS-IN-QUERY-fMain} VIEW wProvisionsabrechnung. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE wProvisionsabrechnung PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR wx AS INT NO-UNDO. DEF VAR wy AS INT NO-UNDO. DEF VAR xString AS CHAR NO-UNDO. IF Saktiv THEN RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ). wx = {&WINDOW-NAME}:X NO-ERROR. wy = {&WINDOW-NAME}:Y NO-ERROR. xString = STRING(wx) + ';' + STRING(wy). PUT-KEY-VALUE SECTION 'FensterPositionen' KEY Progname VALUE xString. APPLY "CLOSE":U TO THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject wProvisionsabrechnung PROCEDURE exitObject : /*------------------------------------------------------------------------------ Purpose: Window-specific override of this procedure which destroys its contents and itself. Notes: ------------------------------------------------------------------------------*/ RUN ENDE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KOPF wProvisionsabrechnung PROCEDURE KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER eh AS COM-HANDLE NO-UNDO. DEF VAR Zelle AS CHAR NO-UNDO. DEF VAR ii AS INT INIT 74 NO-UNDO. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = Firma NO-LOCK NO-ERROR. Zelle = 'B1'. eh:Range(Zelle):Select. eh:Selection:VALUE = Steuer.Firma1. Zelle = 'F1'. eh:Range(Zelle):Select. eh:Selection:VALUE = 'Provisionsabrechnung Vertreter'. Zelle = 'J1'. eh:Range(Zelle):Select. eh:Selection:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999'). Zelle = 'B2'. eh:Range(Zelle):Select. eh:Selection:VALUE = Steuer.Ort. Zelle = 'F2'. eh:Range(Zelle):Select. eh:Selection:VALUE = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). Zelle = 'J2'. eh:Range(Zelle):Select. eh:Selection:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). IF NOT T_Monat THEN RETURN. FOR EACH tPerioden BY tPerioden.Periode: Zelle = CHR(ii + tPerioden.Periode) + '3'. eh:Range(Zelle):Select. eh:Selection:VALUE = STRING(tPerioden.Monat,'99') + '.' + STRING(tPerioden.Jahr,'9999'). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT wProvisionsabrechnung PROCEDURE REPORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR VBetrag AS DEC NO-UNDO. DEF VAR VMenge AS DEC NO-UNDO. DEF VAR VLiter AS DEC NO-UNDO. DEF VAR PBetrag AS DEC NO-UNDO. DEF VAR PMenge AS DEC NO-UNDO. DEF VAR PLiter AS DEC NO-UNDO. DEF VAR ABetrag AS DEC NO-UNDO. DEF VAR AMenge AS DEC NO-UNDO. DEF VAR ALiter AS DEC NO-UNDO. DEF VAR Betrag AS DEC NO-UNDO. DEF VAR Menge AS DEC NO-UNDO. DEF VAR Liter AS DEC NO-UNDO. DEF VAR Multi AS DEC NO-UNDO. DEF VAR Wert AS DEC NO-UNDO. DEF VAR Prov AS DEC NO-UNDO. DEF VAR TProv AS DEC NO-UNDO. DEF VAR iMonMax AS INT NO-UNDO. DEF VAR iMon AS INT NO-UNDO. DEF VAR nPTotal AS DEC EXTENT 36 NO-UNDO. DEF VAR nVTotal AS DEC EXTENT 36 NO-UNDO. DEF VAR Bez1 AS CHAR NO-UNDO. DEF VAR Bez2 AS CHAR NO-UNDO. DEF VAR ja AS LOG NO-UNDO. DEF VAR Zelle AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. Vertr = INTEGER(CB_Vertreter:SCREEN-VALUE) NO-ERROR. IF F_VonDatum = ? THEN F_VonDatum = DATE(01,01,YEAR(TODAY)). IF F_BisDatum = ? THEN F_BisDatum = DATE(12,31,YEAR(TODAY)). IF F_BisDatum < F_VonDatum THEN F_BisDatum = F_BisDatum. IF F_VonKnr = 0 AND F_BisKnr = 0 THEN F_BisKnr = 999999. IF F_VonArtnr = 0 AND F_BisArtnr = 0 THEN F_BisArtnr = 999999. IF F_VonKnr > F_BisKnr THEN F_BisKnr = F_VonKnr . IF F_VonArtnr > F_BisArtnr THEN F_BisArtnr = F_VonArtnr. DISPLAY {&List-6}. DYNAMIC-FUNCTION('PUT_FEHLWERTE':U, INPUT Progname, INPUT Fenster) NO-ERROR. END. RUN TEMPFILE_FUELLEN. FIND FIRST TProv NO-LOCK NO-ERROR. IF NOT AVAILABLE TProv THEN DO: MESSAGE 'Keine Daten Selektiert ! ' VIEW-AS ALERT-BOX INFORMATION. RETURN ''. END. cVorlage = 'Provisionsabrechnung.xls'. cDokument = 'Provisionsabrechnung.xls'. cDaten = 'Provisionsabrechnung.txt'. cDateiName = cDokument + CHR(01) + cVorlage. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDokument = RETURN-VALUE. cDateiName = cDaten. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDaten = RETURN-VALUE. OUTPUT TO VALUE(cDaten). FOR EACH TProv USE-INDEX TProv-k2 BREAK BY TProv.Vertr BY TProv.Prov_Summ BY TProv.Artnr BY TProv.Inhalt BY TProv.Jahr : IF FIRST-OF ( TProv.Vertr ) THEN DO: VBetrag = 0. VMenge = 0. VLiter = 0. nVTotal = 0. TProv = 0. FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = Firma AND Tabel.RecArt = 'VERTR' AND Tabel.CodeC = '' AND Tabel.CodeI = TProv.Vertr AND Tabel.Sprcd = 1 NO-LOCK NO-ERROR. PUT CONTROL STRING(TProv.Vertr,'999 '). IF AVAILABLE Tabel THEN PUT CONTROL Tabel.Bez1. ELSE PUT CONTROL '??????????'. PUT CONTROL CHR(10). END. IF FIRST-OF ( TProv.Prov_Summ ) THEN DO: PBetrag = 0. PMenge = 0. PLiter = 0. nPTotal = 0. FIND FIRST ProvSumm USE-INDEX ProvSumm-k1 WHERE ProvSumm.Firma = Firma AND ProvSumm.Prov_Summ = TProv.Prov_Summ NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(TProv.Prov_Summ,'999 '). IF AVAILABLE ProvSumm THEN PUT CONTROL ProvSumm.Bez. ELSE PUT CONTROL '??????????'. PUT CONTROL CHR(10). END. IF FIRST-OF ( TProv.Jahr ) THEN DO: ABetrag = 0. AMenge = 0. ALiter = 0. END. ASSIGN ABetrag = ABetrag + TProv.Netto AMenge = AMenge + TProv.Menge ALiter = ALiter + TProv.Liter. ASSIGN PBetrag = PBetrag + TProv.Netto PMenge = PMenge + TProv.Menge PLiter = PLiter + TProv.Liter. ASSIGN VBetrag = VBetrag + TProv.Netto VMenge = VMenge + TProv.Menge VLiter = VLiter + TProv.Liter. IF NOT LAST-OF ( TProv.Jahr ) THEN NEXT. FIND FIRST Artbez USE-INDEX Artbez-k1 WHERE Artbez.Firma = Firma AND Artbez.Artnr = TProv.Artnr AND Artbez.Inhalt = TProv.Inhalt AND Artbez.Jahr = TProv.Jahr NO-LOCK NO-ERROR. IF AVAILABLE Artbez THEN DO: ASSIGN Bez1 = ArtBez.Bez1 Bez2 = Artbez.Bez2. END. ELSE DO: ASSIGN Bez1 = '??????????' Bez2 = ''. END. ALiter = ALiter / 100. PUT CONTROL '££' STRING(TProv.Artnr ,'999999') '£' STRING(TProv.Inhalt,'9999') '£' STRING(TProv.Jahr ,'9999') '£' Bez1 '£' TRIM(STRING(ABetrag,'->>>>>>>9')) '£' TRIM(STRING(AMenge ,'->>>>>>>9')) '£' TRIM(STRING(ALiter ,'->>>>>>>9')) '£'. IF T_Monat THEN DO: FOR EACH tPerioden BY tPerioden.Periode: FIND FIRST tProvMonat WHERE tProvMonat.Vertr = tProv.Vertr AND tProvMonat.Knr = tProv.Knr AND tProvMonat.Artnr = tProv.Artnr AND tProvMonat.Inhalt = tProv.Inhalt AND tProvMonat.Jahr = tProv.Jahr AND tProvMonat.iJahr = tPerioden.Jahr AND tProvMonat.iMonat = tPerioden.Monat NO-ERROR. IF AVAILABLE tProvMonat THEN DO: CASE TProv.Prov_Art: WHEN 0 THEN Multi = tProvMonat.Menge. WHEN 1 THEN Multi = tProvMonat.Netto. WHEN 2 THEN Multi = tProvMonat.Liter / 100. END CASE. PUT CONTROL '£' TRIM(STRING(Multi,'->>>>>>>>9')). ASSIGN nPTotal[tPerioden.Periode] = nPTotal[tPerioden.Periode] + Multi nVTotal[tPerioden.Periode] = nVTotal[tPerioden.Periode] + Multi. END. ELSE PUT CONTROL '£'. END. END. PUT CONTROL CHR(10). IF Bez2 <> '' THEN PUT CONTROL '£££££' Bez2 CHR(10). IF NOT LAST-OF ( TProv.Prov_Summ ) THEN NEXT. PUT CONTROL '£' CHR(10) '£Total ProvisionssummenGruppe ' STRING(TProv.Prov_Summ,'999') '£££££' TRIM(STRING(PBetrag,'->>>>>>>9')) '£' TRIM(STRING(PMenge ,'->>>>>>>9')) '£' TRIM(STRING(PLiter ,'->>>>>>>9')) '£'. IF T_Monat THEN DO: FOR EACH tPerioden BY tPerioden.Periode: Multi = nPTotal[tPerioden.Periode]. PUT CONTROL '£' TRIM(STRING(Multi,'->>>>>>>>9')). END. END. PUT CONTROL CHR(10). ASSIGN Betrag = 0 Menge = 0 Liter = 0. CASE TProv.Prov_Art: WHEN 0 THEN Menge = PMenge. WHEN 1 THEN Betrag = PBetrag. WHEN 2 THEN Liter = PLiter / 100. END CASE. FIND LAST ProvSumm USE-INDEX ProvSumm-k1 WHERE ProvSumm.Firma = Firma AND ProvSumm.Prov_Summ = TProv.Prov_Summ AND ProvSumm.Menge <= Menge AND ProvSumm.Betrag <= Betrag AND ProvSumm.Inhalt <= Liter NO-LOCK NO-ERROR. IF AVAILABLE ProvSumm THEN Wert = ProvSumm.Prov_Wert. ELSE Wert = 0. CASE TProv.Prov_Art: WHEN 0 THEN Multi = Menge. WHEN 1 THEN Multi = Betrag. WHEN 2 THEN Multi = Liter. END CASE. CASE TProv.Prov_Art: WHEN 0 THEN Prov = Multi * Wert. WHEN 1 THEN Prov = Multi * Wert / 100. WHEN 2 THEN Prov = Multi * Wert. END CASE. TProv = TProv + Prov. PUT CONTROL '£££££' 'Provision' '££' TRIM(STRING(Multi,'->>>>>>>>9.99')) '£' TRIM(STRING(Wert ,'->>>>>>>>9.99')) '£' TRIM(STRING(Prov ,'->>>>>>>>9.99')) CHR(10) '£' CHR(10). IF NOT LAST-OF ( TProv.Vertr ) THEN NEXT. PUT CONTROL 'Total Vertreter/Provision ' '££££££' TRIM(STRING(VBetrag,'->>>>>>>9')) '£' TRIM(STRING(VMenge ,'->>>>>>>9')) '£' TRIM(STRING(VLiter ,'->>>>>>>9')) '£' TRIM(STRING(TProv ,'->>>>>>>9.99')). IF T_Monat THEN DO: FOR EACH tPerioden BY tPerioden.Periode: Multi = nVTotal[tPerioden.Periode]. PUT CONTROL '£' TRIM(STRING(Multi,'->>>>>>>>9')). END. END. PUT CONTROL CHR(10). END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: RUN FEHLER ( INPUT 1035 ). RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: RUN FEHLER ( INPUT 1040 ). DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. Zelle = 'A5'. excelAppl:Range(Zelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEMPFILE_FUELLEN wProvisionsabrechnung PROCEDURE TEMPFILE_FUELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR kVertr AS INT NO-UNDO. DEF VAR Wgr AS INT NO-UNDO. DEF VAR Prov_Summ AS INT NO-UNDO. DEF VAR Prov_Art AS INT NO-UNDO. DEF VAR iJahr AS INT NO-UNDO. DEF VAR iMonat AS INT NO-UNDO. DEF VAR dStart AS DATE NO-UNDO. EMPTY TEMP-TABLE TProv. EMPTY TEMP-TABLE tProvMonat. EMPTY TEMP-TABLE tPerioden. iMaxPer = 1. iJahr = YEAR (F_VonDatum). iMonat = MONTH(F_VonDatum). dStart = F_VonDatum. CREATE tPerioden. ASSIGN tPerioden.Periode = iMaxPer tPerioden.Jahr = iJahr tPerioden.Monat = iMonat. DO WHILE dStart < F_BisDatum: IF MONTH(dStart + 1) = MONTH(dStart) THEN DO: dStart = dStart + 1. NEXT. END. dStart = dStart + 1. iMaxPer = iMaxPer + 1. iJahr = YEAR (dStart). iMonat = MONTH(dStart). CREATE tPerioden. ASSIGN tPerioden.Periode = iMaxPer tPerioden.Jahr = iJahr tPerioden.Monat = iMonat. IF iMaxPer = 36 THEN LEAVE. END. FOR EACH Artbw USE-INDEX Artbw-k10 WHERE Artbw.Firma = Firma AND Artbw.Knr >= F_VonKnr AND Artbw.Knr <= F_BisKnr AND Artbw.Fak_Dat <> ? AND Artbw.Fak_Dat >= F_VonDatum AND Artbw.Fak_Dat <= F_BisDatum AND Artbw.Artnr >= F_VonArtnr AND Artbw.Artnr <= F_BisArtnr AND Artbw.Tr_Art = 01 NO-LOCK BREAK BY Artbw.Knr BY Artbw.Artnr: IF R_Vertr = 1 THEN kVertr = Artbw.Vertr. ELSE DO: IF FIRST-OF ( Artbw.Knr ) THEN kVertr = DYNAMIC-FUNCTION('XGET_VERTRETER':U, INPUT Artbw.Knr) NO-ERROR. END. IF FIRST-OF ( Artbw.Artnr ) THEN Wgr = DYNAMIC-FUNCTION('XGET_WARENGRUPPE':U, INPUT Artbw.Artnr) NO-ERROR. IF kVertr = ? THEN NEXT. IF kVertr <> Vertr THEN NEXT. CREATE TProv. ASSIGN TProv.Vertr = Vertr TProv.Knr = Artbw.Knr TProv.Artnr = Artbw.Artnr TProv.Inhalt = Artbw.Inhalt TProv.Jahr = Artbw.Jahr TProv.Wgr = Wgr TProv.Datum = Artbw.Fak_Dat TProv.Menge = Artbw.Menge TProv.Liter = Artbw.Liter TProv.Netto = Artbw.Net_Betr - Artbw.Auf_Rab - Artbw.Abh_Rab - Artbw.Auf_Sp_Rab. IF Artbw.MWST_Inkl THEN DO: TProv.Netto = TProv.Netto / (100 + Artbw.MWST%) * 100. END. iJahr = YEAR (Artbw.Fak_Dat). iMonat = MONTH(Artbw.Fak_Dat). FIND FIRST tProvMonat WHERE tProvMonat.Vertr = tProv.Vertr AND tProvMonat.Knr = tProv.Knr AND tProvMonat.Artnr = tProv.Artnr AND tProvMonat.Inhalt = tProv.Inhalt AND tProvMonat.Jahr = tProv.Jahr AND tProvMonat.iJahr = iJahr AND tProvMonat.iMonat = iMonat NO-ERROR. IF NOT AVAILABLE tProvMonat THEN DO: CREATE tProvMonat. ASSIGN tProvMonat.Vertr = tProv.Vertr tProvMonat.Knr = tProv.Knr tProvMonat.Artnr = tProv.Artnr tProvMonat.Inhalt = tProv.Inhalt tProvMonat.Jahr = tProv.Jahr tProvMonat.iJahr = iJahr tProvMonat.iMonat = iMonat. END. ASSIGN tProvMonat.Menge = tProvMonat.Menge + tProv.Menge tProvMonat.Liter = tProvMonat.Menge + tProv.Liter tProvMonat.Netto = tProvMonat.Menge + tProv.Netto. END. FOR EACH TProv BREAK BY TProv.Vertr BY TProv.Wgr : IF FIRST-OF ( TProv.Wgr ) THEN DO: FIND ProvTab USE-INDEX ProvTab-k1 WHERE ProvTab.Firma = Firma AND ProvTab.Vertr = TProv.Vertr AND ProvTab.Art_Wgr = TProv.Wgr NO-LOCK NO-ERROR. IF AVAILABLE ProvTab THEN Prov_Summ = ProvTab.Prov_Summ. ELSE Prov_Summ = 999. FIND FIRST ProvSumm USE-INDEX ProvSumm-k1 WHERE ProvSumm.Firma = Firma AND ProvSumm.Prov_Summ = Prov_Summ NO-LOCK NO-ERROR. IF AVAILABLE ProvSumm THEN Prov_Art = ProvSumm.Prov_Art. ELSE Prov_Art = 1. END. ASSIGN TProv.Prov_Summ = Prov_Summ TProv.Prov_Art = Prov_Art. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION XGET_VERTRETER wProvisionsabrechnung FUNCTION XGET_VERTRETER RETURNS INTEGER ( ipKnr AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = ipKnr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN RETURN ?. RETURN Debst.Vertr. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION XGET_WARENGRUPPE wProvisionsabrechnung FUNCTION XGET_WARENGRUPPE RETURNS INTEGER ( ipArtnr AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ FIND FIRST Artst USE-INDEX Artst-k1 WHERE Artst.Firma = Firma AND Artst.Artnr = ipArtnr NO-LOCK NO-ERROR. IF NOT AVAILABLE Artst THEN RETURN ?. RETURN Artst.Wg_Grp. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME