&ANALYZE-SUSPEND _VERSION-NUMBER AB_v9r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME wSkontoabrechnung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS wSkontoabrechnung /*------------------------------------------------------------------------ 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 hData AS HANDLE NO-UNDO. DEF VAR excelAppl AS COM-HANDLE NO-UNDO. DEF VAR VBuchen AS DEC EXTENT 10 NO-UNDO. DEF VAR VAnsatz AS DEC EXTENT 10 NO-UNDO. DEF TEMP-TABLE TWork FIELD MWST% AS DEC FIELD Betrag AS DEC FIELD Skonto AS DEC FIELD Abzug AS DEC INDEX TWork-k1 IS UNIQUE PRIMARY MWST%. /* _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 first Frame and/or Browse and/or first Query */ &Scoped-define FRAME-NAME fMain /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS R_Status Btn_Loeschen Btn_SelLoesch T_Excel ~ Btn_Start Btn_NeuRech T_Verbuchen &Scoped-Define DISPLAYED-OBJECTS R_Status T_Excel T_Verbuchen /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 R_Status T_Excel T_Verbuchen /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR wSkontoabrechnung AS WIDGET-HANDLE NO-UNDO. /* Definitions of handles for SmartObjects */ DEFINE VARIABLE h_b-skontoabrechnung AS HANDLE NO-UNDO. DEFINE VARIABLE h_d-skontoab AS HANDLE NO-UNDO. DEFINE VARIABLE h_dyntoolbar AS HANDLE NO-UNDO. /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Loeschen LABEL "alle löschen" SIZE 21 BY 1.14. DEFINE BUTTON Btn_NeuRech LABEL "neu rechnen" SIZE 21 BY 1.14. DEFINE BUTTON Btn_SelLoesch LABEL "selektierte loeschen" SIZE 21 BY 1.14. DEFINE BUTTON Btn_Start LABEL "Start" SIZE 21 BY 1.14. DEFINE VARIABLE R_Status AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "offene", 0, "abgerechnete", 1 SIZE 38.4 BY 1.33 NO-UNDO. DEFINE VARIABLE T_Excel AS LOGICAL INITIAL no LABEL "Excel" VIEW-AS TOGGLE-BOX SIZE 18.4 BY 1 NO-UNDO. DEFINE VARIABLE T_Verbuchen AS LOGICAL INITIAL no LABEL "Verbuchen" VIEW-AS TOGGLE-BOX SIZE 18.4 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME fMain R_Status AT ROW 1.1 COL 55 NO-LABEL Btn_Loeschen AT ROW 10.52 COL 3 Btn_SelLoesch AT ROW 10.52 COL 27.8 T_Excel AT ROW 10.52 COL 55 Btn_Start AT ROW 10.52 COL 78 Btn_NeuRech AT ROW 10.52 COL 117.4 T_Verbuchen AT ROW 11.52 COL 55 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 140 BY 12.05. /* *********************** 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 wSkontoabrechnung ASSIGN HIDDEN = YES TITLE = "Skontoabrechnung" HEIGHT = 12.05 WIDTH = 140 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 wSkontoabrechnung /* ************************* 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 wSkontoabrechnung VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME fMain */ /* SETTINGS FOR RADIO-SET R_Status IN FRAME fMain 6 */ /* SETTINGS FOR TOGGLE-BOX T_Excel IN FRAME fMain 6 */ /* SETTINGS FOR TOGGLE-BOX T_Verbuchen IN FRAME fMain 6 */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(wSkontoabrechnung) THEN wSkontoabrechnung:HIDDEN = yes. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME wSkontoabrechnung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL wSkontoabrechnung wSkontoabrechnung ON END-ERROR OF wSkontoabrechnung /* Skontoabrechnung */ 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 wSkontoabrechnung wSkontoabrechnung ON WINDOW-CLOSE OF wSkontoabrechnung /* Skontoabrechnung */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Loeschen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Loeschen wSkontoabrechnung ON CHOOSE OF Btn_Loeschen IN FRAME fMain /* alle löschen */ DO: DEF VAR ja AS LOG NO-UNDO INIT FALSE. ja = DYNAMIC-FUNCTION('ANTWORT_NEIN':U, INPUT 1000 ) NO-ERROR. IF NOT Ja THEN DO: APPLY 'U1'. RETURN NO-APPLY. END. FOR EACH SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = 0 TRANSACTION: DELETE SkontoAb. END. DYNAMIC-FUNCTION('SETSTATUS':U IN h_d-skontoab, INPUT R_Status ) NO-ERROR. APPLY 'U1'. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_NeuRech &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_NeuRech wSkontoabrechnung ON CHOOSE OF Btn_NeuRech IN FRAME fMain /* neu rechnen */ DO: RUN 'g-skontorechnen.w':U. DYNAMIC-FUNCTION('SETSTATUS':U IN h_d-skontoab, INPUT R_Status ) NO-ERROR. APPLY 'U1'. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_SelLoesch &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_SelLoesch wSkontoabrechnung ON CHOOSE OF Btn_SelLoesch IN FRAME fMain /* selektierte loeschen */ DO: DEF VAR ja AS LOG NO-UNDO INIT FALSE. DEF VAR Anz AS INT NO-UNDO. Anz = DYNAMIC-FUNCTION('GETANZAHLSELEKTIERT':U IN h_b-skontoabrechnung) NO-ERROR. IF Anz = 0 THEN DO: APPLY 'U1'. RETURN NO-APPLY. END. ja = DYNAMIC-FUNCTION('ANTWORT_NEIN':U, INPUT 1000 ) NO-ERROR. IF NOT Ja THEN DO: APPLY 'U1'. RETURN NO-APPLY. END. RUN LOESCHEN IN h_b-skontoabrechnung. /* DYNAMIC-FUNCTION('SETSTATUS':U IN h_d-skontoab, INPUT R_Status ) NO-ERROR. */ APPLY 'U1'. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Start &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Start wSkontoabrechnung ON CHOOSE OF Btn_Start IN FRAME fMain /* Start */ DO: DO WITH FRAME {&FRAME-NAME}: Btn_Start:SENSITIVE = FALSE. ASSIGN {&List-6}. SESSION:SET-WAIT-STATE('GENERAL'). IF T_Excel THEN RUN EXCEL. SESSION:SET-WAIT-STATE(''). IF T_Verbuchen THEN DO: RUN VERBUCHEN. END. Btn_Start:SENSITIVE = TRUE. APPLY 'U1'. RETURN NO-APPLY. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME R_Status &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL R_Status wSkontoabrechnung ON VALUE-CHANGED OF R_Status IN FRAME fMain DO: R_Status = INTEGER(SELF:SCREEN-VALUE). DYNAMIC-FUNCTION('SETSTATUS':U IN h_d-skontoab, INPUT R_Status ) NO-ERROR. IF R_Status = 0 THEN DO: Btn_Loeschen:SENSITIVE = TRUE. Btn_SelLoesch:SENSITIVE = TRUE. Btn_NeuRech:SENSITIVE = TRUE. Btn_Start:SENSITIVE = TRUE. Btn_Start:LABEL = 'Start'. END. ELSE DO: Btn_Loeschen:SENSITIVE = FALSE. Btn_SelLoesch:SENSITIVE = FALSE. Btn_NeuRech:SENSITIVE = FALSE. Btn_Start:SENSITIVE = TRUE. Btn_Start:LABEL = 'Storno'. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK wSkontoabrechnung /* *************************** Main Block *************************** */ MaxPage = 3. AktSeite = 1. SAktiv = DYNAMIC-FUNCTION('getSuperAktiv':U) NO-ERROR. IF SAktiv THEN DO: Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. END. SESSION:DATA-ENTRY-RETURN = TRUE. SUBSCRIBE TO 'TOOLBAR' ANYWHERE. /* TRIGGERS ------------------------------------------------------ */ ON 'ALT-CURSOR-RIGHT':U OF {&WINDOW-NAME} ANYWHERE DO: RUN NEXTPAGE. RETURN NO-APPLY. END. ON 'ALT-CURSOR-LEFT':U OF {&WINDOW-NAME} ANYWHERE DO: RUN PREVPAGE. RETURN NO-APPLY. END. ON 'U1':U OF {&WINDOW-NAME} ANYWHERE DO: RUN ENTRY_CURSOR. RETURN NO-APPLY. END. ON 'PAGE-DOWN':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'Next':U ). RETURN NO-APPLY. END. ON 'PAGE-UP':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'Prev':U ). RETURN NO-APPLY. END. ON 'ALT-RETURN':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'UPDATE':U ). END. ON 'ALT-INS':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'ADD':U ). END. ON 'ALT-DEL':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'DELETE':U ). END. ON 'ALT-R':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'RESET':U ). END. ON 'F9':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'SAVE':U ). END. ON 'ALT-S':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'SAVE':U ). END. ON 'ALT-K':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN hToolbar ( INPUT 'COPY':U ). END. ON 'CTRL-N':U OF {&WINDOW-NAME} ANYWHERE DO: DEF VAR sRecid AS RECID NO-UNDO. DEF VAR sRowid AS ROWID NO-UNDO. RUN 'g-kundennr.w':U ( OUTPUT sRecid ). IF sRecid = ? THEN RETURN NO-APPLY. FIND Adresse NO-LOCK WHERE RECID(Adresse) = sRecid NO-ERROR. IF NOT AVAILABLE Adresse THEN RETURN NO-APPLY. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. END. FIND FIRST SkontoAb NO-LOCK USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = R_Status AND SkontoAb.Knr = Adresse.Knr NO-ERROR. IF NOT AVAILABLE SkontoAb THEN RETURN NO-APPLY. sRowid = ROWID(SkontoAb). RUN REPOS IN h_d-skontoab ( INPUT sRowid ). APPLY 'U1'. RETURN NO-APPLY. END. ON 'END-ERROR':U OF {&WINDOW-NAME} ANYWHERE DO: FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. IF FMutFlag = FALSE THEN DO: RUN ENDE. RETURN NO-APPLY. END. RUN TOOLBAR IN hToolbar ( INPUT 'CANCEL':U ). 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 wSkontoabrechnung _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: ------------------------------------------------------------------------------*/ DEFINE VARIABLE currentPage AS INTEGER NO-UNDO. ASSIGN currentPage = getCurrentPage(). CASE currentPage: WHEN 1 THEN DO: RUN constructObject ( INPUT 'd-skontoab.wDB-AWARE':U , INPUT FRAME fMain:HANDLE , INPUT 'AppServiceASUsePromptASInfoForeignFieldsRowsToBatch100CheckCurrentChangedyesRebuildOnReposyesServerOperatingModeNONEDestroyStatelessnoDisconnectAppServernoObjectNamed-skontoabUpdateFromSourceno':U , OUTPUT h_d-skontoab ). RUN repositionObject IN h_d-skontoab ( 2.91 , 56.20 ) NO-ERROR. /* Size in AB: ( 1.86 , 10.80 ) */ RUN constructObject ( INPUT 'b-skontoabrechnung.w':U , INPUT FRAME fMain:HANDLE , INPUT 'ScrollRemoteyesNumDown0CalcWidthnoMaxWidth80FetchOnReposToEndyesDataSourceNamesUpdateTargetNamesHideOnInitnoDisableOnInitnoObjectLayout':U , OUTPUT h_b-skontoabrechnung ). RUN repositionObject IN h_b-skontoabrechnung ( 2.52 , 1.00 ) NO-ERROR. RUN resizeObject IN h_b-skontoabrechnung ( 7.62 , 140.00 ) NO-ERROR. RUN constructObject ( INPUT 'src_dlcv91c/adm2/dyntoolbar.w':U , INPUT FRAME fMain:HANDLE , INPUT 'FlatButtonsyesMenunoShowBorderyesToolbaryesActionGroupsNavigationSubModulesTableIOTypeUpdateSupportedLinksNavigation-sourceEdgePixels2PanelTypeToolbarNavigationTargetNameHideOnInitnoDisableOnInitnoObjectLayout':U , OUTPUT h_dyntoolbar ). RUN repositionObject IN h_dyntoolbar ( 1.00 , 1.60 ) NO-ERROR. RUN resizeObject IN h_dyntoolbar ( 1.33 , 46.60 ) NO-ERROR. /* Links to SmartDataObject h_d-skontoab. */ RUN addLink ( h_dyntoolbar , 'Navigation':U , h_d-skontoab ). /* Links to SmartDataBrowser h_b-skontoabrechnung. */ RUN addLink ( h_d-skontoab , 'Data':U , h_b-skontoabrechnung ). RUN addLink ( h_b-skontoabrechnung , 'Update':U , h_d-skontoab ). /* Adjust the tab order of the smart objects. */ END. /* Page 1 */ END CASE. /* Select a Startup page. */ IF currentPage eq 0 THEN RUN selectPage IN THIS-PROCEDURE ( 1 ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE changePage wSkontoabrechnung PROCEDURE changePage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN SUPER. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN addLink ( hToolbar , 'TableIO':U , h_v-auftr ). RUN addLink ( hToolbar , 'Navigation':U , h_d-auftr ). */ RUN ENTRY_CURSOR. END. WHEN 2 THEN DO: RUN ENTRY_CURSOR. END. END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI wSkontoabrechnung _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(wSkontoabrechnung) THEN DELETE WIDGET wSkontoabrechnung. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject wSkontoabrechnung 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. GET-KEY-VALUE SECTION 'FensterPositionen' KEY 'Skontoabrechnung' 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. hToolbar = h_dyntoolbar. IF SAktiv THEN RUN FENSTER_TITEL ( INPUT {&WINDOW-NAME}:HANDLE ) NO-ERROR. IF VALID-HANDLE(hToolbar) THEN DO: RUN SETPROGNAME IN hToolbar ( THIS-PROCEDURE ). RUN setButtons IN hToolbar ( INPUT 'Initial-TableIo':U ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI wSkontoabrechnung _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 R_Status T_Excel T_Verbuchen WITH FRAME fMain IN WINDOW wSkontoabrechnung. ENABLE R_Status Btn_Loeschen Btn_SelLoesch T_Excel Btn_Start Btn_NeuRech T_Verbuchen WITH FRAME fMain IN WINDOW wSkontoabrechnung. {&OPEN-BROWSERS-IN-QUERY-fMain} VIEW wSkontoabrechnung. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE wSkontoabrechnung 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. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. IF AktSeite > 1 THEN DO: RUN selectPage ( INPUT 1 ). RETURN NO-APPLY. END. 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 'Skontoabrechnung' VALUE xString. APPLY "CLOSE":U TO THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_CURSOR wSkontoabrechnung PROCEDURE ENTRY_CURSOR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U). CASE AktSeite: /* WHEN 1 THEN DO: */ /* IF FMutFlag THEN RUN applyEntry IN h_v- ( INPUT ? ). */ /* ELSE RUN applyEntry IN h_b- ( INPUT ? ). */ /* END. */ WHEN 1 THEN RUN applyEntry IN h_b-skontoabrechnung ( INPUT ? ). /* WHEN 2 THEN RUN applyEntry IN h_f-adrkomm ( INPUT ? ). */ /* WHEN 3 THEN RUN applyEntry IN h_b-auftbb ( INPUT ? ). */ /* WHEN 4 THEN RUN applyEntry IN h_b-aufdet ( INPUT ? ). */ /* WHEN 5 THEN RUN applyEntry IN h_b-aufstreu ( INPUT ? ). */ /* WHEN 6 THEN RUN applyEntry IN h_b-auffak ( INPUT ? ). */ /* WHEN 7 THEN RUN applyEntry IN h_b-position ( INPUT ? ). */ END CASE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL wSkontoabrechnung PROCEDURE EXCEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cParameter AS CHAR NO-UNDO. DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR cDatei AS CHAR NO-UNDO. DEF VAR io AS LOG NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF VAR i1 AS INT NO-UNDO. DEF VAR AnzZeilen AS INT NO-UNDO. DEF VAR Zelle AS CHAR NO-UNDO. DEF VAR VTotal AS DEC EXTENT 10 NO-UNDO. DEF VAR Rundbetr AS DEC DECIMALS 4 NO-UNDO. DEF VAR Firma AS CHAR NO-UNDO. DEF VAR AdFirma AS CHAR NO-UNDO. DEF VAR Knr AS INT NO-UNDO. DEF VAR Sko_Sta AS INT NO-UNDO. DEF VAR VonDatum AS DATE NO-UNDO. Firma = DYNAMIC-FUNCTION('GETMANDANT':U ) NO-ERROR. AdFirma = DYNAMIC-FUNCTION('GETADMANDANT':U) NO-ERROR. DO WITH FRAME {&FRAME-NAME}: cParameter = 'Skonto.xls' + CHR(01) + 'SkontoVorlage.xls' + CHR(01) + ''. RUN CREATEDATEI ( INPUT cParameter ). cDatei = RETURN-VALUE. cDaten = SESSION:TEMP-DIR + 'Skonto.txt'. RUN GETSKONTODATEN IN h_b-skontoabrechnung. IF RETURN-VALUE = 'ERROR' THEN RETURN. Sko_Sta = INTEGER(ENTRY(2, RETURN-VALUE, CHR(01))). Knr = INTEGER(ENTRY(3, RETURN-VALUE, CHR(01))). VonDatum = DATE (ENTRY(4, RETURN-VALUE, CHR(01))). FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Adresse THEN RETURN. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = Firma NO-LOCK NO-ERROR. FIND FIRST SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr = Knr AND SkontoAb.VonDatum = VonDatum NO-LOCK NO-ERROR. IF NOT AVAILABLE SkontoAb THEN RETURN. OUTPUT TO VALUE(cDaten). DO ix = 1 TO 12: CASE ix: WHEN 1 THEN PUT CONTROL Steuer.Firma1. WHEN 2 THEN PUT CONTROL Steuer.Firma2. WHEN 3 THEN PUT CONTROL Steuer.Strasse. WHEN 4 THEN PUT CONTROL Steuer.Ort. END CASE. PUT CONTROL '££££££' Adresse.Anschrift[ix] CHR(10). END. PUT CONTROL '£' CHR(10) 'Skonto-Abrechnung' CHR(10) '£' CHR(10). PUT CONTROL 'MWSt-Nr.: ' Steuer.MWST_Nr '££££££' 'Kunden-Nr.: ' STRING(Adresse.Knr,'999999') CHR(10) Steuer.Ort ', ' STRING(TODAY,'99.99.9999') '££££££' 'Zeitraum : ' STRING(SkontoAb.VonDatum,'99.99.9999') ' - ' STRING(SkontoAb.BisDatum,'99.99.9999') CHR(10) '£' CHR(10). PUT CONTROL '£Faktura£Skonto£Anzahl Tg£Rechnungs£Skonto£Zahlungs' '£Skonto£Skonto£Skonto' CHR(10) '£Nummer£berecht.£zu Skonto£Datum£Datum£Datum£berecht' '£Netto£abgez.' CHR(10) '£' CHR(10). FOR EACH TWork: DELETE TWork. END. AnzZeilen = 0. FOR EACH SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr = Knr AND SkontoAb.VonDatum = VonDatum AND SkontoAb.Netto <> 0 NO-LOCK BREAK BY SkontoAb.Knr BY SkontoAb.Faknr : IF FIRST-OF ( SkontoAb.Faknr ) THEN DO: ASSIGN VTotal[01] = 0 VTotal[02] = 0 VTotal[03] = 0 VTotal[04] = 0 VTotal[05] = 0. END. Rundbetr = SkontoAb.Netto * SkontoAb.Sko_Proz / 100. VTotal[01] = VTotal[01] + SkontoAb.Netto. VTotal[03] = VTotal[03] + SkontoAb.Sko_Abzug. IF SkontoAb.Berechtigt THEN DO: VTotal[02] = VTotal[02] + Rundbetr. END. FIND TWork USE-INDEX TWork-k1 WHERE TWork.MWST% = SkontoAb.MWST-% NO-ERROR. IF NOT AVAILABLE TWork THEN DO: CREATE TWork. ASSIGN TWork.MWST% = SkontoAb.MWST-%. END. TWork.Betrag = TWork.Betrag + SkontoAb.Netto. TWork.Abzug = TWork.Abzug + SkontoAb.Sko_Abzug. IF SkontoAb.Berechtigt THEN DO: TWork.Skonto = TWork.Skonto + Rundbetr. END. IF NOT LAST-OF ( SkontoAb.Faknr ) THEN NEXT. PUT CONTROL '£' STRING(SkontoAb.Faknr ,'999999') '£' STRING(SkontoAb.Berechtigt ,'J/N') '£' STRING(SkontoAb.Anz_Tage ,'->>9') '£' STRING(SkontoAb.Fak_Datum ,'99.99.9999') '£' STRING(SkontoAb.Sko_Datum ,'99.99.9999') '£'. IF SkontoAb.Zah_Datum <> ? THEN PUT CONTROL STRING(SkontoAb.Zah_Datum ,'99.99.9999'). PUT CONTROL '£' STRING(VTotal[01] ,'->>,>>9.99') '£'. IF SkontoAb.Berechtig = TRUE THEN PUT CONTROL STRING(VTotal[02],'->>,>>9.99'). PUT CONTROL '£'. IF VTotal[03] <> 0 THEN PUT CONTROL STRING(VTotal[03],'->>,>>9.99'). VTotal[07] = VTotal[07] + VTotal[02]. VTotal[08] = VTotal[08] + VTotal[03]. PUT CONTROL CHR(10). AnzZeilen = AnzZeilen + 1. END. PUT CONTROL '£' CHR(10) 'Total Skonto Netto££££££££' STRING(VTotal[07],'->>>,>>9.99') '£' STRING(VTotal[08],'->>>,>>9.99') CHR(10) '£' CHR(10). VTotal = 0. VBuchen = 0. VAnsatz = 0. i1 = 0. FOR EACH TWork BREAK BY TWork.MWST%: VTotal[01] = VTotal[01] + TWork.Betrag. VTotal[02] = VTotal[02] + TWork.Skonto. VTotal[03] = VTotal[03] + TWork.Abzug. IF NOT LAST-OF ( TWork.MWST% ) THEN NEXT. i1 = i1 + 1. VBuchen[i1] = VTotal[02] - VTotal[03]. VAnsatz[i1] = TWork.MWST%. PUT CONTROL 'Mehrwertsteuer ' STRING(TWork.MWST%,'>9.99%') '££££££' STRING(VTotal[02] ,'->>>,>>9.99') '£' STRING(VTotal[03] ,'->>>,>>9.99') '£'. Rundbetr = VTotal[02] - VTotal[03]. VTotal[09] = VTotal[09] + Rundbetr. PUT CONTROL STRING(Rundbetr ,'->>>,>>9.99') '£'. Rundbetr = Rundbetr * TWork.MWST% / 100. VTotal[10] = VTotal[10] + Rundbetr. PUT CONTROL STRING(Rundbetr ,'->>>,>>9.99') CHR(10). VTotal[01] = 0. VTotal[02] = 0. VTotal[03] = 0. END. Rundbetr = VTotal[09] + VTotal[10]. RUN RUNDEN ( INPUT 1, INPUT-OUTPUT Rundbetr ). PUT CONTROL CHR(10) 'Total Skonto/Mehrwertsteuer-Guthaben' '££££££££' STRING(VTotal[09] ,'->>>,>>9.99') '£' STRING(VTotal[10] ,'->>>,>>9.99') CHR(10) 'Skontogutschrift inkl. Mehrwertsteuer' '£££££££££' STRING(Rundbetr ,"->>>,>>9.99") CHR(10). excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: RUN FEHLER ( INPUT 1035 ). RETURN NO-APPLY. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDatei, INPUT '', OUTPUT io ). IF NOT io THEN DO: RUN FEHLER ( INPUT 1040 ). RETURN NO-APPLY. END. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:Application:RUN ( 'DateiEinfügen' ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. Zelle = 'A' + STRING(AnzZeilen + 21 + 2) + ':J' + STRING(AnzZeilen + 21 + 2). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:Font:Bold = TRUE. Zelle = 'A' + STRING(AnzZeilen + 21 + 7) + ':J' + STRING(AnzZeilen + 21 + 7). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:Font:Bold = TRUE. Zelle = 'A' + STRING(AnzZeilen + 21 + 8) + ':J' + STRING(AnzZeilen + 21 + 8). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:Font:Bold = TRUE. Zelle = 'G' + STRING(AnzZeilen + 21 + 2) + ':J' + STRING(AnzZeilen + 21 + 8). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:HorizontalAlignment = -4152. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject wSkontoabrechnung 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 NEXTPAGE wSkontoabrechnung PROCEDURE NEXTPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = MaxPage THEN AktSeite = 1. ELSE AktSeite = AktSeite + 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PREVPAGE wSkontoabrechnung PROCEDURE PREVPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = 1 THEN AktSeite = MaxPage. ELSE AktSeite = AktSeite - 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE selectPage wSkontoabrechnung PROCEDURE selectPage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER piPageNum AS INT NO-UNDO. DEF VAR FMutFlag AS LOG NO-UNDO. DEF VAR MutProg AS CHAR NO-UNDO. FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. DO WHILE TRUE: IF NOT FMutFlag THEN LEAVE. MutProg = DYNAMIC-FUNCTION('GETMUTPROG':U). IF MutProg <> THIS-PROCEDURE:FILE-NAME THEN LEAVE. RETURN NO-APPLY. END. CASE piPageNum: END CASE. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN removeLink ( hToolbar , 'TableIO':U , h_v-auftr ). */ /* RUN removeLink ( hToolbar , 'Navigation':U , h_d-auftr ). */ END. END CASE. RUN SUPER( INPUT piPageNum). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TOOLBAR wSkontoabrechnung PROCEDURE TOOLBAR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER pcAction AS CHAR NO-UNDO. IF VALID-HANDLE(hToolbar) THEN RUN TOOLBAR IN hToolbar ( INPUT pcAction ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN wSkontoabrechnung PROCEDURE VERBUCHEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR Firma AS CHAR NO-UNDO. DEF VAR AdFirma AS CHAR NO-UNDO. DEF VAR Knr AS INT NO-UNDO. DEF VAR Sko_Sta AS INT NO-UNDO. DEF VAR VonDatum AS DATE NO-UNDO. DEF VAR VTotal AS DEC EXTENT 10 NO-UNDO. DEF VAR Rundbetr AS DEC DECIMALS 4 NO-UNDO. DEF VAR cParam AS CHAR NO-UNDO. DEF VAR i1 AS INT NO-UNDO. DEF VAR iFaktor AS INT NO-UNDO. DEF VAR fStorno AS LOG NO-UNDO. Firma = DYNAMIC-FUNCTION('GETMANDANT':U ) NO-ERROR. AdFirma = DYNAMIC-FUNCTION('GETADMANDANT':U) NO-ERROR. RUN GETSKONTODATEN IN h_b-skontoabrechnung. IF RETURN-VALUE = 'ERROR' THEN RETURN. Sko_Sta = INTEGER(ENTRY(2, RETURN-VALUE, CHR(01))). Knr = INTEGER(ENTRY(3, RETURN-VALUE, CHR(01))). VonDatum = DATE (ENTRY(4, RETURN-VALUE, CHR(01))). iFaktor = IF Btn_Start:LABEL IN FRAME {&FRAME-NAME} = 'Storno' THEN -1 ELSE 1. fStorno = IF iFaktor < 0 THEN TRUE ELSE FALSE. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Adresse THEN RETURN. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = Firma NO-LOCK NO-ERROR. FIND FIRST SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr = Knr AND SkontoAb.VonDatum = VonDatum NO-LOCK NO-ERROR. IF NOT AVAILABLE SkontoAb THEN RETURN. FOR EACH TWork: DELETE TWork. END. FOR EACH SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr = Knr AND SkontoAb.VonDatum = VonDatum AND SkontoAb.Netto <> 0 NO-LOCK: Rundbetr = SkontoAb.Netto * SkontoAb.Sko_Proz / 100. FIND TWork USE-INDEX TWork-k1 WHERE TWork.MWST% = SkontoAb.MWST-% NO-ERROR. IF NOT AVAILABLE TWork THEN DO: CREATE TWork. ASSIGN TWork.MWST% = SkontoAb.MWST-%. END. TWork.Betrag = TWork.Betrag + SkontoAb.Netto. TWork.Abzug = TWork.Abzug + SkontoAb.Sko_Abzug. IF SkontoAb.Berechtigt THEN DO: TWork.Skonto = TWork.Skonto + Rundbetr. END. END. VTotal = 0. VBuchen = 0. VAnsatz = 0. i1 = 0. FOR EACH TWork BREAK BY TWork.MWST%: VTotal[01] = VTotal[01] + TWork.Betrag. VTotal[02] = VTotal[02] + TWork.Skonto. VTotal[03] = VTotal[03] + TWork.Abzug. IF NOT LAST-OF ( TWork.MWST% ) THEN NEXT. i1 = i1 + 1. VBuchen[i1] = (VTotal[02] - VTotal[03]) * iFaktor. VAnsatz[i1] = TWork.MWST%. ASSIGN VTotal[01] = 0 VTotal[02] = 0 VTotal[03] = 0 VTotal[04] = 0 VTotal[05] = 0. END. cParam = ''. cParam = STRING(Knr ,'999999') + CHR(01) + STRING(VonDatum ,'99.99.9999') + CHR(01) + STRING(VBuchen[01] ,'zzzzzzzz9.99-') + CHR(01) + STRING(VAnsatz[01] ,'zzzzzzzzz.99-') + CHR(01) + STRING(VBuchen[02] ,'zzzzzzzz9.99-') + CHR(01) + STRING(VAnsatz[02] ,'zzzzzzzzz.99-') + CHR(01) + STRING(VBuchen[03] ,'zzzzzzzz9.99-') + CHR(01) + STRING(VAnsatz[03] ,'zzzzzzzzz.99-') + CHR(01) + STRING(VBuchen[04] ,'zzzzzzzz9.99-') + CHR(01) + STRING(VAnsatz[04] ,'zzzzzzzzz.99-'). RUN 'g-skontobuchen.w':U ( cParam, fStorno ). FIND FIRST SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr = Knr AND SkontoAb.VonDatum = VonDatum NO-LOCK NO-ERROR. IF AVAILABLE SkontoAb THEN RETURN. DYNAMIC-FUNCTION('openQuery':U IN h_d-skontoab ) NO-ERROR. FIND FIRST SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta AND SkontoAb.Knr > Knr NO-LOCK NO-ERROR. IF AVAILABLE SkontoAb THEN DO: RUN REPOS IN h_d-skontoab ( INPUT ROWID(SkontoAb) ). APPLY 'U1'. RETURN NO-APPLY. END. FIND LAST SkontoAb USE-INDEX SkontoAb-k1 WHERE SkontoAb.Firma = Firma AND SkontoAb.Sko_Sta = Sko_Sta NO-LOCK NO-ERROR. IF AVAILABLE SkontoAb THEN DO: RUN REPOS IN h_d-skontoab ( INPUT ROWID(SkontoAb) ). END. APPLY 'U1'. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject wSkontoabrechnung PROCEDURE viewObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN SUPER. RUN ENTRY_CURSOR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME