&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &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 GlobKon AS CHARACTER INIT '9999' NO-UNDO. DEFINE VARIABLE GlobFir AS CHARACTER INIT '1000' NO-UNDO. DEFINE VARIABLE GlobFil AS CHARACTER INIT '0000' NO-UNDO. DEFINE VARIABLE DBFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE D1Firma AS CHARACTER NO-UNDO. DEFINE VARIABLE D2Firma AS CHARACTER NO-UNDO. DEFINE VARIABLE ADFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE FBFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE NRFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE Frw AS CHARACTER NO-UNDO. DEFINE VARIABLE Liste AS INTEGER NO-UNDO. DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO. DEFINE VARIABLE cDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cZelle AS CHARACTER NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE cAdresse AS CHARACTER NO-UNDO. DEFINE VARIABLE aRecid AS RECID NO-UNDO. DEFINE TEMP-TABLE tSelektion FIELD Sort-1 AS CHARACTER FIELD Sort-2 AS CHARACTER FIELD Sort-3 AS CHARACTER FIELD Id AS RECID FIELD Knr AS INTEGER FIELD Adresse AS CHARACTER FIELD KurzAdr AS CHARACTER FIELD Faknr AS INTEGER FIELD Datum AS DATE FIELD Konto AS CHARACTER FIELD Frw AS CHARACTER FIELD Betrag AS DECIMAL INDEX tSelektion-k1 AS PRIMARY Sort-1 Sort-2 Sort-3 . DEFINE TEMP-TABLE tRekap FIELD RecArt AS CHARACTER FIELD Feld AS CHARACTER FIELD Ansatz AS DECIMAL FIELD Inkl AS LOG FIELD Betrag AS DECIMAL FIELD Betrag_Frw AS DECIMAL FIELD Skonto AS DECIMAL FIELD Skonto_Frw AS DECIMAL FIELD MwstPfli AS DECIMAL FIELD MwstBetr AS DECIMAL INDEX tRekap-k1 AS PRIMARY RecArt Feld. DEFINE TEMP-TABLE tInterf NO-UNDO LIKE Interf. DEFINE TEMP-TABLE TZeile NO-UNDO FIELD Nummer AS INTEGER FIELD Feld AS CHARACTER EXTENT 16 INDEX TZeile-k1 IS PRIMARY UNIQUE Nummer. DEFINE BUFFER BZeile FOR TZeile. /* _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 /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES Debfa /* Definitions for FRAME fMain */ &Scoped-define QUERY-STRING-fMain FOR EACH Debfa NO-LOCK &Scoped-define OPEN-QUERY-fMain OPEN QUERY fMain FOR EACH Debfa NO-LOCK. &Scoped-define TABLES-IN-QUERY-fMain Debfa &Scoped-define FIRST-TABLE-IN-QUERY-fMain Debfa /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-8 RECT-9 F_VonKnr F_BisKnr F_VonFaknr ~ F_BisFaknr F_VonDatum F_BisDatum F_VonBetrag F_BisBetrag F_VonKonto ~ F_BisKonto CB_Frw T_perData R_Sort Btn_Faktura Btn_Zahlung Btn_Umsatz ~ Btn_OP &Scoped-Define DISPLAYED-OBJECTS F_VonKnr F_BisKnr F_VonFaknr F_BisFaknr ~ F_VonDatum F_BisDatum F_VonBetrag F_BisBetrag F_VonKonto F_BisKonto CB_Frw ~ T_perData R_Sort /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 F_VonKnr F_BisKnr F_VonFaknr F_BisFaknr F_VonDatum ~ F_BisDatum F_VonBetrag F_BisBetrag F_VonKonto F_BisKonto T_perData R_Sort /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Faktura IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/exit.bmp":U LABEL "F" SIZE 8 BY 1.91. DEFINE BUTTON Btn_OP IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/exit.bmp":U LABEL "O" SIZE 8 BY 1.91. DEFINE BUTTON Btn_Umsatz IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/exit.bmp":U LABEL "U" SIZE 8 BY 1.91. DEFINE BUTTON Btn_Zahlung IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/exit.bmp":U LABEL "Z" SIZE 8 BY 1.91. DEFINE VARIABLE CB_Frw AS CHARACTER FORMAT "X(256)":U LABEL "Währungen" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 49 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisBetrag AS DECIMAL FORMAT "zzz,zzz,zz9.99-" INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 23 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_BisDatum AS DATE FORMAT "99.99.9999" LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_BisFaknr AS INTEGER FORMAT "9999999" INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_BisKnr AS INTEGER FORMAT "999999" INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_BisKonto AS CHARACTER FORMAT "x(12)" LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 23 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_VonBetrag AS DECIMAL FORMAT "zzz,zzz,zz9.99-" INITIAL 0 LABEL "Betrag" VIEW-AS FILL-IN NATIVE SIZE 23 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_VonDatum AS DATE FORMAT "99.99.9999" LABEL "Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_VonFaknr AS INTEGER FORMAT "9999999" INITIAL 0 LABEL "Fakturanummer" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_VonKnr AS INTEGER FORMAT "999999" INITIAL 0 LABEL "Kundennummer" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_VonKonto AS CHARACTER FORMAT "x(12)" LABEL "FibuKonto" VIEW-AS FILL-IN NATIVE SIZE 23 BY 1 BGCOLOR 15 . DEFINE VARIABLE R_Sort AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Rechnungsnummer", 1, "Kundennummer", 2, "Suchbegriff", 3, "Datum", 4 SIZE 49 BY 3 NO-UNDO. DEFINE RECTANGLE RECT-8 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 100 BY 16.19. DEFINE RECTANGLE RECT-9 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 100 BY 3.81. DEFINE VARIABLE T_perData AS LOGICAL INITIAL NO LABEL "Saldo per Data (OP-Liste (bis Fakruradatum))" VIEW-AS TOGGLE-BOX SIZE 49 BY 1 NO-UNDO. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY fMain FOR Debfa SCROLLING. &ANALYZE-RESUME /* ************************ Frame Definitions *********************** */ DEFINE FRAME fMain F_VonKnr AT ROW 1.52 COL 28 COLON-ALIGNED F_BisKnr AT ROW 1.52 COL 54 COLON-ALIGNED F_VonFaknr AT ROW 2.52 COL 28 COLON-ALIGNED F_BisFaknr AT ROW 2.52 COL 54 COLON-ALIGNED F_VonDatum AT ROW 3.52 COL 28 COLON-ALIGNED F_BisDatum AT ROW 3.52 COL 54 COLON-ALIGNED F_VonBetrag AT ROW 4.52 COL 28 COLON-ALIGNED F_BisBetrag AT ROW 4.52 COL 54 COLON-ALIGNED F_VonKonto AT ROW 5.57 COL 28 COLON-ALIGNED F_BisKonto AT ROW 5.57 COL 54 COLON-ALIGNED CB_Frw AT ROW 6.52 COL 28 COLON-ALIGNED T_perData AT ROW 7.52 COL 30 R_Sort AT ROW 9.48 COL 30 NO-LABELS Btn_Faktura AT ROW 14 COL 10 Btn_Zahlung AT ROW 14 COL 30 Btn_Umsatz AT ROW 14 COL 50 Btn_OP AT ROW 14 COL 70 "Offene Posten" VIEW-AS TEXT SIZE 15.4 BY .95 AT ROW 16.1 COL 68 "Mehrwertsteuerjournal" VIEW-AS TEXT SIZE 20.2 BY .95 AT ROW 16.1 COL 46 "Zahlungsjournal" VIEW-AS TEXT SIZE 16 BY .95 AT ROW 16.1 COL 26 "Fakturajournal" VIEW-AS TEXT SIZE 16 BY .95 AT ROW 16.1 COL 6 RECT-8 AT ROW 1.24 COL 2 RECT-9 AT ROW 9.14 COL 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 102 BY 16.67. /* *********************** 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 COMPILE */ /* 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 = 16.81 WIDTH = 103. /* 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 fMain NOT-VISIBLE FRAME-NAME */ ASSIGN FRAME fMain:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_BisBetrag IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisDatum IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisFaknr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisKnr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_BisKonto IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonBetrag IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonDatum IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonFaknr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonKnr IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_VonKonto IN FRAME fMain 6 */ /* SETTINGS FOR RADIO-SET R_Sort IN FRAME fMain 6 */ /* SETTINGS FOR TOGGLE-BOX T_perData IN FRAME fMain 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain /* Query rebuild information for FRAME fMain _TblList = "AnaDat.Debfa" _Options = "" _Query is NOT OPENED */ /* FRAME fMain */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME Btn_Faktura &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Faktura fFrameWin ON CHOOSE OF Btn_Faktura IN FRAME fMain /* F */ DO: Liste = 1. RUN REPORT. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OP &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OP fFrameWin ON CHOOSE OF Btn_OP IN FRAME fMain /* O */ DO: Liste = 4. RUN REPORT. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Umsatz &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Umsatz fFrameWin ON CHOOSE OF Btn_Umsatz IN FRAME fMain /* U */ DO: Liste = 3. RUN REPORT. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Zahlung &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Zahlung fFrameWin ON CHOOSE OF Btn_Zahlung IN FRAME fMain /* Z */ DO: Liste = 2. RUN REPORT. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_BisKnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_BisKnr fFrameWin ON ALT-F OF F_BisKnr IN FRAME fMain /* - */ DO: RUN g-such-debit.w ( INPUT 0, OUTPUT cAdresse ). IF cAdresse = '' THEN RETURN NO-APPLY. SELF:SCREEN-VALUE = STRING(INTEGER(ENTRY(3, cAdresse, CHR(01)))). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_VonKnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_VonKnr fFrameWin ON ALT-F OF F_VonKnr IN FRAME fMain /* Kundennummer */ DO: RUN g-such-debit.w ( INPUT 0, OUTPUT cAdresse ). IF cAdresse = '' THEN RETURN NO-APPLY. SELF:SCREEN-VALUE = STRING(INTEGER(ENTRY(3, cAdresse, CHR(01)))). F_BisKnr:SCREEN-VALUE = SELF:SCREEN-VALUE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin /* *************************** Main Block *************************** */ SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR. IF SAktiv THEN DO: D1Firma = DYNAMIC-FUNCTION('getMandant':U ) NO-ERROR. AdFirma = DYNAMIC-FUNCTION('getAdMandant':U ) NO-ERROR. FBFirma = DYNAMIC-FUNCTION('getFBMandant':U ) NO-ERROR. END. &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 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 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. ------------------------------------------------------------------------------*/ DISPLAY F_VonKnr F_BisKnr F_VonFaknr F_BisFaknr F_VonDatum F_BisDatum F_VonBetrag F_BisBetrag F_VonKonto F_BisKonto CB_Frw T_perData R_Sort WITH FRAME fMain. ENABLE RECT-8 RECT-9 F_VonKnr F_BisKnr F_VonFaknr F_BisFaknr F_VonDatum F_BisDatum F_VonBetrag F_BisBetrag F_VonKonto F_BisKonto CB_Frw T_perData R_Sort Btn_Faktura Btn_Zahlung Btn_Umsatz Btn_OP WITH FRAME fMain. {&OPEN-BROWSERS-IN-QUERY-fMain} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FAKTURA_JOURNAL fFrameWin PROCEDURE FAKTURA_JOURNAL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE GTotal AS DECIMAL EXTENT 5 NO-UNDO. DEFINE VARIABLE Cd AS INTEGER NO-UNDO. DEFINE VARIABLE Ans AS DECIMAL NO-UNDO. DEFINE VARIABLE nMwst AS DECIMAL NO-UNDO. cVorlage = 'FakturaJournal.xls'. cDokument = 'FakturaJournal.xls'. cDaten = 'FakturaJournal.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) NO-MAP NO-CONVERT. GTotal = 0. FOR EACH tSelektion USE-INDEX tSelektion-k1 NO-LOCK: FIND Debfa WHERE RECID(Debfa) = tSelektion.id NO-LOCK. FIND Debop USE-INDEX Debop-k1 WHERE Debop.Firma = Debfa.Firma AND Debop.Knr = Debfa.Knr AND Debop.Faknr = Debfa.Faknr NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(Debfa.Knr ,'999999') '£' tSelektion.Adresse '££' STRING(Debfa.Faknr ,'9999999') '£' STRING(Debfa.FakDat ,'99.99.9999') '£' STRING(Debfa.Faellig ,'99.99.9999') '£' Debfa.Kte '£' Debfa.Frw '£' TRIM(STRING(Debfa.Kurs ,'zzzz9.9999')) '£' TRIM(STRING(Debfa.Fakbetr_Frw,'->>>>>>>>9.99')) '£' TRIM(STRING(Debfa.Fakbetr ,'->>>>>>>>9.99')) '£' Debfa.Konto '£' CHR(10). GTotal[01] = GTotal[01] + Debfa.Fakbetr_Frw. GTotal[02] = GTotal[02] + Debfa.Fakbetr . FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto' AND tRekap.Feld = Debfa.Konto NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Konto' tRekap.Feld = Debfa.Konto. END. ASSIGN tRekap.Betrag = tRekap.Betrag + Debfa.FakBetr tRekap.Betrag_Frw = tRekap.Betrag_Frw + Debfa.FakBetr_Frw. FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw' AND tRekap.Feld = Debfa.Frw NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Frw' tRekap.Feld = Debfa.Frw. END. ASSIGN tRekap.Betrag = tRekap.Betrag + Debfa.FakBetr tRekap.Betrag_Frw = tRekap.Betrag_Frw + Debfa.FakBetr_Frw. DO ix = 1 TO 11: IF Debfa.FakWpfl[ix] = 0 THEN NEXT. FIND LAST MWSTAns NO-LOCK WHERE MWSTAns.MWST_Cd = ix AND MWSTAns.Datum <= Debfa.Fakdat NO-ERROR. cFeld = STRING(ix,'99 ') + STRING(Debop.FakWPro[ix],'99.99'). FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'MWST' AND tRekap.Feld = cFeld NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'MWST' tRekap.Feld = cFeld tRekap.Inkl = MWSTAns.Incl. END. IF MWSTAns.Incl THEN nMwst = Debfa.FakWpfl[ix] * MWSTAns.Ansatz / (100 + MWSTAns.Ansatz). ELSE nMwst = Debfa.FakWust[ix]. ASSIGN tRekap.MwstPfli = tRekap.MwstPfli + Debfa.FakWpfl[ix] - (IF MWSTAns.Incl THEN nMwst ELSE 0.00) tRekap.MwstBetr = tRekap.MwstBetr + nMwst. END. END. PUT CONTROL '£' CHR(10). PUT CONTROL '£££Gesamttotal£' '££££££' TRIM(STRING(GTotal[01],'->>>>>>>>9.99')) '£' TRIM(STRING(GTotal[02],'->>>>>>>>9.99')) CHR(10). PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto': IF ja THEN PUT CONTROL '£££Kontorekapitulation£'. ELSE PUT CONTROL '££££'. PUT CONTROL '££££££' TRIM(STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99')) '£' TRIM(STRING(tRekap.Betrag ,'->>>>>>>>9.99')) '£' tRekap.Feld CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw': IF ja THEN PUT CONTROL '£££Rekapitulation nach Währung£'. ELSE PUT CONTROL '££££'. PUT CONTROL '££££' tRekap.Feld '££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '£' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10) '£' CHR(10) '£££MWSt-Rekapitulation££££Ansatz£££Ums netto£Steuer' CHR(10). GTotal = 0. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'MWST': Cd = INTEGER(SUBSTRING(tRekap.Feld,01,02)). Ans = DECIMAL(SUBSTRING(tRekap.Feld,04,05)). cString = STRING(Cd ,'99') + ' / ' + STRING(Ans,'zz9.99% '). IF tRekap.Inkl THEN cString = cString + ' inkl'. ELSE cString = cString + ' exkl'. IF tRekap.MwstBetr = 0 THEN DO: tRekap.MwstBetr = tRekap.MwstPfli * Ans / (100 + Ans). tRekap.MwstBetr = tRekap.MwstBetr - tRekap.MwstBetr. END. GTotal[01] = GTotal[01] + tRekap.MwstPfli. GTotal[02] = GTotal[02] + tRekap.MwstBetr. PUT CONTROL '£££££££' cString '£££' STRING(tRekap.MwstPfli ,'->>>>>>>>9.99') '£' STRING(tRekap.MwstBetr ,'->>>>>>>>9.99') CHR(10). END. PUT CONTROL '£££Gesamttotal£' '££££££' STRING(GTotal[01],'->>>>>>>>9.99') '£' STRING(GTotal[02],'->>>>>>>>9.99') CHR(10). OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('createExcel':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1035) NO-ERROR. RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1040) NO-ERROR. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. cZelle = 'A6'. excelAppl:Range(cZelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfuegen' ). RUN KOPF. cZelle = 'A1'. excelAppl:Range(cZelle):SELECT. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. 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 cValue AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: IF sAktiv THEN RUN COMBO_FRW (CB_Frw:HANDLE) NO-ERROR. CB_Frw:LIST-ITEM-PAIRS = 'Alle' + ';' + '...' + ';' + CB_Frw:LIST-ITEM-PAIRS. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Knr' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '000000;999999'. F_VonKnr = INTEGER(ENTRY(1, cValue, ';')) NO-ERROR. F_BisKnr = INTEGER(ENTRY(2, cValue, ';')) NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Faknr' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '0000000;9999999'. F_VonFaknr = INTEGER(ENTRY(1, cValue, ';')) NO-ERROR. F_BisFaknr = INTEGER(ENTRY(2, cValue, ';')) NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Datum' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '01.01.0001;31.12.9999'. F_VonDatum = DATE (ENTRY(1, cValue, ';')) NO-ERROR. F_BisDatum = DATE (ENTRY(2, cValue, ';')) NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Betrag' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '-999999999.99;999999999.99'. F_VonBetrag = DECIMAL(ENTRY(1, cValue, ';')) NO-ERROR. F_BisBetrag = DECIMAL(ENTRY(2, cValue, ';')) NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Konto' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = ';zzzzzzzzzzzz'. F_VonKonto = ENTRY(1, cValue, ';') NO-ERROR. F_BisKonto = ENTRY(2, cValue, ';') NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Frw' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '...'. CB_Frw:SCREEN-VALUE = cValue NO-ERROR. GET-KEY-VALUE SECTION 'FwDebJournale' KEY 'Sort' VALUE cValue. IF cValue = ? THEN cValue = ''. IF cValue = '' THEN cValue = '1'. R_Sort = INTEGER(cValue) NO-ERROR. END. RUN SUPER. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KOPF fFrameWin PROCEDURE KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FIND Steuer NO-LOCK USE-INDEX Steuer-k1 WHERE Steuer.Firma = D1Firma NO-ERROR. DO WHILE Liste = 1: cZelle = 'A1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Firma1. cZelle = 'E1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Fakturajournal'. cZelle = 'M1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999'). cZelle = 'A2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Ort. cZelle = 'E2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). cZelle = 'M2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). LEAVE. END. DO WHILE Liste = 2: cZelle = 'A1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Firma1. cZelle = 'E1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Zahlungsjournal'. cZelle = 'N1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999'). cZelle = 'A2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Ort. cZelle = 'E2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). cZelle = 'N2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). LEAVE. END. DO WHILE Liste = 3: cZelle = 'A1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Firma1. cZelle = 'H1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'MwSt-Journal'. cZelle = 'P1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999'). cZelle = 'A2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Ort. cZelle = 'H2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). cZelle = 'P2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). LEAVE. END. DO WHILE Liste = 4: cZelle = 'A1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Firma1. cZelle = 'K1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Offene Posten'. cZelle = 'S1'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999'). cZelle = 'A2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = Steuer.Ort. cZelle = 'K2'. excelAppl:Range(cZelle):Select. IF T_perData THEN DO: excelAppl:Selection:VALUE = 'Saldo per : ' + STRING(F_BisDatum,'99.99.9999'). END. ELSE DO: excelAppl:Selection:VALUE = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). END. cZelle = 'S2'. excelAppl:Range(cZelle):Select. excelAppl:Selection:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). LEAVE. END. excelAppl:Columns("A:A"):Select. excelAppl:Selection:ColumnWidth = 0.2. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OFFENE_POSTEN fFrameWin PROCEDURE OFFENE_POSTEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE GTotal AS DECIMAL EXTENT 5 NO-UNDO. DEFINE VARIABLE Cd AS INTEGER NO-UNDO. DEFINE VARIABLE Ans AS DECIMAL NO-UNDO. DEFINE VARIABLE SaldoBas AS DECIMAL NO-UNDO. DEFINE VARIABLE SaldoFrw AS DECIMAL NO-UNDO. DEFINE VARIABLE ZahlBas AS DECIMAL NO-UNDO. DEFINE VARIABLE ZahlFrw AS DECIMAL NO-UNDO. DEFINE VARIABLE SkonBas AS DECIMAL NO-UNDO. DEFINE VARIABLE SkonFrw AS DECIMAL NO-UNDO. DEFINE VARIABLE cAdresse AS CHARACTER NO-UNDO. DEFINE VARIABLE fOffen AS LOG NO-UNDO. DEFINE VARIABLE FDatum AS DATE NO-UNDO. DEFINE VARIABLE ZDatum AS DATE NO-UNDO. DEFINE VARIABLE AnzTg AS INTEGER NO-UNDO. DEFINE VARIABLE AnzHist AS INTEGER NO-UNDO. DEFINE VARIABLE cStern AS CHARACTER NO-UNDO. DEFINE VARIABLE HTotal AS DECIMAL NO-UNDO. DEFINE VARIABLE MTotal AS DECIMAL NO-UNDO. DEFINE VARIABLE HonMed AS LOG FORMAT "H/M" NO-UNDO. cVorlage = 'OffenePosten.xls'. cDokument = 'OffenePosten.xls'. cDaten = 'OffenePosten.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) NO-MAP NO-CONVERT. GTotal = 0. HTotal = 0. MTotal = 0. IF T_perData THEN FDatum = F_BisDatum. ELSE FDatum = TODAY. FOR EACH tSelektion USE-INDEX tSelektion-k1 NO-LOCK BREAK BY tSelektion.Sort-1 BY tSelektion.Sort-2: FIND Debop WHERE RECID(Debop) = tSelektion.id NO-LOCK. IF FIRST-OF ( tSelektion.Sort-2 ) THEN DO: FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Debop.Firma AND Debst.Knr = Debop.Knr NO-LOCK NO-ERROR. cAdresse = STRING(Debst.Knr,'999999 ') + tSelektion.Adresse. fOffen = FALSE. END. ZahlBas = 0. ZahlFrw = 0. SkonBas = 0. SkonFrw = 0. IF T_perData THEN DO: ASSIGN ZDatum = ? AnzHist = 0. FOR EACH Debhi USE-INDEX Debhi-k3 WHERE Debhi.Firma = Debop.Firma AND Debhi.Knr = Debop.Knr AND Debhi.Faknr = Debop.Faknr AND Debhi.Datum <= F_BisDatum /* AND NOT Debhi.Kte BEGINS 'KDI' */ NO-LOCK: AnzHist = AnzHist + 1. IF Debhi.Soll <> 0 THEN NEXT. ZahlBas = ZahlBas + Debhi.Haben . ZahlFrw = ZahlFrw + Debhi.Haben_Frw . SkonBas = SkonBas + Debhi.Skonto . SkonFrw = SkonFrw + Debhi.Skonto_Frw. IF ZDatum = ? OR ZDatum < Debhi.Datum THEN ZDatum = Debhi.Datum. END. IF AnzHist = 0 THEN DO: FOR EACH Debza USE-INDEX Debza-k1 WHERE Debza.Firma = Debop.Firma AND Debza.Knr = Debop.Knr AND Debza.Faknr = Debop.Faknr AND Debza.ZahDat <= F_BisDatum NO-LOCK: AnzHist = AnzHist + 1. ZahlBas = ZahlBas + Debza.ZahBetr . ZahlFrw = ZahlFrw + Debza.ZahBetr_Frw . SkonBas = SkonBas + Debza.Skonto . SkonFrw = SkonFrw + Debza.Skonto_Frw. IF ZDatum = ? OR ZDatum < Debza.ZahDat THEN ZDatum = Debza.ZahDat. END. END. IF AnzHist = 0 THEN ASSIGN SaldoBas = Debop.Saldo SaldoFrw = Debop.Saldo_Frw. ELSE ASSIGN SaldoBas = Debop.Fakbetr - ZahlBas - SkonBas SaldoFrw = Debop.Fakbetr_Frw - ZahlFrw - SkonFrw. END. ELSE DO: ZDatum = Debop.ZahDat . ZahlBas = Debop.ZahBetr . ZahlFrw = Debop.Zahbetr_FRW. SkonBas = Debop.Skonto . SkonFrw = Debop.Skonto_FRW . SaldoBas = Debop.Saldo . SaldoFrw = Debop.Saldo_Frw . /* IF ZahlBas <> 0 THEN SkonBas = SkonFrw * (ZahlBas / ZahlFrw). */ END. IF SaldoBas = 0 THEN DO: IF LAST-OF ( tSelektion.Sort-2 ) AND fOffen THEN PUT CONTROL '£' CHR(10) '£' CHR(10). NEXT. END. IF cAdresse <> '' THEN DO: PUT CONTROL cAdresse '££££££££££££' STRING(Debst.Saldo_Frw,'->>>>>>>>9.99') '££££' STRING(Debst.Saldo ,'->>>>>>>>9.99') CHR(10). cAdresse = ''. END. AnzTg = FDatum - Debop.Faellig. IF AnzTg < 0 THEN AnzTg = 0. AnzTg = AnzTg + 29. AnzTg = (AnzTg - (AnzTg MOD 30)) / 30. cStern = FILL('*', AnzTg ). cStern = TRIM(SUBSTRING(cStern,01,05)). PUT CONTROL '£' STRING(Debop.Faknr ,'9999999') '£' STRING(Debop.FakDat ,'99.99.9999') '£' STRING(Debop.Faellig ,'99.99.9999') '£'. IF ZDatum <> ? THEN PUT CONTROL STRING(ZDatum,'99.99.9999'). PUT CONTROL '££'. PUT CONTROL Debop.Kte '£'. PUT CONTROL Debop.Frw '£' STRING(Debop.Kurs ,'zzzz9.9999') '£' STRING(Debop.Fakbetr_Frw,'->>>>>>>>9.99') '£' STRING(ZahlFrw ,'->>>>>>>>9.99') '£' STRING(SkonFrw ,'->>>>>>>>9.99') '£' STRING(SaldoFrw ,'->>>>>>>>9.99') '£' STRING(Debop.Fakbetr ,'->>>>>>>>9.99') '£' STRING(ZahlBas ,'->>>>>>>>9.99') '£' STRING(SkonBas ,'->>>>>>>>9.99') '£' STRING(SaldoBas ,'->>>>>>>>9.99') '£' Debop.Konto '£' cStern '£' CHR(10). IF HonMed THEN HTotal = HTotal + SaldoBas. ELSE MTotal = MTotal + SaldoBas. GTotal[01] = GTotal[01] + SaldoFrw. GTotal[02] = GTotal[02] + SaldoBas. fOffen = TRUE. FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto' AND tRekap.Feld = Debop.Konto NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Konto' tRekap.Feld = Debop.Konto. END. ASSIGN tRekap.Betrag = tRekap.Betrag + SaldoBas tRekap.Betrag_Frw = tRekap.Betrag_Frw + SaldoFrw. FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw' AND tRekap.Feld = Debop.Frw NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Frw' tRekap.Feld = Debop.Frw. END. ASSIGN tRekap.Betrag = tRekap.Betrag + SaldoBas tRekap.Betrag_Frw = tRekap.Betrag_Frw + SaldoFrw. FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Stern' AND tRekap.Feld = cStern NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Stern' tRekap.Feld = cStern. END. ASSIGN tRekap.Betrag = tRekap.Betrag + SaldoBas tRekap.Betrag_Frw = tRekap.Betrag_Frw + SaldoFrw. IF LAST-OF ( tSelektion.Sort-2 ) AND fOffen THEN PUT CONTROL '£' CHR(10) '£' CHR(10). END. PUT CONTROL '£££££Gesamttotal£££££££' STRING(GTotal[01],'->>>>>>>>9.99') '££££' STRING(GTotal[02],'->>>>>>>>9.99') CHR(10). PUT CONTROL '£' CHR(10). PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto': IF ja THEN PUT CONTROL '£££££Kontorekapitulation£'. ELSE PUT CONTROL '££££££'. PUT CONTROL '££££££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '££££' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' tRekap.Feld CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw': IF ja THEN PUT CONTROL '£££££Rekapitulation nach Währung£'. ELSE PUT CONTROL '££££££'. PUT CONTROL '££££££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '££££' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' tRekap.Feld CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Stern': IF ja THEN PUT CONTROL '£££££Rekapitulation nach Fälligkeit£'. ELSE PUT CONTROL '££££££'. IF tRekap.Feld = '' THEN cFeld = 'nicht fällig'. ELSE DO: ix = ((LENGTH(tRekap.Feld) - 1) * 30) + 1. IF LENGTH(tRekap.Feld) < 5 THEN DO: cFeld = STRING(ix,'>>>>9') + ' - ' + STRING(LENGTH(tRekap.Feld) * 30) + ' Tage'. END. ELSE DO: cFeld = 'ueber ' + STRING(ix,'>>>>9') + ' Tage'. END. END. PUT CONTROL '££££' cFeld '££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '££££' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' tRekap.Feld CHR(10). ja = FALSE. END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('createExcel':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1035) NO-ERROR. RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1040) NO-ERROR. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. cZelle = 'A6'. excelAppl:Range(cZelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfuegen' ). RUN KOPF. cZelle = 'A1'. excelAppl:Range(cZelle):SELECT. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT fFrameWin PROCEDURE REPORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cKey AS CHARACTER NO-UNDO. DEFINE VARIABLE cKnr AS CHARACTER NO-UNDO. DEFINE VARIABLE cFaknr AS CHARACTER NO-UNDO. DEFINE VARIABLE cDatum AS CHARACTER NO-UNDO. DEFINE VARIABLE cBetrag AS CHARACTER NO-UNDO. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO. DEFINE VARIABLE cFrw AS CHARACTER NO-UNDO. DEFINE VARIABLE cSuchbe AS CHARACTER NO-UNDO. DEFINE VARIABLE cAdresse AS CHARACTER NO-UNDO. DEFINE VARIABLE cKurzAdr AS CHARACTER NO-UNDO. DEFINE VARIABLE sKnr AS CHARACTER NO-UNDO. DEFINE VARIABLE sFaknr AS CHARACTER NO-UNDO. DEFINE VARIABLE sDatum AS CHARACTER NO-UNDO. DEFINE VARIABLE sBetrag AS CHARACTER NO-UNDO. DEFINE VARIABLE sKonto AS CHARACTER NO-UNDO. DEFINE VARIABLE sFrw AS CHARACTER NO-UNDO. DEFINE VARIABLE qHandle AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE bHandle AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE dHandle AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE fHandle AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE sSelektion AS CHARACTER NO-UNDO. DEFINE VARIABLE fErst AS LOG NO-UNDO. DO WITH FRAME {&FRAME-NAME}: Btn_Faktura :SENSITIVE = FALSE. Btn_Zahlung :SENSITIVE = FALSE. Btn_Umsatz :SENSITIVE = FALSE. Btn_OP :SENSITIVE = FALSE. END. SESSION:SET-WAIT-STATE('GENERAL'). RUN SELEKTION. CASE Liste: WHEN 1 THEN DO: cDatei = 'Debfa'. cKnr = 'Debfa.Knr'. cFaknr = 'Debfa.Faknr'. cDatum = 'Debfa.FakDat'. cBetrag = 'Debfa.FakBetr_Frw'. cKonto = 'Debfa.Konto'. cFrw = 'Debfa.Frw'. CASE R_Sort: WHEN 1 THEN cKey = 'Debfa-k2'. WHEN 2 THEN cKey = 'Debfa-k1'. WHEN 3 THEN cKey = 'Debfa-k1'. WHEN 4 THEN cKey = 'Debfa-k3'. END CASE. END. WHEN 2 THEN DO: cDatei = 'Debza'. cKnr = 'Debza.Knr'. cFaknr = 'Debza.Faknr'. cDatum = 'Debza.ZahDat'. cBetrag = 'Debza.ZahBetr_Frw'. cKonto = 'Debza.Konto'. cFrw = 'Debza.Frw'. CASE R_Sort: WHEN 1 THEN cKey = 'Debza-k2'. WHEN 2 THEN cKey = 'Debza-k1'. WHEN 3 THEN cKey = 'Debza-k1'. WHEN 4 THEN cKey = 'Debza-k3'. END CASE. END. WHEN 3 THEN DO: cDatei = 'Debwu'. cKnr = 'Debwu.Knr'. cFaknr = 'Debwu.Faknr'. cDatum = 'Debwu.Datum'. cBetrag = 'Debwu.Betrag_Frw'. cKonto = 'Debwu.Konto'. cFrw = 'Debwu.Frw'. CASE R_Sort: WHEN 1 THEN cKey = 'Debwu-k2'. WHEN 2 THEN cKey = 'Debwu-k1'. WHEN 3 THEN cKey = 'Debwu-k1'. WHEN 4 THEN cKey = 'Debwu-k3'. END CASE. END. WHEN 4 THEN DO: cDatei = 'Debop'. cKnr = 'Debop.Knr'. cFaknr = 'Debop.Faknr'. cDatum = 'Debop.FakDat'. cBetrag = 'Debop.Fakbetr_Frw'. cKonto = 'Debop.Konto'. cFrw = 'Debop.Frw'. IF R_Sort = 1 THEN R_Sort = 2. IF R_Sort = 4 THEN R_Sort = 2. CASE R_Sort: WHEN 2 THEN cKey = 'Debop-k1'. WHEN 3 THEN cKey = 'Debop-k1'. END CASE. END. END CASE. CREATE QUERY qHandle. CREATE BUFFER bHandle FOR TABLE cDatei. qHandle:SET-BUFFERS(bHandle). sSelektion = 'FOR EACH ' + cDatei + ' USE-INDEX ' + cKey + ' WHERE ' + cDatei + '.Firma = "' + D1Firma + '" ' + ' AND ' + cKnr + ' >= ' + STRING(F_VonKnr) + ' AND ' + cKnr + ' <= ' + STRING(F_BisKnr) + ' AND ' + cFaknr + ' >= ' + STRING(F_VonFaknr) + ' AND ' + cFaknr + ' <= ' + STRING(F_BisFaknr) + ' AND ' + cDatum + ' >= ' + STRING(F_VonDatum) + ' AND ' + cDatum + ' <= ' + STRING(F_BisDatum) + ' AND ' + cBetrag + ' >= ' + STRING(F_VonBetrag) + ' AND ' + cBetrag + ' <= ' + STRING(F_BisBetrag) + ' AND ' + cKonto + ' >= "' + F_VonKonto + '"' + ' AND ' + cKonto + ' <= "' + F_BisKonto + '"' + ' AND ' + cFrw + ' BEGINS "' + Frw + '"' + ' NO-LOCK: '. qHandle:QUERY-PREPARE(sSelektion). qHandle:QUERY-OPEN(). EMPTY TEMP-TABLE tSelektion. EMPTY TEMP-TABLE tRekap . fErst = TRUE. REPEAT: IF fErst THEN qHandle:GET-FIRST(NO-LOCK). ELSE qHandle:GET-NEXT (NO-LOCK). IF qHandle:QUERY-OFF-END THEN LEAVE. dHandle = qHandle:GET-BUFFER-HANDLE(). cFeld = ENTRY(2, cKnr , '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sKnr = fHandle:BUFFER-VALUE(). cFeld = ENTRY(2, cFaknr , '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sFaknr = fHandle:BUFFER-VALUE(). cFeld = ENTRY(2, cDatum , '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sDatum = fHandle:BUFFER-VALUE(). cFeld = ENTRY(2, cBetrag, '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sBetrag = fHandle:BUFFER-VALUE(). cFeld = ENTRY(2, cKonto , '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sKonto = fHandle:BUFFER-VALUE(). cFeld = ENTRY(2, cFrw , '.'). fHandle = dHandle:BUFFER-FIELD(cFeld). sFrw = fHandle:BUFFER-VALUE(). CREATE tSelektion. ASSIGN tSelektion.id = dHandle:RECID tSelektion.Knr = INTEGER(sKnr) tSelektion.Faknr = INTEGER(sFaknr) tSelektion.Datum = DATE (sDatum) tSelektion.Betrag = DECIMAL(sBetrag) tSelektion.Konto = sKonto tSelektion.Frw = sFrw. fErst = FALSE. END. qHandle:QUERY-CLOSE(). DELETE OBJECT bHandle. DELETE OBJECT qHandle. FOR EACH tSelektion BREAK BY tSelektion.Knr: IF FIRST-OF ( tSelektion.Knr ) THEN DO: FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tSelektion.Knr NO-LOCK. cSuchbe = Adresse.Suchbe. cAdresse = Adresse.Anzeig_Br. IF Adresse.Firma1 <> '' THEN DO: cKurzAdr = TRIM(Adresse.Firma1 + ' ' + Adresse.Firma2). END. ELSE DO: cKurzAdr = TRIM(Adresse.Name + ' ' + Adresse.Vorname). END. cKurzAdr = cKurzAdr + ', ' + Adresse.Lkz + ' ' + Adresse.Plz + ' ' + Adresse.Ort. END. ASSIGN tSelektion.Adresse = cAdresse tSelektion.KurzAdr = cKurzAdr. CASE R_Sort: WHEN 1 THEN ASSIGN tSelektion.Sort-1 = STRING(tSelektion.Faknr,'9999999') tSelektion.Sort-3 = STRING(tSelektion.Knr ,'999999'). WHEN 2 THEN ASSIGN tSelektion.Sort-1 = STRING(tSelektion.Knr ,'999999') tSelektion.Sort-3 = STRING(tSelektion.Faknr,'9999999'). WHEN 3 THEN ASSIGN tSelektion.Sort-1 = cSuchbe tSelektion.Sort-2 = STRING(tSelektion.Knr ,'999999') tSelektion.Sort-3 = STRING(tSelektion.Faknr,'9999999'). WHEN 4 THEN ASSIGN tSelektion.Sort-1 = STRING(INTEGER(tSelektion.Datum),'99999999') tSelektion.Sort-2 = STRING(tSelektion.Knr ,'999999') tSelektion.Sort-3 = STRING(tSelektion.Faknr,'9999999'). END CASE. END. DO WHILE TRUE: FIND FIRST tSelektion NO-ERROR. IF NOT AVAILABLE tSelektion THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1112) NO-ERROR. LEAVE. END. CASE Liste: WHEN 1 THEN RUN FAKTURA_JOURNAL. WHEN 2 THEN RUN ZAHLUNGS_JOURNAL. WHEN 3 THEN RUN UMSATZSTEUER_JOURNAL. WHEN 4 THEN RUN OFFENE_POSTEN. END CASE. LEAVE. END. DO WITH FRAME {&FRAME-NAME}: Btn_Faktura :SENSITIVE = TRUE . Btn_Zahlung :SENSITIVE = TRUE . Btn_Umsatz :SENSITIVE = TRUE . Btn_OP :SENSITIVE = TRUE . SESSION:SET-WAIT-STATE(''). APPLY 'ENTRY' TO F_VonKnr. RETURN NO-APPLY. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SELEKTION fFrameWin PROCEDURE SELEKTION : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. Frw = CB_Frw:SCREEN-VALUE. IF F_VonKnr = 0 AND F_BisKnr = 0 THEN F_BisKnr = 999999. IF F_BisKnr < F_VonKnr THEN F_BisKnr = F_VonKnr. IF F_VonFaknr = 0 AND F_BisFaknr = 0 THEN F_BisFaknr = 9999999. IF F_BisFaknr < F_VonFaknr THEN F_BisFaknr = F_VonFaknr. IF F_VonDatum = ? AND F_BisDatum = ? THEN ASSIGN F_VonDatum = DATE('01/01/1901') F_BisDatum = DATE('12/31/9999'). IF F_BisDatum < F_VonDatum THEN F_BisDatum = F_VonDatum. IF F_VonKonto = '' AND F_BisKonto = '' THEN F_BisKonto = 'zzzzzzzzzzzz'. IF F_BisKonto < F_VonKonto THEN F_BisKonto = F_VonKonto. IF Frw = '...' THEN Frw = ''. DISPLAY {&List-6}. DO WITH FRAME {&FRAME-NAME}: PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Knr' VALUE F_VonKnr:SCREEN-VALUE + ';' + F_BisKnr:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Faknr' VALUE F_VonFaknr:SCREEN-VALUE + ';' + F_BisFaknr:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Datum' VALUE F_VonDatum:SCREEN-VALUE + ';' + F_BisDatum:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Betrag' VALUE F_VonBetrag:SCREEN-VALUE + ';' + F_BisBetrag:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Konto' VALUE F_VonKonto:SCREEN-VALUE + ';' + F_BisKonto:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Frw' VALUE CB_Frw:SCREEN-VALUE NO-ERROR. PUT-KEY-VALUE SECTION 'FwDebJournale' KEY 'Sort' VALUE R_Sort:SCREEN-VALUE NO-ERROR. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMSATZSTEUER_JOURNAL fFrameWin PROCEDURE UMSATZSTEUER_JOURNAL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE GTotal AS DECIMAL EXTENT 5 NO-UNDO. DEFINE VARIABLE Cd AS INTEGER NO-UNDO. DEFINE VARIABLE Ans AS DECIMAL NO-UNDO. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO. DEFINE VARIABLE cInkl AS CHARACTER NO-UNDO. DEFINE VARIABLE fErst AS LOG NO-UNDO. DEFINE VARIABLE xx AS INTEGER NO-UNDO. DEFINE VARIABLE nMwst AS DECIMAL NO-UNDO. DEFINE BUFFER BRekap FOR tRekap. cVorlage = 'MwStJournal.xls'. cDokument = 'MwStJournal.xls'. cDaten = 'MwStJournal.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) NO-MAP NO-CONVERT. GTotal = 0. FOR EACH tSelektion USE-INDEX tSelektion-k1 NO-LOCK: FIND Debwu WHERE RECID(Debwu) = tSelektion.id NO-LOCK. FIND Debop USE-INDEX Debop-k1 WHERE Debop.Firma = Debwu.Firma AND Debop.Knr = Debwu.Knr AND Debop.Faknr = Debwu.Faknr NO-LOCK NO-ERROR. cString = Debwu.Konto. fErst = TRUE. xx = 0. EMPTY TEMP-TABLE TZeile . EMPTY TEMP-TABLE tInterf. FOR EACH Interf NO-LOCK USE-INDEX Interf-k1 WHERE Interf.Firma = FBFirma AND Interf.TrNr1 = Debwu.TrNr1 AND Interf.TrNr2 = Debwu.TrNr2 AND Interf.BEBU = 0 : /* AND Interf.BEBU_Art = 0 : */ /* AND Interf.MWST_Art < 5 */ /* AND (Interf.Kto2 BEGINS '1' OR */ /* Interf.Kto2 BEGINS '2'): */ CREATE tInterf. BUFFER-COPY Interf TO tInterf. END. xx = xx + 1. CREATE TZeile. ASSIGN TZeile.Nummer = xx TZeile.Feld[01] = STRING(Debwu.Knr,'999999') TZeile.Feld[02] = tSelektion.KurzAdr TZeile.Feld[04] = STRING(Debwu.Faknr,'9999999') TZeile.Feld[05] = STRING(Debwu.Datum,'99.99.9999') TZeile.Feld[06] = Debwu.Frw TZeile.Feld[07] = TRIM(STRING(Debwu.Kurs,'zzzz9.9999')) TZeile.Feld[08] = TRIM(STRING(Debwu.Betrag_Frw,'->>>>>>>>9.99')) TZeile.Feld[09] = TRIM(STRING(Debwu.Betrag ,'->>>>>>>>9.99')). DO ix = 1 TO 11: IF Debwu.Wustpfl[ix] = 0 THEN NEXT. IF NOT fErst THEN DO: FIND BZeile WHERE BZeile.Nummer = 1. xx = xx + 1. CREATE TZeile. BUFFER-COPY BZeile EXCEPT Nummer TO TZeile ASSIGN TZeile.Nummer = xx TZeile.Feld[08] = '' TZeile.Feld[09] = '' TZeile.Feld[15] = ''. END. ASSIGN TZeile.Feld[10] = TRIM(STRING(Debwu.WustPfl[ix],'->>>>>>>>9.99')) TZeile.Feld[11] = TRIM(STRING(Debwu.Wust [ix],'->>>>>>>>9.99')) TZeile.Feld[12] = TRIM(STRING(ix,'z9')) TZeile.Feld[13] = cString. FIND FIRST tInterf NO-ERROR. IF AVAILABLE tInterf THEN DO: ASSIGN TZeile.Feld[13] = tInterf.Kto1 TZeile.Feld[14] = tInterf.Kto2 TZeile.Feld[15] = TRIM(STRING(tInterf.Betrag_Frw,'->>>>>>>>>9.99')). DELETE tInterf. END. fErst = FALSE. GTotal[03] = GTotal[03] + Debwu.Wustpfl[ix]. GTotal[04] = GTotal[04] + Debwu.Wust [ix]. cString = ''. END. FOR EACH tInterf: FIND BZeile WHERE BZeile.Nummer = 1 NO-ERROR. xx = xx + 1. CREATE TZeile. BUFFER-COPY BZeile EXCEPT Nummer TO TZeile ASSIGN TZeile.Nummer = xx TZeile.Feld[08] = '' TZeile.Feld[09] = '' TZeile.Feld[10] = '' TZeile.Feld[11] = '' TZeile.Feld[12] = '' TZeile.Feld[13] = '' TZeile.Feld[14] = '' TZeile.Feld[15] = ''. ASSIGN TZeile.Feld[13] = tInterf.Kto1 TZeile.Feld[14] = tInterf.Kto2 TZeile.Feld[15] = STRING(tInterf.Betrag_Frw,'->>>>>>>>>9.99'). DELETE tInterf. END. FOR EACH TZeile: PUT CONTROL '£' TZeile.Feld[01] '£' TZeile.Feld[02] '£' TZeile.Feld[03] '£' TZeile.Feld[04] '£' TZeile.Feld[05] '£' TZeile.Feld[06] '£' TZeile.Feld[07] '£' TZeile.Feld[08] '£' TZeile.Feld[09] '£' TZeile.Feld[10] '£' TZeile.Feld[11] '£' TZeile.Feld[12] '£' TZeile.Feld[13] '£' TZeile.Feld[14] '£' TZeile.Feld[15] CHR(10). END. GTotal[01] = GTotal[01] + Debwu.Betrag_Frw. GTotal[02] = GTotal[02] + Debwu.Betrag . DO ix = 1 TO 11: IF Debwu.Wustpfl[ix] = 0 THEN NEXT. cFeld = STRING(ix,'99 ') + STRING(Debop.FakWPro[ix],'99.99'). FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'MWST' AND tRekap.Feld = cFeld NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'MWST' tRekap.Feld = cFeld tRekap.Inkl = Debop.Fakincl[ix]. END. IF Debop.Fakincl[ix] THEN nMwst = Debwu.Wustpfl[ix] * Debop.FakWPro[ix] / (100 + Debop.FakWPro[ix]). ELSE nMwst = Debwu.Wust [ix]. ASSIGN tRekap.MwstPfli = tRekap.MwstPfli + Debwu.Wustpfl[ix] - (IF tRekap.Inkl THEN nMwst ELSE 0.00) tRekap.MwstBetr = tRekap.MwstBetr + nMwst. END. END. FOR EACH tRekap WHERE tRekap.RecArt = 'MWST': Cd = INTEGER(SUBSTRING(tRekap.Feld,01,02)). Ans = DECIMAL(SUBSTRING(tRekap.Feld,03,05)). FIND LAST MWStAns USE-INDEX MWStAns-k1 WHERE MWStAns.MWST_Cd = Cd AND MWSTAns.Datum <= TODAY NO-LOCK NO-ERROR. cFeld = STRING(Cd ,'99') + STRING(MWSTAns.Konto,'x(12)') + STRING(Ans ,'99.99') + STRING(MWSTAns.incl ,'j/n'). FIND FIRST BRekap USE-INDEX tRekap-k1 WHERE BRekap.RecArt = 'MWSTKTO' AND BRekap.Feld = cFeld NO-ERROR. IF NOT AVAILABLE BRekap THEN DO: CREATE BRekap. ASSIGN BRekap.RecArt = 'MWSTKTO' BRekap.Feld = cFeld. END. ASSIGN BRekap.MwstPfli = BRekap.MwstPfli + tRekap.MwstPfli BRekap.MwstBetr = BRekap.MwstBetr + tRekap.MwstBetr. END. PUT CONTROL '£££Gesamttotal£' '££££' STRING(GTotal[01],'->>>>>>>>9.99') '£' STRING(GTotal[02],'->>>>>>>>9.99') '£' STRING(GTotal[03],'->>>>>>>>9.99') '£' STRING(GTotal[04],'->>>>>>>>9.99') CHR(10). PUT CONTROL '£' CHR(10) '£' CHR(10). GTotal = 0. ja = TRUE. /* FOR EACH tRekap USE-INDEX tRekap-k1 */ /* WHERE tRekap.RecArt = 'MWST': */ /* IF ja THEN PUT CONTROL '£££MwSt-Rekapitulation£'. */ /* ELSE PUT CONTROL '££££'. */ /* Cd = INTEGER(SUBSTRING(tRekap.Feld,01,02)). */ /* Ans = DECIMAL(SUBSTRING(tRekap.Feld,04,05)). */ /* cString = STRING(Cd ,'z9') */ /* + ' / ' */ /* + STRING(Ans,'zz9.99% '). */ /* IF tRekap.MwstBetr = 0 THEN cString = cString + ' inkl'. */ /* ELSE cString = cString + ' exkl'. */ /* IF tRekap.MwstBetr = 0 THEN DO: */ /* tRekap.MwstBetr = tRekap.MwstPfli * Ans / (100 + Ans). */ /* tRekap.MwstBetr = tRekap.MwstBetr - tRekap.MwstBetr. */ /* END. */ /* GTotal[01] = GTotal[01] + tRekap.MwstPfli. */ /* GTotal[02] = GTotal[02] + tRekap.MwstBetr. */ /* PUT CONTROL '£££' */ /* cString '£££' */ /* STRING(tRekap.MwstPfli ,'->>>>>>>>9.99') '£' */ /* STRING(tRekap.MwstBetr ,'->>>>>>>>9.99') CHR(10). */ /* ja = FALSE. */ /* END. */ /* PUT CONTROL '£' CHR(10). */ ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'MWSTKTO': IF ja THEN PUT CONTROL '££MwSt-Konto/Ansatz-Rekapitulation££'. ELSE PUT CONTROL '££££'. Cd = INTEGER(SUBSTRING(tRekap.Feld,01,02)). cKonto = TRIM (SUBSTRING(tRekap.Feld,03,12)). Ans = DECIMAL(SUBSTRING(tRekap.Feld,15,05)). cInkl = TRIM (SUBSTRING(tRekap.Feld,20,01)). FIND LAST MwstAns NO-LOCK WHERE MwstAns.Mwst_Cd = Cd AND MwstAns.Ansatz = Ans NO-ERROR. cString = STRING(Cd,'z9 ') + cKonto + ' / ' + MwstAns.Bez. IF tRekap.MwstBetr = 0 THEN DO: tRekap.MwstBetr = tRekap.MwstPfli * Ans / (100 + Ans). tRekap.MwstBetr = tRekap.MwstBetr - tRekap.MwstBetr. END. ASSIGN GTotal[01] = GTotal[01] + tRekap.MwstPfli GTotal[02] = GTotal[02] + tRekap.MwstBetr. PUT CONTROL '£' cString '£££££' STRING(tRekap.MwstPfli ,'->>>>>>>>9.99') '£' STRING(tRekap.MwstBetr ,'->>>>>>>>9.99') CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10). PUT CONTROL '£££Gesamttotal£' '££££££' STRING(GTotal[01],'->>>>>>>>9.99') '£' STRING(GTotal[02],'->>>>>>>>9.99') CHR(10). OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('createExcel':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1035) NO-ERROR. RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1040) NO-ERROR. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. cZelle = 'A6'. excelAppl:Range(cZelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfuegen' ). RUN KOPF. cZelle = 'A1'. excelAppl:Range(cZelle):SELECT. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ZAHLUNGS_JOURNAL fFrameWin PROCEDURE ZAHLUNGS_JOURNAL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE GTotal AS DECIMAL EXTENT 5 NO-UNDO. DEFINE VARIABLE Cd AS INTEGER NO-UNDO. DEFINE VARIABLE Ans AS DECIMAL NO-UNDO. cVorlage = 'ZahlungsJournal.xls'. cDokument = 'ZahlungsJournal.xls'. cDaten = 'ZahlungsJournal.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) NO-MAP NO-CONVERT. GTotal = 0. FOR EACH tSelektion USE-INDEX tSelektion-k1 NO-LOCK: FIND Debza WHERE RECID(Debza) = tSelektion.id NO-LOCK. FIND Debop USE-INDEX Debop-k1 WHERE Debop.Firma = Debza.Firma AND Debop.Knr = Debza.Knr AND Debop.Faknr = Debza.Faknr NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(Debza.Knr ,'999999') '£' tSelektion.Adresse '££' STRING(Debza.Faknr ,'9999999') '£' STRING(Debza.ZahDat ,'99.99.9999') '£' Debza.Kte '£' Debza.Frw '£' STRING(Debza.Kurs ,'zzzz9.9999') '£' STRING(Debza.ZahBetr_Frw,'->>>>>>>>9.99') '£' STRING(Debza.ZahBetr ,'->>>>>>>>9.99') '£' STRING(Debza.Skonto_Frw ,'->>>>>>>>9.99') '£' STRING(Debza.Skonto ,'->>>>>>>>9.99') '£' Debza.Konto CHR(10). GTotal[01] = GTotal[01] + Debza.ZahBetr_Frw. GTotal[02] = GTotal[02] + Debza.ZahBetr . GTotal[03] = GTotal[03] + Debza.Skonto_Frw . GTotal[04] = GTotal[04] + Debza.Skonto . FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto' AND tRekap.Feld = Debza.Konto NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Konto' tRekap.Feld = Debza.Konto. END. ASSIGN tRekap.Betrag = tRekap.Betrag + Debza.ZahBetr tRekap.Betrag_Frw = tRekap.Betrag_Frw + Debza.ZahBetr_Frw tRekap.Skonto = tRekap.Skonto + Debza.Skonto tRekap.Skonto_Frw = tRekap.Skonto_Frw + Debza.Skonto_Frw. FIND FIRST tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw' AND tRekap.Feld = Debza.Frw NO-ERROR. IF NOT AVAILABLE tRekap THEN DO: CREATE tRekap. ASSIGN tRekap.RecArt = 'Frw' tRekap.Feld = Debza.Frw. END. ASSIGN tRekap.Betrag = tRekap.Betrag + Debza.ZahBetr tRekap.Betrag_Frw = tRekap.Betrag_Frw + Debza.ZahBetr_Frw tRekap.Skonto = tRekap.Skonto + Debza.Skonto tRekap.Skonto_Frw = tRekap.Skonto_Frw + Debza.Skonto_Frw. END. PUT CONTROL '£££Gesamttotal££££££' STRING(GTotal[01],'->>>>>>>>9.99') '£' STRING(GTotal[02],'->>>>>>>>9.99') '£' STRING(GTotal[03],'->>>>>>>>9.99') '£' STRING(GTotal[04],'->>>>>>>>9.99') CHR(10). PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Konto': IF ja THEN PUT CONTROL '£££Kontorekapitulation£'. ELSE PUT CONTROL '££££'. PUT CONTROL '£££££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '£' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' STRING(tRekap.Skonto_Frw,'->>>>>>>>9.99') '£' STRING(tRekap.Skonto ,'->>>>>>>>9.99') '£' tRekap.Feld CHR(10). ja = FALSE. END. PUT CONTROL '£' CHR(10) '£' CHR(10). ja = TRUE. FOR EACH tRekap USE-INDEX tRekap-k1 WHERE tRekap.RecArt = 'Frw': IF ja THEN PUT CONTROL '£££Rekapitulation nach Währung£'. ELSE PUT CONTROL '££££'. PUT CONTROL '£££' tRekap.Feld '££' STRING(tRekap.Betrag_Frw,'->>>>>>>>9.99') '£' STRING(tRekap.Betrag ,'->>>>>>>>9.99') '£' STRING(tRekap.Skonto_Frw,'->>>>>>>>9.99') '£' STRING(tRekap.Skonto ,'->>>>>>>>9.99') '£' CHR(10). ja = FALSE. END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('createExcel':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1035) NO-ERROR. RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: DYNAMIC-FUNCTION('FEHLER', INPUT 1040) NO-ERROR. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. cZelle = 'A6'. excelAppl:Range(cZelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfuegen' ). RUN KOPF. cZelle = 'A1'. excelAppl:Range(cZelle):SELECT. DYNAMIC-FUNCTION('ReleaseExcel':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME