t-artlief-write.p 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. TRIGGER PROCEDURE FOR WRITE OF ArtLief
  2. NEW BUFFER NArtLief
  3. OLD BUFFER OArtLief.
  4. DEF VAR cDiff AS CHAR NO-UNDO.
  5. DEF VAR cFeld AS CHAR NO-UNDO.
  6. DEF VAR kk AS INT NO-UNDO.
  7. DEF VAR kx AS INT NO-UNDO.
  8. DEF VAR cWort AS CHAR NO-UNDO.
  9. DEFINE BUFFER bBesze FOR Besze .
  10. DEFINE BUFFER bArtst FOR Artst .
  11. DEFINE BUFFER bArtLief FOR ArtLief .
  12. DISABLE TRIGGERS FOR LOAD OF Artbez .
  13. DISABLE TRIGGERS FOR LOAD OF Artst .
  14. IF NArtLief.S_Artnr <> OArtLief.S_Artnr AND
  15. NArtLief.S_Artnr <> '' THEN
  16. DO:
  17. FOR EACH Besze NO-LOCK
  18. WHERE Besze.Firma = NArtLief.Firma
  19. AND Besze.Artnr = NArtLief.Artnr
  20. AND Besze.Inhalt = NArtLief.Inhalt
  21. AND Besze.Jahr = NArtLief.Jahr
  22. AND Besze.Best_Sta < 4
  23. AND Besze.S_Artnr <> NArtLief.S_Artnr,
  24. FIRST Besko NO-LOCK
  25. WHERE Besko.Firma = Besze.Firma
  26. AND Besko.Besnr = Besze.Besnr
  27. AND Besko.Knr = NArtLief.Knr :
  28. FIND bBesze EXCLUSIVE-LOCK WHERE RECID(bBesze) = RECID(Besze) NO-WAIT NO-ERROR.
  29. IF NOT AVAILABLE bBesze THEN NEXT.
  30. bBesze.S_Artnr = NArtLief.S_Artnr.
  31. RELEASE bBesze.
  32. END.
  33. END.
  34. BUFFER-COMPARE NArtLief USING S_Artnr S_Bez1 S_Bez2 S_Preis S_Preis_Frw Strichcode_GGeb Strichcode_VGeb Strichcode_KGeb
  35. Min_GGebinde Min_VGebinde Min_KGebinde
  36. TO OArtLief
  37. SAVE RESULT IN cDiff.
  38. IF cDiff = '' THEN RETURN.
  39. cWort = ''.
  40. RUN BEREINIGEN ( 0, NArtLief.Strichcode_KGeb ).
  41. RUN BEREINIGEN ( 0, NArtLief.Strichcode_VGeb ).
  42. FOR EACH bArtLief NO-LOCK
  43. WHERE bArtLief.Firma = NArtLief.Firma
  44. AND bArtLief.Artnr = NArtLief.Artnr
  45. AND bArtLief.Inhalt = NArtLief.Inhalt
  46. AND bArtLief.Jahr = NArtLief.Jahr
  47. AND bArtLief.Knr <> NArtLief.Knr:
  48. IF bArtLief.Min_GGebinde = NArtLief.Min_GGebinde AND
  49. bArtLief.Min_VGebinde = NArtLief.Min_VGebinde AND
  50. bArtLief.Min_KGebinde = NArtLief.Min_KGebinde AND
  51. bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb AND
  52. bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN NEXT.
  53. FIND CURRENT bArtLief EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  54. IF ERROR-STATUS:ERROR THEN NEXT.
  55. ASSIGN
  56. bArtLief.Min_GGebinde = (IF OArtLief.Min_GGebinde = NArtLief.Min_GGebinde THEN bArtLief.Min_GGebinde ELSE NArtLief.Min_GGebinde)
  57. bArtLief.Min_VGebinde = (IF OArtLief.Min_VGebinde = NArtLief.Min_VGebinde THEN bArtLief.Min_VGebinde ELSE NArtLief.Min_VGebinde)
  58. bArtLief.Min_KGebinde = (IF OArtLief.Min_KGebinde = NArtLief.Min_KGebinde THEN bArtLief.Min_KGebinde ELSE NArtLief.Min_KGebinde)
  59. bArtLief.Strichcode_VGeb = (IF OArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb THEN bArtLief.Strichcode_VGeb ELSE NArtLief.Strichcode_VGeb)
  60. bArtLief.Strichcode_KGeb = (IF OArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN bArtLief.Strichcode_KGeb ELSE NArtLief.Strichcode_KGeb).
  61. IF bArtLief.Strichcode_KGeb = '' AND NArtLief.Strichcode_KGeb <> '' THEN bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb.
  62. IF bArtLief.Strichcode_VGeb = '' AND NArtLief.Strichcode_VGeb <> '' THEN bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb.
  63. RELEASE bArtLief.
  64. END.
  65. FIND Artbez USE-INDEX Artbez-k1
  66. WHERE Artbez.Firma = NArtLief.Firma
  67. AND Artbez.Artnr = NArtLief.Artnr
  68. AND Artbez.Inhalt = NArtLief.Inhalt
  69. AND Artbez.Jahr = NArtLief.Jahr
  70. AND Artbez.Sprcd = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  71. IF NOT AVAILABLE Artbez THEN RETURN.
  72. RUN BEREINIGEN ( 0, Artbez.Bez1 ).
  73. RUN BEREINIGEN ( 0, Artbez.Bez2 ).
  74. DO kk = 1 TO 10:
  75. cFeld = Artbez.Zustext[kk].
  76. IF cFeld = '' THEN NEXT.
  77. RUN BEREINIGEN ( 0, cFeld ).
  78. END.
  79. FIND Artst NO-LOCK OF NArtLief NO-ERROR.
  80. IF AVAILABLE Artst THEN
  81. DO:
  82. RUN BEREINIGEN ( 0, Artst.Suchbe ).
  83. RUN BEREINIGEN ( 0, Artst.Strichcode ).
  84. RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ).
  85. IF Artst.FremdNr <> '' THEN
  86. DO:
  87. RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')).
  88. RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))).
  89. END.
  90. FIND KGebinde NO-LOCK
  91. WHERE KGebinde.Firma = Artst.Firma
  92. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  93. IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
  94. IF NArtLief.Strichcode_KGeb <> '' AND
  95. Artst.Strichcode <> NArtLief.Strichcode_KGeb THEN
  96. DO:
  97. FIND bArtst EXCLUSIVE-LOCK WHERE RECID(bArtst) = RECID(Artst) NO-WAIT NO-ERROR.
  98. IF AVAILABLE bArtst THEN bArtst.Strichcode = NArtLief.Strichcode_KGeb.
  99. RELEASE bArtst.
  100. END.
  101. END.
  102. RUN BEREINIGEN ( 0, NArtLief.S_Artnr ).
  103. RUN BEREINIGEN ( 0, NArtLief.S_Bez1 ).
  104. RUN BEREINIGEN ( 0, NArtLief.S_Bez2 ).
  105. cFeld = 'XLIEFSTX' + STRING(NArtLief.Knr,'999999').
  106. RUN BEREINIGEN ( 0, cFeld ).
  107. FOR EACH ArtLief NO-LOCK
  108. WHERE ArtLief.Firma = NArtLief.Firma
  109. AND ArtLief.Artnr = NArtLief.Artnr
  110. AND ArtLief.Inhalt = NArtLief.Inhalt
  111. AND ArtLief.Jahr = NArtLief.Jahr
  112. AND ArtLief.Knr <> NArtLief.Knr :
  113. RUN BEREINIGEN ( 0, ArtLief.S_Artnr ).
  114. /*
  115. RUN BEREINIGEN ( 0, ArtLief.S_Bez1 ).
  116. RUN BEREINIGEN ( 0, ArtLief.S_Bez2 ).
  117. */
  118. cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
  119. RUN BEREINIGEN ( 0, cFeld ).
  120. END.
  121. Artbez.WortIndex = TRIM(cWort).
  122. RELEASE Artbez.
  123. RELEASE Artst.
  124. RELEASE ArtLief.
  125. RETURN.
  126. PROCEDURE BEREINIGEN:
  127. DEF INPUT PARAMETER ipArt AS INT NO-UNDO.
  128. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO.
  129. DEF VAR wString AS CHAR NO-UNDO.
  130. DEF VAR xString AS CHAR NO-UNDO.
  131. DEF VAR yy AS INT NO-UNDO.
  132. IF ipString = '' THEN RETURN.
  133. wString = ipString.
  134. IF ipArt = 1 THEN
  135. DO:
  136. wString = REPLACE(wString, ' ', '').
  137. wString = REPLACE(wString, '.', '').
  138. wString = REPLACE(wString, '/', '').
  139. wString = REPLACE(wString, '-', '').
  140. END.
  141. wString = REPLACE(wString, '*' , '' ).
  142. wString = REPLACE(wString, '&' , ' ').
  143. wString = REPLACE(wString, '+' , '' ).
  144. wString = REPLACE(wString, '(' , '' ).
  145. wString = REPLACE(wString, ')' , '' ).
  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 = TRIM(wString).
  155. IF wString = '' THEN RETURN.
  156. DO yy = 1 TO NUM-ENTRIES(wString, ' '):
  157. xString = ENTRY(yy, wString, ' ').
  158. IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
  159. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
  160. + xString.
  161. END.
  162. END PROCEDURE.