DebitorenSpezialkonditionen.p 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. { super/funktionen.i }
  2. DEF VAR cParam AS CHAR NO-UNDO.
  3. DEF VAR iRetVal AS INT NO-UNDO.
  4. DEF VAR iPreisArt AS INT NO-UNDO.
  5. DEF VAR nNormPreis AS DEC NO-UNDO.
  6. DEF VAR cString AS CHAR NO-UNDO.
  7. DEF VAR htAufze AS HANDLE NO-UNDO.
  8. DEF TEMP-TABLE tAufze LIKE Aufze
  9. FIELD Knr AS INT
  10. FIELD Datum AS DATE
  11. .
  12. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE.
  13. DEF TEMP-TABLE tDebst
  14. FIELD Knr AS INT
  15. FIELD Anzeig_Br AS CHAR
  16. FIELD Rab_Grp AS INT
  17. FIELD cRab_Grp AS CHAR
  18. INDEX tDebst-k1 IS PRIMARY
  19. Knr
  20. .
  21. DEF TEMP-TABLE tArtst
  22. FIELD Knr AS INT
  23. FIELD Artnr AS INT
  24. FIELD Inhalt AS INT
  25. FIELD Jahr AS INT
  26. FIELD cBez AS CHAR
  27. FIELD Art_Grp AS INT
  28. FIELD cArt_Grp AS CHAR
  29. FIELD Rab_Grp AS INT
  30. FIELD cRab_Grp AS CHAR
  31. FIELD iMenge AS INT
  32. FIELD NormPreis AS DEC
  33. FIELD SpezPreis AS DEC
  34. INDEX tArtst-k1 IS PRIMARY
  35. Knr
  36. Artnr
  37. Inhalt
  38. Jahr
  39. .
  40. cParam = SUBSTITUTE('&1&4&2&4&3', 'wari', '', '1000', CHR(01)).
  41. RUN ANMELDUNG(cParam).
  42. FOR EACH Debst NO-LOCK
  43. WHERE Debst.Firma = '1000'
  44. AND Debst.Aktiv = TRUE:
  45. /* EACH SpezPrei NO-LOCK */
  46. /* WHERE SpezPrei.Firma = Debst.Firma */
  47. /* AND SpezPrei.Knr = Debst.Knr, */
  48. /* FIRST Artst NO-LOCK */
  49. /* WHERE Artst.Firma = SpezPrei.Firma */
  50. /* AND Artst.Artnr = SpezPrei.Artnr */
  51. /* AND Artst.Inhalt = SpezPrei.Inhalt */
  52. /* */
  53. /* BREAK BY Debst.Knr */
  54. /* BY Artst.Artnr */
  55. /* BY Artst.Inhalt */
  56. /* BY Artst.Jahr */
  57. FOR EACH Artst NO-LOCK
  58. WHERE Artst.Firma = Debst.Firma
  59. AND Artst.Aktiv = TRUE:
  60. FIND LAST ArtPreis NO-LOCK
  61. WHERE ArtPreis.Firma = Artst.Firma
  62. AND ArtPreis.Artnr = Artst.Artnr
  63. AND ArtPreis.Inhalt = Artst.Inhalt
  64. AND ArtPreis.Jahr = Artst.Jahr
  65. AND ArtPreis.Preis_Grp = Debst.Preis_Grp
  66. AND ArtPreis.Aktion = FALSE
  67. AND ArtPreis.Ab_Datum <= TODAY NO-ERROR.
  68. IF NOT AVAILABLE ArtPreis THEN DO:
  69. FIND LAST ArtPreis NO-LOCK
  70. WHERE ArtPreis.Firma = Artst.Firma
  71. AND ArtPreis.Artnr = Artst.Artnr
  72. AND ArtPreis.Inhalt = Artst.Inhalt
  73. AND ArtPreis.Jahr = Artst.Jahr
  74. AND ArtPreis.Preis_Grp = 01
  75. AND ArtPreis.Aktion = FALSE
  76. AND ArtPreis.Ab_Datum <= TODAY NO-ERROR.
  77. END.
  78. IF NOT AVAILABLE ArtPreis THEN DO:
  79. FIND LAST ArtPreis NO-LOCK
  80. WHERE ArtPreis.Firma = Artst.Firma
  81. AND ArtPreis.Artnr = Artst.Artnr
  82. AND ArtPreis.Inhalt = Artst.Inhalt
  83. AND ArtPreis.Jahr = Artst.Jahr
  84. AND ArtPreis.Preis_Grp = 03
  85. AND ArtPreis.Aktion = FALSE
  86. AND ArtPreis.Ab_Datum <= TODAY NO-ERROR.
  87. END.
  88. IF NOT AVAILABLE ArtPreis THEN NEXT.
  89. IF ArtPreis.VK_Netto = 0 THEN NEXT.
  90. EMPTY TEMP-TABLE tAufze.
  91. CREATE tAufze.
  92. ASSIGN tAufze.Firma = Debst.Firma
  93. tAufze.Knr = Debst.Knr
  94. tAufze.Artnr = Artst.Artnr
  95. tAufze.Inhalt = Artst.Inhalt
  96. tAufze.Jahr = Artst.Jahr.
  97. iRetVal = DYNAMIC-FUNCTION ( 'fillAufze':U, INPUT-OUTPUT htAufze ) NO-ERROR.
  98. IF iRetVal > 0 THEN DO:
  99. MESSAGE 'Fehler fillAufze'
  100. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  101. NEXT.
  102. END.
  103. IF tAufze.Mwst_Inkl THEN nNormPreis = ArtPreis.VK_Brutto.
  104. ELSE nNormPreis = ArtPreis.VK_Netto.
  105. ASSIGN tAufze.MGel = 1
  106. tAufze.KGeb_Be = 1
  107. tAufze.VGeb_Be = 0
  108. tAufze.GGeb_Be = 0
  109. tAufze.KGeb_Me = 1
  110. tAufze.VGeb_Me = 0
  111. tAufze.GGeb_Me = 0
  112. tAufze.KGeb_Ru = 0
  113. tAufze.VGeb_Ru = 0
  114. tAufze.GGeb_Ru = 0
  115. .
  116. iPreisArt = DYNAMIC-FUNCTION('getPreisAufze':U, INPUT-OUTPUT htAufze) NO-ERROR.
  117. IF iPreisArt < 0 THEN NEXT.
  118. IF tAufze.Net_Betr = nNormPreis THEN NEXT.
  119. FIND FIRST tDebst
  120. WHERE tDebst.Knr = Debst.Knr NO-ERROR.
  121. IF NOT AVAILABLE tDebst THEN DO:
  122. FIND FIRST Adresse USE-INDEX Adresse-k1
  123. WHERE Adresse.Firma = Debst.Firma
  124. AND Adresse.Knr = Debst.Knr.
  125. CREATE tDebst.
  126. ASSIGN tDebst.Knr = Debst.Knr
  127. tDebst.Rab_Grp = Debst.Rab_Grp
  128. tDebst.Anzeig_Br = Adresse.Anzeig_Br.
  129. RUN FIND_RABATTGRP ( Debst.Rab_Grp, OUTPUT cString ).
  130. tDebst.cRab_Grp = (IF cString BEGINS '?' THEN cString ELSE ENTRY(2, cString, CHR(01))).
  131. END.
  132. FIND FIRST ArtBez NO-LOCK OF Artst.
  133. CREATE tArtst.
  134. ASSIGN tArtst.Knr = Debst.Knr
  135. tArtst.Artnr = Artst.Artnr
  136. tArtst.Inhalt = Artst.Inhalt
  137. tArtst.Jahr = Artst.Jahr
  138. tArtst.cBez = TRIM(Artbez.Bez1 + ' ' + ArtBez.Bez2)
  139. tArtst.Rab_Grp = Artst.Rab_Grp
  140. tArtst.Art_Grp = Artst.Art_Grp
  141. tArtst.NormPreis = nNormPreis
  142. tArtst.SpezPreis = tAufze.Net_Betr.
  143. RUN FIND_RABATTGRUPPE ( Artst.Rab_Grp, OUTPUT cString ).
  144. tArtst.cRab_Grp = (IF cString BEGINS '?' THEN cString ELSE ENTRY(2, cString, CHR(01))).
  145. RUN FIND_ARTIKGRP ( Artst.Wg_Grp, Artst.Prod_Grp, Artst.Art_Grp, OUTPUT cString ).
  146. tArtst.cRab_Grp = (IF cString BEGINS '?' THEN cString ELSE ENTRY(2, cString, CHR(01))).
  147. END.
  148. END.
  149. OUTPUT TO 'P:\TEMP\KundenRabatte.csv' NO-MAP NO-CONVERT.
  150. FOR EACH tDebst,
  151. EACH tArtst WHERE tArtst.Knr = tDebst.Knr:
  152. EXPORT DELIMITER ';' tDebst.Knr
  153. tDebst.Anzeig_Br
  154. tDebst.Rab_Grp
  155. tDebst.cRab_Grp
  156. tArtst.Artnr
  157. tArtst.Inhalt
  158. tArtst.Jahr
  159. tArtst.cBez
  160. tArtst.Art_Grp
  161. tArtst.cArt_Grp
  162. tArtst.Rab_Grp
  163. tArtst.cRab_Grp
  164. tArtst.NormPreis
  165. tArtst.SpezPreis
  166. .
  167. END.
  168. OUTPUT CLOSE.