/*------------------------------------------------------------------------ File : LotLagerAufRuestlagerUmlagern.p Purpose : Syntax : Description : Author(s) : walter.riechsteiner Created : Fri Jul 09 07:08:57 CEST 2021 Notes : ----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ DEFINE BUFFER bHoReLager FOR HoReLager. DEFINE BUFFER bLotLager FOR LotLager. /* ******************** Preprocessor Definitions ******************** */ /* *************************** Main Block *************************** */ DISABLE TRIGGERS FOR LOAD OF HoReLager. DISABLE TRIGGERS FOR LOAD OF LotLager . MESSAGE 'Phase 1' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = '1000' AND HoReLager.Lager = 0 AND HoReLager.Art = 2 AND HoReLager.Artnr = 0: FOR EACH LotLager WHERE LotLager.Firma = HoReLager.Firma AND LotLager.HoReLager_Id = HoReLager.HoReLager_Id: IF LotLager.Bestand = 0 THEN DO: DELETE LotLager. NEXT. END. FIND FIRST bHoReLager WHERE bHoReLager.Firma = HoReLager.Firma AND bHoReLager.Lager = HoReLager.Lager AND bHoReLager.Art = 1 AND bHoReLager.Artnr = LotLager.Artnr AND bHoReLager.Inhalt = LotLager.Inhalt AND bHoReLager.Jahr = LotLager.Jahr NO-ERROR. IF NOT AVAILABLE bHoReLager THEN DO: FIND FIRST bHoReLager WHERE bHoReLager.Firma = HoReLager.Firma AND bHoReLager.Lager = HoReLager.Lager AND bHoReLager.Art = 1 AND bHoReLager.Artnr = LotLager.Artnr AND bHoReLager.Inhalt = LotLager.Inhalt NO-ERROR. END. IF NOT AVAILABLE bHoReLager THEN DO: DELETE LotLager. NEXT. END. FIND FIRST bLotLager WHERE bLotLager.Firma = bHoReLager.Firma AND bLotLager.Lager = bHoReLager.Lager AND bLotLager.HoReLager_Id = bHoReLager.HoReLager_Id 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: ASSIGN bLotLager.Bestand = bLotLager.Bestand + LotLager.Bestand. DELETE LotLager. NEXT. END. CREATE bLotLager. BUFFER-COPY LotLager EXCEPT LotLager.HoReLager_Id TO bLotLager ASSIGN bLotLager.HoReLager_Id = bHoReLager.HoReLager_Id. DELETE LotLager. END. END. DEFINE VARIABLE iBestand AS INTEGER NO-UNDO. MESSAGE 'Phase 2' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = '1000' AND HoReLager.Lager = 0 AND HoReLager.Art = 1 AND HoReLager.Artnr > 0: FIND bHoReLager EXCLUSIVE-LOCK WHERE RECID(bHoReLager) = RECID(HoReLager) NO-WAIT NO-ERROR. IF NOT AVAILABLE bHoReLager THEN NEXT. bHoReLager.Bestand = 0. END. MESSAGE 'Phase 3' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. FOR EACH ArtLager NO-LOCK WHERE ArtLager.Firma = '1000' AND ArtLager.Lager = 0: iBestand = ArtLager.Bestand. FOR EACH Artbw NO-LOCK WHERE Artbw.Firma = ArtLager.Firma AND Artbw.Artnr = ArtLager.Artnr AND Artbw.Inhalt = ArtLager.Inhalt AND Artbw.Jahr = ArtLager.Jahr AND Artbw.Tr_Art = 01 AND Artbw.Datum >= TODAY + 1: iBestand = iBestand + Artbw.Menge. END. FIND FIRST bHoReLager NO-LOCK WHERE bHoReLager.Firma = ArtLager.Firma AND bHoReLager.Lager = ArtLager.Lager AND bHoReLager.Art = 1 AND bHoReLager.Artnr = ArtLager.Artnr AND bHoReLager.Inhalt = ArtLager.Inhalt AND bHoReLager.Jahr = ArtLager.Jahr NO-ERROR. IF NOT AVAILABLE bHoReLager THEN DO: FIND FIRST bHoReLager NO-LOCK WHERE bHoReLager.Firma = ArtLager.Firma AND bHoReLager.Lager = ArtLager.Lager AND bHoReLager.Art = 1 AND bHoReLager.Artnr = ArtLager.Artnr AND bHoReLager.Inhalt = ArtLager.Inhalt NO-ERROR. END. IF NOT AVAILABLE bHoReLager THEN NEXT. FIND HoReLager EXCLUSIVE-LOCK WHERE RECID(HoReLager) = RECID(bHoReLager) NO-WAIT NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: MESSAGE ArtLager.Artnr. NEXT. END. HoReLager.Bestand = HoReLager.Bestand + iBestand. END.