{ SUPER/funktionen.i } DEF VAR i1 AS INT NO-UNDO. DEF VAR nFakbetr AS DEC NO-UNDO DECIMALS 2. DEF VAR iAnz AS INT NO-UNDO. DEF VAR nMwstPfl AS DEC NO-UNDO EXTENT 12. DEF VAR nMwstBetr AS DEC NO-UNDO EXTENT 12. DEF VAR cMessage AS CHAR NO-UNDO. DEF TEMP-TABLE tAufko LIKE Aufko. { incl/tmwstcalc.i } CREATE tMwstParam. CREATE tAufko. OUTPUT TO 'C:\TEMP\Fehlerjournal.csv' NO-MAP NO-CONVERT. OUTPUT CLOSE. OUTPUT TO 'C:\TEMP\Fehlerjournal.csv' NO-MAP NO-CONVERT APPEND. FOR EACH Aufko NO-LOCK WHERE Aufko.Firma = '1000' /* AND Aufko.Fak_Art = 40 */ /* AND Aufko.Aufnr = 2466479 */ /* AND Aufko.Fak_Datum >= 01/01/2021 */ /* BREAK BY Aufko.Faknr */ : /* IF FIRST-OF(Aufko.Faknr) THEN */ /* DO: */ /* ASSIGN */ /* nMwstPfl = 0 */ /* nMwstBetr = 0. */ /* END. */ FIND FIRST tAufko. BUFFER-COPY Aufko TO tAufko. ASSIGN nMwstPfl = Aufko.Wpfl nMwstBetr = Aufko.Wust. /* DO i1 = 1 TO 12: */ /* ASSIGN */ /* nMwstPfl [i1] = nMwstPfl [i1] + Aufko.Wpfl[i1] */ /* nMwstBetr[i1] = nMwstBetr[i1] + Aufko.Wust[i1] */ /* . */ /* END. */ /* IF NOT LAST-OF(Aufko.Faknr) THEN NEXT. */ FIND FIRST tMwstParam. FIND FIRST Wust NO-LOCK WHERE Wust.CodeK = Aufko.Mwst AND Wust.CodeA = 9 NO-ERROR. ASSIGN tMwstParam.Firma = Aufko.Firma tMwstParam.Knr = Aufko.Knr tMwstParam.Datum = Aufko.Fak_Datum tMwstParam.Frw = Aufko.Frw tMwstParam.MwstPfl = nMwstPfl tMwstParam.MwstBetr = nMwstBetr tMwstParam.MwstCdKd = Aufko.Mwst tMwstParam.lInklusive = (IF AVAILABLE Wust THEN Wust.Incl ELSE FALSE) . DYNAMIC-FUNCTION('calculateMwstFaktura':U, INPUT TABLE tMwstParam, OUTPUT TABLE tMwstCalc, OUTPUT cMessage ). /* MESSAGE cMessage */ /* VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */ IF cMessage = 'NORECORDS' THEN DO: EXPORT DELIMITER ';' Aufko.Knr Aufko.Aufnr Aufko.Faknr Aufko.Auf_Tot 'Null-Rechnung'. NEXT. END. nFakbetr = DECIMAL(RETURN-VALUE). FIND FIRST tMwstCalc NO-ERROR. IF NOT AVAILABLE tMwstCalc THEN NEXT. /* FIND Debop NO-LOCK */ /* WHERE Debop.Firma = Aufko.Firma */ /* AND Debop.Knr = Aufko.Fak_Knr */ /* AND Debop.Faknr = Aufko.Faknr NO-ERROR. */ /* IF NOT AVAILABLE Debop THEN */ /* DO: */ /* EXPORT DELIMITER ';' */ /* Aufko.Knr Aufko.Aufnr Aufko.Faknr 'Kein Debop'. */ /* NEXT. */ /* END. */ ASSIGN nMwstPfl = 0 nMwstBetr = 0. IF ABS(tMwstCalc.Fakbetr) - ABSOLUT(tAufko.Auf_Tot) > 0.05 THEN DO: EXPORT DELIMITER ';' Aufko.Knr Aufko.Aufnr Aufko.Faknr tAufko.Auf_Tot tMwstCalc.Fakbetr 'Differenz Totalbetrag'. NEXT. END. DO i1 = 1 TO 11: IF tAufko.Wpfl[i1] = 0 THEN NEXT. FIND FIRST tMwstCalc WHERE tMwstCalc.Mwst_Cd = i1 NO-ERROR. IF NOT AVAILABLE tMwstCalc THEN NEXT. /* IF tMwstParam.lInklusive THEN */ /* DO: */ /* IF ABS(Debop.FakWpfl[i1]) - ABS(tMwstCalc.Brutto) <= 0.05 AND */ /* ABS(Debop.FakWust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT. */ /* END. */ /* ELSE DO: */ /* IF ABS(Debop.FakWpfl[i1]) - ABS(tMwstCalc.Netto) <= 0.05 AND */ /* ABS(Debop.FakWust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT. */ /* END. */ IF ABS(tAufko.Wust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT. EXPORT DELIMITER ';' Aufko.Knr Aufko.Aufnr Aufko.Faknr Aufko.Wpfl[i1] tMwstCalc.Brutto tAufko.Wust[i1] tMwstCalc.Mwst 'Differenz Mehrwertsteuer'. END. iAnz = iAnz + 1. /* IF iAnz >= 20 THEN LEAVE. */ END. OUTPUT CLOSE. MESSAGE 'Anzahl verarbeitete Aufträge = ' iAnz VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.