Umstellung_OSWALD.p 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /* Lager definieren */
  2. DISABLE TRIGGERS FOR LOAD OF ArtLager.
  3. FOR EACH Steuer
  4. WHERE Steuer.Firma < '9000':
  5. Steuer.St10 = 0.
  6. CREATE Tabel.
  7. ASSIGN Tabel.Firma = Steuer.Firma
  8. Tabel.RecArt = 'LAGER'
  9. Tabel.CodeI = 0
  10. Tabel.CodeC = ''
  11. Tabel.Sprcd = 1
  12. Tabel.Bez1 = 'Lager ' + Steuer.Ort NO-ERROR.
  13. IF ERROR-STATUS:ERROR THEN UNDO, RETRY.
  14. END.
  15. FOR EACH Artst,
  16. EACH ArtLager
  17. WHERE ArtLager.Firma = Artst.Firma
  18. AND ArtLager.Artnr = Artst.Artnr
  19. AND ArtLager.Inhalt = Artst.Inhalt
  20. AND ArtLager.Jahr = Artst.Jahr:
  21. ASSIGN ArtLager.Mind_Bestand = Artst.Mind_Bestand
  22. ArtLager.Soll_Bestand = Artst.Soll_Bestand.
  23. CASE ArtLager.Lager:
  24. WHEN 0 THEN DO:
  25. ASSIGN Artst.Bestand = ArtLager.Bestand
  26. ArtLager.Reserviert = Artst.Reserviert
  27. ArtLager.Bestellt = Artst.Bestellt.
  28. END.
  29. END.
  30. END.
  31. FOR EACH KuBes:
  32. FIND Debst NO-LOCK
  33. WHERE Debst.Firma = KuBes.Firma
  34. AND Debst.Knr = KuBes.Knr NO-ERROR.
  35. IF NOT AVAILABLE Debst THEN DO:
  36. FOR EACH KuBesSta
  37. WHERE KuBesSta.Firma = KuBes.Firma
  38. AND KuBesSta.Knr = KuBes.Knr :
  39. DELETE KuBesSta.
  40. END.
  41. DELETE KuBes.
  42. NEXT.
  43. END.
  44. KuBes.Vertr = Debst.Vertr.
  45. END.
  46. FOR EACH Tabel WHERE RecArt begins 'PREGRP':
  47. Tabel.Int_2 = 1. /* Alle Preisgruppen auf aktiv setzen */
  48. END.
  49. DEF VAR cFeld AS CHAR NO-UNDO.
  50. DEF VAR hBuffer AS HANDLE NO-UNDO.
  51. DEF VAR hFeld1 AS HANDLE NO-UNDO.
  52. DEF VAR kk AS INT NO-UNDO.
  53. DEF VAR cWort AS CHAR NO-UNDO.
  54. DEF VAR iArt AS INT NO-UNDO.
  55. DISABLE TRIGGERS FOR LOAD OF Adresse.
  56. DISABLE TRIGGERS FOR LOAD OF Artst.
  57. DISABLE TRIGGERS FOR LOAD OF ArtLief.
  58. FOR EACH Adresse:
  59. hBuffer = BUFFER Adresse:HANDLE.
  60. /* entfernen von Sonderzeichen */
  61. DO kk = 1 TO hBuffer:NUM-FIELDS:
  62. IF hBuffer:BUFFER-FIELD(kk):DATA-TYPE <> "CHARACTER" THEN NEXT.
  63. IF hBuffer:BUFFER-FIELD(kk):NAME BEGINS "Bem" THEN NEXT. /* Bemerkungsfeld kann/darf cr/lf enthalten */
  64. IF hBuffer:BUFFER-FIELD(kk):EXTENT > 0 THEN NEXT.
  65. IF INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10)) = 0 AND
  66. INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13)) = 0 THEN NEXT.
  67. hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE =
  68. REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10), '').
  69. hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE =
  70. REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13), '').
  71. END.
  72. ASSIGN cWort = ''
  73. Adresse.WortIndex = ''.
  74. DO kk = 1 TO hBuffer:NUM-FIELDS:
  75. hFeld1 = hBuffer:BUFFER-FIELD(kk).
  76. IF hFeld1:EXTENT > 0 THEN NEXT.
  77. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
  78. cFeld = hFeld1:NAME.
  79. IF cFeld BEGINS 'Erf' THEN NEXT.
  80. IF cFeld BEGINS 'Mut' THEN NEXT.
  81. IF cFeld BEGINS 'Anzeig' THEN NEXT.
  82. IF cFeld BEGINS 'Anschr' THEN NEXT.
  83. IF cFeld BEGINS 'Word' THEN NEXT.
  84. IF cFeld BEGINS 'Brief' THEN NEXT.
  85. IF cFeld BEGINS 'Cd' THEN NEXT.
  86. IF cFeld BEGINS 'Wort' THEN NEXT.
  87. iArt = 0.
  88. IF cFeld BEGINS 'Tel' THEN iArt = 1.
  89. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
  90. END.
  91. hFeld1 = hBuffer:BUFFER-FIELD('Knr').
  92. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ).
  93. Adresse.WortIndex = cWort.
  94. END.
  95. FOR EACH Artbez:
  96. cWort = ''.
  97. RUN BEREINIGEN ( 0, Artbez.Bez1 ).
  98. RUN BEREINIGEN ( 0, Artbez.Bez2 ).
  99. DO kk = 1 TO 10:
  100. cFeld = Artbez.Zustext[kk].
  101. IF cFeld = '' THEN NEXT.
  102. RUN BEREINIGEN ( 0, cFeld ).
  103. END.
  104. FIND Artst NO-LOCK OF Artbez NO-ERROR.
  105. IF AVAILABLE Artst THEN DO:
  106. RUN BEREINIGEN ( 0, Artst.Suchbe ).
  107. RUN BEREINIGEN ( 0, Artst.Strichcode ).
  108. RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ).
  109. IF Artst.FremdNr <> '' THEN DO:
  110. RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')).
  111. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))).
  112. END.
  113. FIND KGebinde NO-LOCK
  114. WHERE KGebinde.Firma = Artst.Firma
  115. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  116. IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
  117. END.
  118. FOR EACH ArtLief NO-LOCK
  119. WHERE ArtLief.Firma = Artbez.Firma
  120. AND ArtLief.Artnr = Artbez.Artnr
  121. AND ArtLief.Inhalt = Artbez.Inhalt
  122. AND ArtLief.Jahr = Artbez.Jahr :
  123. RUN BEREINIGEN ( 0, ArtLief.S_Artnr ).
  124. RUN BEREINIGEN ( 0, ArtLief.S_Bez1 ).
  125. RUN BEREINIGEN ( 0, ArtLief.S_Bez2 ).
  126. END.
  127. Artbez.WortIndex = cWort.
  128. RELEASE KGebinde.
  129. RELEASE Artst.
  130. RELEASE Artbez.
  131. END.
  132. PROCEDURE BEREINIGEN:
  133. DEF INPUT PARAMETER ipArt AS INT NO-UNDO.
  134. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO.
  135. DEF VAR wString AS CHAR NO-UNDO.
  136. DEF VAR xString AS CHAR NO-UNDO.
  137. DEF VAR yy AS INT NO-UNDO.
  138. IF ipString = '' THEN RETURN.
  139. wString = ipString.
  140. IF ipArt = 1 THEN DO:
  141. wString = REPLACE(wString, ' ', '').
  142. wString = REPLACE(wString, '.', '').
  143. wString = REPLACE(wString, '/', '').
  144. wString = REPLACE(wString, '-', '').
  145. END.
  146. wString = REPLACE(wString, '*' , '' ).
  147. wString = REPLACE(wString, '&' , ' ').
  148. wString = REPLACE(wString, '+' , '' ).
  149. wString = REPLACE(wString, '(' , '' ).
  150. wString = REPLACE(wString, ')' , '' ).
  151. wString = REPLACE(wString, '!' , '' ).
  152. wString = REPLACE(wString, '|' , '' ).
  153. wString = REPLACE(wString, '^' , '' ).
  154. wString = REPLACE(wString, ';' , '' ).
  155. wString = REPLACE(wString, "'" , '' ).
  156. wString = REPLACE(wString, ',' , '' ).
  157. wString = REPLACE(wString, ' ', ' ').
  158. wString = TRIM(wString).
  159. IF wString = '' THEN RETURN.
  160. DO yy = 1 TO NUM-ENTRIES(wString, ' '):
  161. xString = ENTRY(yy, wString, ' ').
  162. IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
  163. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
  164. + xString.
  165. END.
  166. END PROCEDURE.