EPKorrektur.p 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. DEF VAR Firma AS CHAR NO-UNDO INIT '1000'.
  2. DEF VAR VJJ AS INT NO-UNDO.
  3. DEF VAR VMM AS INT NO-UNDO.
  4. DEF VAR nRundbetr AS DEC DECIMALS 4.
  5. DEF TEMP-TABLE tArtikel
  6. FIELD Artnr AS INT
  7. FIELD Inhalt AS INT
  8. FIELD Jahr AS INT
  9. FIELD Datum AS DATE
  10. FIELD DEP AS DEC DECIMALS 4
  11. FIELD LDEP AS DEC DECIMALS 4
  12. FIELD EP AS DEC DECIMALS 4
  13. FIELD NDEP AS DEC DECIMALS 4
  14. .
  15. DEF TEMP-TABLE tKunden
  16. FIELD Knr AS INT
  17. .
  18. FOR EACH Artbw
  19. WHERE Artbw.Firma = Firma
  20. AND Artbw.Datum > 01/01/2021
  21. AND Artbw.EP > 5000
  22. AND Artbw.Tr_Art = 11,
  23. FIRST ArtLief NO-LOCK
  24. WHERE ArtLief.Firma = Artbw.Firma
  25. AND ArtLief.Artnr = Artbw.Artnr
  26. AND ArtLief.Inhalt = Artbw.Inhalt
  27. AND ArtLief.Jahr = Artbw.Jahr
  28. AND ArtLief.Knr = Artbw.Knr :
  29. FIND FIRST tArtikel
  30. WHERE tArtikel.Artnr = Artbw.Artnr
  31. AND tArtikel.Inhalt = Artbw.Inhalt
  32. AND tArtikel.Jahr = Artbw.Inhalt NO-ERROR.
  33. IF NOT AVAILABLE tArtikel THEN DO:
  34. CREATE tArtikel.
  35. ASSIGN tArtikel.Artnr = Artbw.Artnr
  36. tArtikel.Inhalt = Artbw.Inhalt
  37. tArtikel.Jahr = Artbw.Inhalt
  38. tArtikel.Datum = Artbw.Datum
  39. tArtikel.DEP = Artbw.EP
  40. .
  41. END.
  42. IF Artbw.Datum < tArtikel.Datum THEN tArtikel.Datum = Artbw.Datum.
  43. ASSIGN tArtikel.EP = (IF Artbw.Preis < 0.05 THEN ArtLief.S_Preis ELSE Artbw.Preis).
  44. END.
  45. FOR EACH tArtikel:
  46. FIND LAST Artbw NO-LOCK
  47. WHERE Artbw.Firma = Firma
  48. AND Artbw.Artnr = tArtikel.Artnr
  49. AND Artbw.Inhalt = tArtikel.Inhalt
  50. AND Artbw.Jahr = tArtikel.Jahr
  51. AND Artbw.Tr_Art = 11
  52. AND Artbw.Datum < tArtikel.Datum NO-ERROR.
  53. IF AVAILABLE Artbw THEN tArtikel.LDEP = Artbw.EP.
  54. ELSE tArtikel.LDEP = tArtikel.EP.
  55. IF tArtikel.LDEP <> 0 THEN DO:
  56. tArtikel.NDEP = (tArtikel.LDEP + tArtikel.EP) / 2.
  57. NEXT.
  58. END.
  59. FIND FIRST ArtLief NO-LOCK
  60. WHERE ArtLief.Firma = Firma
  61. AND ArtLief.Artnr = tArtikel.Artnr
  62. AND ArtLief.Inhalt = tArtikel.Inhalt
  63. AND ArtLief.Jahr = tArtikel.Jahr
  64. AND ArtLief.Haupt = TRUE NO-ERROR.
  65. tArtikel.LDEP = ArtLief.S_Preis.
  66. tArtikel.NDEP = (tArtikel.LDEP + tArtikel.EP) / 2.
  67. END.
  68. FOR EACH tArtikel:
  69. FOR EACH Artbw
  70. WHERE Artbw.Firma = Firma
  71. AND Artbw.Artnr = tArtikel.Artnr
  72. AND Artbw.Inhalt = tArtikel.Inhalt
  73. AND Artbw.Jahr = tArtikel.Jahr
  74. AND Artbw.Datum = 04/01/2021
  75. AND Artbw.EP > 5000
  76. AND Artbw.Tr_Art < 11:
  77. FIND FIRST tKunden
  78. WHERE tKunden.Knr = Artbw.Knr NO-ERROR.
  79. IF NOT AVAILABLE tKunden THEN DO:
  80. CREATE tKunden.
  81. ASSIGN tKunden.Knr = Artbw.Knr.
  82. END.
  83. END.
  84. END.
  85. FOR EACH tArtikel:
  86. FIND Artst
  87. WHERE Artst.Firma = Firma
  88. AND Artst.Artnr = tArtikel.Artnr
  89. AND Artst.Inhalt = tArtikel.Inhalt
  90. AND Artst.Jahr = tArtikel.Jahr.
  91. ASSIGN Artst.DEP = tArtikel.NDEP
  92. Artst.LEP = tArtikel.EP.
  93. FOR EACH Aufze
  94. WHERE Aufze.Firma = Firma
  95. AND Aufze.Artnr = tArtikel.Artnr
  96. AND Aufze.Inhalt = tArtikel.Inhalt
  97. AND Aufze.Jahr = tArtikel.Jahr
  98. AND Aufze.EP > 5000:
  99. Aufze.Ep = tArtikel.NDEP.
  100. END.
  101. FOR EACH Savze
  102. WHERE Savze.Firma = Firma
  103. AND Savze.Artnr = tArtikel.Artnr
  104. AND Savze.Inhalt = tArtikel.Inhalt
  105. AND Savze.Jahr = tArtikel.Jahr
  106. AND Savze.EP > 5000:
  107. Savze.Ep = tArtikel.NDEP.
  108. END.
  109. END.
  110. FOR EACH tKunden:
  111. FOR EACH tArtikel:
  112. FOR EACH Artbw
  113. WHERE Artbw.Firma = Firma
  114. AND Artbw.Knr = tKunden.Knr
  115. AND Artbw.Artnr = tArtikel.Artnr
  116. AND Artbw.Inhalt = tArtikel.Inhalt
  117. AND Artbw.Jahr = tArtikel.Jahr
  118. AND Artbw.Datum >= tArtikel.Datum
  119. AND Artbw.EP > 5000:
  120. IF Artbw.Faknr = 0 THEN DO:
  121. Artbw.EP = tArtikel.NDEP.
  122. NEXT.
  123. END.
  124. VJJ = YEAR (Artbw.Fak_Dat).
  125. VMM = MONTH(Artbw.Fak_Dat).
  126. nRundbetr = (Artbw.Menge * tArtikel.NDEP) - (Artbw.Menge * Artbw.EP).
  127. FIND DeArUms USE-INDEX DeArUms-k1
  128. WHERE DeArUms.Firma = Firma
  129. AND DeArUms.Jahr = VJJ
  130. AND DeArUms.Knr = tKunden.Knr
  131. AND DeArUms.Artnr = tArtikel.Artnr
  132. AND DeArUms.Inhalt = tArtikel.Inhalt
  133. AND DeArUms.Jahrg = tArtikel.Jahr NO-ERROR.
  134. IF AVAILABLE DeArUms THEN
  135. DO:
  136. DeArUms.Ep_Kum = DeArUms.Ep_Kum + nRundbetr.
  137. DeArUms.Ep_Mon[VMM] = DeArUms.Ep_Mon[VMM] + nRundbetr.
  138. END.
  139. FIND ArtUms USE-INDEX ArtUms-k1
  140. WHERE ArtUms.Firma = Firma
  141. AND ArtUms.Jahr = VJJ
  142. AND ArtUms.Artnr = tArtikel.Artnr
  143. AND ArtUms.Inhalt = tArtikel.Inhalt
  144. AND ArtUms.Jahrg = tArtikel.Jahr NO-ERROR.
  145. IF AVAILABLE ArtUms THEN
  146. DO:
  147. ArtUms.Ep_Kum = ArtUms.Ep_Kum + nRundbetr.
  148. ArtUms.Ep_Mon[VMM] = ArtUms.Ep_Mon[VMM] + nRundbetr.
  149. END.
  150. FIND DebUms USE-INDEX DebUms-k1
  151. WHERE DebUms.Firma = Firma
  152. AND DebUms.Jahr = VJJ
  153. AND DebUms.Knr = tKunden.Knr
  154. AND DebUms.Ums_Grp = 999 NO-ERROR.
  155. IF AVAILABLE DebUms THEN
  156. DO:
  157. DebUms.Ep_Kum = DebUms.Ep_Kum + nRundbetr.
  158. DebUms.Ep_Mon[VMM] = DebUms.Ep_Mon[VMM] + nRundbetr.
  159. END.
  160. Artbw.Ep = tArtikel.NDEP.
  161. END.
  162. END.
  163. END.