TRIGGER PROCEDURE FOR WRITE OF Besze NEW BUFFER nBesze OLD BUFFER oBesze. DEFINE VARIABLE cResult AS CHARACTER NO-UNDO. DEFINE VARIABLE lWeiter AS LOG NO-UNDO. DEFINE VARIABLE iRecid AS RECID NO-UNDO. DEFINE VARIABLE lBatch AS LOG INIT TRUE NO-UNDO. DEFINE VARIABLE rArtst AS RECID NO-UNDO. DEFINE BUFFER bArtLager FOR ArtLager. DEFINE BUFFER bRuestAuf FOR RuestAuf. DEFINE BUFFER bBesko FOR Besko. DEFINE BUFFER bArtst FOR Artst. DEFINE BUFFER bArtbw FOR Artbw. IF nBesze.Artnr = 0 AND oBesze.Artnr = 0 THEN RETURN. BUFFER-COMPARE nBesze USING Best_Sta GGeb_Me VGeb_Me KGeb_Me GGeb_EG VGeb_EG KGeb_EG MBest MGeli MRuek Eingang TO oBesze SAVE RESULT IN cResult. IF cResult = '' THEN RETURN. FIND bArtst NO-LOCK WHERE bArtst.Firma = nBesze.Firma AND bArtst.Artnr = nBesze.Artnr AND bArtst.Inhalt = nBesze.Inhalt AND bArtst.Jahr = nBesze.Jahr NO-ERROR. IF NOT AVAILABLE bArtst OR NOT bArtst.Aktiv OR NOT bArtst.Lager OR bArtst.Ausverk = 9 THEN RETURN. rArtst = RECID(bArtst). FIND FIRST ASMutation WHERE ASMutation.Firma = nBesze.Firma AND ASMutation.Datum = TODAY AND ASMutation.MutArt = 'DASHBOARD' AND ASMutation.cFeld_1 = 'BESTELLUNG' AND ASMutation.iKey_1 = nBesze.Besnr NO-ERROR. IF AVAILABLE ASMutation THEN DO: IF (TIME - ASMutation.iFeld_1) > 5 THEN RELEASE ASMutation. END. IF NOT AVAILABLE ASMutation THEN DO: CREATE ASMutation. ASSIGN ASMutation.asmutation_id = NEXT-VALUE(asmutation_id) ASMutation.Aktiv = TRUE ASMutation.cStatus = '' ASMutation.Datum = TODAY ASMutation.Firma = nBesze.Firma ASMutation.MutArt = 'DASHBOARD' ASMutation.cFeld_1 = 'BESTELLUNG' ASMutation.iKey_1 = nBesze.Besnr ASMutation.iFeld_1 = TIME . END. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR. IF ERROR-STATUS:ERROR THEN lBatch = FALSE. IF lBatch = ? THEN lBatch = FALSE. /* ---------------------------------------------- */ /* Bestandesmutation */ /* ---------------------------------------------- */ DO WHILE TRUE: IF oBesze.MGeli = nBesze.MGeli AND oBesze.MBest = nBesze.MBest AND oBesze.Eingang = nBesze.Eingang THEN LEAVE. ASSIGN nBesze.MRuek = nBesze.MBest - nBesze.MGeli - nBesze.Eingang. FIND Artst WHERE RECID(Artst) = rArtst. Artst.Bestellt = Artst.Bestellt - oBesze.MBest + nBesze.MBest. IF oBesze.Artnr > 0 THEN DO: FIND bArtLager WHERE bArtLager.Firma = oBesze.Firma AND bArtLager.Artnr = oBesze.Artnr AND bArtLager.Inhalt = oBesze.Inhalt AND bArtLager.Jahr = oBesze.Jahr AND bArtLager.Lager = oBesze.Lager NO-ERROR. IF NOT AVAILABLE bArtLager THEN DO: CREATE bArtLager. ASSIGN bArtLager.Firma = oBesze.Firma bArtLager.Artnr = oBesze.Artnr bArtLager.Inhalt = oBesze.Inhalt bArtLager.Jahr = oBesze.Jahr bArtLager.Lager = oBesze.Lager. END. ASSIGN bArtLager.Eingang = bArtLager.Eingang - oBesze.MGeli bArtLager.Bestand = bArtLager.Bestand - oBesze.MGeli bArtLager.Bestellt = bArtLager.Bestellt - oBesze.MBest. END. IF nBesze.Artnr > 0 THEN DO: FIND bArtLager WHERE bArtLager.Firma = nBesze.Firma AND bArtLager.Artnr = nBesze.Artnr AND bArtLager.Inhalt = nBesze.Inhalt AND bArtLager.Jahr = nBesze.Jahr AND bArtLager.Lager = nBesze.Lager NO-ERROR. IF NOT AVAILABLE bArtLager THEN DO: CREATE bArtLager. ASSIGN bArtLager.Firma = nBesze.Firma bArtLager.Artnr = nBesze.Artnr bArtLager.Inhalt = nBesze.Inhalt bArtLager.Jahr = nBesze.Jahr bArtLager.Lager = nBesze.Lager. END. ASSIGN bArtLager.Eingang = bArtLager.Eingang + nBesze.MGeli bArtLager.Bestand = bArtLager.Bestand + nBesze.MGeli bArtLager.Bestellt = bArtLager.Bestellt + nBesze.MBest. END. RELEASE bArtLager. IF nBesze.Trnr > 0 THEN DO: FIND bArtbw WHERE bArtbw.Firma = nBesze.Firma AND bArtbw.Trnr = nBesze.Trnr NO-ERROR. IF AVAILABLE bArtbw THEN DO: ASSIGN bArtbw.GGeb_Me = nBesze.GGeb_EG bArtbw.VGeb_Me = nBesze.VGeb_EG bArtbw.KGeb_Me = nBesze.KGeb_EG bArtbw.Menge = nBesze.MGeli . END. RELEASE bArtbw. END. LEAVE. END.