&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gVerbuchen {adecomm/appserv.i} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gVerbuchen /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM2 SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* 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 --- */ DEFINE INPUT PARAMETER ipParam AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipKontainer AS HANDLE NO-UNDO. DEFINE OUTPUT PARAMETER oplRetVal AS LOG NO-UNDO. /* Local Variable Definitions --- */ DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE iRecid AS INTEGER NO-UNDO. DEFINE VARIABLE cHerk AS CHARACTER NO-UNDO. DEFINE VARIABLE lBatch AS LOG NO-UNDO. DEFINE VARIABLE lGebinde AS LOG NO-UNDO. DEFINE VARIABLE lSammFak AS LOG NO-UNDO. DEFINE VARIABLE iVonKnr AS INTEGER NO-UNDO. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO. DEFINE VARIABLE lSendMail AS LOG NO-UNDO. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO. DEFINE VARIABLE dSperrDat AS DATE NO-UNDO. DEFINE VARIABLE dBuchDat AS DATE NO-UNDO. DEFINE VARIABLE iFakArt AS INTEGER NO-UNDO. DEFINE VARIABLE iAufSta AS INTEGER NO-UNDO. DEFINE VARIABLE iTrNr1 AS INTEGER NO-UNDO. DEFINE VARIABLE iTrNr2 AS INTEGER NO-UNDO. DEFINE VARIABLE iTrans AS INTEGER NO-UNDO. DEFINE VARIABLE nFakTotal AS DECIMAL NO-UNDO. DEFINE VARIABLE nFakTotalFrw AS DECIMAL NO-UNDO. DEFINE VARIABLE nWW AS DECIMAL NO-UNDO. DEFINE VARIABLE nSkBer AS DECIMAL NO-UNDO. DEFINE VARIABLE dMwstDatum AS DATE NO-UNDO. DEFINE TEMP-TABLE tAuftraege FIELD cFirma AS CHARACTER FIELD iAufnr AS INTEGER FIELD nKurs AS DECIMAL DECIMALS 4 FIELD iFaktor AS INTEGER . DEFINE TEMP-TABLE tAufko LIKE Aufko FIELD cKtoDebitor AS CHARACTER FIELD cKtoGebinde AS CHARACTER . DEFINE TEMP-TABLE tAufze LIKE Aufze. DEFINE TEMP-TABLE tVerbucht FIELD Datum AS DATE FIELD Konto AS CHARACTER FIELD FakBetr AS DECIMAL FIELD ZahBetr AS DECIMAL FIELD Skonto AS DECIMAL FIELD Frw AS CHARACTER FIELD nKurs AS DECIMAL DECIMALS 4 FIELD iFaktor AS INTEGER FIELD FakBetr_Frw AS DECIMAL FIELD ZahBetr_Frw AS DECIMAL FIELD Skonto_Frw AS DECIMAL . DEFINE TEMP-TABLE tMwst FIELD iFaknr AS INTEGER FIELD iCd AS INTEGER FIELD lInkl AS LOG FIELD nBetrag AS DECIMAL FIELD nMwst AS DECIMAL FIELD nTotal AS DECIMAL FIELD nBetrag_FRW AS DECIMAL FIELD nMwst_FRW AS DECIMAL FIELD nTotal_FRW AS DECIMAL FIELD Frw AS CHARACTER FIELD nKurs AS DECIMAL DECIMALS 4 FIELD iFaktor AS INTEGER FIELD cKonto AS CHARACTER FIELD nAnsatz AS DECIMAL . DEFINE TEMP-TABLE tUmsatz FIELD cArt AS CHARACTER FIELD iKnr AS INTEGER FIELD iArtnr AS INTEGER FIELD iInhalt AS INTEGER FIELD iJG AS INTEGER FIELD iPeriode AS INTEGER FIELD iJahr AS INTEGER FIELD nMenge AS DECIMAL FIELD nLiter AS DECIMAL FIELD nEp AS DECIMAL FIELD nVp AS DECIMAL FIELD nZuschlag AS DECIMAL FIELD nPorto AS DECIMAL FIELD nTransp AS DECIMAL FIELD nVerpack AS DECIMAL FIELD nAufTot AS DECIMAL FIELD Frw AS CHARACTER FIELD nKurs AS DECIMAL DECIMALS 4 FIELD iFaktor AS INTEGER FIELD cKonto AS CHARACTER FIELD nZahBetr AS DECIMAL FIELD nSkonto AS DECIMAL FIELD nAufTot_Frw AS DECIMAL FIELD nZahBetr_Frw AS DECIMAL FIELD nSkonto_Frw AS DECIMAL . DEFINE TEMP-TABLE tKonto FIELD cKto1 AS CHARACTER FORMAT "x(12)" FIELD cKto2 AS CHARACTER FORMAT "x(12)" FIELD nBetrag AS DECIMAL FIELD Frw AS CHARACTER FIELD nKurs AS DECIMAL FIELD iFaktor AS INTEGER FIELD iMWST_Cd AS INTEGER FIELD lMWSt AS LOG INIT FALSE FIELD cArt AS CHARACTER FIELD nBetrag_Frw AS DECIMAL . DEFINE TEMP-TABLE tSendMail FIELD iKnr AS INTEGER FIELD cKunde AS CHARACTER FIELD cMail AS CHARACTER FIELD iFaknr AS INTEGER . { properties.i } { ttsendmail.i } { incl/dlgdefinition.i } { src/adm2/widgetprto.i } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX &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 gVerbuchen /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-2 F_vonFaknr F_bisFaknr F_vonFakKnr ~ F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta Btn_Start ~ Btn_Cancel F_Adresse &Scoped-Define DISPLAYED-OBJECTS F_vonFaknr F_bisFaknr F_vonFakKnr ~ F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-5 F_Adresse &Scoped-define List-6 F_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr ~ F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD checkAlleGedruckt gVerbuchen FUNCTION checkAlleGedruckt RETURNS LOGICAL ( ipRecid AS RECID ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD makeUmsatz gVerbuchen FUNCTION makeUmsatz RETURNS LOGICAL ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel AUTO-END-KEY LABEL "abbrechen" SIZE 15 BY 1. DEFINE BUTTON Btn_Start LABEL "Starten" SIZE 21 BY 1. DEFINE VARIABLE CB_Aufsta AS CHARACTER FORMAT "X(256)":U LABEL "Auftragstatus" VIEW-AS COMBO-BOX INNER-LINES 5 DROP-DOWN-LIST SIZE 43.2 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Fakart AS CHARACTER FORMAT "X(256)":U LABEL "Faktura-Art" VIEW-AS COMBO-BOX INNER-LINES 5 DROP-DOWN-LIST SIZE 43.2 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Adresse AS CHARACTER FORMAT "X(256)":U INITIAL "Hallo" VIEW-AS FILL-IN NATIVE SIZE 80 BY 1.05 BGCOLOR 14 NO-UNDO. DEFINE VARIABLE F_bisDatum AS DATE FORMAT "99.99.9999":U VIEW-AS FILL-IN NATIVE SIZE 18.2 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_bisFakKNr AS INTEGER FORMAT "999999":U INITIAL 999999 VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_bisFaknr AS INTEGER FORMAT "9999999":U INITIAL 9999999 VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BuchDat AS DATE FORMAT "99.99.9999":U LABEL "Verbuchungsdatum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 TOOLTIP "Wenn kein Datum eingegeben wird, wird das Rechnungsdatum übernommen" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_vonDatum AS DATE FORMAT "99.99.9999":U INITIAL 01/01/1901 LABEL "von - bis Fakturadatum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_vonFakKnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Faktura-Kundennummer" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_vonFaknr AS INTEGER FORMAT "9999999":U INITIAL 0 LABEL "von - bis Fakturanummer" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 88 BY 11.91. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gVerbuchen F_vonFaknr AT ROW 2 COL 35 COLON-ALIGNED WIDGET-ID 20 F_bisFaknr AT ROW 2 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 12 F_vonFakKnr AT ROW 3 COL 35 COLON-ALIGNED WIDGET-ID 24 F_bisFakKNr AT ROW 3 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 16 F_vonDatum AT ROW 4 COL 35 COLON-ALIGNED WIDGET-ID 22 F_bisDatum AT ROW 4 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 14 F_BuchDat AT ROW 5 COL 35 COLON-ALIGNED WIDGET-ID 18 CB_Fakart AT ROW 7 COL 35 COLON-ALIGNED WIDGET-ID 8 CB_Aufsta AT ROW 8 COL 35 COLON-ALIGNED WIDGET-ID 6 Btn_Start AT ROW 9.52 COL 37 WIDGET-ID 4 Btn_Cancel AT ROW 9.52 COL 64 F_Adresse AT ROW 11.38 COL 3.4 COLON-ALIGNED NO-LABEL WIDGET-ID 10 RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2 SPACE(1.99) SKIP(0.51) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Verbuchen von Rechnungen" CANCEL-BUTTON Btn_Cancel WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: COMPILE APPSERVER */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gVerbuchen /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX gVerbuchen FRAME-NAME */ ASSIGN FRAME gVerbuchen:SCROLLABLE = FALSE FRAME gVerbuchen:HIDDEN = TRUE. /* SETTINGS FOR COMBO-BOX CB_Aufsta IN FRAME gVerbuchen 6 */ /* SETTINGS FOR COMBO-BOX CB_Fakart IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_Adresse IN FRAME gVerbuchen NO-DISPLAY 5 */ ASSIGN F_Adresse:HIDDEN IN FRAME gVerbuchen = TRUE. /* SETTINGS FOR FILL-IN F_bisDatum IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_bisFakKNr IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_bisFaknr IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_BuchDat IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_vonDatum IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_vonFakKnr IN FRAME gVerbuchen 6 */ /* SETTINGS FOR FILL-IN F_vonFaknr IN FRAME gVerbuchen 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gVerbuchen /* Query rebuild information for DIALOG-BOX gVerbuchen _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gVerbuchen */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gVerbuchen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVerbuchen gVerbuchen ON END-ERROR OF FRAME gVerbuchen /* Verbuchen von Rechnungen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVerbuchen gVerbuchen ON WINDOW-CLOSE OF FRAME gVerbuchen /* Verbuchen von Rechnungen */ 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 gVerbuchen ON CHOOSE OF Btn_Cancel IN FRAME gVerbuchen /* abbrechen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Start &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Start gVerbuchen ON CHOOSE OF Btn_Start IN FRAME gVerbuchen /* Starten */ DO: SESSION:SET-WAIT-STATE ('NORMAL'). RUN VERBUCHEN. SESSION:SET-WAIT-STATE (''). IF RETURN-VALUE = 'APPLY' THEN RETURN NO-APPLY. btnOK = TRUE. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Aufsta &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Aufsta gVerbuchen ON RETURN OF CB_Aufsta IN FRAME gVerbuchen /* Auftragstatus */ DO: APPLY 'TAB' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Aufsta gVerbuchen ON VALUE-CHANGED OF CB_Aufsta IN FRAME gVerbuchen /* Auftragstatus */ DO: iAufSta = INTEGER(SELF:SCREEN-VALUE). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Fakart &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Fakart gVerbuchen ON RETURN OF CB_Fakart IN FRAME gVerbuchen /* Faktura-Art */ DO: APPLY 'TAB' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Fakart gVerbuchen ON VALUE-CHANGED OF CB_Fakart IN FRAME gVerbuchen /* Faktura-Art */ DO: iFakArt = INTEGER(SELF:SCREEN-VALUE). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gVerbuchen /* *************************** Main Block *************************** */ { incl/dlgmainblock.i } iAufnr = INTEGER(ENTRY(1, ipParam, ';')). iRecid = INTEGER(ENTRY(2, ipParam, ';')). cHerk = ENTRY(3, ipParam, ';') . dSperrDat = DYNAMIC-FUNCTION('getSperrDatum':U) NO-ERROR. oplRetVal = FALSE. hKontainer = ipKontainer. lSendMail = FALSE. CASE cHerk: WHEN 'A' THEN lBatch = FALSE. OTHERWISE lBatch = TRUE. END CASE. {src/adm2/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gVerbuchen _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 createMailBodyProtokoll gVerbuchen PROCEDURE createMailBodyProtokoll : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO. DEFINE VARIABLE cBodyProtokoll AS CHARACTER INIT '' NO-UNDO. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO. DO WHILE cBodyDatei = ?: cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll.html', cInstallation). cBodyDatei = SEARCH(cBodyDatei). IF cBodyDatei <> ? THEN LEAVE. END. IF cBodydatei = ? THEN cBody = ''. ELSE DO: FILE-INFO:FILE-NAME = cBodyDatei. cBodyDatei = FILE-INFO:FULL-PATHNAME. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT. cBody = lBody. END. cBodyDatei = ?. DO WHILE cBodyDatei = ?: cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll-Tabelle.html', cInstallation). cBodyDatei = SEARCH(cBodyDatei). LEAVE. END. IF cBodydatei = ? THEN cBody = ''. ELSE DO: /* FILE-INFO:FILE-NAME = cBodyDatei. */ /* cBodyDatei = FILE-INFO:FULL-PATHNAME.*/ COPY-LOB FILE cBodydatei TO lBody NO-CONVERT. cBodyProtokoll = lBody. END. FOR EACH tSendMail: cString = cString /* + (IF cString = '' THEN '' ELSE CHR(10)) */ + SUBSTITUTE(cBodyProtokoll, tSendMail.iKnr, tSendMail.cKunde, tSendMail.cMail, tSendMail.iFaknr). END. cBody = SUBSTITUTE(cBody, cString). opcBody = cBody. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_ZAHLUNG gVerbuchen PROCEDURE CREATE_ZAHLUNG : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FIND FIRST tAufko. FOR EACH tUmsatz WHERE tUmsatz.cArt = 'Debza' AND tUmsatz.iKnr = tAufko.Fak_Knr. IF tUmsatz.nZahBetr = 0 AND tUmsatz.nSkonto = 0 THEN NEXT. FIND LAST Zahlung NO-LOCK WHERE Zahlung.Firma = tAufko.Firma NO-ERROR. IF AVAILABLE Zahlung THEN iTrans = Zahlung.Trnr + 1. ELSE iTrans = 1. CREATE Zahlung. ASSIGN Zahlung.Firma = tAufko.Firma Zahlung.Trnr = iTrans Zahlung.Knr = tAufko.Fak_Knr Zahlung.Faknr = STRING(tAufko.Faknr,"9999999") Zahlung.Datum_1 = dBuchDat Zahlung.Konto_S = tUmsatz.cKonto Zahlung.Konto_H = tAufko.cKtoDebitor Zahlung.Betrag = tUmsatz.nZahBetr_Frw Zahlung.Skonto = tUmsatz.nSkonto_Frw Zahlung.Zahl_Art = 90 Zahlung.Herk = 62 Zahlung.Frw = tAufko.Frw Zahlung.Kurs = tAufko.Kurs Zahlung.Faktor = tAufko.Faktor Zahlung.Verbucht = FALSE . FIND FIRST tVerbucht WHERE tVerbucht.Datum = Zahlung.Datum_1 AND tVerbucht.Konto = Zahlung.Konto_S NO-ERROR. IF NOT AVAILABLE tVerbucht THEN DO: CREATE tVerbucht. ASSIGN tVerbucht.Datum = Zahlung.Datum_1 tVerbucht.Konto = Zahlung.Konto_S. END. ASSIGN tVerbucht.ZahBetr_Frw = tVerbucht.ZahBetr_Frw + tUmsatz.nZahBetr_Frw tVerbucht.Skonto_Frw = tVerbucht.Skonto_Frw + tUmsatz.nSkonto_Frw tVerbucht.ZahBetr = tVerbucht.ZahBetr + tUmsatz.nZahBetr tVerbucht.Skonto = tVerbucht.Skonto + tUmsatz.nSkonto . RELEASE Zahlung. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gVerbuchen _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 gVerbuchen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gVerbuchen PROCEDURE enableObject : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE BUFFER bAufko FOR Aufko. DEFINE BUFFER bTabel FOR Tabel. cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR. DO WITH FRAME {&FRAME-NAME}: F_Adresse = ''. F_Buchdat = ?. IF cHerk = 'A' THEN DO: FIND bAufko NO-LOCK WHERE RECID(bAufko) = iRecid. F_vonFaknr = bAufko.Faknr . F_bisFaknr = bAufko.Faknr . F_vonFakKnr = bAufko.Fak_Knr . F_bisFakKnr = bAufko.Fak_Knr . F_vonDatum = bAufko.Fak_Datum. F_bisDatum = bAufko.Fak_Datum. F_Buchdat = bAufko.Fak_Datum. . FIND bTabel NO-LOCK WHERE bTabel.Firma = bAufko.Firma AND bTabel.RecArt = 'FAKART' AND bTabel.CodeC = '' AND bTabel.CodeI = bAufko.Fak_Art AND bTabel.Sprcd = 1 NO-ERROR. IF bTabel.Int_3 = 4 THEN DO: /* F_Buchdat = ?.*/ F_vonDatum = DATE(MONTH(bAufko.Fak_Datum),01,YEAR(bAufko.Fak_Datum)). F_bisDatum = TODAY. IF F_bisDatum > F_BuchDat THEN F_bisDatum = F_BuchDat. IF F_bisDatum < F_VonDatum THEN F_bisDatum = F_vonDatum. DO WHILE TRUE: IF MONTH(F_vonDatum) = MONTH(F_bisDatum) AND YEAR (F_vonDatum) = YEAR (F_bisDatum) THEN LEAVE. F_bisDatum = F_bisDatum - 1. END. END. IF F_Buchdat <> ? AND F_Buchdat <= dSperrDat THEN F_Buchdat:BGCOLOR = 12. END. ELSE DO: F_vonFaknr = 1. F_bisFaknr = 9999999. F_vonFakKnr = 1. F_bisFakKnr = 999999. F_vonDatum = DATE(MONTH(TODAY),01,YEAR(TODAY)). F_bisDatum = DATE(MONTH(TODAY),28,YEAR(TODAY)). CASE MONTH(TODAY): WHEN 01 OR WHEN 03 OR WHEN 05 OR WHEN 07 OR WHEN 08 OR WHEN 10 OR WHEN 12 THEN F_bisDatum = F_bisDatum + 3. WHEN 04 OR WHEN 06 OR WHEN 09 OR WHEN 11 THEN F_bisDatum = F_bisDatum + 2. WHEN 02 THEN DO: IF YEAR(TODAY) MOD 4 = 0 THEN F_bisDatum = F_BisDatum + 1. IF YEAR(TODAY) MOD 1000 = 0 THEN F_bisDatum = F_BisDatum - 1. END. END CASE. END. RUN COMBO_FAKART ( CB_Fakart:HANDLE ) NO-ERROR. RUN COMBO_AUFSTATUS ( CB_Aufsta:HANDLE ) NO-ERROR. IF AVAILABLE bAufko THEN DO: CB_Fakart:SCREEN-VALUE = STRING(bAufko.Fak_Art,'999999'). CB_Aufsta:SCREEN-VALUE = STRING(bAufko.Auf_Sta,'999999'). F_Adresse:SCREEN-VALUE = DYNAMIC-FUNCTION('getAdressAnzeige':U, bAufko.Fak_Knr ). END. END. { incl/dlgenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gVerbuchen _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_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta WITH FRAME gVerbuchen. ENABLE RECT-2 F_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta Btn_Start Btn_Cancel F_Adresse WITH FRAME gVerbuchen. VIEW FRAME gVerbuchen. {&OPEN-BROWSERS-IN-QUERY-gVerbuchen} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gVerbuchen PROCEDURE ENDE : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ IF btnOK THEN DO: oplRetVal = TRUE. END. { incl/dlgende.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_IN_KONTO gVerbuchen PROCEDURE GEBINDE_IN_KONTO : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE nAnsatz AS DECIMAL INIT 0.00 NO-UNDO. DEFINE VARIABLE lIncl AS LOG INIT FALSE NO-UNDO. DEFINE BUFFER bAufGKon FOR AufGKon. FIND FIRST tAufko. FOR EACH bAufGKon NO-LOCK WHERE bAufGKon.Firma = tAufko.Firma AND bAufGKon.Aufnr = tAufko.Aufnr : IF NOT lGebinde THEN DO: /* Keine Gebindeverrechnung beim Kunden */ IF bAufGKon.Depot <> 0 THEN NEXT. END. nAnsatz = 0. FIND FIRST Wust NO-LOCK WHERE Wust.WuCd = bAufGKon.Mwst_Cd NO-ERROR. IF AVAILABLE Wust THEN lIncl = Wust.Incl. IF lIncl THEN DO: /* Ansatz wird nur für Inkl Mwst gesetzt wegen Reduktion Gebindewert */ FIND LAST MwstAns NO-LOCK WHERE MwstAns.Mwst_Cd = bAufGKon.Mwst_Cd AND MwstAns.Datum <= tAufko.Fak_Datum NO-ERROR. IF AVAILABLE MwstAns THEN nAnsatz = MwstAns.Ansatz. END. FIND FIRST tKonto WHERE tKonto.cKto1 = tAufko.cKtoDebitor AND tKonto.cKto2 = tAufko.cKtoGebinde AND tKonto.iMWSt_Cd = bAufGKon.MWSt_Cd NO-ERROR. IF NOT AVAILABLE tKonto THEN DO: CREATE tKonto. ASSIGN tKonto.cKto1 = tAufko.cKtoDebitor tKonto.cKto2 = tAufko.cKtoGebinde tKonto.iMWSt_Cd = bAufGKon.MWSt_Cd tKonto.Frw = tAufko.Frw tKonto.nKurs = tAufko.Kurs tKonto.iFaktor = tAufko.Faktor tKonto.lMwst = FALSE tKonto.cArt = 'GEBINDE'. END. ASSIGN tKonto.nBetrag = tKonto.nBetrag + (bAufGKon.Betrag * 100 / (100 + nAnsatz) * tAufko.Kurs / tAufko.Faktor). RELEASE bAufGKon. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE getMailBody gVerbuchen PROCEDURE getMailBody : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipcSprcd AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO. DO WHILE cBodyDatei = ?: cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Rechnung-&2.html', cInstallation, ipcSprcd). cBodyDatei = SEARCH(cBodyDatei). LEAVE. END. IF cBodydatei = ? THEN cBody = ''. ELSE DO: FILE-INFO:FILE-NAME = cBodyDatei. cBodyDatei = FILE-INFO:FULL-PATHNAME. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT. cBody = lBody. END. opcBody = cBody. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject gVerbuchen PROCEDURE initializeObject : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ RUN SUPER. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LOESCHEN_VERBUCHTE_AUFTRAEGE gVerbuchen PROCEDURE LOESCHEN_VERBUCHTE_AUFTRAEGE : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE ii AS INTEGER NO-UNDO. F_Adresse = 'Löschen der verbuchten Aufträge ...'. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}. DISABLE TRIGGERS FOR LOAD OF Aufko . DISABLE TRIGGERS FOR LOAD OF Aufze . DISABLE TRIGGERS FOR LOAD OF AufLot . DISABLE TRIGGERS FOR LOAD OF RuestAuf. FOR EACH Aufko USE-INDEX Aufko-k1 WHERE Aufko.Firma = Firma AND Aufko.Verbucht = TRUE TRANSACTION: FIND Debst NO-LOCK WHERE Debst.Firma = Aufko.Firma AND Debst.Knr = Aufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: FIND Debst NO-LOCK WHERE Debst.Firma = Aufko.Firma AND Debst.Knr = Aufko.Knr. END. FOR EACH Aufze OF Aufko: CREATE Savze. BUFFER-COPY Aufze TO Savze. DELETE Aufze. IF Savze.Artnr = 0 THEN NEXT. FIND Artst OF Savze NO-ERROR. IF AVAILABLE Artst THEN Artst.Letzt_Ausg = Aufko.Fak_Datum. END. FOR EACH AufGKon OF Aufko: DO WHILE TRUE: IF AufGKon.Depot = 0 THEN LEAVE. FIND LAST GebKontr NO-LOCK WHERE GebKontr.Firma = Aufko.Firma AND GebKontr.Knr = Aufko.Knr NO-ERROR. IF AVAILABLE GebKontr THEN ii = GebKontr.Trnr + 1. ELSE ii = 1. FIND FIRST Wust NO-LOCK USE-INDEX Wust-k2 WHERE Wust.Wucd = AufGKon.MWST_Cd AND Wust.CodeA < 13 AND Wust.CodeK < 13 NO-ERROR. FIND LAST MWSTAns NO-LOCK USE-INDEX MWSTAns-k1 WHERE MWSTAns.MWST_Cd = AufGKon.MWST_Cd AND MWSTAns.Datum <= Aufko.Kond_Datum NO-ERROR. CREATE GebKontr. ASSIGN GebKontr.Firma = Aufko.Firma GebKontr.Knr = Aufko.Knr GebKontr.Trnr = ii GebKontr.Geb_Cd = AufGKon.Geb_Cd GebKontr.Datum = dBuchdat GebKontr.Doknr = Aufko.Faknr GebKontr.Preis = AufGKon.Depot GebKontr.Eingang = AufGKon.Eingang GebKontr.Ausgang = AufGKon.Ausgang GebKontr.MWST_Cd = AufGKon.MWST_Cd GebKontr.lAbgerechnet = Debst.Geb_Rg. IF AVAILABLE MWSTAns THEN GebKontr.MWST_% = MWSTAns.Ansatz. IF AVAILABLE Wust THEN GebKontr.MWST_Inkl = Wust.Incl. LEAVE. END. CREATE SavGKon. BUFFER-COPY AufGKon TO SavGKon. DELETE AufGKon. END. FOR EACH AufRabSu OF Aufko: CREATE SavRabSu. BUFFER-COPY AufRabSu TO SavRabSu. DELETE AufRabSu. END. FOR EACH AufGebKo OF Aufko: IF AufGebKo.Menge <> 0 THEN DO: CREATE SavGebKo. BUFFER-COPY AufGebKo TO SavGebKo. END. DELETE AufGebKo. END. FOR EACH AufLot OF Aufko: CREATE SavLot. BUFFER-COPY AufLot TO SavLot. DELETE AufLot. END. FOR EACH RuestAuf OF Aufko: CREATE RuestSav. BUFFER-COPY RuestAuf TO RuestSav. DELETE RuestAuf. END. FOR EACH AufSpRab USE-INDEX AufSpRab-k1 WHERE AufSpRab.Firma = Aufko.Firma AND AufSpRab.Aufnr = Aufko.Aufnr: CREATE SavSpRab. BUFFER-COPY AufSpRab TO SavSpRab. DELETE AufSpRab. END. CREATE Savko. BUFFER-COPY Aufko TO Savko. DELETE Aufko. END. RELEASE Aufko . RELEASE Aufze . RELEASE AufGKon . RELEASE AufRabSu. RELEASE AufGebKo. RELEASE AufSpRab. RELEASE Savko . RELEASE Savze . RELEASE SavGKon . RELEASE SavRabSu. RELEASE SavGebKo. RELEASE SavSpRab. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE MEHRWERTSTEUER_IN_KONTO gVerbuchen PROCEDURE MEHRWERTSTEUER_IN_KONTO : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER lRetVal AS LOGICAL NO-UNDO. lRetVal = TRUE. DEFINE VARIABLE nTotMwst AS DECIMAL DECIMALS 2 NO-UNDO. DEFINE VARIABLE nTotAbsolut AS DECIMAL DECIMALS 2 NO-UNDO. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO. DEFINE VARIABLE nRest AS DECIMAL NO-UNDO. DEFINE VARIABLE nProz AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE nWert AS DECIMAL NO-UNDO. FIND FIRST tAufko. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FOR EACH tMwst WHERE tMwst.iFaknr = tAufko.Faknr AND tMwst.iCd < 12: IF tMwst.lInkl THEN DO: tMwst.nMwst = tMwst.nTotal * tMwst.nAnsatz / (100 + tMwst.nAnsatz). tMwst.nBetrag = tMwst.nTotal - tMwst.nMwst. END. tMwst.nTotal = tMwst.nBetrag + tMwst.nMwst. nTotMwst = nTotMwst + tMwst.nTotal. nTotAbsolut = nTotAbsolut + ABS(tMwst.nTotal). END. nDiff = nFakTotal - nTotMwst. nRest = nDiff. DO WHILE TRUE: IF nDiff = 0 THEN LEAVE. /* Die Rundungsdifferenzen werden auf den Warenertrag */ /* mit dem grössten Betrag gelegt */ FOR EACH tKonto WHERE tKonto.cArt = 'WARE' BY tKonto.nBetrag DESCENDING: tKonto.nBetrag = tKonto.nBetrag + nDiff. LEAVE. END. LEAVE. END. FOR EACH tMwst WHERE tMwst.iFaknr = tAufko.Faknr AND tMwst.iCd < 12 AND tMwst.nMwst <> 0: FIND FIRST tKonto WHERE tKonto.cKto1 = tAufko.cKtoDebitor AND tKonto.cKto2 = tMwst.cKonto AND tKonto.iMwst_Cd = tMwst.iCd NO-ERROR. IF NOT AVAILABLE tKonto THEN DO: CREATE tKonto. ASSIGN tKonto.cKto1 = tAufko.cKtoDebitor tKonto.cKto2 = tMwst.cKonto tKonto.iMwst_Cd = tMwst.iCd tKonto.Frw = tMwst.Frw tKonto.nKurs = tMwst.nKurs tKonto.iFaktor = tMwst.iFaktor tKonto.cArt = 'MWST' tKonto.lMwst = TRUE. END. tKonto.nBetrag = tKonto.nBetrag + tMwst.nMwst. END. lRetVal = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEBENKOSTEN_IN_KONTO gVerbuchen PROCEDURE NEBENKOSTEN_IN_KONTO : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO. lRetVal = TRUE. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE nBetrag AS DECIMAL NO-UNDO. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO. FIND FIRST tAufko. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FIND SteuNr NO-LOCK WHERE SteuNr.Firma = tAufko.Firma. DO ii = 1 TO 3: CASE ii: WHEN 1 THEN nBetrag = tUmsatz.nTransp . WHEN 2 THEN nBetrag = tUmsatz.nPorto . WHEN 3 THEN nBetrag = tUmsatz.nVerpack. END CASE. IF nBetrag = 0 THEN NEXT. CASE ii: WHEN 1 THEN cKonto = SteuNr.Konto_Transp. WHEN 2 THEN cKonto = SteuNr.Konto_Porto. WHEN 3 THEN cKonto = SteuNr.Konto_Verpack. END. FIND FIRST tKonto WHERE tKonto.cKto1 = tAufko.cKtoDebitor AND tKonto.cKto2 = cKonto AND tKonto.iMWSt_Cd = 12 NO-ERROR. IF NOT AVAILABLE tKonto THEN DO: CREATE tKonto. ASSIGN tKonto.cKto1 = tAufko.cKtoDebitor tKonto.cKto2 = cKonto tKonto.iMWSt_Cd = 12 tKonto.Frw = tAufko.Frw tKonto.nKurs = tAufko.Kurs tKonto.iFaktor = Taufko.Faktor tKonto.lMwst = FALSE tKonto.cArt = 'NK'. END. ASSIGN tKonto.nBetrag = tKonto.nBetrag + (nBetrag * tAufko.Kurs / tAufko.Faktor). END. lRetVal = FALSE. RELEASE SteuNr. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PASSANT gVerbuchen PROCEDURE PASSANT : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FIND FIRST tAufko. CREATE Passant. ASSIGN Passant.Firma = tAufko.Firma Passant.Knr = tAufko.Knr Passant.Faknr = tAufko.Faknr Passant.Adr[01] = tAufko.Adresse[01] Passant.Adr[02] = tAufko.Adresse[02] Passant.Adr[03] = tAufko.Adresse[03] Passant.Adr[04] = tAufko.Adresse[04] Passant.Adr[05] = tAufko.Adresse[05]. RELEASE Passant. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN gVerbuchen PROCEDURE VERBUCHEN : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE AnzFak AS INTEGER NO-UNDO. DEFINE VARIABLE aRecid AS RECID NO-UNDO. DEFINE VARIABLE kRecid AS RECID NO-UNDO. DEFINE VARIABLE dRecid AS RECID NO-UNDO. DEFINE VARIABLE nKurs AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE iFaktor AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE cKtoGebinde AS CHARACTER NO-UNDO. DEFINE VARIABLE cKtoDebitor AS CHARACTER NO-UNDO. DEFINE VARIABLE cKtoVereinnahmt AS CHARACTER NO-UNDO. DEFINE VARIABLE lGedruckt AS LOG NO-UNDO. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO. DEFINE VARIABLE lFehler AS LOG NO-UNDO. DEFINE VARIABLE cBody AS CHARACTER NO-UNDO. DEFINE VARIABLE cMailBody AS CHARACTER NO-UNDO. DEFINE VARIABLE cAnrede AS CHARACTER NO-UNDO. DEFINE VARIABLE cMailTo AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE iAnzMail AS INTEGER NO-UNDO. DEFINE VARIABLE nTotBetrFrw AS DECIMAL NO-UNDO DECIMALS 2. DEFINE VARIABLE nTotBetr AS DECIMAL NO-UNDO DECIMALS 2. DEFINE VARIABLE nDiffFrw AS DECIMAL NO-UNDO DECIMALS 2. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO DECIMALS 2. DEFINE BUFFER bSteuer FOR Steuer. DEFINE BUFFER bSteuNr FOR SteuNr. DEFINE BUFFER bAufko FOR Aufko. DEFINE BUFFER bAufze FOR Aufze. DEFINE BUFFER bDebst FOR Debst. DEFINE BUFFER bArtst FOR Artst. DEFINE BUFFER bArtbw FOR Artbw. DEFINE BUFFER bAdresse FOR Adresse. DEFINE BUFFER bDebop FOR Debop. RUN WERTE_EINLESEN. IF RETURN-VALUE <> '' THEN DO: IF RETURN-VALUE = 'ERROR' THEN RETURN NO-APPLY. CASE RETURN-VALUE: WHEN 'F_Buchdat' THEN APPLY 'ENTRY' TO F_Buchdat IN FRAME {&FRAME-NAME}. WHEN 'Keine Selektion' THEN MESSAGE 'Keine Rechnungen in der Auswahl' VIEW-AS ALERT-BOX. END CASE. RETURN 'APPLY'. END. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. iFakArt = INTEGER(CB_Fakart:SCREEN-VALUE). iAufSta = INTEGER(CB_Aufsta:SCREEN-VALUE). F_Adresse:HIDDEN = FALSE. F_Adresse:SCREEN-VALUE = 'Aufträge werden verbucht ...'. END. /* ------------------------------------------------------------------------ */ /* Verbuchen der Aufträge */ /* ------------------------------------------------------------------------ */ FIND bSteuer WHERE bSteuer.Firma = Firma NO-LOCK. FIND bSteuNr WHERE bSteuNr.Firma = Firma NO-LOCK. cKtoGebinde = bSteuNr.Konto_Gebinde. cKtoVereinnahmt = bSteuNr.Konto_Wust_H. EMPTY TEMP-TABLE tVerbucht . EMPTY TEMP-TABLE tAufko . EMPTY TEMP-TABLE tAufze . EMPTY TEMP-TABLE tSendMail . EMPTY TEMP-TABLE ttSendMail . CREATE tAufko. CREATE tAufze. AnzFak = 0. FOR EACH bAufko NO-LOCK USE-INDEX Aufko-k7 WHERE bAufko.Firma = Firma AND bAufko.Fak_Art = iFakArt AND bAufko.Auf_Sta = iAufSta AND bAufko.Faknr >= F_vonFaknr AND bAufko.Faknr <= F_bisFaknr AND bAufko.Fak_Knr >= F_vonFakKnr AND bAufko.Fak_Knr <= F_bisFakKnr AND bAufko.Fak_Dat >= F_vonDatum AND bAufko.Fak_Dat <= F_bisDatum AND bAufko.Faknr <> 0 AND bAufko.Gedruckt = TRUE AND bAufko.Verbucht = FALSE AND ((bAufko.Samm_Nr = 0) OR (bAufko.Samm_Nr > 0 AND bAufko.Auf_Sta > 3)) BREAK BY bAufko.Fak_Knr BY bAufko.Faknr BY bAufko.Aufnr : IF FIRST-OF ( bAufko.Faknr ) THEN DO: lFehler = FALSE. nFakTotalFrw = 0.00. nFakTotal = 0.00. FIND FIRST bDebop NO-LOCK WHERE bDebop.Firma = bAufko.Firma AND bDebop.Knr = bAufko.Fak_Knr AND bDebop.Faknr = bAufko.Faknr NO-ERROR. IF AVAILABLE bDebop THEN DO: MESSAGE 'Rechnungsnummer ' bAufko.Faknr ' ist ungültig. Eine solche Nummer besteht bereits' VIEW-AS ALERT-BOX ERROR. RELEASE bDebop. lFehler = TRUE. NEXT. END. IF bAufko.Samm_Nr > 0 THEN DO: lGedruckt = DYNAMIC-FUNCTION('checkAlleGedruckt':U, RECID(bAufko) ) NO-ERROR. IF NOT lGedruckt THEN DO: MESSAGE 'Fehler beim Verbuchen der Rechnung ' SKIP 'Kundennummer ' bAufko.Knr SKIP 'Fakturanummer ' bAufko.Faknr SKIP 'Nicht alle LS gedruckt! ' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. lFehler = TRUE. NEXT. END. END. FIND bAdresse NO-LOCK WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE bAdresse THEN DO: FIND bAdresse NO-LOCK WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. END. IF NOT AVAILABLE bAdresse THEN DO: MESSAGE 'Fehler beim Verbbuchen der Rechnung ' SKIP 'Kundennummer ' bAufko.Fak_Knr SKIP 'ist nicht als Adresse erfasst' VIEW-AS ALERT-BOX. lFehler = TRUE. NEXT. END. aRecid = RECID(bAdresse). DO WITH FRAME {&FRAME-NAME}: F_Adresse = bAdresse.Anzeig_Br. DISPLAY {&List-5}. END. FIND bDebst NO-LOCK WHERE bDebst.Firma = bAufko.Firma AND bDebst.Knr = bAufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE bDebst THEN DO: FIND bDebst NO-LOCK WHERE bDebst.Firma = bAufko.Firma AND bDebst.Knr = bAufko.Knr NO-ERROR. END. IF NOT AVAILABLE bDebst THEN DO: MESSAGE 'Fehler beim Verbbuchen der Rechnung ' SKIP 'Kundennummer ' bAufko.Fak_Knr SKIP 'ist nicht als Debitor erfasst' VIEW-AS ALERT-BOX. lFehler = TRUE. NEXT. END. dRecid = RECID(bDebst). lGebinde = bDebst.Geb_Rg. lSendMail = (IF bDebst.DokumentStatus > 0 THEN TRUE ELSE FALSE). EMPTY TEMP-TABLE tMwst . EMPTY TEMP-TABLE tUmsatz . EMPTY TEMP-TABLE tAuftraege . EMPTY TEMP-TABLE tKonto . dBuchDat = F_BuchDat. IF dBuchDat = ? THEN dBuchDat = bAufko.Fak_Datum. IF dBuchDat < dSperrDat THEN dBuchDat = dSperrDat + 1. FIND Waehrung NO-LOCK WHERE Waehrung.Firma = bAufko.Firma AND Waehrung.Frw = bAufko.Frw. nKurs = Waehrung.Kurs. iFaktor = Waehrung.Faktor. CREATE tUmsatz. ASSIGN tUmsatz.cArt = 'Debst' tUmsatz.iKnr = bAufko.Fak_Knr tUmsatz.iJahr = YEAR(dBuchDat) tUmsatz.iPeriode = MONTH(dBuchdat) tUmsatz.Frw = bAufko.Frw tUmsatz.nKurs = nKurs tUmsatz.iFaktor = iFaktor tUmsatz.cKonto = (IF bDebst.Konto <> '' THEN bDebst.Konto ELSE bSteuNr.Konto_Debit). ASSIGN AnzFak = AnzFak + 1 iKnr = bAufko.Fak_Knr iFaknr = bAufko.Faknr cKtoDebitor = tUmsatz.cKonto. END. IF lFehler THEN NEXT. IF FIRST-OF ( bAufko.Aufnr ) THEN DO: FIND FIRST tAufko. BUFFER-COPY bAufko TO tAufko ASSIGN tAufko.Kurs = nKurs tAufko.Faktor = iFaktor tAufko.cKtoDebitor = cKtoDebitor tAufko.cKtoGebinde = cKtoGebinde. kRecid = RECID(bAufko). CREATE tAuftraege. ASSIGN tAuftraege.cFirma = bAufko.Firma tAuftraege.iAufnr = bAufko.Aufnr tAuftraege.nKurs = nKurs tAuftraege.iFaktor = iFaktor. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = bAufko.Fak_Knr. ASSIGN tUmsatz.nPorto = tUmsatz.nPorto + (bAufko.Porto * nKurs / iFaktor) tUmsatz.nVerpack = tUmsatz.nVerpack + (bAufko.Verpack * nKurs / iFaktor) tUmsatz.nTransp = tUmsatz.nTransp + (bAufko.Transp * nKurs / iFaktor) tUmsatz.nAufTot = tUmsatz.nAufTot + (bAufko.Auf_Tot * nKurs / iFaktor) tUmsatz.nAufTot_Frw = tUmsatz.nAufTot_Frw + bAufko.Auf_Tot . CREATE tUmsatz. ASSIGN tUmsatz.cArt = 'Debza' tUmsatz.iKnr = bAufko.Fak_Knr tUmsatz.iJahr = YEAR(dBuchDat) tUmsatz.iPeriode = MONTH(dBuchdat) tUmsatz.Frw = bAufko.Frw tUmsatz.iFaktor = iFaktor tUmsatz.nKurs = nKurs tUmsatz.cKonto = bAufko.Bar_Konto tUmsatz.nZahBetr = tUmsatz.nZahBetr + (bAufko.Bar_Betr * nKurs / iFaktor) tUmsatz.nSkonto = tUmsatz.nSkonto + (bAufko.Bar_Skonto * nKurs / iFaktor) tUmsatz.nZahBetr_Frw = tUmsatz.nZahBetr_Frw + bAufko.Bar_Betr tUmsatz.nSkonto_Frw = tUmsatz.nSkonto_Frw + bAufko.Bar_Skonto . DO ii = 1 TO 12: IF bAufko.Wpfl[ii] = 0 THEN NEXT. FIND FIRST tMwst WHERE tMwst.iFaknr = bAufko.Faknr AND tMwst.iCd = ii NO-ERROR. IF NOT AVAILABLE tMwst THEN DO: FIND LAST MWSTAns NO-LOCK WHERE MWSTAns.Mwst_Cd = ii AND MWSTAns.Datum <= bAufko.Fak_Datum NO-ERROR. CREATE tMwst. ASSIGN tMwst.iFaknr = bAufko.Faknr tMwst.iCd = ii tMwst.lInkl = MWSTAns.Incl tMwst.Frw = bAufko.Frw tMwst.nKurs = nKurs tMwst.iFaktor = iFaktor tMwst.cKonto = (IF cKtoVereinnahmt <> '' THEN cKtoVereinnahmt ELSE MWSTAns.Konto) tMwst.nAnsatz = MWSTAns.Ansatz. IF tMwst.cKonto = '' THEN tMwst.cKonto = bSteuNr.Konto_Wust_H. RELEASE MWSTAns. END. ASSIGN tMwst.nBetrag_FRW = tMwst.nBetrag_FRW + bAufko.Wpfl[ii] tMwst.nMwst_FRW = tMwst.nMwst_FRW + bAufko.Wust[ii] tMwst.nTotal_FRW = tMwst.nTotal_FRW + bAufko.Wpfl[ii] + bAufko.Wust[ii] tMwst.nBetrag = tMwst.nBetrag_FRW * nKurs / iFaktor tMwst.nMwst = tMwst.nMwst_FRW * nKurs / iFaktor tMwst.nTotal = tMwst.nTotal_FRW * nKurs / iFaktor . END. nFakTotalFrw = nFakTotalFrw + bAufko.Auf_Tot. nFakTotal = nFakTotal + (bAufko.Auf_Tot * nKurs / iFaktor). RELEASE Wust . RELEASE MwstAns . RUN GEBINDE_IN_KONTO. END. FIND FIRST tAufko. FOR EACH bAufze NO-LOCK WHERE bAufze.Firma = bAufko.Firma AND bAufze.Aufnr = bAufko.Aufnr AND bAufze.Artnr > 0 BREAK BY bAufze.Artnr BY bAufze.Inhalt BY bAufze.Jahr: IF FIRST-OF ( bAufze.Jahr ) THEN DO: FIND bArtst NO-LOCK WHERE bArtst.Firma = bAufze.Firma AND bArtst.Artnr = bAufze.Artnr AND bArtst.Inhalt = bAufze.Inhalt AND bArtst.Jahr = bAufze.Jahr. CREATE tUmsatz. ASSIGN tUmsatz.cArt = 'Artst' tUmsatz.iArtnr = bAufze.Artnr tUmsatz.iInhalt = bAufze.Inhalt tUmsatz.iJG = bAufze.Jahr tUmsatz.iJahr = YEAR(dBuchDat) tUmsatz.iPeriode = MONTH(dBuchdat) tUmsatz.cKonto = (IF bArtst.Konto <> '' THEN bArtst.Konto ELSE bSteunr.Konto_Ertrag) tUmsatz.Frw = bAufko.Frw tUmsatz.nKurs = tAufko.Kurs tUmsatz.iFaktor = tAufko.Faktor . CREATE tUmsatz. ASSIGN tUmsatz.cArt = 'DebArt' tUmsatz.iKnr = bAufko.Fak_Knr tUmsatz.iArtnr = bAufze.Artnr tUmsatz.iInhalt = bAufze.Inhalt tUmsatz.iJG = bAufze.Jahr tUmsatz.iJahr = YEAR(dBuchDat) tUmsatz.iPeriode = MONTH(dBuchdat) tUmsatz.cKonto = '' tUmsatz.Frw = bAufko.Frw tUmsatz.nKurs = nKurs tUmsatz.iFaktor = iFaktor . END. FIND FIRST tAufze. BUFFER-COPY bAufze TO tAufze ASSIGN tAufze.Kurs = tAufko.Kurs tAufze.Faktor = tAufze.Faktor . DYNAMIC-FUNCTION('makeUmsatz':U) NO-ERROR. END. IF NOT LAST-OF ( bAufko.Faknr ) THEN NEXT. IF lFehler THEN NEXT. nTotBetrFrw = 0. nTotBetr = 0. FOR EACH tMwst WHERE tMwst.iFaknr = bAufko.Faknr: nTotBetrFrw = nTotBetrFrw + tMwst.nTotal_FRW. nTotBetr = nTotBetr + tMwst.nTotal . END. IF nTotBetrFrw <> nFakTotalFrw OR nTotBetr <> nFakTotal THEN DO: nDiffFrw = nFakTotalFrw - nTotBetrFrw. nDiff = nFakTotal - nTotBetr . FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = bAufko.Fak_Knr. tUmsatz.nAufTot = tUmsatz.nAufTot + nDiff. tUmsatz.nAufTot_Frw = tUmsatz.nAufTot_Frw + nDiffFrw. /* OUTPUT TO 'C:\TEMP\tMwst.csv'. */ /* FOR EACH tMwst: */ /* EXPORT DELIMITER ';' tMwst.*/ /* END. */ /* OUTPUT CLOSE. */ FOR EACH tMwst WHERE tMwst.iFaknr = bAufko.Faknr BY tMwst.nTotal_FRW: IF nDiffFrw <> 0 THEN ASSIGN tMwst.nTotal_Frw = tMwst.nTotal_Frw + nDiffFrw tMwst.nBetrag_FRW = tMwst.nTotal_FRW - tMwst.nMwst_FRW. IF nDiff <> 0 THEN ASSIGN tMwst.nTotal = tMwst.nTotal + nDiff tMwst.nBetrag = tMwst.nTotal - tMwst.nMwst. LEAVE. END. /* OUTPUT TO 'C:\TEMP\tMwst.csv' APPEND.*/ /* FOR EACH tMwst: */ /* EXPORT DELIMITER ';' tMwst. */ /* END. */ /* OUTPUT CLOSE. */ END. lFehler = FALSE. BUCHEN: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST tAufko. RUN VERBUCHEN_UMSAETZE ( OUTPUT lFehler ). IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN. IF tAufko.Fak_Art <> 99 THEN DO: RUN VERBUCHEN_DEBITOR ( OUTPUT lFehler ). IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN. RUN MEHRWERTSTEUER_IN_KONTO ( OUTPUT lFehler ). IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN. RUN NEBENKOSTEN_IN_KONTO ( OUTPUT lFehler ). IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN. RUN VERBUCHEN_INTERFACE ( OUTPUT lFehler ). IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FIND Debst WHERE RECID(Debst) = dRecid. Debst.Saldo = Debst.Saldo + nFakTotal. Debst.Saldo_Frw = Debst.Saldo_Frw + nFakTotalFrw. Debst.Zuschl_Verr = Debst.Zuschl_Verr + tUmsatz.nZuschlag. Debst.LetztVK = dBuchDat. END. DISABLE TRIGGERS FOR LOAD OF Aufze. FOR EACH tAuftraege: FIND Aufko WHERE Aufko.Firma = tAuftraege.cFirma AND Aufko.Aufnr = tAuftraege.iAufnr. ASSIGN Aufko.Verbucht = TRUE Aufko.Kurs = tAuftraege.nKurs Aufko.Faktor = tAuftraege.iFaktor . FOR EACH Aufze OF Aufko: ASSIGN Aufze.Verbucht = TRUE Aufze.Kurs = Aufko.Kurs Aufze.Faktor = Aufko.Faktor . END. RELEASE Aufko. RELEASE Aufze. END. IF tAufko.Fak_Art = 99 THEN LEAVE. FIND FIRST tVerbucht WHERE tVerbucht.Datum = dBuchDat AND tVerbucht.Konto = tAufko.cKtoDebitor NO-ERROR. IF NOT AVAILABLE tVerbucht THEN DO: CREATE tVerbucht. ASSIGN tVerbucht.Datum = dBuchDat tVerbucht.Konto = tAufko.cKtoDebitor tVerbucht.nKurs = tAufko.Kurs tVerbucht.iFaktor = tAufko.Faktor tVerbucht.Frw = tAufko.Frw. END. ASSIGN tVerbucht.FakBetr = tVerbucht.FakBetr + nFakTotal. IF Debst.Passant THEN RUN PASSANT. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debza' AND tUmsatz.iKnr = tAufko.Fak_Knr NO-ERROR. IF AVAILABLE tUmsatz THEN RUN CREATE_ZAHLUNG. RELEASE bAufko. RELEASE Debst. LEAVE. END. IF lFehler THEN DO: FIND FIRST tAufko. MESSAGE 'Fehler beim Verbuchen der Rechnung ' SKIP 'Kundennummer ' tAufko.Knr SKIP 'Auftragsnummer ' tAufko.Aufnr SKIP 'Fakturanummer ' tAufko.Faknr SKIP VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. END. REPEAT TRANSACTION WHILE NOT lFehler: FIND FIRST tAufko. IF tAufko.Fak_Art = 99 THEN LEAVE. IF lSendMail THEN DO: ASSIGN cMailTo = '' cAnrede = ''. FIND bAdresse NO-LOCK WHERE RECID(bAdresse) = aRecid. FIND bDebst NO-LOCK WHERE RECID(bDebst) = dRecid. FOR EACH Ansprech NO-LOCK WHERE Ansprech.Firma = Firma AND Ansprech.Knr = bDebst.Knr AND Ansprech.Debitoren = TRUE AND Ansprech.Mail <> '': cMailTo = cMailTo + (IF cMailTo = '' THEN '' ELSE ';') + Ansprech.Mail. cAnrede = cAnrede + (IF cAnrede = '' THEN '' ELSE ', ') + Ansprech.BriefAnr. END. IF cMailTo = '' THEN DO: cMailTo = bAdresse.Mail. cAnrede = bAdresse.BriefAnr. END. RUN getMailBody ( TRIM(STRING(bAdresse.Sprcd,'>9')), OUTPUT cMailBody ). cMailBody = SUBSTITUTE(cMailBody, bAdresse.BriefAnr, tAufko.Faknr). CREATE tSendMail. ASSIGN tSendMail.iKnr = bDebst.Knr tSendMail.cKunde = bAdresse.Anzeig_Br tSendMail.cMail = (IF cMailTo = '' THEN 'Keine Mailadresse' ELSE cMailTo) tSendmail.iFaknr = iFaknr. IF cMailTo = '' THEN DO: lSendMail = FALSE. LEAVE. END. cDateiName = SUBSTITUTE(cMailVersandPath, STRING(tAufko.Fak_Knr,'999999'), STRING(tAufko.Faknr ,'9999999'), DYNAMIC-FUNCTION('getDokumentArt':U, tAufko.Fak_Art) ). CREATE ASMutation. ASSIGN ASMutation.asmutation_id = NEXT-VALUE(asmutation_id) ASMutation.MutArt = 'MAIL' ASMutation.Aktiv = TRUE ASMutation.cStatus = '' ASMutation.Datum = TODAY ASMutation.Firma = Firma ASMutation.cFeld_1 = SUBSTITUTE('TO:&1;CC:&2', cMailTo, cKopieRechnung) ASMutation.cFeld_2 = SUBSTITUTE('Rechnung Nr &1', tAufko.Faknr ) ASMutation.cFeld_3 = cMailBody ASMutation.cKey_1 = STRING(tAufko.Fak_Art,'99') ASMutation.cKey_2 = cDateiName. RELEASE ASMutation. lSendMail = FALSE. iAnzMail = iAnzMail + 1. END. IF tAufko.Samm_Nr = 0 THEN LEAVE. FOR EACH Aufko USE-INDEX Aufko-k2 WHERE Aufko.Firma = tAufko.Firma AND Aufko.Fak_Knr = tAufko.Fak_Knr AND Aufko.Samm_Nr <> 0 AND Aufko.Auf_Sta < 4: Aufko.Faknr = 0. Aufko.Gedruckt = FALSE. RELEASE Aufko. END. RELEASE Aufko. LEAVE. END. END. RUN LOESCHEN_VERBUCHTE_AUFTRAEGE. F_Adresse = 'Barzahlungen werden verbucht ...'. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}. RUN ZAHLUNGEN_BUCHEN ( Firma, 90 ). IF AnzFak > 1 THEN DO: DEFINE VARIABLE hVerbucht AS HANDLE NO-UNDO. hVerbucht = TEMP-TABLE tVerbucht:DEFAULT-BUFFER-HANDLE. RUN 'g-verbuchjour.w':U ( hVerbucht ). END. IF iAnzMail > 0 THEN DO: RUN createMailBodyProtokoll ( OUTPUT cMailBody ). REPEAT TRANSACTION: CREATE ASMutation. ASSIGN ASMutation.asmutation_id = NEXT-VALUE(asmutation_id) ASMutation.MutArt = 'MAIL' ASMutation.Aktiv = TRUE ASMutation.cStatus = '' ASMutation.Datum = TODAY ASMutation.Firma = Firma ASMutation.cFeld_1 = SUBSTITUTE('TO:&1', cProtokollRechnungen) ASMutation.cFeld_2 = SUBSTITUTE('Protokoll Mailversand Rechnung &1 &2', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS') ) ASMutation.cFeld_3 = cMailBody ASMutation.cKey_1 = 'Protokoll' ASMutation.cKey_2 = ''. RELEASE ASMutation. LEAVE. END. F_Adresse = 'Versenden der Mail-Rechnungen ...'. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}. RUN 'SendMailStart.p'. END. ENABLE Btn_Start WITH FRAME {&FRAME-NAME}. IF lBatch THEN DO: APPLY 'GO' TO FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_DEBITOR gVerbuchen PROCEDURE VERBUCHEN_DEBITOR : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO. lRetVal = TRUE. DEFINE VARIABLE iTage AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE nToleranz AS DECIMAL INIT 1.00 NO-UNDO. DEFINE VARIABLE nDifferenz AS DECIMAL NO-UNDO. FIND FIRST tAufko. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FIND Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tAufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE Adresse THEN DO: FIND Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tAufko.Knr. END. FIND Debst WHERE Debst.Firma = tAufko.Firma AND Debst.Knr = tAufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE Debst THEN DO: FIND Debst WHERE Debst.Firma = tAufko.Firma AND Debst.Knr = tAufko.Knr NO-ERROR. END. FIND Kondi NO-LOCK WHERE Kondi.Sprcd = Adresse.Sprcd AND Kondi.Kond = tAufko.Kond NO-ERROR. IF NOT AVAILABLE Kondi THEN DO: FIND FIRST Kondi NO-LOCK WHERE Kondi.Kond = tAufko.Kond NO-ERROR. END. IF AVAILABLE Kondi THEN iTage = Kondi.Faellig. ELSE iTage = 30. FIND Steuer NO-LOCK WHERE Steuer.Firma = tAufko.Firma. FIND SteuNr NO-LOCK WHERE SteuNr.Firma = tAufko.Firma. nFakTotal = 0. FOR EACH tMwst WHERE tMwst.iCd < 12: FIND LAST MwstAns NO-LOCK WHERE MwstAns.Mwst_Cd = tMwst.iCd AND MwstAns.Datum <= dBuchDat NO-ERROR. tMwst.nAnsatz = MwstAns.Ansatz. nFakTotal = nFakTotal + tMwst.nTotal. END. /* RUN RUNDEN ( 1, INPUT-OUTPUT nFakTotal ).*/ nDifferenz = tUmsatz.nAufTot - nFakTotal. IF ABS(nDifferenz) > nToleranz THEN RETURN. FIND LAST TransNr NO-LOCK WHERE TransNr.Firma = '9999' NO-ERROR. iTrNr1 = (IF AVAILABLE TransNr THEN TransNr.TrNr1 + 1 ELSE 1). iTrNr2 = 1. iTrans = 0. CREATE TransNr. ASSIGN TransNr.Firma = '9999' TransNr.TrNr1 = iTrnr1 TransNr.TrNr2 = iTrnr2 TransNr.Herk = 51 TransNr.Erf_Datum = TODAY TransNr.Erf_Zeit = TIME TransNr.SaBe = DYNAMIC-FUNCTION('getSysUser':U) TransNr.Betrag = nFakTotalFrw. RELEASE TransNr. CREATE Debop. ASSIGN Debop.Firma = tAufko.Firma Debop.Knr = tAufko.Fak_Knr Debop.Faknr = tAufko.Faknr Debop.Fakdat = dBuchDat Debop.Faellig = dBuchDat + iTage Debop.Skber = nSkBer Debop.WW = nWW Debop.Fakbetr = nFakTotal Debop.Saldo = nFakTotal Debop.Kond = tAufko.Kond Debop.Transp = tUmsatz.nTransp Debop.Porto = tUmsatz.nPorto Debop.Verpack = tUmsatz.nVerpack Debop.Konto = tUmsatz.cKonto Debop.Vertr = Debst.Vertr Debop.Kte = 'DEF':U Debop.TrNr1 = iTrNr1 Debop.TrNr2 = iTrNr2 Debop.FRW = tUmsatz.Frw Debop.Kurs = tUmsatz.nKurs Debop.Faktor = tUmsatz.iFaktor Debop.Fakbetr_FRW = nFakTotalFrw Debop.Saldo_FRW = nFakTotalFrw Debop.WW_FRW = nWW / tUmsatz.nKurs * tUmsatz.iFaktor Debop.Skber_FRW = nSkber / tUmsatz.nKurs * tUmsatz.iFaktor . IF Steuer.MWST = 0 THEN Debop.WustAbr = TRUE. /* vereinbart */ ELSE Debop.WustAbr = FALSE. /* vereinnahmt */ IF Debop.Fakbetr_FRW = 0 THEN Debop.WustAbr = TRUE. /* vereinbart */ FOR EACH tMwst WHERE tMwst.iFaknr = tAufko.Faknr AND tMwst.nTotal <> 0: ASSIGN Debop.FakWpfl[tMwst.iCd] = tMwst.nBetrag Debop.FakWust[tMwst.iCd] = tMwst.nMwst Debop.FakIncl[tMwst.iCd] = tMwst.lInkl Debop.FakWPro[tMwst.iCd] = tMwst.nAnsatz. END. CREATE Debfa. ASSIGN Debfa.Firma = Debop.Firma Debfa.Knr = Debop.Knr Debfa.Faknr = Debop.Faknr Debfa.Fakdat = Debop.Fakdat Debfa.Faellig = Debop.Faellig Debfa.Fakbetr = Debop.Fakbetr Debfa.Skber = Debop.Skber Debfa.WW = Debop.WW Debfa.Transp = Debop.Transp Debfa.Porto = Debop.Porto Debfa.Verpack = Debop.Verpack Debfa.Konto = Debop.Konto Debfa.Vertr = Debop.Vertr Debfa.Kte = Debop.Kte Debfa.TrNr1 = Debop.TrNr1 Debfa.TrNr2 = Debop.TrNr2 Debfa.FRW = Debop.FRW Debfa.Kurs = Debop.Kurs Debfa.Faktor = Debop.Faktor Debfa.Fakbetr_FRW = Debop.Fakbetr_FRW Debfa.WW_FRW = Debop.WW_FRW Debfa.Skber_FRW = Debop.Skber_FRW Debfa.Fakwpfl = Debop.Fakwpfl Debfa.Fakwust = Debop.Fakwust . /* DO ii = 1 TO 12: */ /* ASSIGN */ /* Debfa.FakWpfl[ii] = Debop.FakWpfl[ii] */ /* Debfa.FakWust[ii] = Debop.FakWust[ii].*/ /* END. */ FIND LAST Debhi NO-LOCK USE-INDEX Debhi-k1 WHERE Debhi.Firma = Debop.Firma AND Debhi.Knr = Debop.Knr NO-ERROR. IF AVAILABLE Debhi THEN iTrans = Debhi.Trnr + 1. ELSE iTrans = 1. CREATE Debhi. ASSIGN Debhi.Firma = Debop.Firma Debhi.Knr = Debop.Knr Debhi.Trnr = iTrans Debhi.Datum = Debop.Fakdat Debhi.Faknr = Debop.Faknr Debhi.Kte = Debop.Kte Debhi.Soll = Debop.Fakbetr Debhi.Transp = Debop.Transp Debhi.Porto = Debop.Porto Debhi.Verpack = Debop.Verpack Debhi.Konto = Debop.Konto Debhi.TrNr1 = Debop.TrNr1 Debhi.TrNr2 = Debop.TrNr2 Debhi.FRW = Debop.FRW Debhi.Kurs = Debop.Kurs Debhi.Faktor = Debop.Faktor Debhi.Saldo = Debst.Saldo_FRW + Debop.Fakbetr_Frw Debhi.Soll_FRW = Debop.Fakbetr_FRW . IF Debop.WustAbr THEN DO: /* Mehrwertsteuer vereinbart */ CREATE Debwu. ASSIGN Debwu.Firma = Debop.Firma Debwu.Knr = Debop.Knr Debwu.Faknr = Debop.Faknr Debwu.Trnr = 1 Debwu.Datum = Debop.Fakdat Debwu.Betrag = Debop.Fakbetr Debwu.Konto = Debop.Konto Debwu.Kte = Debop.Kte Debwu.TrNr1 = Debop.TrNr1 Debwu.TrNr2 = Debop.TrNr2 Debwu.FRW = Debop.FRW Debwu.Kurs = Debop.Kurs Debwu.Faktor = Debop.Faktor Debwu.Betrag_FRW = Debop.Fakbetr_FRW Debwu.Wustpfl = Debop.FakWpfl Debwu.Wust = Debop.FakWust . /* DO ii = 1 TO 12: */ /* IF Debop.FakWpfl[ii] = 0 THEN NEXT. */ /* ASSIGN */ /* Debwu.Wustpfl[ii] = Debop.FakWpfl[ii] */ /* Debwu.Wust [ii] = Debop.FakWust[ii].*/ /* END. */ END. lRetVal = FALSE. RELEASE Adresse . RELEASE Debst . RELEASE Steuer . RELEASE Debop . RELEASE Debhi . RELEASE Debfa . RELEASE Debwu . RELEASE Kondi . END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_INTERFACE gVerbuchen PROCEDURE VERBUCHEN_INTERFACE : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO. lRetVal = TRUE. DEFINE VARIABLE cBuchText1 AS CHARACTER NO-UNDO. DEFINE VARIABLE cBuchText2 AS CHARACTER NO-UNDO. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO. DEFINE VARIABLE cFBFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE nBetrag AS DECIMAL NO-UNDO. FIND FIRST tAufko. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FIND Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tAufko.Fak_Knr NO-ERROR. IF NOT AVAILABLE Adresse THEN DO: FIND Adresse NO-LOCK WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tAufko.Knr NO-ERROR. END. FIND Steuer NO-LOCK WHERE Steuer.Firma = tAufko.Firma. cBuchText1 = SUBSTITUTE('Debitorrechnung Nr. &1', STRING(tAufko.Faknr,'9999999')). cBuchText2 = Adresse.Anzeig_Br. /* OUTPUT TO 'C:\LogFiles\SAGEKonto.csv' NO-MAP NO-CONVERT.*/ /* FOR EACH tKonto */ /* BY tKonto.cKto1 */ /* BY tKonto.cKto2 */ /* BY tKonto.iMWSt_Cd: */ /* EXPORT DELIMITER ';' tKonto. */ /* END. */ /* OUTPUT CLOSE. */ /* */ nDiff = nFakTotal. FOR EACH tKonto BY tKonto.cKto1 BY tKonto.cKto2 BY tKonto.iMWSt_Cd: IF tKonto.nBetrag = 0 THEN DO: DELETE tKonto. NEXT. END. tKonto.nBetrag = DECIMAL(STRING(tKonto.nBetrag,'99999999.99-')). IF tKonto.cKto1 = tAufko.cKtoDebitor THEN nDiff = nDiff - tKonto.nBetrag. IF Steuer.Fwc09 = '' THEN DO: ASSIGN tKonto.iMWSt_Cd = 0 tKonto.lMWSt = FALSE. END. END. IF nDiff <> 0 THEN DO: /* Rundungsdifferenz vom Faktura-Total zu den einzelnen Ertragsbuchungen */ /* werden auf das Ertragskonto mit dem grössten Betrag gebucht */ FOR EACH tKonto WHERE tKonto.cArt = 'WARE' BY tKonto.nBetrag DESCENDING: tKonto.nBetrag = tKonto.nBetrag + nDiff. LEAVE. END. END. IF Steuer.Fwc09 = '' THEN cFBFirma = Steuer.FBFirma. ELSE cFBFirma = Steuer.Fwc09. FIND FIRST TransNr NO-LOCK WHERE TransNr.Firma = '9999' AND TransNr.TrNr1 = iTrNr1 AND TransNr.TrNr2 = iTrNr2. FOR EACH tKonto BREAK BY tKonto.cKto1 BY tKonto.cKto2 BY tKonto.iMWSt_Cd: IF FIRST-OF ( tKonto.iMWSt_Cd ) THEN nBetrag = 0. nBetrag = nBetrag + tKonto.nBetrag. IF NOT LAST-OF ( tKonto.iMWSt_Cd ) THEN NEXT. FIND LAST Interf USE-INDEX Interf-k1 WHERE Interf.Firma = cFBFirma AND Interf.TrNr1 = iTrNr1 AND Interf.TrNr2 = iTrNr2 NO-LOCK NO-ERROR. IF AVAILABLE Interf THEN iTrans = Interf.Trnr + 1. ELSE iTrans = 1. CREATE Interf. ASSIGN Interf.Firma = cFBFirma Interf.TrNr1 = iTrNr1 Interf.TrNr2 = iTrNr2 Interf.TrNr = iTrans Interf.Kto1 = tKonto.cKto1 Interf.Kto2 = tKonto.cKto2 Interf.Herk = TransNr.Herk Interf.Datum = dBuchDat Interf.Buchtxt1 = cBuchText1 Interf.Buchtxt2 = cBuchText2 Interf.Betrag = nBetrag Interf.Betrag_Frw = nBetrag / tKonto.nKurs * tKonto.iFaktor Interf.FRW = tAufko.Frw Interf.Faktor = tAufko.Faktor Interf.Kurs = tAufko.Kurs Interf.Verbucht = FALSE Interf.Faknr = STRING(tAufko.Faknr,"9999999") Interf.Knr = tAufko.Fak_Knr Interf.MWST_Nr = "" Interf.MWST_Cd = tKonto.iMWST_Cd Interf.HKFirma = tAufko.Firma Interf.MWST_Art = (IF tKonto.lMWSt THEN 1 ELSE 0). END. lRetVal = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_UMSAETZE gVerbuchen PROCEDURE VERBUCHEN_UMSAETZE : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO. lRetVal = TRUE. FIND FIRST tAufko. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. FIND DebUms USE-INDEX DebUms-k1 WHERE DebUms.Firma = tAufko.Firma AND DebUms.Jahr = tUmsatz.iJahr AND DebUms.Knr = tUmsatz.iKnr AND DebUms.Ums_Grp = 999 NO-ERROR. IF NOT AVAILABLE DebUms THEN DO: CREATE DebUms. ASSIGN DebUms.Firma = tAufko.Firma DebUms.Jahr = tUmsatz.iJahr DebUms.Knr = tUmsatz.iKnr DebUms.Ums_Grp = 999. END. ASSIGN DebUms.Me_Mon[tUmsatz.iPeriode] = DebUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge DebUms.Me_Kum = DebUms.Me_Kum + tUmsatz.nMenge DebUms.Ep_Mon[tUmsatz.iPeriode] = DebUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp DebUms.Ep_Kum = DebUms.Ep_Kum + tUmsatz.nEp DebUms.Vp_Mon[tUmsatz.iPeriode] = DebUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp DebUms.Vp_Kum = DebUms.Vp_Kum + tUmsatz.nVp. RELEASE DebUms. ASSIGN nWW = 0 nSkBer = 0 nFakTotal = 0 . FOR EACH tUmsatz WHERE tUmsatz.cArt = 'Artst': FIND Artst NO-LOCK WHERE Artst.Firma = tAufko.Firma AND Artst.Artnr = tUmsatz.iArtnr AND Artst.Inhalt = tUmsatz.iInhalt AND Artst.Jahr = tUmsatz.iJG. IF Artst.Sk_Ber THEN nSkBer = nSkber + tUmsatz.nVp. nWW = nWW + tUmsatz.nVp. FIND ArtUms WHERE ArtUms.Firma = tAufko.Firma AND ArtUms.Jahr = tUmsatz.iJahr AND ArtUms.Artnr = tUmsatz.iArtnr AND ArtUms.Inhalt = tUmsatz.iInhalt AND ArtUms.Jahrg = tUmsatz.iJG NO-ERROR. IF NOT AVAILABLE ArtUms THEN DO: CREATE ArtUms. ASSIGN ArtUms.Firma = tAufko.Firma ArtUms.Jahr = tUmsatz.iJahr ArtUms.Artnr = tUmsatz.iArtnr ArtUms.Inhalt = tUmsatz.iInhalt ArtUms.Jahrg = tUmsatz.iJG. END. ASSIGN ArtUms.Me_Mon[tUmsatz.iPeriode] = ArtUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge ArtUms.Me_Kum = ArtUms.Me_Kum + tUmsatz.nMenge ArtUms.Ep_Mon[tUmsatz.iPeriode] = ArtUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp ArtUms.Ep_Kum = ArtUms.Ep_Kum + tUmsatz.nEp ArtUms.Li_Mon[tUmsatz.iPeriode] = ArtUms.Li_Mon[tUmsatz.iPeriode] + tUmsatz.nLiter ArtUms.Li_Kum = ArtUms.Li_Kum + tUmsatz.nLiter ArtUms.Vp_Mon[tUmsatz.iPeriode] = ArtUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp ArtUms.Vp_Kum = ArtUms.Vp_Kum + tUmsatz.nVp. RELEASE ArtUms. FIND Umsatz WHERE Umsatz.Firma = tAufko.Firma AND Umsatz.Ums_Art = 'TOTAL' AND Umsatz.Jahr = tUmsatz.iJahr AND Umsatz.Grp_01 = 0 NO-ERROR. IF NOT AVAILABLE Umsatz THEN DO: CREATE Umsatz. ASSIGN Umsatz.Firma = tAufko.Firma Umsatz.Ums_Art = 'TOTAL' Umsatz.Jahr = tUmsatz.iJahr Umsatz.Grp_01 = 0. END. ASSIGN Umsatz.VP_Mon[tUmsatz.iPeriode] = Umsatz.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp Umsatz.VP_Kum = Umsatz.Vp_Kum + tUmsatz.nVp Umsatz.EP_Mon[tUmsatz.iPeriode] = Umsatz.EP_Mon[tUmsatz.iPeriode] + tUmsatz.nEP Umsatz.EP_Kum = Umsatz.EP_Kum + tUmsatz.nEP. RELEASE Umsatz. END. FOR EACH tUmsatz WHERE tUmsatz.cArt = 'DebArt': FIND DeArUms WHERE DeArUms.Firma = tAufko.Firma AND DeArUms.Jahr = tUmsatz.iJahr AND DeArUms.Knr = tUmsatz.iKnr AND DeArUms.Artnr = tUmsatz.iArtnr AND DeArUms.Inhalt = tUmsatz.iInhalt AND DeArUms.Jahrg = tUmsatz.iJG NO-ERROR. IF NOT AVAILABLE DeArUms THEN DO: CREATE DeArUms. ASSIGN DeArUms.Firma = tAufko.Firma DeArUms.Jahr = tUmsatz.iJahr DeArUms.Knr = tUmsatz.iKnr DeArUms.Artnr = tUmsatz.iArtnr DeArUms.Inhalt = tUmsatz.iInhalt DeArUms.Jahrg = tUmsatz.iJG. END. ASSIGN DeArUms.Me_Mon[tUmsatz.iPeriode] = DeArUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge DeArUms.Me_Kum = DeArUms.Me_Kum + tUmsatz.nMenge DeArUms.Ep_Mon[tUmsatz.iPeriode] = DeArUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp DeArUms.Ep_Kum = DeArUms.Ep_Kum + tUmsatz.nEp DeArUms.Li_Mon[tUmsatz.iPeriode] = DeArUms.Li_Mon[tUmsatz.iPeriode] + tUmsatz.nLiter DeArUms.Li_Kum = DeArUms.Li_Kum + tUmsatz.nLiter DeArUms.Vp_Mon[tUmsatz.iPeriode] = DeArUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp DeArUms.Vp_Kum = DeArUms.Vp_Kum + tUmsatz.nVp. RELEASE DeArUms. END. lRetVal = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WERTE_EINLESEN gVerbuchen PROCEDURE WERTE_EINLESEN : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE lRetVal AS LOG NO-UNDO. DEFINE VARIABLE iFakArt AS INTEGER NO-UNDO. DEFINE VARIABLE iAufSta AS INTEGER NO-UNDO. DEFINE VARIABLE lBuchdat AS LOGICAL NO-UNDO. DEFINE BUFFER bTabel FOR Tabel. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. IF F_vonFaknr = 0 AND F_bisFaknr = 0 THEN F_bisFaknr = 9999999 . IF F_vonFaknr > F_bisFaknr THEN F_bisFaknr = F_vonFaknr . IF F_vonFakKnr = 0 AND F_bisFakKnr = 0 THEN F_bisFakKnr = 999999 . IF F_vonFakKnr > F_bisFakKnr THEN F_bisFakKnr = F_vonFakKnr . IF F_vonFaknr = 0 THEN F_vonFaknr = 1. IF F_vonDatum = ? AND F_bisDatum = ? THEN DO: F_vonDatum = 01/01/1901. F_bisDatum = TODAY. END. IF F_vonDatum > F_bisDatum THEN F_bisDatum = F_vonDatum. iFakart = INTEGER(CB_Fakart:SCREEN-VALUE). iAufSta = INTEGER(CB_AufSta:SCREEN-VALUE). FIND FIRST Aufko NO-LOCK WHERE Aufko.Firma = Firma AND Aufko.Fak_Art = iFakArt AND Aufko.Faknr >= F_vonFaknr AND Aufko.Faknr <= F_bisFaknr AND Aufko.Fak_Datum >= F_vonDatum AND Aufko.Fak_Datum <= F_bisDatum AND Aufko.Fak_Knr >= F_vonFakKnr AND Aufko.Fak_Knr <= F_bisFakKnr AND Aufko.Auf_Sta >= iAufSta AND Aufko.Auf_Sta <= iAufSta NO-ERROR. IF NOT AVAILABLE Aufko THEN RETURN 'Keine Selektion'. IF F_vonFaknr = F_bisFaknr AND Aufko.Samm_Nr = 0 AND F_Buchdat = ? THEN F_Buchdat = Aufko.Fak_Datum. /* lBuchdat = (IF Aufko.Samm_Nr > 0 THEN TRUE ELSE FALSE ).*/ /* IF NOT lBuchdat AND */ /* THEN F_Buchdat = ?. */ DO WHILE TRUE: IF F_Buchdat = ? AND lBuchdat THEN DO: MESSAGE 'Buchungsdatum fehlt!' VIEW-AS ALERT-BOX. RETURN 'F_Buchdat'. END. IF F_Buchdat = ? THEN LEAVE. IF F_Buchdat <= dSperrDat THEN DO: MESSAGE 'Das Buchungsdatum ist älter als das SperrDatum ' dSperrDat VIEW-AS ALERT-BOX. RETURN 'F_Buchdat'. END. IF F_Buchdat >= (TODAY - 60) AND F_Buchdat <= (TODAY + 30) THEN LEAVE. F_Buchdat:BGCOLOR = 12. lRetVal = FALSE. MESSAGE 'das Buchungsdatum sollte überprüft werden!' SKIP 'wenn es richtig ist, dann OK' VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO UPDATE lRetVal. IF lRetVal THEN LEAVE. RETURN 'F_Buchdat'. END. DISPLAY {&List-6}. F_Adresse:VISIBLE = TRUE. F_Adresse:SCREEN-VALUE = ''. iFakArt = INTEGER(CB_Fakart:SCREEN-VALUE). iAufSta = INTEGER(CB_AufSta:SCREEN-VALUE). FIND bTabel NO-LOCK WHERE bTabel.Firma = Firma AND bTabel.RecArt = 'FAKART' AND bTabel.CodeC = '' AND bTabel.CodeI = iFakArt AND bTabel.Sprcd = 1 NO-ERROR. IF bTabel.Int_3 = 4 THEN lSammFak = TRUE. ELSE lSammFak = FALSE. DISPLAY {&List-6}. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION checkAlleGedruckt gVerbuchen FUNCTION checkAlleGedruckt RETURNS LOGICAL ( ipRecid AS RECID ) : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE lRetVal AS LOG NO-UNDO. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO. DEFINE VARIABLE iSammNr AS INTEGER NO-UNDO. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO. DEFINE BUFFER dAufko FOR Aufko. FIND dAufko NO-LOCK WHERE RECID(dAufko) = ipRecid. ASSIGN iFaknr = dAufko.Faknr iSammNr = dAufko.Samm_Nr iKnr = dAufko.Fak_Knr. RELEASE dAufko. lRetVal = TRUE. FOR EACH dAufko NO-LOCK USE-INDEX Aufko-k6 WHERE dAufko.Firma = Firma AND dAufko.Fak_Knr = iKnr AND dAufko.Samm_Nr = iSammNr AND dAufko.Faknr = iFaknr : IF NOT dAufko.Gedruckt THEN DO: lRetVal = FALSE. RELEASE dAufko. LEAVE. END. END. RELEASE dAufko. RETURN lRetVal. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION makeUmsatz gVerbuchen FUNCTION makeUmsatz RETURNS LOGICAL ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE nNetto AS DECIMAL NO-UNDO. DEFINE VARIABLE nMwst AS DECIMAL NO-UNDO. DEFINE VARIABLE iTrnr AS INTEGER NO-UNDO. DEFINE VARIABLE htAufze AS HANDLE NO-UNDO. DEFINE VARIABLE cKtoSoll AS CHARACTER NO-UNDO. DEFINE VARIABLE cKtoHaben AS CHARACTER NO-UNDO. DEFINE BUFFER bArtbw FOR Artbw. DEFINE BUFFER bAufze FOR Aufze. FIND FIRST tAufko. FIND FIRST tAufze. IF tAufko.Fak_Art = 99 THEN RETURN TRUE. nNetto = tAufze.Net_Betr - tAufze.Auf_Rab - tAufze.Abh_Rab - tAufze.Auf_Sp_Rab. IF tAufze.Mwst_Inkl THEN nMwst = nNetto * tAufze.Mwst% / (100 + tAufze.Mwst%). ELSE nMwst = 0. nNetto = nNetto - nMwst. nNetto = nNetto * tAufko.Kurs / tAufko.Faktor. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Debst' AND tUmsatz.iKnr = tAufko.Fak_Knr. ASSIGN tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep) tUmsatz.nVp = tUmsatz.nVp + nNetto tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter. cKtoSoll = tUmsatz.cKonto. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'Artst' AND tUmsatz.iArtnr = tAufze.Artnr AND tUmsatz.iInhalt = tAufze.Inhalt AND tUmsatz.iJG = tAufze.Jahr. ASSIGN tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep) tUmsatz.nVp = tUmsatz.nVp + nNetto tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter. cKtoHaben = tUmsatz.cKonto. FIND FIRST tUmsatz WHERE tUmsatz.cArt = 'DebArt' AND tUmsatz.iKnr = tAufko.Fak_Knr AND tUmsatz.iArtnr = tAufze.Artnr AND tUmsatz.iInhalt = tAufze.Inhalt AND tUmsatz.iJG = tAufze.Jahr. ASSIGN tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep) tUmsatz.nVp = tUmsatz.nVp + nNetto tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter. FIND FIRST tKonto WHERE tKonto.cKto1 = cKtoSoll AND tKonto.cKto2 = cKtoHaben AND tKonto.iMwst_Cd = tAufze.WuCd NO-ERROR. IF NOT AVAILABLE tKonto THEN DO: CREATE tKonto. ASSIGN tKonto.cKto1 = cKtoSoll tKonto.cKto2 = cKtoHaben tKonto.iMwst_Cd = tAufze.WuCd tKonto.Frw = tAufko.Frw tKonto.nKurs = tAufko.Kurs tKonto.iFaktor = tAufko.Faktor tKonto.cArt = 'WARE'. END. tKonto.nBetrag = tKonto.nBetrag + nNetto. iTrnr = tAufze.Trnr. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE. DYNAMIC-FUNCTION('fillArtbwFromAufze':U, INPUT-OUTPUT htAufze ). REPEAT TRANSACTION: FIND bAufze OF tAufze. ASSIGN bAufze.Trnr = tAufze.Trnr bAufze.Kurs = tAufze.Kurs bAufze.Faktor = tAufze.Faktor. RELEASE bAufze. LEAVE. END. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME