t-ruestauf-write.p 2.3 KB

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