LotLagerAufRuestlagerUmlagern.p 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*------------------------------------------------------------------------
  2. File : LotLagerAufRuestlagerUmlagern.p
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Fri Jul 09 07:08:57 CEST 2021
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. /* *************************** Definitions ************************** */
  11. DEFINE BUFFER bHoReLager FOR HoReLager.
  12. DEFINE BUFFER bLotLager FOR LotLager.
  13. /* ******************** Preprocessor Definitions ******************** */
  14. /* *************************** Main Block *************************** */
  15. DISABLE TRIGGERS FOR LOAD OF HoReLager.
  16. DISABLE TRIGGERS FOR LOAD OF LotLager .
  17. MESSAGE 'Phase 1'
  18. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  19. FOR EACH HoReLager NO-LOCK
  20. WHERE HoReLager.Firma = '1000'
  21. AND HoReLager.Lager = 0
  22. AND HoReLager.Art = 2
  23. AND HoReLager.Artnr = 0:
  24. FOR EACH LotLager
  25. WHERE LotLager.Firma = HoReLager.Firma
  26. AND LotLager.HoReLager_Id = HoReLager.HoReLager_Id:
  27. IF LotLager.Bestand = 0 THEN
  28. DO:
  29. DELETE LotLager.
  30. NEXT.
  31. END.
  32. FIND FIRST bHoReLager
  33. WHERE bHoReLager.Firma = HoReLager.Firma
  34. AND bHoReLager.Lager = HoReLager.Lager
  35. AND bHoReLager.Art = 1
  36. AND bHoReLager.Artnr = LotLager.Artnr
  37. AND bHoReLager.Inhalt = LotLager.Inhalt
  38. AND bHoReLager.Jahr = LotLager.Jahr NO-ERROR.
  39. IF NOT AVAILABLE bHoReLager THEN
  40. DO:
  41. FIND FIRST bHoReLager
  42. WHERE bHoReLager.Firma = HoReLager.Firma
  43. AND bHoReLager.Lager = HoReLager.Lager
  44. AND bHoReLager.Art = 1
  45. AND bHoReLager.Artnr = LotLager.Artnr
  46. AND bHoReLager.Inhalt = LotLager.Inhalt NO-ERROR.
  47. END.
  48. IF NOT AVAILABLE bHoReLager THEN
  49. DO:
  50. DELETE LotLager.
  51. NEXT.
  52. END.
  53. FIND FIRST bLotLager
  54. WHERE bLotLager.Firma = bHoReLager.Firma
  55. AND bLotLager.Lager = bHoReLager.Lager
  56. AND bLotLager.HoReLager_Id = bHoReLager.HoReLager_Id
  57. AND bLotLager.Artnr = LotLager.Artnr
  58. AND bLotLager.Inhalt = LotLager.Inhalt
  59. AND bLotLager.Jahr = LotLager.Jahr
  60. AND bLotLager.Verfall = LotLager.Verfall NO-ERROR.
  61. IF AVAILABLE bLotLager THEN
  62. DO:
  63. ASSIGN
  64. bLotLager.Bestand = bLotLager.Bestand + LotLager.Bestand.
  65. DELETE LotLager.
  66. NEXT.
  67. END.
  68. CREATE bLotLager.
  69. BUFFER-COPY LotLager
  70. EXCEPT LotLager.HoReLager_Id
  71. TO bLotLager
  72. ASSIGN
  73. bLotLager.HoReLager_Id = bHoReLager.HoReLager_Id.
  74. DELETE LotLager.
  75. END.
  76. END.
  77. DEFINE VARIABLE iBestand AS INTEGER NO-UNDO.
  78. MESSAGE 'Phase 2'
  79. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  80. FOR EACH HoReLager NO-LOCK
  81. WHERE HoReLager.Firma = '1000'
  82. AND HoReLager.Lager = 0
  83. AND HoReLager.Art = 1
  84. AND HoReLager.Artnr > 0:
  85. FIND bHoReLager EXCLUSIVE-LOCK
  86. WHERE RECID(bHoReLager) = RECID(HoReLager) NO-WAIT NO-ERROR.
  87. IF NOT AVAILABLE bHoReLager THEN NEXT.
  88. bHoReLager.Bestand = 0.
  89. END.
  90. MESSAGE 'Phase 3'
  91. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  92. FOR EACH ArtLager NO-LOCK
  93. WHERE ArtLager.Firma = '1000'
  94. AND ArtLager.Lager = 0:
  95. iBestand = ArtLager.Bestand.
  96. FOR EACH Artbw NO-LOCK
  97. WHERE Artbw.Firma = ArtLager.Firma
  98. AND Artbw.Artnr = ArtLager.Artnr
  99. AND Artbw.Inhalt = ArtLager.Inhalt
  100. AND Artbw.Jahr = ArtLager.Jahr
  101. AND Artbw.Tr_Art = 01
  102. AND Artbw.Datum >= TODAY + 1:
  103. iBestand = iBestand + Artbw.Menge.
  104. END.
  105. FIND FIRST bHoReLager NO-LOCK
  106. WHERE bHoReLager.Firma = ArtLager.Firma
  107. AND bHoReLager.Lager = ArtLager.Lager
  108. AND bHoReLager.Art = 1
  109. AND bHoReLager.Artnr = ArtLager.Artnr
  110. AND bHoReLager.Inhalt = ArtLager.Inhalt
  111. AND bHoReLager.Jahr = ArtLager.Jahr NO-ERROR.
  112. IF NOT AVAILABLE bHoReLager THEN
  113. DO:
  114. FIND FIRST bHoReLager NO-LOCK
  115. WHERE bHoReLager.Firma = ArtLager.Firma
  116. AND bHoReLager.Lager = ArtLager.Lager
  117. AND bHoReLager.Art = 1
  118. AND bHoReLager.Artnr = ArtLager.Artnr
  119. AND bHoReLager.Inhalt = ArtLager.Inhalt NO-ERROR.
  120. END.
  121. IF NOT AVAILABLE bHoReLager THEN NEXT.
  122. FIND HoReLager EXCLUSIVE-LOCK
  123. WHERE RECID(HoReLager) = RECID(bHoReLager) NO-WAIT NO-ERROR.
  124. IF NOT AVAILABLE HoReLager THEN
  125. DO:
  126. MESSAGE ArtLager.Artnr.
  127. NEXT.
  128. END.
  129. HoReLager.Bestand = HoReLager.Bestand + iBestand.
  130. END.