t-beseing-delete.p 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. TRIGGER PROCEDURE FOR DELETE OF BesEing.
  2. /* ------------------------------------------------------ */
  3. /* Eingangsmengen zurücksezten */
  4. /* ------------------------------------------------------ */
  5. FIND Besze
  6. WHERE Besze.Firma = BesEing.Firma
  7. AND Besze.Besnr = BesEing.Besnr
  8. AND Besze.Pos = BesEing.Pos.
  9. ASSIGN
  10. Besze.Eingang = Besze.Eingang - BesEing.Eingang
  11. Besze.MRuek = Besze.MRuek + BesEing.Eingang
  12. Besze.GGeb_EG = Besze.GGeb_EG - BesEing.GGeb_EG
  13. Besze.VGeb_EG = Besze.VGeb_EG - BesEing.VGeb_EG
  14. Besze.KGeb_EG = Besze.KGeb_EG - BesEing.KGeb_EG
  15. .
  16. /* ------------------------------------------------------ */
  17. /* Gesammelt-Eintraege löschen */
  18. /* ------------------------------------------------------ */
  19. IF BesEing.lGesammelt THEN
  20. DO:
  21. FOR EACH Tabel
  22. WHERE Tabel.Firma = BesEing.Firma
  23. AND Tabel.RecArt = 'BESSAMM'
  24. AND Tabel.Int_1 = BesEing.Besnr
  25. AND Tabel.Int_2 = BesEing.Pos
  26. AND Tabel.Int_3 = BesEing.SubPos:
  27. FIND FIRST HoReLager
  28. WHERE HoReLager.Firma = BesEing.Firma
  29. AND HoReLager.Lager = BesEing.Lager
  30. AND HoReLager.cSort = Tabel.CodeC
  31. AND HoReLager.Artnr = BesEing.Artnr
  32. AND HoReLager.Inhalt = BesEing.Inhalt NO-ERROR.
  33. IF AVAILABLE HoReLager THEN HoReLager.iStatus = 1.
  34. DELETE Tabel.
  35. END.
  36. RELEASE Tabel.
  37. END.
  38. IF NOT BesEing.lEingelagert THEN RETURN.
  39. IF BesEing.HoReLager_Id = 0 THEN RETURN.
  40. FIND HoReLager
  41. WHERE HoReLager.HoReLager_Id = BesEing.HoReLager_Id NO-ERROR.
  42. IF NOT AVAILABLE HoReLager THEN RETURN.
  43. IF BesEing.lVerbucht OR
  44. BesEing.lLotnr THEN
  45. DO:
  46. FIND FIRST LotLager
  47. WHERE LotLager.HoReLager_Id = BesEing.HoReLager_Id
  48. AND LotLager.Lotnummer = BesEing.Lotnr
  49. AND LotLager.Verfall = BesEing.Verfall
  50. AND LotLager.Artnr = BesEing.Artnr NO-ERROR.
  51. IF NOT AVAILABLE LotLager THEN
  52. DO:
  53. FIND FIRST LotLager
  54. WHERE LotLager.HoReLager_Id = BesEing.HoReLager_Id
  55. AND LotLager.Lotnummer = BesEing.Lotnr
  56. AND LotLager.Verfall = BesEing.Verfall NO-ERROR.
  57. END.
  58. IF AVAILABLE LotLager THEN
  59. DO:
  60. IF BesEing.Eingang >= LotLager.Bestand THEN DELETE LotLager.
  61. ELSE LotLager.Bestand = LotLager.Bestand - BesEing.Eingang.
  62. END.
  63. END.
  64. HoReLager.Bestand = HoReLager.Bestand - BesEing.Eingang.
  65. IF HoReLager.Bestand <= 0 THEN
  66. DO:
  67. IF BesEing.iOldStatus = 0 OR
  68. HoReLager.Art = 2 THEN
  69. DO:
  70. ASSIGN
  71. HoReLager.Artnr = 0
  72. HoReLager.Inhalt = 0
  73. HoReLager.Jahr = 0
  74. HoReLager.Bestand = 0
  75. HoReLager.Eingang = ?
  76. HoReLager.iStatus = 0
  77. HoReLager.Lotnummer = ''
  78. HoReLager.Verfall = ?.
  79. END.
  80. ELSE
  81. DO:
  82. ASSIGN
  83. HoReLager.Bestand = 0
  84. HoReLager.iStatus = 1.
  85. END.
  86. END.
  87. FIND FIRST LotLager USE-INDEX LotLager-k1
  88. WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id NO-ERROR.
  89. IF AVAILABLE LotLager AND
  90. LotLager.Bestand > 0 THEN
  91. DO:
  92. ASSIGN
  93. HoReLager.Lotnummer = LotLager.Lotnummer
  94. HoReLager.Verfall = LotLager.Verfall
  95. HoReLager.Artnr = LotLager.Artnr
  96. HoReLager.Inhalt = LotLager.Inhalt
  97. HoReLager.Jahr = LotLager.Jahr
  98. HoReLager.iStatus = 2.
  99. END.
  100. RELEASE HoReLager .
  101. RELEASE LotLager .