DEF VAR nBestand AS DECIMAL NO-UNDO. DEF VAR lFound AS LOGICAL NO-UNDO. DEF BUFFER bLotLager FOR LotLager. DEF BUFFER bHoReLager FOR HoReLager. DEF TEMP-TABLE tArtst FIELD Artnr AS INT FIELD Inhalt AS INT FIELD Jahr AS INT FIELD Bestand AS INT FIELD TagBest AS INT FIELD HoReBest AS INT FIELD GGebMe AS INT . DISABLE TRIGGERS FOR LOAD OF HoReLager. DISABLE TRIGGERS FOR LOAD OF LotLager . DISABLE TRIGGERS FOR LOAD OF ArtLager . OUTPUT TO 'C:\LogFiles\LotLager.d' APPEND NO-MAP NO-CONVERT. FOR EACH LotLager WHERE LotLager.Firma = '1000': FIND HoReLager NO-LOCK WHERE HoReLager.HoReLager_Id = LotLager.HoReLager_Id AND HoReLager.Artnr = LotLager.Artnr NO-ERROR. IF AVAILABLE HoReLager THEN NEXT. IF LotLager.Bestand <= 0 THEN DO: EXPORT LotLager. DELETE LotLager. NEXT. END. FIND FIRST ArtLager NO-LOCK OF LotLager. FIND FIRST Artst NO-LOCK OF LotLager. nBestand = ArtLager.Bestand. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Artst.Firma AND Aufze.Artnr = Artst.Artnr AND Aufze.Inhalt = Artst.Inhalt AND Aufze.Jahr = Artst.Jahr AND Aufze.Lag_Buch = TRUE, FIRST Aufko NO-LOCK OF Aufze: IF Aufko.Lief_Datum > TODAY THEN nBestand = nBestand + Aufze.MGel. END. IF nBestand <= 0 THEN DO: EXPORT LotLager. DELETE LotLager. NEXT. END. FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 1 AND HoReLager.Lager = 0 AND HoReLager.Artnr = LotLager.Artnr AND HoReLager.Inhalt = LotLager.Inhalt NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 3 AND HoReLager.Lager = 0 AND HoReLager.Artnr = LotLager.Artnr AND HoReLager.Inhalt = LotLager.Inhalt NO-ERROR. END. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 2 AND HoReLager.Lager = 0 AND HoReLager.Artnr = LotLager.Artnr AND HoReLager.Inhalt = LotLager.Inhalt NO-ERROR. END. IF AVAILABLE HoReLager THEN DO: FIND FIRST bLotLager WHERE bLotLager.HoReLager_Id = HoReLager.HoReLager_Id AND bLotLager.Lager = HoReLager.Lager AND bLotLager.Artnr = LotLager.Artnr AND bLotLager.Inhalt = LotLager.Inhalt AND bLotLager.Jahr = LotLager.Jahr AND bLotLager.Verfall = LotLager.Verfall NO-ERROR. IF AVAILABLE bLotLager THEN DO: bLotLager.Bestand = bLotLager.Bestand + LotLager.Bestand. HoReLager.Bestand = HoReLager.Bestand + LotLager.Bestand. EXPORT LotLager. DELETE LotLager. NEXT. END. LotLager.HoReLager_Id = HoReLager.HoReLager_Id. HoReLager.Bestand = HoReLager.Bestand + LotLager.Bestand. NEXT. END. FIND FIRST HoReLager WHERE HoReLager.HoReLager_Id = LotLager.HoReLager_Id NO-ERROR. IF AVAILABLE HoReLager THEN DO: IF HoReLager.Artnr = 0 THEN DO: ASSIGN HoReLager.Artnr = LotLager.Artnr HoReLager.Inhalt = LotLager.Inhalt HoReLager.iStatus = 2 HoReLager.Bestand = LotLager.Bestand. LotLager.HoReLager_Id = HoReLager.HoReLager_Id. NEXT. END. END. IF ArtLager.Ort <> '' THEN DO: FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 1 AND HoReLager.Lager = 0 AND HoReLager.cSort = ArtLager.Ort NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 3 AND HoReLager.Lager = 0 AND HoReLager.cSort = ArtLager.Ort NO-ERROR. END. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager WHERE HoReLager.Firma = LotLager.Firma AND HoReLager.Art = 2 AND HoReLager.Lager = 0 AND HoReLager.cSort = ArtLager.Ort NO-ERROR. END. IF NOT AVAILABLE HoReLager THEN DO: EXPORT LotLager. DELETE LotLager. NEXT. END. IF HoReLager.Artnr <> 0 THEN DO: EXPORT LotLager. DELETE HoReLager. NEXT. END. ASSIGN HoReLager.Artnr = LotLager.Artnr HoReLager.Inhalt = LotLager.Inhalt HoReLager.iStatus = 2 HoReLager.Bestand = LotLager.Bestand. LotLager.HoReLager_Id = HoReLager.HoReLager_Id. NEXT. END. EXPORT LotLager. DELETE LotLager. END. OUTPUT CLOSE. FOR EACH Artst NO-LOCK WHERE Artst.Firma = '1000', FIRST ArtLager OF Artst: ArtLager.Ort = ''. IF NOT Artst.Lager THEN NEXT. CREATE tArtst. BUFFER-COPY ArtLager TO tArtst. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = Artst.Firma AND VGebinde.Geb_Cd = Artst.VGeb_Cd NO-ERROR. FIND GGebinde NO-LOCK WHERE GGebinde.Firma = Artst.Firma AND GGebinde.Geb_Cd = Artst.GGeb_Cd NO-ERROR. IF AVAILABLE GGebinde AND AVAILABLE VGebinde THEN tArtst.GGebMe = GGebinde.Inhalt * VGebinde.Inhalt. tArtst.TagBest = ArtLager.Bestand. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Artst.Firma AND Aufze.Artnr = Artst.Artnr AND Aufze.Inhalt = Artst.Inhalt AND Aufze.Jahr = Artst.Jahr AND Aufze.Lag_Buch = TRUE, FIRST Aufko NO-LOCK OF Aufze: IF Aufko.Lief_Datum > (TODAY + 1) THEN tArtst.TagBest = tArtst.TagBest + Aufze.MGel. END. tArtst.HoReBest = tArtst.TagBest. END. FOR EACH tArtst: FOR EACH LotLager WHERE LotLager.Firma = '1000' AND LotLager.Artnr = tArtst.Artnr AND LotLager.Inhalt = tArtst.Inhalt AND LotLager.Jahr = tArtst.Jahr BY LotLager.Verfall DESCENDING: IF tArtst.TagBest = 0 THEN DO: LotLager.Bestand = 0. NEXT. END. IF LotLager.Bestand <= tArtst.TagBest THEN DO: tArtst.TagBest = tArtst.TagBest - LotLager.Bestand. END. ELSE DO: LotLager.Bestand = tArtst.TagBest. tArtst.TagBest = 0. END. END. END. FOR EACH HoReLager WHERE HoReLager.Firma = '1000' AND HoReLager.Art = 3 AND HoReLager.Lager = 0 AND HoReLager.Artnr > 0: FOR EACH ArtLager WHERE ArtLager.Firma = '1000' AND ArtLager.Lager = 0 AND ArtLager.Artnr = HoReLager.Artnr AND ArtLager.Inhalt = HoReLager.Inhalt: ArtLager.Ort = HoReLager.cSort. END. nBestand = 0. lFound = FALSE. FOR EACH LotLager WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id AND LotLager.Artnr = HoReLager.Artnr AND LotLager.Inhalt = HoReLager.Inhalt: nBestand = nBestand + LotLager.Bestand. lFound = TRUE. END. IF lFound THEN DO: HoReLager.Bestand = nBestand. NEXT. END. END. FOR EACH HoReLager WHERE HoReLager.Firma = '1000' AND HoReLager.Art = 1 AND HoReLager.Lager = 0 AND HoReLager.Artnr > 0: FOR EACH ArtLager WHERE ArtLager.Firma = '1000' AND ArtLager.Lager = 0 AND ArtLager.Artnr = HoReLager.Artnr AND ArtLager.Inhalt = HoReLager.Inhalt: ArtLager.Ort = HoReLager.cSort. END. nBestand = 0. lFound = FALSE. FOR EACH LotLager WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id AND LotLager.Artnr = HoReLager.Artnr AND LotLager.Inhalt = HoReLager.Inhalt: nBestand = nBestand + LotLager.Bestand. lFound = TRUE. END. IF lFound THEN DO: HoReLager.Bestand = nBestand. NEXT. END. END. FOR EACH HoReLager WHERE HoReLager.Firma = '1000' AND HoReLager.Art = 2 AND HoReLager.Lager = 0 AND HoReLager.Artnr > 0: nBestand = 0. lFound = FALSE. FOR EACH LotLager WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id AND LotLager.Artnr = HoReLager.Artnr AND LotLager.Inhalt = HoReLager.Inhalt: nBestand = nBestand + LotLager.Bestand. lFound = TRUE. END. IF lFound THEN DO: HoReLager.Bestand = nBestand. NEXT. END. END. FOR EACH tArtst, FIRST Artst NO-LOCK WHERE Artst.Firma = '1000' AND Artst.Artnr = tArtst.Artnr AND Artst.Inhalt = tArtst.Inhalt AND Artst.Jahr = tArtst.Jahr AND NOT Artst.lVerfall: FIND FIRST bHoReLager WHERE bHoReLager.Firma = '1000' AND bHoReLager.Art = 1 AND bHoReLager.Lager = 0 AND bHoReLager.Artnr = tArtst.Artnr NO-ERROR. IF NOT AVAILABLE bHoReLager THEN DO: FIND FIRST bHoReLager WHERE bHoReLager.Firma = '1000' AND bHoReLager.Art = 3 AND bHoReLager.Lager = 0 AND bHoReLager.Artnr = tArtst.Artnr NO-ERROR. END. IF NOT AVAILABLE bHoReLager THEN NEXT. bHoReLager.Bestand = tArtst.HoReBest. FOR EACH HoReLager WHERE HoReLager.Firma = '1000' AND HoReLager.Art = 2 AND HoReLager.Lager = 0 AND HoReLager.Artnr = tArtst.Artnr: IF tArtst.GGebMe < bHoReLager.Bestand THEN DO: HoReLager.Bestand = tArtst.GGebMe. bHoReLager.Bestand = bHoReLager.Bestand - tArtst.GGebMe. END. ELSE DO: HoReLager.Bestand = 0. END. END. END.