| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 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.
|