&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS B-table-Win /*------------------------------------------------------------------------ File: Description: from BROWSER.W - Basic SmartBrowser Object Template Input Parameters: Output Parameters: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress UIB. */ /*----------------------------------------------------------------------*/ /* 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 --- */ DEF VAR QOpen AS LOG INIT FALSE NO-UNDO. DEF VAR OpenQ AS LOG INIT FALSE NO-UNDO. DEF VAR LKNr AS INT. DEF VAR DRecid AS RECID. DEF VAR ORecid AS RECID. DEF VAR VTrNr1 AS INT. DEF VAR VTrNr2 AS INT. DEF BUFFER BDebop FOR Debop. DEF BUFFER BMWSTAns FOR MWSTAns. DEF BUFFER BWust FOR Wust . /* ---------- Globale Variablen ---------------------------------- */ { v8/globvar.i" " " " "SHARED" } { v8/debivar.i " " " " "SHARED" } { v8/artivar.i " " " " "SHARED" } { v8/contvar.i " " " " "SHARED" } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartBrowser &Scoped-define DB-AWARE no &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target /* 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 Debop /* Define KEY-PHRASE in case it is used by any query. */ &Scoped-define KEY-PHRASE TRUE /* Definitions for BROWSE br_table */ &Scoped-define FIELDS-IN-QUERY-br_table Debop.Faknr Debop.Fakdat Debop.Faellig Debop.Fakbetr Debop.Saldo &Scoped-define ENABLED-FIELDS-IN-QUERY-br_table &Scoped-define SELF-NAME br_table &Scoped-define QUERY-STRING-br_table FOR EACH Debop WHERE Debop.Firma = Debst.Firma AND Debop.Knr = Debst.Knr NO-LOCK ~{&SORTBY-PHRASE} &Scoped-define OPEN-QUERY-br_table OPEN QUERY {&SELF-NAME} FOR EACH Debop WHERE Debop.Firma = Debst.Firma AND Debop.Knr = Debst.Knr NO-LOCK ~{&SORTBY-PHRASE}. &Scoped-define TABLES-IN-QUERY-br_table Debop &Scoped-define FIRST-TABLE-IN-QUERY-br_table Debop /* Definitions for FRAME F-Main */ /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS F_Knr F_Adresse F_Faknr F_Fakdat F_Faellig ~ F_WW F_MWST F_MWST_Text F_Porto F_Verpack F_Steuer F_Fakbetr F_Konto ~ Btn_Erfassen br_table RECT-2 RECT-24 &Scoped-Define DISPLAYED-OBJECTS F_Knr F_Adresse F_Faknr F_Saldo F_Fakdat ~ F_Faellig F_WW F_MWST F_MWST_Text F_Porto F_Verpack F_Steuer F_Fakbetr ~ F_Konto /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-1 F_Knr F_Adresse F_Faknr F_Saldo F_Fakdat F_Faellig ~ F_WW F_MWST F_MWST_Text F_Porto F_Verpack F_Steuer F_Fakbetr F_Konto /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" B-table-Win _INLINE /* Actions: ? adm/support/keyedit.w ? ? ? */ /* STRUCTURED-DATA &BROWSE-NAME FRW||y|Anadat.Debop.FRW Firma||y|Anadat.Debop.Firma Knr||y|AnaDat.Debop.Knr ************************** * Set attributes related to FOREIGN KEYS */ RUN set-attribute-list ( 'Keys-Accepted = , Keys-Supplied = "FRW,Firma,Knr"':U). /* Tell the ADM to use the OPEN-QUERY-CASES. */ &Scoped-define OPEN-QUERY-CASES RUN dispatch ('open-query-cases':U). /************************** */ /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Advanced Query Options" B-table-Win _INLINE /* Actions: ? adm/support/advqedit.w ? ? ? */ /* STRUCTURED-DATA &BROWSE-NAME ************************ * Set attributes related to SORTBY-OPTIONS */ RUN set-attribute-list ( 'SortBy-Options = ""':U). /************************ */ /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Erfassen LABEL "&Erfassen" SIZE 17.4 BY 1. DEFINE VARIABLE F_Adresse AS CHARACTER FORMAT "X(60)":U VIEW-AS FILL-IN NATIVE SIZE 77 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Faellig AS DATE FORMAT "99.99.9999" LABEL "Fällig" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Fakbetr AS DECIMAL FORMAT "zzz,zz9.99-" INITIAL 0 LABEL "Fakturabetrag" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Fakdat AS DATE FORMAT "99.99.9999" LABEL "Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Faknr AS INTEGER FORMAT "999999" INITIAL 0 LABEL "Faktura" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Knr AS INTEGER FORMAT "999999" INITIAL 0 LABEL "Knr" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Konto AS CHARACTER FORMAT "x(12)" LABEL "Konto" VIEW-AS FILL-IN NATIVE SIZE 17 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_MWST AS INTEGER FORMAT "99":U INITIAL 0 LABEL "MWSt-Cd" VIEW-AS FILL-IN NATIVE SIZE 5.6 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_MWST_Text AS CHARACTER FORMAT "X(40)":U VIEW-AS FILL-IN NATIVE SIZE 42 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Porto AS DECIMAL FORMAT "zzz,zz9.99-" INITIAL 0 LABEL "Porto" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Saldo AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 LABEL "Saldo" VIEW-AS FILL-IN NATIVE SIZE 21 BY 1 BGCOLOR 15 FGCOLOR 12 NO-UNDO. DEFINE VARIABLE F_Steuer AS DECIMAL FORMAT "zzz,zz9.99-" INITIAL 0 LABEL "MWST" VIEW-AS FILL-IN NATIVE SIZE 17 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_Verpack AS DECIMAL FORMAT "zzz,zz9.99-" INITIAL 0 LABEL "Verpackung" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE VARIABLE F_WW AS DECIMAL FORMAT "zzz,zz9.99-" INITIAL 0 LABEL "Warenwert" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 . DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 117 BY 10.95. DEFINE RECTANGLE RECT-24 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 117 BY 9.1. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY br_table FOR Debop SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE br_table &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br_table B-table-Win _FREEFORM QUERY br_table NO-LOCK DISPLAY Debop.Faknr COLUMN-LABEL "Nummer" FORMAT "zzzzz9":U Debop.Fakdat COLUMN-LABEL "Datum" FORMAT "99.99.9999":U Debop.Faellig COLUMN-LABEL "Fällig" FORMAT "99.99.9999":U Debop.Fakbetr COLUMN-LABEL "Betrag" FORMAT "zzz,zzz,zz9.99-":U Debop.Saldo FORMAT "zzz,zzz,zz9.99-":U /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ASSIGN NO-ROW-MARKERS SEPARATORS SIZE 69.4 BY 8.24 BGCOLOR 15 . /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main F_Knr AT ROW 2 COL 22 COLON-ALIGNED F_Adresse AT ROW 2 COL 34 COLON-ALIGNED NO-LABEL F_Faknr AT ROW 3 COL 22 COLON-ALIGNED F_Saldo AT ROW 3 COL 90 COLON-ALIGNED F_Fakdat AT ROW 4 COL 22 COLON-ALIGNED F_Faellig AT ROW 5 COL 22 COLON-ALIGNED F_WW AT ROW 6 COL 22 COLON-ALIGNED F_MWST AT ROW 6 COL 56.2 COLON-ALIGNED F_MWST_Text AT ROW 6 COL 63.2 COLON-ALIGNED NO-LABEL F_Porto AT ROW 7 COL 22 COLON-ALIGNED F_Verpack AT ROW 8 COL 22 COLON-ALIGNED F_Steuer AT ROW 8 COL 56.2 COLON-ALIGNED F_Fakbetr AT ROW 9 COL 22 COLON-ALIGNED F_Konto AT ROW 9 COL 56.2 COLON-ALIGNED Btn_Erfassen AT ROW 10.14 COL 96.2 br_table AT ROW 13.38 COL 24 RECT-2 AT ROW 1.67 COL 5.8 RECT-24 AT ROW 12.95 COL 5.8 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 131.6 BY 21.71. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartBrowser Allow: Basic,Browse Frames: 1 Add Fields to: EXTERNAL-TABLES 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 B-table-Win ASSIGN HEIGHT = 21.71 WIDTH = 131.6. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB B-table-Win /* ************************* Included-Libraries *********************** */ {src/adm/method/browser.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW B-table-Win NOT-VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME F-Main NOT-VISIBLE FRAME-NAME Custom */ /* BROWSE-TAB br_table Btn_Erfassen F-Main */ ASSIGN FRAME F-Main:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_Adresse IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Faellig IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Fakbetr IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Fakdat IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Faknr IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Knr IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Konto IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_MWST IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_MWST_Text IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Porto IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Saldo IN FRAME F-Main NO-ENABLE 1 */ /* SETTINGS FOR FILL-IN F_Steuer IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_Verpack IN FRAME F-Main 1 */ /* SETTINGS FOR FILL-IN F_WW IN FRAME F-Main 1 */ /* _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 _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH Debop WHERE Debop.Firma = Debst.Firma AND Debop.Knr = Debst.Knr NO-LOCK ~{&SORTBY-PHRASE}. _END_FREEFORM _Options = "NO-LOCK KEY-PHRASE SORTBY-PHRASE" _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 SELF-NAME F-Main &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F-Main B-table-Win ON END-ERROR OF FRAME F-Main DO: RUN new-state ( INPUT 'ENDE, MAIN':U ). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME br_table &Scoped-define SELF-NAME br_table &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win ON ROW-ENTRY OF br_table IN FRAME F-Main DO: /* This code displays initial values for newly added or copied rows. */ {src/adm/template/brsentry.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win ON ROW-LEAVE OF br_table IN FRAME F-Main DO: /* Do not disable this code or no updates will take place except by pressing the Save button on an Update SmartPanel. */ {src/adm/template/brsleave.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table B-table-Win ON VALUE-CHANGED OF br_table IN FRAME F-Main DO: /* This ADM trigger code must be preserved in order to notify other objects when the browser's current row changes. */ {src/adm/template/brschnge.i} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Erfassen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Erfassen B-table-Win ON CHOOSE OF Btn_Erfassen IN FRAME F-Main /* Erfassen */ DO: APPLY 'LEAVE' TO F_Faknr IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_FakDat IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_Faellig IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_WW IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_Porto IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_Verpack IN FRAME {&FRAME-NAME}. APPLY 'LEAVE' TO F_MWST IN FRAME {&FRAME-NAME}. RUN ERFASSEN. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK B-table-Win /* *************************** Main Block *************************** */ &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN dispatch IN THIS-PROCEDURE ('initialize':U). &ENDIF ON END-ERROR OF F_Knr IN FRAME {&FRAME-NAME} DO: RUN new-state ( INPUT 'ENDE, MAIN':U ). RETURN NO-APPLY. END. ON END-ERROR OF F_Adresse, F_MWST_Text, F_Faknr , F_Konto , F_FakDat , F_Faellig , F_WW , F_Porto , F_Verpack, F_MWST , F_Steuer , F_Fakbetr IN FRAME {&FRAME-NAME} DO: DVKnr = LKnr. RUN ADRESSE. DISPLAY {&List-1} WITH FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON RETURN OF F_Knr IN FRAME {&FRAME-NAME} DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. ON LEAVE OF F_Knr IN FRAME {&FRAME-NAME} DO: F_Knr = INTEGER(SELF:SCREEN-VALUE). IF F_Knr = 0 THEN RETURN. DVKnr = F_Knr. RUN ADRESSE. IF F_Knr = 0 THEN DO: { v8/fehler.i "0101" } APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. DISPLAY {&List-1} WITH FRAME {&FRAME-NAME}. RUN dispatch IN THIS-PROCEDURE ('open-query':U). APPLY 'ENTRY' TO F_Faknr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON ENTRY OF F_Adresse IN FRAME {&FRAME-NAME} DO: APPLY LASTKEY. RETURN NO-APPLY. END. ON ENTRY OF F_MWST_Text IN FRAME {&FRAME-NAME} DO: APPLY LASTKEY. RETURN NO-APPLY. END. ON ENTRY OF F_FakBetr IN FRAME {&FRAME-NAME} DO: APPLY LASTKEY. RETURN NO-APPLY. END. ON ENTRY OF F_Steuer IN FRAME {&FRAME-NAME} DO: APPLY LASTKEY. RETURN NO-APPLY. END. ON RETURN OF F_Adresse, F_MWST_Text, F_Faknr , F_Konto , F_FakDat , F_Faellig , F_WW , F_Porto , F_Verpack, F_MWST , F_Steuer , F_Fakbetr IN FRAME {&FRAME-NAME} DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. ON LEAVE OF F_Faknr IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. F_Faknr = INTEGER(SELF:SCREEN-VALUE). IF F_Faknr <> 999999 THEN DO: FIND Debop USE-INDEX Debop-k2 WHERE Debop.Firma = GVFirma AND Debop.Faknr = F_Faknr NO-LOCK NO-ERROR. FIND Debfa USE-INDEX Debfa-k2 WHERE Debfa.Firma = GVFirma AND Debfa.Faknr = F_Faknr NO-LOCK NO-ERROR. END. ELSE DO: FIND Debop USE-INDEX Debop-k1 WHERE Debop.Firma = GVFirma AND Debop.Knr = F_Knr AND Debop.Faknr = F_Faknr NO-LOCK NO-ERROR. FIND Debfa USE-INDEX Debfa-k1 WHERE Debfa.Firma = GVFirma AND Debop.Knr = F_Knr AND Debfa.Faknr = F_Faknr NO-LOCK NO-ERROR. END. IF AVAILABLE Debfa OR AVAILABLE Debop OR F_Faknr = 0 THEN DO: MESSAGE 'Diese Rechnung ist bereits erfasst' VIEW-AS ALERT-BOX ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. END. ON LEAVE OF F_FakDat IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_FakDat. IF F_FakDat = ? THEN DO: MESSAGE 'Dieses Rechnungsdatum ist ungültig' VIEW-AS ALERT-BOX ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. IF F_Faellig = ? THEN DO: F_Faellig = F_FakDat + Debst.Kond. DISPLAY F_Faellig WITH FRAME {&FRAME-NAME}. END. END. ON LEAVE OF F_Faellig IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_Faellig. IF F_Faellig = ? OR F_Faellig < F_FakDat THEN DO: MESSAGE 'Dieses Fälligkeitsdatum ist ungültig' VIEW-AS ALERT-BOX ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. END. ON LEAVE OF F_WW IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_WW. IF F_WW = 0 AND F_Faknr <> 999999 THEN DO: MESSAGE 'Dieser Betrag darf nicht sein' VIEW-AS ALERT-BOX ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. RUN STEUER. F_Fakbetr = F_WW + F_Porto + F_Verpack + F_Steuer. DISPLAY F_Steuer F_Fakbetr WITH FRAME {&FRAME-NAME}. END. ON LEAVE OF F_MWST IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_MWST. FIND FIRST BWust USE-INDEX Wust-k2 WHERE BWust.WuCd = F_MWST AND BWust.CodeK <> 99 AND BWust.CodeA <> 99 NO-LOCK NO-ERROR. IF NOT AVAILABLE BWust OR F_MWST = 0 THEN DO: MESSAGE 'Dieser MWSt-Code ist ungültig' VIEW-AS ALERT-BOX ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. FIND LAST BMWSTAns USE-INDEX MWSTAns-k1 WHERE BMWSTAns.MWST_Cd = F_MWST AND BMWSTAns.Datum <= F_FakDat NO-LOCK NO-ERROR. IF AVAILABLE MWSTAns THEN F_MWST_Text = MWSTAns.Bez. ELSE F_MWST_Text = BWust.LText. DISPLAY F_MWST_Text WITH FRAME {&FRAME-NAME}. RUN STEUER. F_Fakbetr = F_WW + F_Porto + F_Verpack + F_Steuer. DISPLAY F_Steuer F_Fakbetr WITH FRAME {&FRAME-NAME}. END. ON LEAVE OF F_Porto IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_Porto. RUN STEUER. F_Fakbetr = F_WW + F_Porto + F_Verpack + F_Steuer. DISPLAY F_Steuer F_Porto F_FakBetr WITH FRAME {&FRAME-NAME}. END. ON LEAVE OF F_Verpack IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_Verpack. RUN STEUER. F_Fakbetr = F_WW + F_Porto + F_Verpack + F_Steuer. DISPLAY F_Steuer F_Verpack F_FakBetr WITH FRAME {&FRAME-NAME}. END. ON LEAVE OF F_Konto IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. ASSIGN F_Konto. IF F_Konto = '' THEN F_Konto = SteuNr.Konto_Debit. DISPLAY F_Konto WITH FRAME {&FRAME-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-open-query-cases B-table-Win adm/support/_adm-opn.p PROCEDURE adm-open-query-cases : /*------------------------------------------------------------------------------ Purpose: Opens different cases of the query based on attributes such as the 'Key-Name', or 'SortBy-Case' Parameters: ------------------------------------------------------------------------------*/ /* No Foreign keys are accepted by this SmartObject. */ {&OPEN-QUERY-{&BROWSE-NAME}} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available B-table-Win _ADM-ROW-AVAILABLE PROCEDURE adm-row-available : /*------------------------------------------------------------------------------ Purpose: Dispatched to this procedure when the Record- Source has a new row available. This procedure tries to get the new row (or foriegn keys) from the Record-Source and process it. Parameters: ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/row-head.i} /* Process the newly available records (i.e. display fields, open queries, and/or pass records on to any RECORD-TARGETS). */ {src/adm/template/row-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ADRESSE B-table-Win PROCEDURE ADRESSE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ F_Knr = 0. F_Adresse = ''. F_MWST_Text = ''. F_Faknr = 0. F_FakDat = TODAY. F_Faellig = ?. F_WW = 0. F_Porto = 0. F_Verpack = 0. F_MWST = 0. F_Steuer = 0. F_Fakbetr = 0. F_Konto = SteuNr.Konto_Debit. DRecid = 0. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = DVKnr NO-LOCK NO-ERROR. IF NOT AVAILABLE Adresse THEN RETURN. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = Adresse.Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN RETURN. F_Knr = DVKnr. F_Adresse = Adresse.Anzeig_Br. F_Saldo = Debst.Saldo. DRecid = RECID(Debst). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI B-table-Win _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 ERFASSEN B-table-Win PROCEDURE ERFASSEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DO TRANSACTION WITH FRAME {&FRAME-NAME}: ASSIGN {&List-1}. FIND Debst WHERE RECID(Debst) = DRecid. FIND LAST TransNr USE-INDEX TransNr-k1 WHERE TransNr.Firma = StFirma NO-LOCK NO-ERROR. IF AVAILABLE TransNr THEN DO: VTrNr1 = TransNr.TrNr1 + 1. VTrNr2 = 1. END. ELSE DO: VTrNr1 = 1. VTrNr2 = 1. END. CREATE TransNr. ASSIGN TransNr.Firma = StFirma TransNr.TrNr1 = VTrNr1 TransNr.TrNr2 = VTrNr2 TransNr.Herk = 52. CREATE Debop. ASSIGN Debop.Firma = GVFirma Debop.Knr = F_Knr Debop.Faknr = F_Faknr Debop.Fakdat = F_FakDat Debop.Faellig = F_Faellig Debop.Skber = F_WW Debop.WW = F_WW Debop.Fakbetr = F_FakBetr Debop.Saldo = F_FakBetr Debop.Kond = Debst.Kond Debop.Transp = 0 Debop.Porto = F_Porto Debop.Verpack = F_Verpack Debop.Konto = F_Konto Debop.Vertr = 0 Debop.Kte = 'MAF' Debop.TrNr1 = VTrNr1 Debop.TrNr2 = VTrNr2 Debop.FRW = Steuer.Fwc03 Debop.Kurs = 1.0 Debop.Faktor = 1. IF Steuer.MWST = 0 THEN Debop.WustAbr = TRUE. /* vereinbahrt */ ELSE Debop.WustAbr = FALSE. /* vereinnahmt */ DO ix = 1 TO 12: FIND FIRST Wust USE-INDEX Wust-k2 WHERE Wust.WuCd = ix NO-LOCK NO-ERROR. FIND LAST MWSTAns USE-INDEX MWSTAns-k1 WHERE MWSTAns.MWST_Cd = Wust.WuCd AND MWSTAns.Datum <= Debop.Fakdat NO-LOCK NO-ERROR. IF ix = F_MWST THEN DO: ASSIGN Debop.FakWpfl[ix] = F_FakBetr - F_Steuer Debop.FakWust[ix] = F_Steuer Debop.FakWPro[ix] = MWSTAns.Ansatz. END. IF AVAILABLE Wust THEN DO: ASSIGN Debop.FakIncl[ix] = Wust.Incl. END. IF ix = 12 THEN DO: ASSIGN Debop.FakWpfl[ix] = F_Porto + F_Verpack. Debop.FakWust[ix] = F_Steuer. END. END. ORecid = RECID(Debop). CREATE Debfa. ASSIGN Debfa.Firma = Debop.Firma Debfa.Knr = Debop.Knr Debfa.Faknr = Debop.Faknr Debfa.Fakdat = Debop.Fakdat Debfa.Faellig = Debop.Faellig Debfa.Fakbetr = Debop.Fakbetr Debfa.Skber = Debop.Skber Debfa.WW = Debop.WW Debfa.Transp = Debop.Transp Debfa.Porto = Debop.Porto Debfa.Verpack = Debop.Verpack Debfa.Konto = Debop.Konto Debfa.Vertr = Debop.Vertr Debfa.Kte = Debop.Kte Debfa.TrNr1 = Debop.TrNr1 Debfa.TrNr2 = Debop.TrNr2 Debfa.FRW = Debop.FRW Debfa.Kurs = Debop.Kurs Debfa.Faktor = 1. DO ix = 1 TO 12: ASSIGN Debfa.FakWpfl[ix] = Debop.FakWpfl[ix] Debfa.FakWust[ix] = Debop.FakWust[ix]. END. FIND LAST Debhi USE-INDEX Debhi-k1 WHERE Debhi.Firma = Debop.Firma AND Debhi.Knr = Debop.Knr NO-LOCK NO-ERROR. IF AVAILABLE Debhi THEN ix = Debhi.Trnr + 1. ELSE ix = 1. CREATE Debhi. ASSIGN Debhi.Firma = Debop.Firma Debhi.Knr = Debop.Knr Debhi.Trnr = ix Debhi.Datum = Debop.Fakdat Debhi.Faknr = Debop.Faknr Debhi.Kte = Debop.Kte Debhi.Soll = Debop.Fakbetr Debhi.Transp = Debop.Transp Debhi.Porto = Debop.Porto Debhi.Verpack = Debop.Verpack Debhi.Konto = Debop.Konto Debhi.TrNr1 = Debop.TrNr1 Debhi.TrNr2 = Debop.TrNr2 Debhi.FRW = Debop.FRW Debhi.Kurs = 1.0 Debhi.Faktor = 1 Debhi.Saldo = Debst.Saldo + Debop.Fakbetr. IF Steuer.MWST = 0 THEN DO: /* Mehrwertsteuer vereinbart */ CREATE Debwu. ASSIGN Debwu.Firma = Debop.Firma Debwu.Knr = Debop.Knr Debwu.Faknr = Debop.Faknr Debwu.Trnr = 1 Debwu.Datum = Debop.Fakdat Debwu.Betrag = Debop.Fakbetr Debwu.Konto = Debop.Konto Debwu.Kte = Debop.Kte Debwu.TrNr1 = Debop.TrNr1 Debwu.TrNr2 = Debop.TrNr2 Debwu.FRW = Debop.FRW Debwu.Kurs = 1.0 Debwu.Faktor = 1. DO ix = 1 TO 12: IF Debop.FakWpfl[ix] = 0 THEN NEXT. ASSIGN Debwu.Wustpfl[ix] = Debop.FakWpfl[ix] Debwu.Wust [ix] = Debop.FakWust[ix]. END. END. Debst.Saldo = Debst.Saldo + Debop.Fakbetr. END. /* Transaction DEBITOR */ RELEASE Debst. FIND Debst WHERE RECID(Debst) = DRecid NO-LOCK NO-ERROR. LKnr = F_Knr. DVKnr = F_Knr. RUN ADRESSE. DISPLAY {&List-1} WITH FRAME {&FRAME-NAME}. RUN dispatch IN THIS-PROCEDURE ('open-query':U). FIND BDebop WHERE RECID(BDebop) = ORecid NO-LOCK NO-ERROR. REPOSITION {&BROWSE-NAME} TO ROWID ROWID(BDebop). {&BROWSE-NAME}:SELECT-FOCUSED-ROW(). APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-hide B-table-Win PROCEDURE local-hide : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ RUN dispatch IN THIS-PROCEDURE ( INPUT 'hide':U ) . IF QOpen THEN CLOSE QUERY {&BROWSE-NAME}. QOpen = FALSE. OpenQ = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-open-query B-table-Win PROCEDURE local-open-query : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ IF NOT OpenQ THEN RETURN NO-APPLY. IF QOpen THEN CLOSE QUERY {&BROWSE-NAME}. OPEN QUERY {&BROWSE-NAME} FOR EACH Debop USE-INDEX Debop-k1 WHERE Debop.Firma = GVFirma AND Debop.KNr = DVKnr NO-LOCK. QOpen = TRUE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-view B-table-Win PROCEDURE local-view : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ FIND Steuer WHERE Steuer.Firma = GVFirma NO-LOCK NO-ERROR. FIND SteuNr WHERE SteuNr.Firma = GVFirma NO-LOCK NO-ERROR. RUN dispatch IN THIS-PROCEDURE ( INPUT 'view':U ) . OpenQ = TRUE. RUN dispatch IN THIS-PROCEDURE ('open-query':U). LKnr = DVKnr. RUN ADRESSE. DISPLAY {&List-1} WITH FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key B-table-Win adm/support/_key-snd.p PROCEDURE send-key : /*------------------------------------------------------------------------------ Purpose: Sends a requested KEY value back to the calling SmartObject. Parameters: ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/sndkytop.i} /* Return the key value associated with each key case. */ {src/adm/template/sndkycas.i "FRW" "Debop" "FRW"} {src/adm/template/sndkycas.i "Firma" "Debop" "Firma"} {src/adm/template/sndkycas.i "Knr" "Debop" "Knr"} /* Close the CASE statement and end the procedure. */ {src/adm/template/sndkyend.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records B-table-Win _ADM-SEND-RECORDS PROCEDURE send-records : /*------------------------------------------------------------------------------ Purpose: Send record ROWID's for all tables used by this file. Parameters: see template/snd-head.i ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/snd-head.i} /* For each requested table, put it's ROWID in the output list. */ {src/adm/template/snd-list.i "Debop"} /* Deal with any unexpected table requests before closing. */ {src/adm/template/snd-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed B-table-Win PROCEDURE state-changed : /* ----------------------------------------------------------- Purpose: Parameters: Notes: -------------------------------------------------------------*/ DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO. DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO. CASE p-state: /* Object instance CASEs can go here to replace standard behavior or add new cases. */ {src/adm/template/bstates.i} END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE STEUER B-table-Win PROCEDURE STEUER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-1}. IF NOT AVAILABLE BWust THEN DO: F_Steuer = 0. RETURN. END. IF BWust.Incl THEN F_Steuer = 0. ELSE DO: Rundbetr = (F_WW + F_Porto + F_Verpack) * BMWSTAns.Ansatz / 100. Rundcode = 1. RUN "v8/runden.p". F_Steuer = Rundbetr. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME