Start_MwstCalcFakrura.p 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. { SUPER/funktionen.i }
  2. DEF VAR i1 AS INT NO-UNDO.
  3. DEF VAR nFakbetr AS DEC NO-UNDO DECIMALS 2.
  4. DEF VAR iAnz AS INT NO-UNDO.
  5. DEF VAR nMwstPfl AS DEC NO-UNDO EXTENT 12.
  6. DEF VAR nMwstBetr AS DEC NO-UNDO EXTENT 12.
  7. DEF VAR cMessage AS CHAR NO-UNDO.
  8. DEF TEMP-TABLE tAufko LIKE Aufko.
  9. { incl/tmwstcalc.i }
  10. CREATE tMwstParam.
  11. CREATE tAufko.
  12. OUTPUT TO 'C:\TEMP\Fehlerjournal.csv' NO-MAP NO-CONVERT.
  13. OUTPUT CLOSE.
  14. OUTPUT TO 'C:\TEMP\Fehlerjournal.csv' NO-MAP NO-CONVERT APPEND.
  15. FOR EACH Aufko NO-LOCK
  16. WHERE Aufko.Firma = '1000'
  17. /* AND Aufko.Fak_Art = 40 */
  18. /* AND Aufko.Aufnr = 2466479 */
  19. /* AND Aufko.Fak_Datum >= 01/01/2021 */
  20. /* BREAK BY Aufko.Faknr */
  21. :
  22. /* IF FIRST-OF(Aufko.Faknr) THEN */
  23. /* DO: */
  24. /* ASSIGN */
  25. /* nMwstPfl = 0 */
  26. /* nMwstBetr = 0. */
  27. /* END. */
  28. FIND FIRST tAufko.
  29. BUFFER-COPY Aufko TO tAufko.
  30. ASSIGN
  31. nMwstPfl = Aufko.Wpfl
  32. nMwstBetr = Aufko.Wust.
  33. /* DO i1 = 1 TO 12: */
  34. /* ASSIGN */
  35. /* nMwstPfl [i1] = nMwstPfl [i1] + Aufko.Wpfl[i1] */
  36. /* nMwstBetr[i1] = nMwstBetr[i1] + Aufko.Wust[i1] */
  37. /* . */
  38. /* END. */
  39. /* IF NOT LAST-OF(Aufko.Faknr) THEN NEXT. */
  40. FIND FIRST tMwstParam.
  41. FIND FIRST Wust NO-LOCK
  42. WHERE Wust.CodeK = Aufko.Mwst
  43. AND Wust.CodeA = 9 NO-ERROR.
  44. ASSIGN
  45. tMwstParam.Firma = Aufko.Firma
  46. tMwstParam.Knr = Aufko.Knr
  47. tMwstParam.Datum = Aufko.Fak_Datum
  48. tMwstParam.Frw = Aufko.Frw
  49. tMwstParam.MwstPfl = nMwstPfl
  50. tMwstParam.MwstBetr = nMwstBetr
  51. tMwstParam.MwstCdKd = Aufko.Mwst
  52. tMwstParam.lInklusive = (IF AVAILABLE Wust THEN Wust.Incl ELSE FALSE)
  53. .
  54. DYNAMIC-FUNCTION('calculateMwstFaktura':U, INPUT TABLE tMwstParam, OUTPUT TABLE tMwstCalc, OUTPUT cMessage ).
  55. /* MESSAGE cMessage */
  56. /* VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */
  57. IF cMessage = 'NORECORDS' THEN
  58. DO:
  59. EXPORT DELIMITER ';'
  60. Aufko.Knr Aufko.Aufnr Aufko.Faknr Aufko.Auf_Tot 'Null-Rechnung'.
  61. NEXT.
  62. END.
  63. nFakbetr = DECIMAL(RETURN-VALUE).
  64. FIND FIRST tMwstCalc NO-ERROR.
  65. IF NOT AVAILABLE tMwstCalc THEN NEXT.
  66. /* FIND Debop NO-LOCK */
  67. /* WHERE Debop.Firma = Aufko.Firma */
  68. /* AND Debop.Knr = Aufko.Fak_Knr */
  69. /* AND Debop.Faknr = Aufko.Faknr NO-ERROR. */
  70. /* IF NOT AVAILABLE Debop THEN */
  71. /* DO: */
  72. /* EXPORT DELIMITER ';' */
  73. /* Aufko.Knr Aufko.Aufnr Aufko.Faknr 'Kein Debop'. */
  74. /* NEXT. */
  75. /* END. */
  76. ASSIGN
  77. nMwstPfl = 0
  78. nMwstBetr = 0.
  79. IF ABS(tMwstCalc.Fakbetr) - ABSOLUT(tAufko.Auf_Tot) > 0.05 THEN
  80. DO:
  81. EXPORT DELIMITER ';'
  82. Aufko.Knr Aufko.Aufnr Aufko.Faknr tAufko.Auf_Tot tMwstCalc.Fakbetr 'Differenz Totalbetrag'.
  83. NEXT.
  84. END.
  85. DO i1 = 1 TO 11:
  86. IF tAufko.Wpfl[i1] = 0 THEN NEXT.
  87. FIND FIRST tMwstCalc WHERE tMwstCalc.Mwst_Cd = i1 NO-ERROR.
  88. IF NOT AVAILABLE tMwstCalc THEN NEXT.
  89. /* IF tMwstParam.lInklusive THEN */
  90. /* DO: */
  91. /* IF ABS(Debop.FakWpfl[i1]) - ABS(tMwstCalc.Brutto) <= 0.05 AND */
  92. /* ABS(Debop.FakWust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT. */
  93. /* END. */
  94. /* ELSE DO: */
  95. /* IF ABS(Debop.FakWpfl[i1]) - ABS(tMwstCalc.Netto) <= 0.05 AND */
  96. /* ABS(Debop.FakWust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT. */
  97. /* END. */
  98. IF ABS(tAufko.Wust[i1]) - ABS(tMwstCalc.Mwst) <= 0.05 THEN NEXT.
  99. EXPORT DELIMITER ';'
  100. Aufko.Knr Aufko.Aufnr Aufko.Faknr Aufko.Wpfl[i1] tMwstCalc.Brutto tAufko.Wust[i1] tMwstCalc.Mwst 'Differenz Mehrwertsteuer'.
  101. END.
  102. iAnz = iAnz + 1.
  103. /* IF iAnz >= 20 THEN LEAVE. */
  104. END.
  105. OUTPUT CLOSE.
  106. MESSAGE 'Anzahl verarbeitete Aufträge = ' iAnz
  107. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.