| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /* --------------------------------------------------------------------- */
- /* Skontoberechung */
- /* --------------------------------------------------------------------- */
- { v8/globvar.i " " " " "SHARED" }
- DEF INPUT PARAMETER VKnr LIKE Debop.Knr.
- DEF INPUT PARAMETER VFaknr LIKE Debop.Faknr.
- DEF INPUT PARAMETER VDatum LIKE Debop.ZahDat.
- DEF OUTPUT PARAMETER VSko_Max LIKE Debop.Skonto.
- DEF OUTPUT PARAMETER VSko_Fak LIKE Debop.Skonto.
- DEF VAR VToler AS DEC.
- FIND SteuNr WHERE SteuNr.Firma = GVFirma NO-LOCK NO-ERROR.
- VSko_Max = 0.
- VSko_Fak = 0.
- FIND Debop USE-INDEX Debop-k1
- WHERE Debop.Firma = GVFirma
- AND Debop.Knr = VKnr
- AND Debop.Faknr = VFaknr NO-LOCK NO-ERROR.
- IF NOT AVAILABLE Debop THEN RETURN.
- FIND Kondi WHERE Kondi.Sprcd = GVSprcd
- AND Kondi.Kond = Debop.Kond NO-LOCK NO-ERROR.
- IF NOT AVAILABLE Kondi THEN RETURN.
- VToler = Debop.SkBer * SteuNr.SK_Tol_% / 100.
- IF Debop.FakBetr < 0 THEN VToler = - VToler.
-
- IF VToler = 0 THEN DO:
- VToler = SteuNr.SK_Tol_Max.
- END.
- ELSE DO:
- IF VToler > SteuNr.SK_Tol_Max THEN VToler = SteuNr.SK_Tol_Max.
- END.
- IF Debop.FakBetr < 0 THEN VToler = - VToler.
- IF (Debop.Fakdat + Kondi.Tage[02]) >= VDatum THEN DO:
- Rundbetr = Debop.SkBer * Kondi.Skonto[02] / 100.
- Rundcode = 1.
- RUN "v8/runden.p".
- VSko_Max = Rundbetr.
- END.
- IF (Debop.Fakdat + Kondi.Tage[01]) >= VDatum THEN DO:
- Rundbetr = Debop.SkBer * Kondi.Skonto[01] / 100.
- Rundcode = 1.
- RUN "v8/runden.p".
- VSko_Max = Rundbetr.
- END.
- VSko_Max = VSko_Max + VToler.
- VSko_Fak = VSko_Max - Debop.Skonto.
- RETURN.
|