t-ruestauf-delete.p 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. TRIGGER PROCEDURE FOR DELETE OF RuestAuf.
  2. DEFINE VARIABLE lBatch AS LOGICAL NO-UNDO.
  3. DEFINE VARIABLE iHoReLager_Id AS INTEGER NO-UNDO.
  4. DEFINE BUFFER bHoRelager FOR HoReLager.
  5. DEFINE BUFFER bLotLager FOR LotLager .
  6. DEFINE BUFFER bAufLot FOR AufLot .
  7. DEFINE BUFFER bAufze FOR Aufze .
  8. lBatch = DYNAMIC-FUNCTION ('getBatch':U) NO-ERROR.
  9. IF lBatch = ? THEN lBatch = TRUE.
  10. IF RuestAuf.MGeli = 0 THEN RETURN.
  11. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  12. FIND bAufze NO-LOCK OF RuestAuf NO-ERROR.
  13. IF NOT AVAILABLE bAufze THEN LEAVE.
  14. iHoReLager_Id = 0.
  15. FIND FIRST bHoReLager
  16. WHERE bHoReLager.Firma = bAufze.Firma
  17. AND bHoReLager.Lager = bAufze.Lager
  18. AND bHoReLager.cSort = RuestAuf.Lagerort NO-ERROR.
  19. IF AVAILABLE bHoReLager THEN
  20. DO:
  21. bHoReLager.Bestand = bHoReLager.Bestand + RuestAuf.MGeli.
  22. iHoReLager_Id = bHoReLager.HoReLager_Id.
  23. END.
  24. FOR EACH bAufLot
  25. WHERE bAufLot.Firma = bAufze.Firma
  26. AND bAufLot.Lager = bAufze.Lager
  27. AND bAufLot.Aufnr = bAufze.Aufnr
  28. AND bAufLot.Pos = bAufze.Pos :
  29. FIND FIRST bLotLager USE-INDEX LotLager-k3
  30. WHERE bLotLager.Firma = bAufze.Firma
  31. AND bLotLager.Lager = bAufze.Lager
  32. AND bLotLager.Artnr = bAufze.Artnr
  33. AND bLotLager.Inhalt = bAufze.Inhalt
  34. AND bLotLager.Jahr = bAufze.Jahr
  35. AND bLotLager.Verfall = bAufLot.Verfall NO-ERROR.
  36. IF iHoReLager_Id <> 0 THEN
  37. DO:
  38. IF NOT AVAILABLE bLotLager OR
  39. bLotLager.HoReLager_Id <> iHoReLager_Id THEN
  40. DO:
  41. CREATE bLotLager.
  42. ASSIGN
  43. bLotLager.Firma = bAufLot.Firma
  44. bLotLager.Artnr = bAufLot.Artnr
  45. bLotLager.Inhalt = bAufze.Inhalt
  46. bLotLager.Jahr = bAufze.Jahr
  47. bLotLager.Eingang = TODAY
  48. bLotLager.Verfall = bAufLot.Verfall
  49. bLotLager.Lotnummer = bAufLot.Nummer
  50. bLotLager.Prodnummer = bAufLot.ProduktionsNr
  51. bLotLager.HoReLager_Id = iHoReLager_Id
  52. bLotLager.Lager = bAufLot.Lager.
  53. END.
  54. bLotLager.Bestand = bLotLager.Bestand + bAufLot.Menge.
  55. END.
  56. DELETE bAufLot .
  57. RELEASE bLotLager.
  58. END.
  59. RELEASE bHoRelager.
  60. RELEASE bAufLot .
  61. RELEASE bLotLager .
  62. LEAVE.
  63. END.