DEF VAR i1 AS INT NO-UNDO. DEF VAR WW AS DEC NO-UNDO. DEF VAR Proz AS DEC NO-UNDO INIT 100.00. DEF VAR FakBetr AS DEC NO-UNDO. DEF VAR nTotNebenkosten AS DEC NO-UNDO DECIMALS 2. DEF VAR nRestNebenkosten AS DEC NO-UNDO DECIMALS 2. DEF VAR iFaktNebenkosten AS INT NO-UNDO. DEF VAR htMwstCalc AS HANDLE NO-UNDO. DEF VAR lNebenkosten AS LOG NO-UNDO INIT TRUE. DEF TEMP-TABLE tMwstCalc FIELD Mwst_Cd AS INT FIELD Ansatz AS DEC FIELD Inkl AS LOG FIELD Fakbetr AS DEC DECIMALS 2 FIELD Brutto AS DEC DECIMALS 2 FIELD Netto AS DEC DECIMALS 2 FIELD Mwst AS DEC DECIMALS 2 FIELD Faktor AS INT FIELD ProzAnteil AS DEC DECIMALS 2 FIELD VerpAnteil AS DEC DECIMALS 2 FIELD AbsBrutto AS DEC DECIMALS 2 FIELD AbsNetto AS DEC DECIMALS 2 FIELD AbsMwst AS DEC DECIMALS 2 . DEF BUFFER btMwstCalc FOR tMwstCalc. htMwstCalc = TEMP-TABLE tMwstCalc:DEFAULT-BUFFER-HANDLE. FIND Aufko NO-LOCK WHERE Aufko.Firma = '1010' AND Aufko.Aufnr = 2661110. DO i1 = 1 TO 12: IF Aufko.WPfl[i1] = 0 THEN NEXT. CREATE tMwstCalc. IF i1 < 12 THEN DO: FIND LAST MwstAns NO-LOCK WHERE MwstAns.Firma = '1010' AND MwstAns.Lkz = 'zzz' AND MwstAns.MwstCd = i1 AND MwstAns.Ab_Datum <= TODAY. ASSIGN tMwstCalc.Mwst_Cd = i1 tMwstCalc.Faktor = (IF Aufko.Wpfl[i1] >= 0 THEN 1 ELSE -1) tMwstCalc.Ansatz = MwstAns.Ansatz tMwstCalc.Inkl = MwstAns.Inkl tMwstCalc.Fakbetr = Aufko.Tot-Betr. IF NOT tMwstCalc.Inkl THEN DO: ASSIGN tMwstCalc.Brutto = Aufko.Wpfl[i1] + Aufko.Wust[i1] tMwstCalc.Netto = Aufko.Wpfl[i1] tMwstCalc.Mwst = Aufko.Wust[i1]. END. ELSE DO: ASSIGN tMwstCalc.Brutto = Aufko.Wpfl[i1] tMwstCalc.Mwst = tMwstCalc.Brutto * tMwstCalc.Ansatz / (100 + tMwstCalc.Ansatz) tMwstCalc.Netto = tMwstCalc.Brutto - tMwstCalc.Mwst. END. ASSIGN tMwstCalc.AbsBrutto = ABS(tMwstCalc.Brutto) tMwstCalc.AbsNetto = ABS(tMwstCalc.Netto ) tMwstCalc.AbsMwst = ABS(tMwstCalc.Mwst ) tMwstCalc.ProzAnt = 0.0. ww = ww + tMwstCalc.AbsNetto. END. ELSE DO: ASSIGN tMwstCalc.Mwst_Cd = 999 tMwstCalc.Faktor = (IF Aufko.Wpfl[i1] >= 0 THEN 1 ELSE -1) tMwstCalc.Ansatz = 0.0 tMwstCalc.Inkl = FALSE tMwstCalc.Fakbetr = 0 tMwstCalc.Brutto = Aufko.Verp tMwstCalc.Netto = Aufko.Verp tMwstCalc.Mwst = 0 tMwstCalc.AbsBrutto = ABS(Aufko.Verp) tMwstCalc.AbsNetto = ABS(Aufko.Verp) tMwstCalc.AbsMwst = 0 tMwstCalc.ProzAnt = 0. END. END. FIND FIRST btMwstCalc WHERE btMwstCalc.Mwst_Cd = 999 NO-ERROR. IF NOT AVAILABLE btMwstCalc THEN DO: FakBetr = FakBetr + tMwstCalc.Netto + tMwstCalc.Mwst. lNebenkosten = FALSE. END. DO WHILE lNebenkosten: nRestNebenkosten = btMwstCalc.Netto. nTotNebenkosten = btMwstCalc.AbsNetto. iFaktNebenkosten = btMwstCalc.Faktor. FOR EACH tMwstCalc WHERE tMwstCalc.Mwst_Cd < 999 BREAK BY tMwstCalc.Mwst_Cd: IF LAST(tMwstCalc.Mwst_Cd) THEN DO: tMwstCalc.ProzAnt = Proz. tMwstCalc.VerpAnt = nRestNebenkosten. tMwstCalc.Netto = tMwstCalc.Netto + tMwstCalc.VerpAnt. tMwstCalc.Mwst = tMwstCalc.Netto * tMwstCalc.Ansatz / 100. tMwstCalc.Brutto = tMwstCalc.Netto + tMwstCalc.Mwst. END. ELSE DO: tMwstCalc.ProzAnt = tMwstCalc.AbsNetto * 100 / ww. tMwstCalc.VerpAnt = nTotNebenkosten * tMwstCalc.ProzAnt / 100 * iFaktNebenkosten. tMwstCalc.Netto = tMwstCalc.Netto + tMwstCalc.VerpAnt. tMwstCalc.Mwst = tMwstCalc.Netto * tMwstCalc.Ansatz / 100. tMwstCalc.Brutto = tMwstCalc.Netto + tMwstCalc.Mwst. Proz = Proz - tMwstCalc.ProzAnt. nRestNebenkosten = nRestNebenkosten - tMwstCalc.VerpAnt. END. FakBetr = FakBetr + tMwstCalc.Netto + tMwstCalc.Mwst. btMwstCalc.Fakbetr = Fakbetr. END. LEAVE. END. OUTPUT TO 'C:\TEMP\tMwstCalc.csv'. DO i1 = 1 TO htMwstCalc:NUM-FIELDS: PUT CONTROL htMwstCalc:BUFFER-FIELD(i1):LABEL ';'. END. PUT CONTROL CHR(10). FOR EACH tMwstCalc: EXPORT DELIMITER ';' tMwstCalc. END. OUTPUT CLOSE.