umsatzkorr.p 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. DEF VAR Firma AS CHAR NO-UNDO INIT '2000'.
  2. DEF VAR Jahr AS INT NO-UNDO INIT 2003.
  3. DEF VAR JJ AS INT NO-UNDO.
  4. DEF VAR MM AS INT NO-UNDO.
  5. DEF VAR VNetto AS DEC DECIMALS 4 NO-UNDO.
  6. DEF VAR VEp AS DEC DECIMALS 4 NO-UNDO.
  7. DEF VAR VLiter AS DEC DECIMALS 4 NO-UNDO.
  8. DEF VAR Knr AS INT NO-UNDO.
  9. DEF VAR inkl AS LOG NO-UNDO.
  10. DEF VAR Ansatz AS DEC NO-UNDO.
  11. DO Jahr = 2003 TO 2004:
  12. FOR EACH DebUms WHERE DebUms.Firma = Firma
  13. AND DebUms.Jahr = Jahr:
  14. DELETE DebUms.
  15. END.
  16. FOR EACH ArtUms WHERE ArtUms.Firma = Firma
  17. AND ArtUms.Jahr = Jahr:
  18. DELETE ArtUms.
  19. END.
  20. FOR EACH DeArUms WHERE DeArUms.Firma = Firma
  21. AND DeArUms.Jahr = Jahr:
  22. DELETE DeArUms.
  23. END.
  24. FOR EACH Debst WHERE Debst.Firma = Firma NO-LOCK:
  25. CREATE DebUms.
  26. ASSIGN DebUms.Firma = Firma
  27. DebUms.Jahr = Jahr
  28. DebUms.Knr = Debst.Knr
  29. DebUms.Ums_Grp = 999.
  30. END.
  31. FOR EACH Artst WHERE Artst.Firma = Firma NO-LOCK:
  32. CREATE ArtUms.
  33. ASSIGN ArtUms.Firma = Firma
  34. ArtUms.Jahr = Jahr
  35. ArtUms.Artnr = Artst.Artnr
  36. ArtUms.Inhalt = Artst.Inhalt
  37. ArtUms.Jahrg = Artst.Jahr.
  38. END.
  39. FOR EACH Savko WHERE Savko.Firma = Firma
  40. AND YEAR(Savko.Fak_Datum) = Jahr NO-LOCK,
  41. EACH Savze OF Savko NO-LOCK:
  42. IF Savze.MGeli = 0 THEN NEXT.
  43. IF Savko.Fak_Knr <> 0 THEN Knr = Savko.Fak_Knr.
  44. ELSE Knr = Savko.Knr.
  45. JJ = YEAR (Savko.Fak_Datum).
  46. MM = MONTH(Savko.Fak_Datum).
  47. FIND FIRST Wust USE-INDEX Wust-k2
  48. WHERE Wust.WuCd = Savze.WuCd NO-LOCK NO-ERROR.
  49. IF AVAILABLE Wust THEN inkl = Wust.Incl.
  50. ELSE inkl = FALSE.
  51. FIND LAST MWSTAns USE-INDEX MWSTAns-k1
  52. WHERE MWSTAns.MWST_Cd = Savze.WuCd
  53. AND MWSTAns.Datum <= Savko.Kond_Datum NO-LOCK NO-ERROR.
  54. IF AVAILABLE MWSTAns THEN Ansatz = MWSTAns.Ansatz.
  55. ELSE Ansatz = 2.4.
  56. VNetto = Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab.
  57. IF Inkl THEN VNetto = VNetto * 100 / (100 + Ansatz).
  58. VLiter = Savze.Liter.
  59. VEp = Savze.Ep * Savze.MGeli.
  60. FIND DebUms USE-INDEX DebUms-k1
  61. WHERE DebUms.Firma = Firma
  62. AND DebUms.Jahr = JJ
  63. AND DebUms.Knr = Knr
  64. AND DebUms.Ums_Grp = 999 NO-ERROR.
  65. IF NOT AVAILABLE DebUms THEN DO:
  66. CREATE DebUms.
  67. ASSIGN DebUms.Firma = Firma
  68. DebUms.Jahr = JJ
  69. DebUms.Knr = Knr
  70. DebUms.Ums_Grp = 999.
  71. END.
  72. ASSIGN DebUms.Me_Mon[MM] = DebUms.Me_Mon[MM] + Savze.MGeli
  73. DebUms.Me_Kum = DebUms.Me_Kum + Savze.MGeli
  74. DebUms.Ep_Mon[MM] = DebUms.Ep_Mon[MM] + VEp
  75. DebUms.Ep_Kum = DebUms.Ep_Kum + VEp
  76. DebUms.Vp_Mon[MM] = DebUms.Vp_Mon[MM] + VNetto
  77. DebUms.Vp_Kum = DebUms.Vp_Kum + VNetto.
  78. FIND ArtUms USE-INDEX ArtUms-k1
  79. WHERE ArtUms.Firma = Firma
  80. AND ArtUms.Jahr = JJ
  81. AND ArtUms.Artnr = Savze.Artnr
  82. AND ArtUms.Inhalt = Savze.Inhalt
  83. AND ArtUms.Jahrg = Savze.Jahr NO-ERROR.
  84. IF NOT AVAILABLE ArtUms THEN DO:
  85. CREATE ArtUms.
  86. ASSIGN ArtUms.Firma = Firma
  87. ArtUms.Jahr = JJ
  88. ArtUms.Artnr = Savze.Artnr
  89. ArtUms.Inhalt = Savze.Inhalt
  90. ArtUms.Jahrg = Savze.Jahr NO-ERROR.
  91. END.
  92. ASSIGN ArtUms.Me_Mon[MM] = ArtUms.Me_Mon[MM] + Savze.MGeli
  93. ArtUms.Me_Kum = ArtUms.Me_Kum + Savze.MGeli
  94. ArtUms.Ep_Mon[MM] = ArtUms.Ep_Mon[MM] + VEp
  95. ArtUms.Ep_Kum = ArtUms.Ep_Kum + VEp
  96. ArtUms.Li_Mon[MM] = ArtUms.Li_Mon[MM] + VLiter
  97. ArtUms.Li_Kum = ArtUms.Li_Kum + VLiter
  98. ArtUms.Vp_Mon[MM] = ArtUms.Vp_Mon[MM] + VNetto
  99. ArtUms.Vp_Kum = ArtUms.Vp_Kum + VNetto.
  100. FIND DeArUms USE-INDEX DeArUms-k1
  101. WHERE DeArUms.Firma = Firma
  102. AND DeArUms.Jahr = JJ
  103. AND DeArUms.Knr = Knr
  104. AND DeArUms.Artnr = Savze.Artnr
  105. AND DeArUms.Inhalt = Savze.Inhalt
  106. AND DeArUms.Jahrg = Savze.Jahr NO-ERROR.
  107. IF NOT AVAILABLE DeArUms THEN DO:
  108. CREATE DeArUms.
  109. ASSIGN DeArUms.Firma = Firma
  110. DeArUms.Jahr = JJ
  111. DeArUms.Knr = Knr
  112. DeArUms.Artnr = Savze.Artnr
  113. DeArUms.Inhalt = Savze.Inhalt
  114. DeArUms.Jahrg = Savze.Jahr NO-ERROR.
  115. END.
  116. ASSIGN DeArUms.Me_Mon[MM] = DeArUms.Me_Mon[MM] + Savze.MGeli
  117. DeArUms.Me_Kum = DeArUms.Me_Kum + Savze.MGeli
  118. DeArUms.Ep_Mon[MM] = DeArUms.Ep_Mon[MM] + VEp
  119. DeArUms.Ep_Kum = DeArUms.Ep_Kum + VEp
  120. DeArUms.Li_Mon[MM] = DeArUms.Li_Mon[MM] + VLiter
  121. DeArUms.Li_Kum = DeArUms.Li_Kum + VLiter
  122. DeArUms.Vp_Mon[MM] = DeArUms.Vp_Mon[MM] + VNetto
  123. DeArUms.Vp_Kum = DeArUms.Vp_Kum + VNetto.
  124. END.
  125. END.