t-besze-write.p 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. TRIGGER PROCEDURE FOR WRITE OF Besze
  2. NEW BUFFER nBesze
  3. OLD BUFFER oBesze.
  4. DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE lWeiter AS LOG NO-UNDO.
  6. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  7. DEFINE VARIABLE lBatch AS LOG INIT TRUE NO-UNDO.
  8. DEFINE VARIABLE rArtst AS RECID NO-UNDO.
  9. DEFINE BUFFER bArtLager FOR ArtLager.
  10. DEFINE BUFFER bRuestAuf FOR RuestAuf.
  11. DEFINE BUFFER bBesko FOR Besko.
  12. DEFINE BUFFER bArtst FOR Artst.
  13. DEFINE BUFFER bArtbw FOR Artbw.
  14. IF nBesze.Artnr = 0 AND
  15. oBesze.Artnr = 0 THEN RETURN.
  16. BUFFER-COMPARE nBesze
  17. USING Best_Sta GGeb_Me VGeb_Me KGeb_Me GGeb_EG VGeb_EG KGeb_EG MBest MGeli MRuek Eingang
  18. TO oBesze
  19. SAVE RESULT IN cResult.
  20. IF cResult = '' THEN RETURN.
  21. FIND bArtst NO-LOCK
  22. WHERE bArtst.Firma = nBesze.Firma
  23. AND bArtst.Artnr = nBesze.Artnr
  24. AND bArtst.Inhalt = nBesze.Inhalt
  25. AND bArtst.Jahr = nBesze.Jahr NO-ERROR.
  26. IF NOT AVAILABLE bArtst OR
  27. NOT bArtst.Aktiv OR
  28. NOT bArtst.Lager OR
  29. bArtst.Ausverk = 9 THEN RETURN.
  30. rArtst = RECID(bArtst).
  31. FIND FIRST ASMutation
  32. WHERE ASMutation.Firma = nBesze.Firma
  33. AND ASMutation.Datum = TODAY
  34. AND ASMutation.MutArt = 'DASHBOARD'
  35. AND ASMutation.cFeld_1 = 'BESTELLUNG'
  36. AND ASMutation.iKey_1 = nBesze.Besnr NO-ERROR.
  37. IF AVAILABLE ASMutation THEN
  38. DO:
  39. IF (TIME - ASMutation.iFeld_1) > 5 THEN RELEASE ASMutation.
  40. END.
  41. IF NOT AVAILABLE ASMutation THEN
  42. DO:
  43. CREATE ASMutation.
  44. ASSIGN
  45. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  46. ASMutation.Aktiv = TRUE
  47. ASMutation.cStatus = ''
  48. ASMutation.Datum = TODAY
  49. ASMutation.Firma = nBesze.Firma
  50. ASMutation.MutArt = 'DASHBOARD'
  51. ASMutation.cFeld_1 = 'BESTELLUNG'
  52. ASMutation.iKey_1 = nBesze.Besnr
  53. ASMutation.iFeld_1 = TIME
  54. .
  55. END.
  56. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR.
  57. IF ERROR-STATUS:ERROR THEN lBatch = FALSE.
  58. IF lBatch = ? THEN lBatch = FALSE.
  59. /* ---------------------------------------------- */
  60. /* Bestandesmutation */
  61. /* ---------------------------------------------- */
  62. DO WHILE TRUE:
  63. IF oBesze.MGeli = nBesze.MGeli AND
  64. oBesze.MBest = nBesze.MBest AND
  65. oBesze.Eingang = nBesze.Eingang THEN LEAVE.
  66. ASSIGN
  67. nBesze.MRuek = nBesze.MBest - nBesze.MGeli - nBesze.Eingang.
  68. FIND Artst WHERE RECID(Artst) = rArtst.
  69. Artst.Bestellt = Artst.Bestellt - oBesze.MBest + nBesze.MBest.
  70. IF oBesze.Artnr > 0 THEN
  71. DO:
  72. FIND bArtLager
  73. WHERE bArtLager.Firma = oBesze.Firma
  74. AND bArtLager.Artnr = oBesze.Artnr
  75. AND bArtLager.Inhalt = oBesze.Inhalt
  76. AND bArtLager.Jahr = oBesze.Jahr
  77. AND bArtLager.Lager = oBesze.Lager NO-ERROR.
  78. IF NOT AVAILABLE bArtLager THEN
  79. DO:
  80. CREATE bArtLager.
  81. ASSIGN
  82. bArtLager.Firma = oBesze.Firma
  83. bArtLager.Artnr = oBesze.Artnr
  84. bArtLager.Inhalt = oBesze.Inhalt
  85. bArtLager.Jahr = oBesze.Jahr
  86. bArtLager.Lager = oBesze.Lager.
  87. END.
  88. ASSIGN
  89. bArtLager.Eingang = bArtLager.Eingang - oBesze.MGeli
  90. bArtLager.Bestand = bArtLager.Bestand - oBesze.MGeli
  91. bArtLager.Bestellt = bArtLager.Bestellt - oBesze.MBest.
  92. END.
  93. IF nBesze.Artnr > 0 THEN
  94. DO:
  95. FIND bArtLager
  96. WHERE bArtLager.Firma = nBesze.Firma
  97. AND bArtLager.Artnr = nBesze.Artnr
  98. AND bArtLager.Inhalt = nBesze.Inhalt
  99. AND bArtLager.Jahr = nBesze.Jahr
  100. AND bArtLager.Lager = nBesze.Lager NO-ERROR.
  101. IF NOT AVAILABLE bArtLager THEN
  102. DO:
  103. CREATE bArtLager.
  104. ASSIGN
  105. bArtLager.Firma = nBesze.Firma
  106. bArtLager.Artnr = nBesze.Artnr
  107. bArtLager.Inhalt = nBesze.Inhalt
  108. bArtLager.Jahr = nBesze.Jahr
  109. bArtLager.Lager = nBesze.Lager.
  110. END.
  111. ASSIGN
  112. bArtLager.Eingang = bArtLager.Eingang + nBesze.MGeli
  113. bArtLager.Bestand = bArtLager.Bestand + nBesze.MGeli
  114. bArtLager.Bestellt = bArtLager.Bestellt + nBesze.MBest.
  115. END.
  116. RELEASE bArtLager.
  117. IF nBesze.Trnr > 0 THEN
  118. DO:
  119. FIND bArtbw
  120. WHERE bArtbw.Firma = nBesze.Firma
  121. AND bArtbw.Trnr = nBesze.Trnr NO-ERROR.
  122. IF AVAILABLE bArtbw THEN
  123. DO:
  124. ASSIGN
  125. bArtbw.GGeb_Me = nBesze.GGeb_EG
  126. bArtbw.VGeb_Me = nBesze.VGeb_EG
  127. bArtbw.KGeb_Me = nBesze.KGeb_EG
  128. bArtbw.Menge = nBesze.MGeli .
  129. END.
  130. RELEASE bArtbw.
  131. END.
  132. LEAVE.
  133. END.