t-besko-write.p 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. TRIGGER PROCEDURE FOR WRITE OF Besko
  2. NEW BUFFER nBesko
  3. OLD BUFFER oBesko.
  4. DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE lBatch AS LOG INIT TRUE NO-UNDO.
  6. DEFINE BUFFER bBesko FOR Besko.
  7. DEFINE BUFFER bBesze FOR Besze.
  8. BUFFER-COMPARE oBesko
  9. USING Best_Sta Lief_Datum Lieferzeit I_Best Bemerkung Verbucht Abgeholt lAbgeschlossen
  10. TO nBesko
  11. SAVE RESULT IN cResult.
  12. IF cResult <> '' THEN
  13. DO:
  14. FIND FIRST ASMutation
  15. WHERE ASMutation.Firma = nBesko.Firma
  16. AND ASMutation.Datum = TODAY
  17. AND ASMutation.MutArt = 'DASHBOARD'
  18. AND ASMutation.cFeld_1 = 'BESTELLUNG'
  19. AND ASMutation.iKey_1 = nBesko.Besnr NO-ERROR.
  20. IF AVAILABLE ASMutation THEN
  21. DO:
  22. IF (TIME - ASMutation.iFeld_1) > 5 THEN RELEASE ASMutation.
  23. END.
  24. IF NOT AVAILABLE ASMutation THEN
  25. DO:
  26. CREATE ASMutation.
  27. ASSIGN
  28. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  29. ASMutation.Aktiv = TRUE
  30. ASMutation.cStatus = ''
  31. ASMutation.Datum = TODAY
  32. ASMutation.Firma = nBesko.Firma
  33. ASMutation.MutArt = 'DASHBOARD'
  34. ASMutation.cFeld_1 = 'BESTELLUNG'
  35. ASMutation.iKey_1 = nBesko.Besnr
  36. ASMutation.iFeld_1 = TIME
  37. .
  38. END.
  39. END.
  40. IF LOOKUP('Best_Sta', cResult, ',') = 0 THEN RETURN.
  41. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR.
  42. IF ERROR-STATUS:ERROR THEN lBatch = FALSE.
  43. IF lBatch = ? THEN lBatch = FALSE.
  44. DISABLE TRIGGERS FOR LOAD OF Besze.
  45. FOR EACH Besze NO-LOCK OF nBesko:
  46. IF Besze.Best_Sta = nBesko.Best_Sta THEN NEXT.
  47. FIND bBesze EXCLUSIVE-LOCK WHERE RECID(bBesze) = RECID(Besze) NO-WAIT NO-ERROR.
  48. IF NOT AVAILABLE bBesze THEN NEXT.
  49. bBesze.Best_Sta = nBesko.Best_Sta.
  50. RELEASE bBesze.
  51. END.