MwstBerechnungsZahlungTest.p 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*( INPUT TABLE FOR tMwstParam, OUTPUT TABLE FOR tMwstCalc, OUTPUT opcMessage AS CHARACTER ) :*/
  2. /*------------------------------------------------------------------------------
  3. Purpose:
  4. Notes:
  5. ------------------------------------------------------------------------------*/
  6. { incl/tmwstcalc.i}
  7. DEFINE INPUT PARAMETER TABLE FOR tMwstParam.
  8. DEFINE OUTPUT PARAMETER TABLE FOR tMwstZahl.
  9. DEFINE OUTPUT PARAMETER opcMessage AS CHARACTER.
  10. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  11. DEFINE VARIABLE nProzZahlung AS DECIMAL NO-UNDO.
  12. DEFINE VARIABLE nProzSkonto AS DECIMAL NO-UNDO.
  13. DEFINE VARIABLE nRundbetr AS DECIMAL NO-UNDO DECIMALS 4.
  14. DEFINE VARIABLE iRundcode AS INTEGER NO-UNDO INIT 1.
  15. DEFINE BUFFER bDebop FOR Debop.
  16. EMPTY TEMP-TABLE tMwstZahl.
  17. FIND FIRST tMwstParam.
  18. iRundcode = (IF tMwstParam.Frw = 'CHF' THEN 1 ELSE 0).
  19. opcMessage = ''.
  20. FIND bDebop NO-LOCK
  21. WHERE bDebop.Firma = tMwstParam.Firma
  22. AND bDebop.Knr = tMwstParam.Knr
  23. AND bDebop.Faknr = tMwstParam.Faknr.
  24. IF tMwstParam.Zahlung <> 0 THEN nProzZahlung = tMwstParam.Zahlung * 100 / bDebop.Fakbetr_FRW.
  25. ELSE nProzZahlung = 0.00.
  26. IF tMwstParam.Skonto <> 0 THEN nProzSkonto = tMwstParam.Skonto * 100 / bDebop.Fakbetr_FRW.
  27. ELSE nProzSkonto = 0.00.
  28. DO i1 = 1 TO 11:
  29. IF bDebop.Fakwpfl[i1] = 0 THEN NEXT.
  30. CREATE tMwstZahl.
  31. ASSIGN
  32. tMwstZahl.Mwst_Cd = i1
  33. tMwstZahl.Ansatz = bDebop.Fakwpro[i1]
  34. tMwstZahl.lInklusive = bDebop.Fakincl[i1]
  35. tMwstZahl.ZahlBetrag = (bDebop.Fakwpfl[i1] + bDebop.Fakwust[i1]) * nProzZahlung / 100
  36. tMwstZahl.SkonBetrag = (bDebop.Fakwpfl[i1] + bDebop.Fakwust[i1]) * nProzSkonto / 100
  37. .
  38. IF tMwstZahl.lInklusive THEN
  39. DO:
  40. ASSIGN
  41. tMwstZahl.Brutto = tMwstZahl.ZahlBetrag
  42. tMwstZahl.Mwst = 0.00
  43. tMwstZahl.Netto = tMwstZahl.Brutto.
  44. END.
  45. ELSE
  46. DO:
  47. ASSIGN
  48. tMwstZahl.Brutto = tMwstZahl.ZahlBetrag
  49. tMwstZahl.Mwst = tMwstZahl.ZahlBetrag * tMwstZahl.Ansatz / (100 + tMwstZahl.Ansatz)
  50. tMwstZahl.Netto = tMwstZahl.Brutto - tMwstZahl.Mwst.
  51. END.
  52. END.