&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS bTableWin /*------------------------------------------------------------------------ File: adm2\src\browser.w Description: SmartDataBrowser Object Input Parameters: Output Parameters: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ DEFINE TEMP-TABLE tHoReLager LIKE HoReLager FIELD rRecid AS RECID. DEFINE VARIABLE htHoReLager AS HANDLE NO-UNDO. htHoReLager = TEMP-TABLE tHoReLager:DEFAULT-BUFFER-HANDLE. DEFINE TEMP-TABLE tLotLager LIKE LotLager FIELD rRecid AS RECID. DEFINE VARIABLE htLotLager AS HANDLE NO-UNDO. htLotLager = TEMP-TABLE tLotLager:DEFAULT-BUFFER-HANDLE. { incl/tmpbrowser.i } {src/adm2/widgetprto.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDataBrowser &Scoped-define DB-AWARE no &Scoped-define ADM-SUPPORTED-LINKS TableIO-Target,Data-Target,Update-Source /* Include file with RowObject temp-table definition */ &Scoped-define DATA-FIELD-DEFS "d-horelager.i" /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME F-Main &Scoped-define BROWSE-NAME br_table /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES rowObject /* Definitions for BROWSE br_table */ &Scoped-define FIELDS-IN-QUERY-br_table rowObject.Lager rowObject.Regal ~ rowObject.Platz rowObject.Niveau rowObject.Sf rowObject.Bezeichnung ~ rowObject.Artnr rowObject.Inhalt rowObject.Jahr rowObject.Artikel ~ rowObject.Bestand rowObject.iStatus &Scoped-define ENABLED-FIELDS-IN-QUERY-br_table &Scoped-define QUERY-STRING-br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION &Scoped-define OPEN-QUERY-br_table OPEN QUERY br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION. &Scoped-define TABLES-IN-QUERY-br_table rowObject &Scoped-define FIRST-TABLE-IN-QUERY-br_table rowObject /* Definitions for FRAME F-Main */ /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-1 br_table /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setZeilenfarbe bTableWin FUNCTION setZeilenfarbe RETURNS LOGICAL ( ipFarbe AS INT ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Menu Definitions */ DEFINE MENU POPUP-MENU-br_table MENU-ITEM X_ARTIKEL_UMPLATZIEREN LABEL "Artikel umplatzieren" MENU-ITEM X_LAGERPLATZ_ETIKETTE LABEL "Lagerplatz-Etikette". /* Definitions of the field level widgets */ DEFINE RECTANGLE RECT-1 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 126 BY 7.14. /* Query definitions */ &ANALYZE-SUSPEND DEFINE TEMP-TABLE RowObject NO-UNDO {{&DATA-FIELD-DEFS}} {src/adm2/robjflds.i}. DEFINE QUERY br_table FOR rowObject SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE br_table &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br_table bTableWin _STRUCTURED QUERY br_table NO-LOCK DISPLAY rowObject.Lager FORMAT "zz9":U rowObject.Regal FORMAT "x(03)":U rowObject.Platz FORMAT "x(03)":U rowObject.Niveau FORMAT "x(03)":U rowObject.Sf FORMAT "x(03)":U rowObject.Bezeichnung FORMAT "x(30)":U WIDTH 20 rowObject.Artnr FORMAT "999999":U rowObject.Inhalt FORMAT "9999":U rowObject.Jahr FORMAT "9999":U rowObject.Artikel FORMAT "x(50)":U WIDTH 30 rowObject.Bestand FORMAT "zzz,zz9-":U rowObject.iStatus FORMAT "9":U /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ASSIGN NO-AUTO-VALIDATE NO-ROW-MARKERS SEPARATORS SIZE 124 BY 6.67. /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main br_table AT ROW 1.48 COL 3 WIDGET-ID 200 RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDataBrowser Data Source: "d-horelager.w" Allow: Basic,Browse Frames: 1 Add Fields to: Neither Other Settings: PERSISTENT-ONLY COMPILE */ /* This procedure should always be RUN PERSISTENT. Report the error, */ /* then cleanup and return. */ IF NOT THIS-PROCEDURE:PERSISTENT THEN DO: MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U VIEW-AS ALERT-BOX ERROR BUTTONS OK. RETURN. END. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW bTableWin ASSIGN HEIGHT = 7.62 WIDTH = 128. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB bTableWin /* ************************* Included-Libraries *********************** */ {src/adm2/browser.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW bTableWin NOT-VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME F-Main NOT-VISIBLE FRAME-NAME Size-to-Fit */ /* BROWSE-TAB br_table RECT-1 F-Main */ ASSIGN FRAME F-Main:SCROLLABLE = FALSE FRAME F-Main:HIDDEN = TRUE. ASSIGN br_table:POPUP-MENU IN FRAME F-Main = MENU POPUP-MENU-br_table:HANDLE. ASSIGN rowObject.Bestand:AUTO-RESIZE IN BROWSE br_table = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE br_table /* Query rebuild information for BROWSE br_table _TblList = "rowObject" _Options = "NO-LOCK INDEXED-REPOSITION" _FldNameList[1] > _.rowObject.Lager "rowObject.Lager" ? ? "integer" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[2] > _.rowObject.Regal "rowObject.Regal" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[3] > _.rowObject.Platz "rowObject.Platz" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[4] > _.rowObject.Niveau "rowObject.Niveau" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[5] > _.rowObject.Sf "rowObject.Sf" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[6] > _.rowObject.Bezeichnung "rowObject.Bezeichnung" ? ? "character" ? ? ? ? ? ? no "?" no no "20" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[7] > _.rowObject.Artnr "rowObject.Artnr" ? ? "integer" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[8] > _.rowObject.Inhalt "rowObject.Inhalt" ? ? "integer" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[9] > _.rowObject.Jahr "rowObject.Jahr" ? ? "integer" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[10] > _.rowObject.Artikel "rowObject.Artikel" ? ? "character" ? ? ? ? ? ? no "?" no no "30" yes no no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[11] > _.rowObject.Bestand "rowObject.Bestand" ? "zzz,zz9-" "decimal" ? ? ? ? ? ? no "?" no no ? yes yes no "U" "" "" "" "" "" "" 0 no 0 no no _FldNameList[12] > _.rowObject.iStatus "rowObject.iStatus" ? ? "integer" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no _Query is NOT OPENED */ /* BROWSE br_table */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main /* Query rebuild information for FRAME F-Main _Options = "NO-LOCK" _Query is NOT OPENED */ /* FRAME F-Main */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define BROWSE-NAME br_table &Scoped-define SELF-NAME br_table &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON ALT-F OF br_table IN FRAME F-Main DO: RUN FINDEN_ARTIKEL. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON ALT-L OF br_table IN FRAME F-Main DO: RUN EINGABE_LAGER. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON CTRL-END OF br_table IN FRAME F-Main DO: APPLY "END":U TO BROWSE {&BROWSE-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON CTRL-F OF br_table IN FRAME F-Main DO: RUN FINDEN_ARTIKEL. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON CTRL-HOME OF br_table IN FRAME F-Main DO: APPLY "HOME":U TO BROWSE {&BROWSE-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON CTRL-L OF br_table IN FRAME F-Main DO: RUN EINGABE_LAGER. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON DEFAULT-ACTION OF br_table IN FRAME F-Main DO: {src/adm2/brsdefault.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON END OF br_table IN FRAME F-Main DO: {src/adm2/brsend.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON F5 OF br_table IN FRAME F-Main DO: DEFINE VARIABLE lMutFlag AS LOGICAL NO-UNDO. lMutFlag = DYNAMIC-FUNCTION('getMutflag':U, INPUT Progname). IF lMutFlag THEN RETURN NO-APPLY. RUN REFRESHLAGER IN hDaten. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON HOME OF br_table IN FRAME F-Main DO: {src/adm2/brshome.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON LEFT-MOUSE-CLICK OF br_table IN FRAME F-Main DO: APPLY 'ENTRY' TO {&BROWSE-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON LEFT-MOUSE-DBLCLICK OF br_table IN FRAME F-Main DO: IF NOT VALID-HANDLE( hFenster ) THEN RETURN NO-APPLY. RUN TOOLBAR IN hFenster ( INPUT 'UPDATE' ). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON OFF-END OF br_table IN FRAME F-Main DO: {src/adm2/brsoffnd.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON OFF-HOME OF br_table IN FRAME F-Main DO: {src/adm2/brsoffhm.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON ROW-ENTRY OF br_table IN FRAME F-Main DO: {src/adm2/brsentry.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON ROW-LEAVE OF br_table IN FRAME F-Main DO: {src/adm2/brsleave.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON SCROLL-NOTIFY OF br_table IN FRAME F-Main DO: {src/adm2/brsscrol.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON START-SEARCH OF br_table IN FRAME F-Main DO: { incl/brwstartsearch.i } END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin ON VALUE-CHANGED OF br_table IN FRAME F-Main DO: DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. rHoReLager = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR. IF rHoReLager <> ? AND rHoReLager <> 0 THEN DO: FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. PUBLISH 'HORELAGER' (bHoReLager.Artnr, bHoReLager.Inhalt, bHoReLager.Jahr ). RELEASE bHoReLager. END. {src/adm2/brschnge.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK bTableWin /* *************************** Main Block *************************** */ DEFINE VARIABLE cDummy AS CHARACTER NO-UNDO. { incl/brwmainblock.i } { incl/brwinternproc.i } &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN initializeObject. &ENDIF /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKEL_UMPLATZIEREN bTableWin PROCEDURE ARTIKEL_UMPLATZIEREN : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO. DEFINE VARIABLE cSf AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE cSort AS CHARACTER NO-UNDO. DEFINE VARIABLE cLagerort AS CHARACTER NO-UNDO. DEFINE VARIABLE iArtnr AS INTEGER NO-UNDO. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. DEFINE BUFFER bLotLager FOR LotLager . DEFINE BUFFER bArtLager FOR ArtLager . DISABLE TRIGGERS FOR LOAD OF HoReLager. rHoReLager = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR. IF rHoReLager = ? OR rHoReLager = 0 THEN RETURN NO-APPLY. FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. IF bHoReLager.Artnr = 0 THEN RETURN. ASSIGN iArtnr = bHoReLager.Artnr iInhalt = bHoReLager.Inhalt iJahr = bHoReLager.Jahr cLagerort = bHoReLager.cSort. EMPTY TEMP-TABLE tHoReLager. EMPTY TEMP-TABLE tLotLager . CREATE tHoReLager. BUFFER-COPY bHoReLager TO tHoReLager ASSIGN tHoReLager.rRecid = RECID(bHoReLager). RUN g-einlesen-text.w ( 'NeuerLagerplatz eingeben', 'Lagerplatz', TRUE, INPUT-OUTPUT cString) NO-ERROR. IF cString = ? OR cString = '' THEN RETURN NO-APPLY. cString = REPLACE(cString, '.', '-'). cString = REPLACE(cString, ';', '-'). ASSIGN cRegal = '' cNiveau = '' cPlatz = '' cSf = ''. DO ii = 1 TO NUM-ENTRIES(cString, '-'): CASE ii: WHEN 1 THEN cRegal = ENTRY(ii, cString, '-'). WHEN 2 THEN cPlatz = ENTRY(ii, cString, '-'). WHEN 3 THEN cNiveau = ENTRY(ii, cString, '-'). WHEN 4 THEN cSf = ENTRY(ii, cString, '-'). END CASE. END. DO WHILE LENGTH(cPlatz) < 3: cPlatz = '0' + cPlatz. END. DO WHILE LENGTH(cNiveau) < 2: cNiveau = '0' + cNiveau. END. DO WHILE cSF <> '' AND LENGTH(cSf) < 2: cSf = '0' + cSf. END. cSort = SUBSTITUTE('&1-&2-&3', cRegal, cPlatz, cNiveau). IF cSf <> '' THEN cSort = cSort + '-' + cSf. FIND bHoReLager NO-LOCK WHERE bHoReLager.Firma = Firma AND bHoReLager.Art = 1 AND bHoReLager.Lager = 0 AND bHoReLager.Regal = cRegal AND bHoReLager.Platz = cPlatz AND bHoReLager.Niveau = cNiveau AND bHoReLager.Sf = cSf NO-ERROR. IF NOT AVAILABLE bHoReLager THEN DO: FIND bHoReLager NO-LOCK WHERE bHoReLager.Firma = Firma AND bHoReLager.Art = 2 AND bHoReLager.Lager = 0 AND bHoReLager.Regal = cRegal AND bHoReLager.Platz = cPlatz AND bHoReLager.Niveau = cNiveau AND bHoReLager.Sf = cSf NO-ERROR. END. IF NOT AVAILABLE bHoReLager THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1113, '') NO-ERROR. RETURN NO-APPLY. END. IF bHoReLager.iStatus = 9 THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1113, '') NO-ERROR. RETURN NO-APPLY. END. IF bHoReLager.Artnr > 0 AND bHoReLager.Artnr <> tHoReLager.Artnr THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1113, '') NO-ERROR. RETURN NO-APPLY. END. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST tHoReLager. rHoReLager = RECID(bHoReLager). FIND bHoReLager WHERE RECID(bHoReLager) = rHoReLager. lFound = FALSE. AA000: DO WHILE TRUE: DO WHILE bHoReLager.Artnr = 0: BUFFER-COPY tHoReLager USING Artnr Inhalt Jahr Bestand Lotnummer Verfall Eingang TO bHoReLager. IF bHoReLager.Bestand > 0 THEN bHoReLager.iStatus = 2. ELSE bHoReLager.iStatus = 1. FOR EACH bLotLager WHERE bLotLager.HoReLager_Id = tHoReLager.HoReLager_Id AND bLotLager.Artnr = tHoReLager.Artnr AND bLotLager.Inhalt = tHoReLager.Inhalt: CREATE tLotLager. BUFFER-COPY bLotLager EXCEPT bLotLager.HoReLager_Id TO tLotLager ASSIGN tLotLager.HoReLager_Id = bHoReLager.HoReLager_Id. DELETE bLotLager. END. FOR EACH tLotLager: CREATE bLotLager. BUFFER-COPY tLotLager TO bLotLager. END. IF bHoReLager.Art = 1 OR bHoReLager.Art = 3 THEN DO: FOR EACH tLotLager NO-LOCK BREAK BY tLotLager.Firma BY tLotLager.Artnr BY tLotLager.Inhalt BY tLotLager.Jahr : IF NOT FIRST-OF ( tLotLager.Jahr ) THEN NEXT. FOR EACH bArtLager WHERE bArtLager.Firma = tLotLager.Firma AND bArtLager.Artnr = tLotLager.Artnr AND bArtLager.Inhalt = tLotLager.Inhalt AND bArtLager.Jahr = tLotLager.Jahr: bArtLager.Ort = bHoReLager.cSort. RELEASE bArtLager. END. lFound = TRUE. END. IF NOT lFound THEN DO: FOR EACH bArtLager WHERE bArtLager.Firma = bHoReLager.Firma AND bArtLager.Artnr = iArtnr AND bArtLager.Inhalt = iInhalt: /* AND bArtLager.Ort = cLagerort:*/ bArtLager.Ort = bHoReLager.cSort. END. END. END. LEAVE AA000. END. DO WHILE bHoReLager.Artnr > 0: bHoReLager.Bestand = bHoReLager.Bestand + tHoReLager.Bestand. IF bHoReLager.Bestand > 0 THEN bHoReLager.iStatus = 2. ELSE bHoReLager.iStatus = 1. FOR EACH bLotLager WHERE bLotLager.HoReLager_Id = tHoReLager.HoReLager_Id AND bLotLager.Artnr = tHoReLager.Artnr AND bLotLager.Inhalt = tHoReLager.Inhalt: CREATE tLotLager. BUFFER-COPY bLotLager EXCEPT bLotLager.HoReLager_Id TO tLotLager ASSIGN tLotLager.HoReLager_Id = bHoReLager.HoReLager_Id. DELETE bLotLager. END. FOR EACH tLotLager: FIND FIRST bLotLager OF tLotLager NO-ERROR. IF NOT AVAILABLE bLotLager THEN DO: CREATE bLotLager. BUFFER-COPY tLotLager TO bLotLager. LEAVE AA000. END. ASSIGN bLotLager.Bestand = bLotLager.Bestand + tLotLager.Bestand. END. IF bHoReLager.Art = 1 OR bHoReLager.Art = 3 THEN DO: FOR EACH tLotLager NO-LOCK BREAK BY tLotLager.Firma BY tLotLager.Artnr BY tLotLager.Inhalt BY tLotLager.Jahr : IF NOT FIRST-OF ( tLotLager.Jahr ) THEN NEXT. FOR EACH bArtLager WHERE bArtLager.Firma = tLotLager.Firma AND bArtLager.Artnr = tLotLager.Artnr AND bArtLager.Inhalt = tLotLager.Inhalt AND bArtLager.Jahr = tLotLager.Jahr: bArtLager.Ort = bHoReLager.cSort. RELEASE bArtLager. END. lFound = TRUE. END. IF NOT lFound THEN DO: FOR EACH bArtLager WHERE bArtLager.Firma = bHoReLager.Firma AND bArtLager.Artnr = iArtnr AND bArtLager.Inhalt = iInhalt : /* AND bArtLager.Ort = cLagerort:*/ bArtLager.Ort = bHoReLager.cSort. END. END. END. LEAVE AA000. END. END. FIND bHoReLager WHERE RECID(bHoReLager) = tHoReLager.rRecid. ASSIGN bHoReLager.Artnr = 0 bHoReLager.Inhalt = 0 bHoReLager.Jahr = 0 bHoReLager.Bestand = 0 bHoReLager.iStatus = 0 bHoReLager.Eingang = ? bHoReLager.Verfall = ? bHoReLager.Lotnummer = ''. RELEASE bHoReLager. RELEASE bLotLager. RELEASE bArtLager. LEAVE. END. APPLY 'F5' TO BROWSE br_table. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject bTableWin PROCEDURE destroyObject : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEF VAR hBrowser AS HANDLE NO-UNDO. hBrowser = {&BROWSE-NAME}:HANDLE IN FRAME {&FRAME-NAME}. DYNAMIC-FUNCTION('setBrowserDaten':U, INPUT hBrowser, INPUT Sektion ) NO-ERROR. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI bTableWin _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME F-Main. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EINGABE_LAGER bTableWin PROCEDURE EINGABE_LAGER : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE VARIABLE cLager AS CHARACTER NO-UNDO. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE VARIABLE iArt AS INTEGER NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. iArt = DYNAMIC-FUNCTION('getLagerart':U IN hFenster) NO-ERROR. iLager = DYNAMIC-FUNCTION('getLager':U IN hFenster) NO-ERROR. RUN g-einlesen-text.w ( 'Eingabe Lagerplatz', 'Lagerplatz', TRUE, INPUT-OUTPUT cLager ) NO-ERROR. IF cLager = '' THEN RETURN NO-APPLY. cLager = REPLACE (cLager, '.', '-'). cLager = REPLACE (cLager, ',', '-'). cLager = REPLACE (cLager, '/', '-'). DO ii = 1 TO NUM-ENTRIES (cLager, '-'): CASE ii: WHEN 1 THEN cRegal = ENTRY(ii, cLager, '-'). WHEN 2 THEN cPlatz = ENTRY(ii, cLager, '-'). WHEN 3 THEN cNiveau = ENTRY(ii, cLager, '-'). END CASE. END. DO WHILE cPlatz <> '' AND LENGTH(cPlatz) < 3: cPlatz = '0' + cPlatz. END. DO WHILE cNiveau <> '' AND LENGTH(cNiveau) < 2: cNiveau = '0' + cNiveau. END. FIND FIRST bHoReLager WHERE bHoReLager.Firma = Firma AND bHoReLager.Lager = iLager AND bHoReLager.Art = iArt AND bHoReLager.Regal = cRegal AND ((cPlatz = '') OR (cPlatz <> '' AND bHoReLager.Platz = cPlatz )) AND ((cNiveau = '') OR (cNiveau <> '' AND bHoReLager.Niveau = cNiveau )) NO-ERROR. IF AVAILABLE bHoReLager THEN DO: DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, STRING(ROWID(bHoReLager)), ? ) NO-ERROR. PUBLISH 'HORELAGER' ( bHoReLager.Artnr, bHoReLager.Inhalt, bHoReLager.Jahr ). RETURN NO-APPLY. END. FIND FIRST bHoReLager WHERE bHoReLager.Firma = Firma AND bHoReLager.Lager = iLager AND bHoReLager.Regal = cRegal AND ((cPlatz = '') OR (cPlatz <> '' AND bHoReLager.Platz = cPlatz )) AND ((cNiveau = '') OR (cNiveau <> '' AND bHoReLager.Niveau = cNiveau )) NO-ERROR. IF NOT AVAILABLE bHoReLager THEN RETURN NO-APPLY. rHoReLager = RECID(bHoReLager). DYNAMIC-FUNCTION ('setLagerArt':U IN hFenster, bHoReLager.Art) NO-ERROR. FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, STRING(ROWID(bHoReLager)), ? ) NO-ERROR. PUBLISH 'HORELAGER' ( bHoReLager.Artnr, bHoReLager.Inhalt, bHoReLager.Jahr ). RELEASE bHoReLager. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_BROWSE bTableWin PROCEDURE ENTRY_BROWSE : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ APPLY 'ENTRY' TO {&BROWSE-NAME} IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FINDEN_ARTIKEL bTableWin PROCEDURE FINDEN_ARTIKEL : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cArtnr AS CHARACTER NO-UNDO. DEFINE VARIABLE iArtnr AS INTEGER NO-UNDO. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE VARIABLE iArt AS INTEGER NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. iArt = DYNAMIC-FUNCTION('getLagerart':U IN hFenster) NO-ERROR. iLager = DYNAMIC-FUNCTION('getLager':U IN hFenster) NO-ERROR. DO WHILE TRUE: RUN g-einlesen-text.w ( 'Eingabe Artikelnummer', 'Artikelnummer', TRUE, INPUT-OUTPUT cArtnr ) NO-ERROR. IF cArtnr = '' THEN RETURN NO-APPLY. cArtnr = REPLACE(cArtnr, '/', '.'). cArtnr = REPLACE(cArtnr, '-', '.'). cArtnr = REPLACE(cArtnr, ',', '.'). ASSIGN iArtnr = 0 iInhalt = 0 iJahr = 0. DO ii = 1 TO NUM-ENTRIES(cArtnr, '.'). CASE ii: WHEN 1 THEN DO: iArtnr = INTEGER(ENTRY(ii, cArtnr)) NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. END. WHEN 2 THEN DO: iInhalt = INTEGER(ENTRY(ii, cArtnr)) NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. END. WHEN 3 THEN DO: iJahr = INTEGER(ENTRY(ii, cArtnr)) NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. END. END. END. FIND FIRST bHoReLager NO-LOCK WHERE bHoReLager.Firma = Firma AND bHoReLager.Lager = iLager AND bHoReLager.Art = iArt AND bHoReLager.Artnr = iArtnr AND ((iInhalt = 0) OR (iInhalt > 0 AND bHoReLager.Inhalt = iInhalt)) AND ((iJahr = 0) OR (iJahr > 0 AND bHoReLager.Jahr = iJahr)) NO-ERROR. IF NOT AVAILABLE bHoReLager THEN LEAVE. DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, STRING(ROWID(bHoReLager)), ?) NO-ERROR. LEAVE. END. PUBLISH 'HORELAGER' ( iArtnr, iInhalt, iJahr ). RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject bTableWin PROCEDURE initializeObject : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ { incl/brwinitialize.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LAGERPLATZ_ETIKETTE bTableWin PROCEDURE LAGERPLATZ_ETIKETTE : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE VARIABLE cEtiDatei AS CHARACTER NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. rHoReLager = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR. IF rHoReLager = ? OR rHoReLager = 0 THEN RETURN NO-APPLY. FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. cEtiDatei = DYNAMIC-FUNCTION ('getFehlwert':U, Firma, 'LAGERETIKETTE') NO-ERROR. IF cEtiDatei = ? OR cEtiDatei = '' THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1122, cEtiDatei). RETURN NO-APPLY. END. cEtiDatei = SUBSTITUTE(cEtiDatei, STRING(TIME) ). OUTPUT TO VALUE(cEtiDatei) NO-MAP NO-CONVERT. PUT CONTROL 'Lagerplatz' CHR(10). PUT CONTROL bHoReLager.cSort CHR(10). OUTPUT CLOSE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setZeilenfarbe bTableWin FUNCTION setZeilenfarbe RETURNS LOGICAL ( ipFarbe AS INT ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ { incl/brwsetzeilenfarbe.i } END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME