t-artst-write.p 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. TRIGGER PROCEDURE FOR WRITE OF Artst
  2. NEW BUFFER NArtst
  3. OLD BUFFER OArtst.
  4. DEFINE VARIABLE cDiff AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  6. DEFINE VARIABLE kk AS INTEGER NO-UNDO.
  7. DEFINE VARIABLE kx AS INTEGER NO-UNDO.
  8. DEFINE VARIABLE cWort AS CHARACTER NO-UNDO.
  9. DISABLE TRIGGERS FOR LOAD OF Artbez.
  10. DISABLE TRIGGERS FOR LOAD OF ArtLief.
  11. IF NArtst.Suchbe = '' THEN NArtst.Suchbe = ENTRY(1, NArtst.Bez, ' ').
  12. BUFFER-COMPARE NArtst USING Artnr Inhalt Jahr Bez Herst Suchbe FremdNr
  13. Strichcode KGeb_Cd VGeb_Cd
  14. TO OArtst
  15. SAVE RESULT IN cDiff.
  16. IF cDiff = '' THEN RETURN.
  17. cWort = ''.
  18. FIND Artbez USE-INDEX Artbez-k1
  19. WHERE Artbez.Firma = NArtst.Firma
  20. AND Artbez.Artnr = NArtst.Artnr
  21. AND Artbez.Inhalt = NArtst.Inhalt
  22. AND Artbez.Jahr = NArtst.Jahr
  23. AND Artbez.Sprcd = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  24. IF NOT AVAILABLE Artbez THEN RETURN.
  25. RUN BEREINIGEN ( 0, Artbez.Bez1 ).
  26. RUN BEREINIGEN ( 0, Artbez.Bez2 ).
  27. DO kk = 1 TO 10:
  28. cFeld = Artbez.Zustext[kk].
  29. IF cFeld = '' THEN NEXT.
  30. RUN BEREINIGEN ( 0, cFeld ).
  31. END.
  32. RUN BEREINIGEN ( 0, NArtst.Suchbe ).
  33. RUN BEREINIGEN ( 0, NArtst.Strichcode ).
  34. RUN BEREINIGEN ( 0, TRIM(STRING(NArtst.Artnr,'>>>>>9')) ).
  35. IF NArtst.Inhalt > 0 THEN RUN BEREINIGEN ( 0, 'Inhalt=' + TRIM(STRING(NArtst.Inhalt,'>>>>>9')) ).
  36. IF NArtst.Jahr > 0 THEN RUN BEREINIGEN ( 0, 'Jahr=' + TRIM(STRING(NArtst.Jahr ,'>>>>>9')) ).
  37. IF NArtst.FremdNr <> '' THEN
  38. DO:
  39. RUN BEREINIGEN ( 0, STRING(NArtst.FremdNr,'XXXXXX XXXX XXXX')).
  40. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(NArtst.FremdNr,01,06)),'>>>>>9'))).
  41. END.
  42. FIND KGebinde NO-LOCK
  43. WHERE KGebinde.Firma = NArtst.Firma
  44. AND KGebinde.Geb_Cd = NArtst.KGeb_Cd NO-ERROR.
  45. IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
  46. FOR EACH ArtLief NO-LOCK USE-INDEX ArtLief-k1
  47. WHERE ArtLief.Firma = NArtst.Firma
  48. AND ArtLief.Artnr = NArtst.Artnr
  49. AND ArtLief.Inhalt = NArtst.Inhalt
  50. AND ArtLief.Jahr = NArtst.Jahr :
  51. RUN BEREINIGEN ( 0, ArtLief.S_Artnr ).
  52. RUN BEREINIGEN ( 0, ArtLief.Strichcode_VGeb ).
  53. RUN BEREINIGEN ( 0, ArtLief.Strichcode_KGeb ).
  54. /*
  55. RUN BEREINIGEN ( 0, ArtLief.S_Bez1 ).
  56. RUN BEREINIGEN ( 0, ArtLief.S_Bez2 ).
  57. */
  58. cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
  59. RUN BEREINIGEN ( 0, cFeld ).
  60. END.
  61. CREATE ASMutation.
  62. ASSIGN ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  63. ASMutation.MutArt = 'YBMARTIKEL'
  64. ASMutation.Firma = NArtst.Firma
  65. ASMutation.Aktiv = TRUE
  66. ASMutation.Datum = TODAY
  67. ASMutation.cStatus = ''
  68. ASMutation.iKey_1 = NArtst.Artnr
  69. ASMutation.iKey_2 = NArtst.Inhalt
  70. ASMutation.iKey_3 = NArtst.Jahr
  71. .
  72. Artbez.WortIndex = TRIM(cWort).
  73. RELEASE KGebinde .
  74. RELEASE Artbez .
  75. RELEASE ArtLief .
  76. RELEASE ASMutation .
  77. RETURN.
  78. PROCEDURE BEREINIGEN:
  79. DEFINE INPUT PARAMETER ipArt AS INTEGER NO-UNDO.
  80. DEFINE INPUT PARAMETER ipString AS CHARACTER NO-UNDO.
  81. DEFINE VARIABLE wString AS CHARACTER NO-UNDO.
  82. DEFINE VARIABLE xString AS CHARACTER NO-UNDO.
  83. DEFINE VARIABLE yy AS INTEGER NO-UNDO.
  84. IF ipString = '' THEN RETURN.
  85. wString = ipString.
  86. IF ipArt = 1 THEN
  87. DO:
  88. wString = REPLACE(wString, ' ', '').
  89. wString = REPLACE(wString, '.', '').
  90. wString = REPLACE(wString, '/', '').
  91. wString = REPLACE(wString, '-', '').
  92. END.
  93. wString = REPLACE(wString, '*' , '' ).
  94. wString = REPLACE(wString, '&' , ' ').
  95. wString = REPLACE(wString, '+' , '' ).
  96. wString = REPLACE(wString, '(' , '' ).
  97. wString = REPLACE(wString, ')' , '' ).
  98. wString = REPLACE(wString, '!' , '' ).
  99. wString = REPLACE(wString, '|' , '' ).
  100. wString = REPLACE(wString, '^' , '' ).
  101. wString = REPLACE(wString, ';' , '' ).
  102. wString = REPLACE(wString, "'" , '' ).
  103. wString = REPLACE(wString, ',' , '' ).
  104. wString = REPLACE(wString, ' ', ' ').
  105. wString = REPLACE(wString, '-' , ' ').
  106. wString = TRIM(wString).
  107. IF wString = '' THEN RETURN.
  108. DO yy = 1 TO NUM-ENTRIES(wString, ' '):
  109. xString = ENTRY(yy, wString, ' ').
  110. IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
  111. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
  112. + xString.
  113. END.
  114. END PROCEDURE.