| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- 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.
|