&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE XTabel NO-UNDO LIKE Tabel. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS V-table-Win /*------------------------------------------------------------------------ File: Description: from VIEWER.W - Template for SmartViewer Objects 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 VSko_Max AS DEC. DEF VAR VSko_Fak AS DEC. DEF VAR VZaBetr AS DEC. DEF VAR VSkBetr AS DEC. DEF VAR VDatum AS DATE. DEF VAR VTrNr1 AS INT. DEF VAR VTrNr2 AS INT. DEF VAR VHerk AS INT. DEF VAR VBankKto AS CHAR. DEF VAR VSkoKto AS CHAR. DEF VAR VDebKto AS CHAR. DEF VAR VBuchtxt1 AS CHAR. DEF VAR VBuchtxt2 AS CHAR. DEF VAR VZahFl AS LOG. DEF VAR FFehler AS LOG. DEF VAR VKte AS CHAR. DEF VAR zz AS INT. DEF VAR FErst AS LOG INIT TRUE. DEF VAR DebopRECID AS RECID NO-UNDO. DEF VAR SperrDat AS DATE NO-UNDO INIT 01/01/0001. DEF VAR iLager AS INT NO-UNDO. DEF BUFFER BDebop FOR Debop. DEF BUFFER BDebza FOR Debza. DEF BUFFER BDebfa FOR Debfa. DEF BUFFER BDebst FOR Debst. DEF BUFFER SDebst FOR Debst. DEF BUFFER BSteuer FOR Steuer. DEF VAR VAntZ AS DEC DECIMALS 4. DEF VAR VAntS AS DEC DECIMALS 4. DEF VAR nAntWpfl AS DEC DECIMALS 4 EXTENT 12. DEF VAR VTot AS DEC EXTENT 12. DEF VAR VZah AS DEC EXTENT 12. DEF VAR VSko AS DEC EXTENT 12. DEF VAR VZRes AS DEC. DEF VAR VSRes AS DEC. DEF VAR VMax AS INT. DEF TEMP-TABLE WFile FIELD Kto1 AS CHAR FIELD Kto2 AS CHAR FIELD MWST_Cd AS INT FIELD Betrag AS DEC. DEF TEMP-TABLE tDebop LIKE Debop. DEF TEMP-TABLE tDebza LIKE Debza. /* ---------- 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 SmartViewer &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 /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS CB_Konto F_Konto_Tot F_Total F_Zah_Datum ~ F_Faknr F_FakDat F_Faellig F_FakBetr F_Knr F_Saldo_T F_Saldo F_Skonto_Ber ~ F_Sko_Max F_Zah_Betr F_Skonto RECT-21 RECT-22 &Scoped-Define DISPLAYED-OBJECTS CB_Konto F_Konto_Tot F_Total F_Zah_Datum ~ F_Faknr F_FakDat F_Faellig F_FakBetr F_Knr F_Saldo_T F_Saldo F_Skonto_Ber ~ F_Sko_Max F_Zah_Betr F_Skonto /* Custom List Definitions */ /* ADM-CREATE-FIELDS,ADM-ASSIGN-FIELDS,List-3,List-4,List-5,List-6 */ &Scoped-define ADM-ASSIGN-FIELDS F_Konto_Tot F_Total F_Zah_Datum F_Faknr ~ F_FakDat F_Faellig F_FakBetr F_Knr F_Saldo_T F_Saldo F_Skonto_Ber F_Sko_Max ~ F_Zah_Betr F_Skonto &Scoped-define List-4 F_Saldo F_Skonto_Ber F_Sko_Max F_Zah_Betr F_Skonto &Scoped-define List-5 F_Faknr F_FakDat F_Faellig F_FakBetr F_Knr F_Saldo_T &Scoped-define List-6 F_Konto_Tot F_Total F_Zah_Datum /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" V-table-Win _INLINE /* Actions: ? adm/support/keyedit.w ? ? ? */ /* STRUCTURED-DATA THIS-PROCEDURE ************************** * Set attributes related to FOREIGN KEYS */ RUN set-attribute-list ( 'Keys-Accepted = "", Keys-Supplied = ""':U). /************************** */ /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE VARIABLE CB_Konto AS CHARACTER FORMAT "X(256)":U LABEL "Konto" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 21.4 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Faellig AS DATE FORMAT "99.99.9999":U LABEL "/" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_FakBetr AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 LABEL "Betrag" VIEW-AS FILL-IN NATIVE SIZE 20 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_FakDat AS DATE FORMAT "99.99.9999":U LABEL "Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Faknr AS INTEGER FORMAT "9999999":U INITIAL 0 LABEL "Fak-Nr." VIEW-AS FILL-IN NATIVE SIZE 11 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Knr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "Kde-Nr." VIEW-AS FILL-IN NATIVE SIZE 11 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Konto AS CHARACTER FORMAT "x(12)":U LABEL "Konto" VIEW-AS FILL-IN NATIVE SIZE 18 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Konto_Tot AS DECIMAL FORMAT "zzz,zz9.99-":U INITIAL 0 LABEL "Konto-Total" VIEW-AS FILL-IN NATIVE SIZE 18 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Saldo AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 19 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Saldo_T AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 LABEL "Saldo" VIEW-AS FILL-IN NATIVE SIZE 20 BY 1.05 BGCOLOR 14 NO-UNDO. DEFINE VARIABLE F_Skonto AS DECIMAL FORMAT "zzz,zz9.99-":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 17 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Skonto_Ber AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 19 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Sko_Max AS DECIMAL FORMAT "zzz,zz9.99-":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 17 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Total AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 LABEL "G-Total" VIEW-AS FILL-IN NATIVE SIZE 19 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Zah_Betr AS DECIMAL FORMAT "z,zzz,zz9.99-":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 19 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Zah_Datum AS DATE FORMAT "99.99.9999":U LABEL "Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1.05 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-21 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 131 BY 9.52. DEFINE RECTANGLE RECT-22 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 94.2 BY 3.14. DEFINE VARIABLE F_Anschrift AS CHARACTER VIEW-AS SELECTION-LIST SINGLE SIZE 35.2 BY 8 BGCOLOR 15 FONT 6 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main CB_Konto AT ROW 1.62 COL 9 COLON-ALIGNED F_Konto_Tot AT ROW 1.62 COL 45 COLON-ALIGNED F_Total AT ROW 1.62 COL 73 COLON-ALIGNED F_Zah_Datum AT ROW 2.62 COL 9 COLON-ALIGNED F_Faknr AT ROW 4.71 COL 9 COLON-ALIGNED F_FakDat AT ROW 4.71 COL 29 COLON-ALIGNED F_Faellig AT ROW 4.71 COL 47.4 COLON-ALIGNED F_FakBetr AT ROW 4.71 COL 73 COLON-ALIGNED F_Knr AT ROW 5.71 COL 9 COLON-ALIGNED F_Saldo_T AT ROW 5.71 COL 73 COLON-ALIGNED NO-TAB-STOP F_Saldo AT ROW 9.05 COL 3 NO-LABEL F_Skonto_Ber AT ROW 9.05 COL 20 COLON-ALIGNED NO-LABEL F_Sko_Max AT ROW 9.05 COL 39 COLON-ALIGNED NO-LABEL F_Zah_Betr AT ROW 9.05 COL 56 COLON-ALIGNED NO-LABEL F_Skonto AT ROW 9.05 COL 75 COLON-ALIGNED NO-LABEL F_Anschrift AT ROW 2 COL 97 NO-LABEL NO-TAB-STOP F_Konto AT ROW 2.62 COL 45 COLON-ALIGNED NO-TAB-STOP "Saldo" VIEW-AS TEXT SIZE 8.4 BY 1.05 AT ROW 7.67 COL 15 "Bez. Betrag" VIEW-AS TEXT SIZE 13 BY 1.05 AT ROW 7.67 COL 28.4 "Bez. Skonto" VIEW-AS TEXT SIZE 14.2 BY 1.05 AT ROW 7.67 COL 43.8 "Zahl-Betrag" VIEW-AS TEXT SIZE 12 BY 1.05 AT ROW 7.67 COL 64.4 "Skonto" VIEW-AS TEXT SIZE 9 BY 1.05 AT ROW 7.67 COL 84.8 RECT-21 AT ROW 1.24 COL 2 RECT-22 AT ROW 4.33 COL 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SCROLLABLE . /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartViewer Allow: Basic,DB-Fields Frames: 1 Add Fields to: EXTERNAL-TABLES Other Settings: PERSISTENT-ONLY COMPILE Temp-Tables and Buffers: TABLE: XTabel T "?" NO-UNDO Anadat Tabel END-TABLES. */ /* 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 V-table-Win ASSIGN HEIGHT = 9.95 WIDTH = 133. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB V-table-Win /* ************************* Included-Libraries *********************** */ {src/adm/method/viewer.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW V-table-Win VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME F-Main NOT-VISIBLE FRAME-NAME Size-to-Fit Custom */ ASSIGN FRAME F-Main:SCROLLABLE = FALSE FRAME F-Main:HIDDEN = TRUE. /* SETTINGS FOR SELECTION-LIST F_Anschrift IN FRAME F-Main NO-DISPLAY NO-ENABLE */ /* SETTINGS FOR FILL-IN F_Faellig IN FRAME F-Main 2 5 */ /* SETTINGS FOR FILL-IN F_FakBetr IN FRAME F-Main 2 5 */ /* SETTINGS FOR FILL-IN F_FakDat IN FRAME F-Main 2 5 */ /* SETTINGS FOR FILL-IN F_Faknr IN FRAME F-Main 2 5 */ /* SETTINGS FOR FILL-IN F_Knr IN FRAME F-Main 2 5 */ /* SETTINGS FOR FILL-IN F_Konto IN FRAME F-Main NO-DISPLAY NO-ENABLE */ ASSIGN F_Konto:HIDDEN IN FRAME F-Main = TRUE F_Konto:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN F_Konto_Tot IN FRAME F-Main 2 6 */ /* SETTINGS FOR FILL-IN F_Saldo IN FRAME F-Main ALIGN-L 2 4 */ /* SETTINGS FOR FILL-IN F_Saldo_T IN FRAME F-Main 2 5 */ ASSIGN F_Saldo_T:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN F_Skonto IN FRAME F-Main 2 4 */ /* SETTINGS FOR FILL-IN F_Skonto_Ber IN FRAME F-Main 2 4 */ /* SETTINGS FOR FILL-IN F_Sko_Max IN FRAME F-Main 2 4 */ /* SETTINGS FOR FILL-IN F_Total IN FRAME F-Main 2 6 */ /* SETTINGS FOR FILL-IN F_Zah_Betr IN FRAME F-Main 2 4 */ /* SETTINGS FOR FILL-IN F_Zah_Datum IN FRAME F-Main 2 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &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 CB_Konto &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Konto V-table-Win ON VALUE-CHANGED OF CB_Konto IN FRAME F-Main /* Konto */ DO: DEF VAR cKey AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: F_Konto = CB_Konto:SCREEN-VALUE. cKey = 'Konto' + STRING(iLager,'99'). PUT-KEY-VALUE SECTION 'DebitorZahlungen' KEY cKey VALUE F_Konto NO-ERROR. F_Konto:SCREEN-VALUE = F_Konto. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Konto &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Konto V-table-Win ON ENTRY OF F_Konto IN FRAME F-Main /* Konto */ DO: APPLY 'TAB' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Konto_Tot &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Konto_Tot V-table-Win ON LEFT-MOUSE-DBLCLICK OF F_Konto_Tot IN FRAME F-Main /* Konto-Total */ DO: DEF VAR AWert AS DEC. DEF VAR NWert AS DEC. AWert = DECIMAL(SELF:SCREEN-VALUE). RUN "v8/d-neuer_wert.w" (INPUT AWert, OUTPUT NWert). F_Konto_Tot = NWert. DISPLAY F_Konto_Tot WITH FRAME {&FRAME-NAME}. FIND FIRST XTabel WHERE XTabel.Firma = GVFirma AND XTabel.RecArt = 'KTotal' AND XTabel.Sprcd = 1 AND XTabel.CodeC = F_Konto NO-ERROR. IF NOT AVAILABLE XTabel THEN DO: CREATE XTabel. ASSIGN XTabel.Firma = GVFirma XTabel.RecArt = 'KTotal' XTabel.Sprcd = 1 XTabel.CodeC = F_Konto. END. XTabel.Dec_1 = F_Konto_Tot. APPLY 'ENTRY' TO CB_Konto IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Total &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Total V-table-Win ON LEFT-MOUSE-DBLCLICK OF F_Total IN FRAME F-Main /* G-Total */ DO: DEF VAR AWert AS DEC. DEF VAR NWert AS DEC. AWert = DECIMAL(SELF:SCREEN-VALUE). RUN "v8/d-neuer_wert.w" (INPUT AWert, OUTPUT NWert). F_Total = NWert. DISPLAY F_Total WITH FRAME {&FRAME-NAME}. FIND FIRST XTabel WHERE XTabel.Firma = GVFirma AND XTabel.RecArt = 'GTotal' AND XTabel.Sprcd = 1 AND XTabel.CodeC = '' NO-ERROR. IF NOT AVAILABLE XTabel THEN DO: CREATE XTabel. ASSIGN XTabel.Firma = GVFirma XTabel.RecArt = 'GTotal' XTabel.Sprcd = 1 XTabel.CodeC = ''. END. XTabel.Dec_1 = F_Total. APPLY 'ENTRY' TO CB_Konto IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK V-table-Win /* *************************** Main Block *************************** */ FIND BSteuer USE-INDEX Steuer-k1 WHERE BSteuer.Firma = GVFirma NO-LOCK NO-ERROR. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN dispatch IN THIS-PROCEDURE ('initialize':U). &ENDIF /************************ INTERNAL PROCEDURES ********************/ ON RETURN OF F_Konto IN FRAME {&FRAME-NAME} OR RETURN OF F_Zah_Datum IN FRAME {&FRAME-NAME} OR RETURN OF F_Faknr IN FRAME {&FRAME-NAME} OR RETURN OF F_Knr IN FRAME {&FRAME-NAME} OR RETURN OF CB_Konto IN FRAME {&FRAME-NAME} DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. ON ENTRY OF F_Konto_Tot IN FRAME {&FRAME-NAME} DO: APPLY 'ENTRY' TO F_Zah_Datum IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON ENTRY OF F_Total IN FRAME {&FRAME-NAME} DO: IF LASTKEY = KEYCODE('BACK-TAB') THEN APPLY 'ENTRY' TO F_Zah_Datum IN FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO F_Zah_Datum IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON ENTRY OF F_FakDat IN FRAME {&FRAME-NAME} OR ENTRY OF F_Faellig IN FRAME {&FRAME-NAME} OR ENTRY OF F_FakBetr IN FRAME {&FRAME-NAME} OR ENTRY OF F_Saldo_T IN FRAME {&FRAME-NAME} OR ENTRY OF F_Saldo IN FRAME {&FRAME-NAME} OR ENTRY OF F_Skonto_Ber IN FRAME {&FRAME-NAME} OR ENTRY OF F_Sko_Max IN FRAME {&FRAME-NAME} DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. ON ENTRY OF F_Knr IN FRAME {&FRAME-NAME} DO: F_Knr = INTEGER(SELF:SCREEN-VALUE). IF F_Faknr > 0 AND F_Faknr < 999999 THEN DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. END. ON ENTRY OF F_Zah_Betr IN FRAME {&FRAME-NAME} OR ENTRY OF F_Skonto IN FRAME {&FRAME-NAME} DO: IF F_Faknr = 0 THEN DO: APPLY 'ENTRY' TO F_Faknr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. END. ON LEAVE OF CB_Konto IN FRAME {&FRAME-NAME} DO: F_Konto = CB_Konto:SCREEN-VALUE. F_Konto:SCREEN-VALUE = F_Konto. IF F_Konto = '' AND FErst = FALSE THEN DO: { v8/fehler.i "0401" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. FIND FIRST XTabel WHERE XTabel.Firma = GVFirma AND XTabel.RecArt = 'KTotal' AND XTabel.Sprcd = 1 AND XTabel.CodeC = F_Konto NO-ERROR. IF NOT AVAILABLE XTabel THEN F_Konto_Tot = 0. ELSE F_Konto_Tot = XTabel.Dec_1. DISPLAY F_Konto_Tot WITH FRAME {&FRAME-NAME}. FErst = FALSE. END. ON LEAVE OF F_Zah_Datum IN FRAME {&FRAME-NAME} DO: DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. IF F_Zah_Datum = ? THEN DO: { v8/fehler.i "0096" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. IF F_Zah_Datum <= SperrDat THEN DO: { v8/fehler.i "0096" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. END. END. ON LEAVE OF F_Faknr IN FRAME {&FRAME-NAME} DO: F_Faknr = INTEGER(SELF:SCREEN-VALUE). LKY = LASTKEY. IF KEYFUNCTION(LKY) = 'END-ERROR' THEN RETURN. IF F_Faknr = 0 OR F_Faknr = 999999 THEN DO WITH FRAME {&FRAME-NAME}: F_FakDat = ?. F_Faellig = ?. F_FakBetr = 0. F_Saldo_T = 0. DISPLAY {&List-5}. DVFaknr = F_Faknr. APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. FIND Debop USE-INDEX Debop-k2 WHERE Debop.Firma = GVFirma AND Debop.Faknr = F_Faknr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debop THEN DO: { v8/fehler.i "0402" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. DVKnr = Debop.Knr. DVFaknr = Debop.Faknr. RUN new-state ('Seite_1_selectfnr, MAIN':U). RUN ANSCHRIFT. ASSIGN F_Faknr = Debop.Faknr F_Knr = Debop.Knr F_Fakbetr = Debop.FakBetr F_FakDat = Debop.FakDat F_Faellig = Debop.Faellig F_Saldo = Debop.Saldo F_Skonto_Ber = Debop.ZahBetr F_Sko_Max = Debop.Skonto. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = F_Knr NO-LOCK NO-ERROR. F_Saldo_T = Debst.Saldo. RUN "v8/skonto.p" ( INPUT F_Knr, INPUT F_Faknr, INPUT F_Zah_Datum, OUTPUT VSko_Max, OUTPUT VSko_Fak ). F_Zah_Betr = 0. F_Skonto = 0. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}. DISPLAY {&List-4} WITH FRAME {&FRAME-NAME}. END. ON LEAVE OF F_Knr IN FRAME {&FRAME-NAME} DO: IF F_Faknr > 0 AND F_Faknr < 999999 THEN RETURN. LKY = LASTKEY. IF KEYFUNCTION(LKY) = 'END-ERROR' THEN RETURN. IF KEYFUNCTION(LKY) = 'BACK-TAB' THEN RETURN. F_Knr = INTEGER(SELF:SCREEN-VALUE). IF F_Knr = 0 THEN DO: RUN new-state ('Seite_4, MAIN':U). RETURN NO-APPLY. END. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = F_Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: { v8/fehler.i "0421" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. DVKnr = Debst.Knr. RUN ANSCHRIFT. IF F_Faknr = 999999 THEN DO: RUN FAKNR_FUELLEN. RETURN NO-APPLY. END. IF F_Faknr = 0 THEN RUN new-state ('Seite_2, MAIN':U). RETURN NO-APPLY. END. ON RETURN OF F_Zah_Betr IN FRAME {&FRAME-NAME} OR RETURN OF F_Skonto IN FRAME {&FRAME-NAME} DO: APPLY 'U1' TO THIS-PROCEDURE. IF FFehler THEN RETURN NO-APPLY. RETURN NO-APPLY. END. ON LEAVE OF F_Skonto IN FRAME {&FRAME-NAME} DO: IF KEYFUNCTION(LASTKEY) = 'BACK-TAB' THEN RETURN. IF KEYFUNCTION(LASTKEY) = 'END-ERROR' THEN RETURN. IF KEYFUNCTION(LASTKEY) = '' THEN RETURN. APPLY 'U1' TO THIS-PROCEDURE. IF FFehler THEN RETURN NO-APPLY. RETURN NO-APPLY. END. ON U1 OF THIS-PROCEDURE DO: FFehler = FALSE. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-4}. ASSIGN {&List-5}. ASSIGN {&List-6}. IF F_Konto = '' THEN DO: { v8/fehler.i "0401" } FFehler = TRUE. APPLY 'ENTRY' TO CB_Konto. RETURN NO-APPLY. END. FIND Debop USE-INDEX Debop-k1 WHERE Debop.Firma = GVFirma AND Debop.Knr = F_Knr AND Debop.Faknr = F_Faknr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debop THEN DO: { v8/fehler.i "0402" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. DVKnr = Debop.Knr. DVFaknr = Debop.Faknr. DebopRECID = RECID(Debop). FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = F_Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: { v8/fehler.i "0421" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. IF F_Zah_Betr = 0 AND F_Skonto = 0 THEN DO: F_Zah_Betr = Debop.Saldo. F_Skonto = 0. DISPLAY {&List-4}. FFehler = TRUE. APPLY 'ENTRY' TO F_Zah_Betr. RETURN NO-APPLY. END. Rundbetr = F_Zah_Betr + F_Skonto. IF Rundbetr = 0 THEN DO: DISPLAY {&List-4}. FFehler = TRUE. APPLY 'ENTRY' TO F_Zah_Betr. RETURN NO-APPLY. END. DO WHILE Rundbetr <> Debop.Saldo: IF Debop.Saldo >= 0 AND Rundbetr > 0 THEN DO: IF (F_Skonto + Rundbetr) <= VSko_Max THEN F_Skonto = F_Skonto + Rundbetr. END. IF Debop.Saldo < 0 AND Rundbetr < 0 THEN DO: IF (F_Skonto + Rundbetr) >= VSko_Max THEN F_Skonto = F_Skonto + Rundbetr. END. LEAVE. END. Ja = TRUE. /* IF (F_Sko_Max >= 0 AND F_Skonto >= 0 AND F_Skonto > F_Sko_Max) OR (F_Sko_Max < 0 AND F_Skonto < 0 AND F_Skonto < F_Sko_Max) THEN DO: Ja = TRUE. { v8/antwort.i "0405" } END. */ IF NOT Ja THEN DO: FFehler = TRUE. APPLY 'ENTRY' TO F_Skonto. RETURN NO-APPLY. END. RUN ZAHLUNG. END. FFehler = FALSE. APPLY 'ENTRY' TO F_Knr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON END-ERROR OF F_Knr IN FRAME {&FRAME-NAME} DO: F_Knr = 0. APPLY 'ENTRY' TO F_Faknr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON END-ERROR OF F_Faknr IN FRAME {&FRAME-NAME} DO: APPLY 'ENTRY' TO CB_Konto IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. ON END-ERROR OF F_Zah_Betr IN FRAME {&FRAME-NAME} OR END-ERROR OF F_Skonto IN FRAME {&FRAME-NAME} DO: APPLY 'ENTRY' TO F_Faknr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ABLOESCHEN V-table-Win PROCEDURE ABLOESCHEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FRAME {&FRAME-NAME}:HIDDEN = TRUE. FRAME {&FRAME-NAME}:SENSITIVE = FALSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available V-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 ANSCHRIFT V-table-Win PROCEDURE ANSCHRIFT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = DVKnr NO-LOCK NO-ERROR. DO WITH FRAME {&FRAME-NAME}: F_Anschrift:DELIMITER = "}". F_Anschrift:DELETE(9). F_Anschrift:DELETE(8). F_Anschrift:DELETE(7). F_Anschrift:DELETE(6). F_Anschrift:DELETE(5). F_Anschrift:DELETE(4). F_Anschrift:DELETE(3). F_Anschrift:DELETE(2). F_Anschrift:DELETE(1). IF AVAILABLE Adresse THEN DO: F_Anschrift:ADD-LAST(Adresse.Anschrift[3]). F_Anschrift:ADD-LAST(Adresse.Anschrift[4]). F_Anschrift:ADD-LAST(Adresse.Anschrift[5]). F_Anschrift:ADD-LAST(Adresse.Anschrift[6]). F_Anschrift:ADD-LAST(Adresse.Anschrift[7]). F_Anschrift:ADD-LAST(Adresse.Anschrift[8]). F_Anschrift:ADD-LAST(Adresse.Anschrift[9]). F_Anschrift:ADD-LAST(Adresse.Anschrift[10]). F_Anschrift:ADD-LAST(Adresse.Anschrift[11]). END. DISPLAY F_Anschrift. FIND SDebst USE-INDEX Debst-k1 WHERE SDebst.Firma = GVFirma AND SDebst.Knr = Adresse.Knr NO-LOCK NO-ERROR. IF AVAILABLE SDebst THEN F_Saldo_T = SDebst.Saldo. ELSE F_Saldo_T = 0. DISPLAY F_Saldo_T. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ANZUENDEN V-table-Win PROCEDURE ANZUENDEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FRAME {&FRAME-NAME}:HIDDEN = FALSE. FRAME {&FRAME-NAME}:SENSITIVE = TRUE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DEBWECHSEL V-table-Win PROCEDURE DEBWECHSEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ RUN ANSCHRIFT. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = DVKnr NO-LOCK NO-ERROR. IF Available DEBST THEN F_Saldo_T = Debst.Saldo. ELSE F_Saldo_T = 0. DISPLAY F_Saldo_T WITH FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI V-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 ENTRY_KONTO V-table-Win PROCEDURE ENTRY_KONTO : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ APPLY 'ENTRY' TO CB_Konto IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FAKNR_FUELLEN V-table-Win PROCEDURE FAKNR_FUELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ F_Faknr = DVFaknr. FIND Debop USE-INDEX Debop-k2 WHERE Debop.Firma = GVFirma AND Debop.Faknr = F_Faknr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debop THEN DO: { v8/fehler.i "0402" } APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. DVKnr = Debop.Knr. DVFaknr = Debop.Faknr. RUN ANSCHRIFT. ASSIGN F_Faknr = Debop.Faknr F_Knr = Debop.Knr F_Fakbetr = Debop.FakBetr F_FakDat = Debop.FakDat F_Faellig = Debop.Faellig F_Saldo = Debop.Saldo F_Skonto_Ber = Debop.ZahBetr F_Sko_Max = Debop.Skonto. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = GVFirma AND Debst.Knr = F_Knr NO-LOCK NO-ERROR. F_Saldo_T = Debst.Saldo. RUN "v8/skonto.p" ( INPUT F_Knr, INPUT F_Faknr, INPUT F_Zah_Datum, OUTPUT VSko_Max, OUTPUT VSko_Fak ). F_Zah_Betr = 0. F_Skonto = 0. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}. DISPLAY {&List-4} WITH FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO F_Zah_Betr IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE INTERFACE V-table-Win PROCEDURE INTERFACE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FOR EACH WFile WHERE WFile.Betrag <> 0 BY WFile.Kto1: FIND LAST Interf USE-INDEX Interf-k1 WHERE Interf.Firma = BSteuer.FBFirma AND Interf.TrNr1 = VTrNr1 AND Interf.TrNr2 = VTrNr2 NO-LOCK NO-ERROR. IF AVAILABLE Interf THEN ix = Interf.Trnr + 1. ELSE ix = 1. CREATE Interf. ASSIGN Interf.Firma = BSteuer.FBFirma Interf.TrNr1 = VTrNr1 Interf.TrNr2 = VTrNr2 Interf.TrNr = ix Interf.Kto1 = WFile.Kto1 Interf.Kto2 = WFile.Kto2 Interf.Herk = TransNr.Herk Interf.Datum = BDebza.ZahDat Interf.Buchtxt1 = VBuchtxt1 Interf.Buchtxt2 = VBuchtxt2 Interf.Betrag = WFile.Betrag Interf.Betrag_Frw = WFile.Betrag Interf.FRW = BDebop.FRW Interf.Faktor = BDebop.Faktor Interf.Kurs = BDebop.Kurs Interf.Verbucht = FALSE Interf.Faknr = STRING(BDebop.Faknr,"9999999") Interf.Knr = BDebop.Knr Interf.MWST_Nr = "" Interf.MWST_Cd = WFile.MWST_Cd Interf.HKFirma = BDebop.Firma. DELETE WFile. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KUNDE_FUELLEN V-table-Win PROCEDURE KUNDE_FUELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ F_FakDat = ?. F_Faellig = ?. F_FakBetr = 0. F_Saldo_T = 0. F_Knr = DVKnr. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}. RUN ANSCHRIFT. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-disable-fields V-table-Win PROCEDURE local-disable-fields : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ RUN dispatch IN THIS-PROCEDURE ( INPUT 'disable-fields':U ) . DO WITH FRAME {&FRAME-NAME}: DISABLE {&ADM-ASSIGN-FIELDS}. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-display-fields V-table-Win PROCEDURE local-display-fields : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ RUN dispatch IN THIS-PROCEDURE ( INPUT 'display-fields':U ) . DISPLAY {&ADM-ASSIGN-FIELDS} WITH FRAME {&FRAME-NAME}. F_Konto = CB_Konto:SCREEN-VALUE. F_Konto:SCREEN-VALUE = F_Konto. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-enable-fields V-table-Win PROCEDURE local-enable-fields : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ RUN dispatch IN THIS-PROCEDURE ( INPUT 'enable-fields':U ) . DO WITH FRAME {&FRAME-NAME}: ENABLE {&ADM-ASSIGN-FIELDS}. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-initialize V-table-Win PROCEDURE local-initialize : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ DEF VAR cString AS CHAR NO-UNDO. DEF VAR cKey AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: iLager = DYNAMIC-FUNCTION('getBenLager':U) NO-ERROR. CB_Konto:DELIMITER = ";". RUN COMBO_ZAHLUNGSART ( INPUT CB_Konto:HANDLE ) NO-ERROR. cKey = 'Konto' + STRING(iLager,'99'). GET-KEY-VALUE SECTION 'DebitorZahlungen' KEY cKey VALUE cString. IF cString = ? THEN cString = ''. IF cString = '' THEN DO: cKey = 'Konto'. GET-KEY-VALUE SECTION 'DebitorZahlungen' KEY cKey VALUE cString. END. IF cString = ? THEN cString = ''. IF cString = '' THEN cString = ENTRY(2, CB_Konto:LIST-ITEM-PAIRS, ';'). F_Konto = cString. F_Konto :SCREEN-VALUE = cString NO-ERROR. CB_Konto:SCREEN-VALUE = cString NO-ERROR. END. RUN dispatch IN THIS-PROCEDURE ( INPUT 'initialize':U ) . FOR EACH XTabel: DELETE XTabel. END. F_Konto_Tot = 0. F_Total = 0. F_Konto = CB_Konto:SCREEN-VALUE. F_Zah_Datum = TODAY. F_FakDat = ?. F_Faellig = ?. F_Saldo_T = 0. F_Faknr = 0. F_Fakbetr = 0. F_Knr = 0. F_Saldo = 0. F_Skonto_Ber = 0. F_Sko_Max = 0. F_Zah_Betr = 0. FIND Steuer NO-LOCK USE-INDEX Steuer-k1 WHERE Steuer.Firma = GVFirma NO-ERROR. IF AVAILABLE Steuer THEN DO: SperrDat = DATE(Steuer.Fwc08) NO-ERROR. IF ERROR-STATUS:ERROR THEN SperrDat = 01/01/0001. END. RUN dispatch IN THIS-PROCEDURE ('display-fields':U). Helptext = ''. FOR EACH LiBild WHERE LiBild.Sprcd = GVSprcd AND LiBild.Prog = 'ZAHLUNG' NO-LOCK: Helptext[LiBild.Tenr] = LiBild.Litext. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-view V-table-Win PROCEDURE local-view : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ Helptext = ''. i5 = 0. FOR EACH LiBild USE-INDEX LiBild-k1 WHERE LiBild.Sprcd = GVSprcd AND LiBild.Prog = 'ZAHLUNG' NO-LOCK: i5 = i5 + 1. Helptext[i5] = LiBild.Litext. END. SperrDat = DYNAMIC-FUNCTION('getSperrDatum':U) NO-ERROR. RUN dispatch IN THIS-PROCEDURE ( INPUT 'view':U ) . RUN dispatch IN THIS-PROCEDURE ('apply-entry':U). APPLY 'ENTRY' TO CB_Konto IN FRAME {&FRAME-NAME}. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE MEHRWERTSTEUER V-table-Win PROCEDURE MEHRWERTSTEUER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR nDiff AS DEC NO-UNDO. DEF VAR nTotProz AS DEC NO-UNDO. DEF VAR nSaldo AS DEC NO-UNDO. DEF VAR nBetrag AS DEC NO-UNDO. DEF VAR nZahBetr AS DEC NO-UNDO. DEF VAR nFakBetr AS DEC NO-UNDO. DEF VAR nSkoBetr AS DEC NO-UNDO. DEF VAR lStorno AS LOG NO-UNDO. DEF VAR iFaktor AS INT NO-UNDO. DEF VAR lNochmals AS LOG NO-UNDO. DEF VAR ii AS INT NO-UNDO. IF VZaBetr = 0 AND VSkBetr = 0 THEN RETURN. VMax = 0. DO zz = 1 TO 11: IF bDebop.FakWpfl[zz] = 0 THEN NEXT. VMax = zz. END. EMPTY TEMP-TABLE tDebop. EMPTY TEMP-TABLE tDebza. CREATE tDebop. BUFFER-COPY bDebop TO tDebop. DO zz = 1 TO 11: ASSIGN tDebop.ZahWpfl[zz] = 0 tDebop.ZahWust[zz] = 0 tDebop.ZahSkon[zz] = 0 tDebop.FakWpfl[zz] = tDebop.FakWpfl[zz] + tDebop.FakWust[zz]. END. ASSIGN tDebop.ZahBetr = tDebop.Zahbetr + VZaBetr tDebop.Skonto = tDebop.Skonto + VSkBetr. CREATE tDebza. BUFFER-COPY bDebza TO tDebza. DO zz = 1 TO 11: ASSIGN tDebza.ZahWpfl[zz] = 0 tDebza.ZahWust[zz] = 0 tDebza.ZahSkon[zz] = 0. END. IF tDebop.Zahbetr <> 0 THEN DO: IF tDebop.FakBetr <> 0 THEN nTotProz = tDebop.ZahBetr * 100 / tDebop.FakBetr. ELSE nTotProz = VZaBetr * 100 / tDebop.Fakbetr. END. ELSE DO: nTotProz = 0. END. DO zz = 1 TO 11: tDebop.ZahWpfl[zz] = tDebop.FakWpfl[zz] * nTotProz / 100. END. IF tDebop.Skonto <> 0 THEN DO: IF tDebop.FakBetr <> 0 THEN nTotProz = tDebop.Skonto * 100 / tDebop.FakBetr. ELSE nTotProz = VSkBetr * 100 / tDebop.FakBetr. END. ELSE DO: nTotProz = 0. END. DO zz = 1 TO 11: tDebop.ZahSkon[zz] = tDebop.FakWpfl[zz] * nTotProz / 100. END. ASSIGN nZahBetr = 0 nSkoBetr = 0. /* ZAHLBETRAG */ DO zz = 1 TO 11: IF tDebop.FakWpfl[zz] < 0 AND tDebop.ZahWpfl[zz] <= 0 THEN DO: IF tDebop.ZahWpfl[zz] >= tDebop.FakWpfl[zz] THEN NEXT. nDiff = tDebop.ZahWpfl[zz] - tDebop.FakWpfl[zz]. tDebop.ZahWpfl[zz] = tDebop.ZahWpfl[zz] - nDiff. nZahBetr = nZahBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] >= 0 AND tDebop.ZahWpfl[zz] >= 0 THEN DO: IF tDebop.ZahWpfl[zz] <= tDebop.FakWpfl[zz] THEN NEXT. nDiff = tDebop.ZahWpfl[zz] - tDebop.FakWpfl[zz]. tDebop.ZahWpfl[zz] = tDebop.ZahWpfl[zz] - nDiff. nZahBetr = nZahBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] < 0 AND tDebop.ZahWpfl[zz] >= 0 THEN DO: nDiff = tDebop.ZahWpfl[zz]. tDebop.ZahWpfl[zz] = tDebop.ZahWpfl[zz] - nDiff. nZahBetr = nZahBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] >= 0 AND tDebop.ZahWpfl[zz] <= 0 THEN DO: nDiff = tDebop.ZahWpfl[zz]. tDebop.ZahWpfl[zz] = tDebop.ZahWpfl[zz] - nDiff. nZahBetr = nZahBetr + nDiff. NEXT. END. END. tDebop.ZahWpfl[11] = tDebop.ZahWpfl[11] + nZahBetr. /* SKONTO */ DO zz = 1 TO 11: IF tDebop.FakWpfl[zz] < 0 AND tDebop.ZahSkon[zz] <= 0 THEN DO: IF (tDebop.ZahWpfl[zz] + tDebop.ZahSkon[zz]) >= tDebop.FakWpfl[zz] THEN NEXT. nDiff = (tDebop.ZahWpfl[zz] + tDebop.ZahSkon[zz]) - tDebop.FakWpfl[zz]. tDebop.ZahSkon[zz] = tDebop.ZahSkon[zz] - nDiff. nSkoBetr = nSkoBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] >= 0 AND tDebop.ZahSkon[zz] >= 0 THEN DO: IF (tDebop.ZahWpfl[zz] + tDebop.ZahSkon[zz]) <= tDebop.FakWpfl[zz] THEN NEXT. nDiff = (tDebop.ZahWpfl[zz] + tDebop.ZahSkon[zz]) - tDebop.FakWpfl[zz]. tDebop.ZahSkon[zz] = tDebop.ZahSkon[zz] - nDiff. nSkoBetr = nSkoBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] < 0 AND tDebop.ZahSkon[zz] >= 0 THEN DO: nDiff = tDebop.ZahSkon[zz]. tDebop.ZahSkon[zz] = tDebop.ZahSkon[zz] - nDiff. nSkoBetr = nSkoBetr + nDiff. NEXT. END. IF tDebop.FakWpfl[zz] >= 0 AND tDebop.ZahSkon[zz] <= 0 THEN DO: nDiff = tDebop.ZahSkon[zz]. tDebop.ZahSkon[zz] = tDebop.ZahSkon[zz] - nDiff. nSkoBetr = nSkoBetr + nDiff. NEXT. END. END. tDebop.ZahSkon[11] = tDebop.ZahSkon[11] + nSkoBetr. nZahBetr = 0. nSkoBetr = 0. DO zz = 1 TO 11: ASSIGN tDebza.ZahWpfl[zz] = tDebop.ZahWpfl[zz] - bDebop.ZahWpfl[zz] - bDebop.ZahWust[zz] tDebza.ZahSkon[zz] = tDebop.ZahSkon[zz] - bDebop.ZahSkon[zz]. IF tDebza.ZahWpfl[zz] <> 0 THEN DO: tDebza.ZahWust[zz] = tDebza.ZahWpfl[zz] * tDebop.FakWPro[zz] / (100 + tDebop.FakWPro[zz]). tDebza.ZahWpfl[zz] = tDebza.ZahWpfl[zz] - tDebza.ZahWust[zz]. END. nZahBetr = nZahBetr + tDebza.ZahWpfl[zz] + tDebza.ZahWust[zz]. nSkoBetr = nSkoBetr + tDebza.ZahSkon[zz]. ASSIGN bDebza.ZahWpfl[zz] = tDebza.ZahWpfl[zz] bDebza.ZahWust[zz] = tDebza.ZahWust[zz] bDebza.ZahSkon[zz] = tDebza.ZahSkon[zz]. END. nDiff = VZaBetr - nZahBetr. IF nZahBetr + nDiff = VZaBetr THEN bDebza.ZahWpfl[11] = bDebza.ZahWpfl[11] + nDiff. ELSE bDebza.ZahWpfl[11] = bDebza.ZahWpfl[11] - nDiff. nDiff = VSkBetr - nSkoBetr. IF nSkoBetr + nDiff = VSkBetr THEN bDebza.ZahSkon[11] = bDebza.ZahSkon[11] + nDiff. ELSE bDebza.ZahSkon[11] = bDebza.ZahSkon[11] - nDiff. DO zz = 1 TO 11: ASSIGN bDebop.ZahWpfl[zz] = bDebop.ZahWpfl[zz] + tDebza.ZahWpfl[zz] bDebop.ZahWust[zz] = bDebop.ZahWust[zz] + tDebza.ZahWust[zz] bDebop.ZahSkon[zz] = bDebop.ZahSkon[zz] + tDebza.ZahSkon[zz]. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records V-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 ------------------------------------------------------------------------------*/ /* SEND-RECORDS does nothing because there are no External Tables specified for this SmartViewer, and there are no tables specified in any contained Browse, Query, or Frame. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed V-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: WHEN 'Aktivieren' THEN DO: RUN dispatch IN THIS-PROCEDURE ('enable-fields':U). RETURN NO-APPLY. END. WHEN 'Deaktivieren' THEN DO: RUN dispatch IN THIS-PROCEDURE ('disable-fields':U). RETURN NO-APPLY. END. {src/adm/template/vstates.i} END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ZAHLUNG V-table-Win PROCEDURE ZAHLUNG : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ VZaBetr = F_Zah_Betr. VSkBetr = F_Skonto. VDatum = F_Zah_Datum. VBankKto = F_Konto. VHerk = 61. FIND Debop WHERE RECID(Debop) = DebopRECID NO-LOCK. DO TRANSACTION: FIND BDebop USE-INDEX Debop-k1 WHERE BDebop.Firma = Debop.Firma AND BDebop.Knr = Debop.Knr AND BDebop.Faknr = Debop.Faknr. FIND BDebst USE-INDEX Debst-k1 WHERE BDebst.Firma = Debop.Firma AND BDebst.Knr = Debop.Knr. DVKnr = Debop.Knr. DVFaknr = Debop.Faknr. FIND Steuer WHERE Steuer.Firma = GVFirma NO-LOCK. FIND SteuNr WHERE SteuNr.Firma = GVFirma NO-LOCK. IF VDatum > BDebop.Faellig THEN VZahFl = FALSE. ELSE VZahFl = TRUE. IF VZahFl THEN VKte = TRIM(SUBSTRING(Helptext[02],01,10)). ELSE VKte = TRIM(SUBSTRING(Helptext[02],11,10)). IF VSkoKto = '' THEN DO: VSkoKto = SteuNr.Konto_Skonto. IF VSkoKto = '' THEN DO: FIND Waehrung NO-LOCK USE-INDEX Waehrung-k1 WHERE Waehrung.Firma = GVFirma AND Waehrung.FRW = Steuer.Fwc03 NO-ERROR. IF AVAILABLE Waehrung THEN VSkoKto = Waehrung.DebSammKto. END. END. VDebKto = BDebop.Konto. FBFirma = Steuer.FBFirma. FIND LAST TransNr USE-INDEX TransNr-k1 WHERE TransNr.Firma = StFirma AND TransNr.TrNr1 = BDebop.TrNr1 NO-LOCK NO-ERROR. VTrNr1 = TransNr.TrNr1. VTrNr2 = TransNr.TrNr2 + 1. CREATE TransNr. ASSIGN TransNr.Firma = StFirma TransNr.TrNr1 = VTrNr1 TransNr.TrNr2 = VTrNr2 TransNr.Herk = VHerk. VBuchtxt1 = Adresse.Anzeig_Br. VBuchtxt2 = Helptext[01] + " " + STRING(BDebop.Faknr,"9999999"). FOR EACH WFile: DELETE WFile. END. /* ---- Zahlung verarbeiten (Normal) --------------------------------------- */ DO WHILE VZaBetr <> 0 OR VSkBetr <> 0: FIND LAST bDebza USE-INDEX Debza-k1 WHERE bDebza.Firma = GVFirma AND bDebza.Knr = DVKnr AND bDebza.Faknr = DVFaknr NO-LOCK NO-ERROR. IF AVAILABLE bDebza THEN VTrnr = bDebza.Trnr + 1. ELSE VTrnr = 1. CREATE bDebza. ASSIGN bDebza.Firma = GVFirma bDebza.Knr = DVKnr bDebza.Faknr = DVFaknr bDebza.Trnr = VTrnr bDebza.Zahdat = VDatum bDebza.Zahbetr = VZaBetr bDebza.Skonto = VSkBetr bDebza.Konto = VBankKto bDebza.TrNr1 = VTrNr1 bDebza.TrNr2 = VTrNr2 bDebza.FRW = BDebop.Frw bDebza.Kurs = BDebop.Kurs bDebza.Faktor = BDebop.Faktor bDebza.Kte = VKte. RUN MEHRWERTSTEUER. /* MWSTBERECHNUNG */ BDebop.Saldo = BDebop.Saldo - VZaBetr - VSkBetr. BDebop.Skonto = BDebop.Skonto + VSkBetr. BDebop.Zahbetr = BDebop.Zahbetr + VZaBetr. BDebop.Zahdat = VDatum. BDebst.Saldo = BDebst.Saldo - VZaBetr - VSkBetr. FIND LAST Debhi USE-INDEX Debhi-k1 WHERE Debhi.Firma = GVFirma AND Debhi.Knr = DVKnr NO-LOCK NO-ERROR. IF AVAILABLE Debhi THEN VTrnr = Debhi.Trnr + 1. ELSE VTrnr = 1. CREATE Debhi. ASSIGN Debhi.Firma = bDebza.Firma Debhi.Knr = bDebza.Knr Debhi.Trnr = VTrnr Debhi.TrNr1 = VTrNr1 Debhi.TrNr2 = VTrNr2 Debhi.Datum = bDebza.Zahdat Debhi.Faknr = bDebza.Faknr Debhi.Haben = bDebza.Zahbetr Debhi.Kte = bDebza.Kte Debhi.Konto = bDebza.Konto Debhi.Skonto = bDebza.Skonto Debhi.Saldo = BDebst.Saldo Debhi.FRW = BDebop.Frw Debhi.Kurs = BDebop.Kurs Debhi.Faktor = BDebop.Faktor. IF NOT BDebop.Wustabr THEN DO: FIND LAST Debwu USE-INDEX Debwu-k1 WHERE Debwu.Firma = GVFirma AND Debwu.Knr = bDebza.Knr AND Debwu.Faknr = bDebza.Faknr NO-LOCK NO-ERROR. IF AVAILABLE Debwu THEN VTrnr = Debwu.Trnr + 1. ELSE VTrnr = 1. CREATE Debwu. ASSIGN Debwu.Firma = bDebza.Firma Debwu.Knr = bDebza.Knr Debwu.Faknr = bDebza.Faknr Debwu.Trnr = VTrnr Debwu.TrNr1 = VTrNr1 Debwu.TrNr2 = VTrNr2 Debwu.Datum = bDebza.Zahdat Debwu.Betrag = bDebza.Zahbetr Debwu.Konto = bDebza.Konto Debwu.Kte = bDebza.Kte Debwu.FRW = BDebop.Frw Debwu.Kurs = BDebop.Kurs Debwu.Faktor = BDebop.Faktor. DO ix = 1 TO 11: ASSIGN Debwu.Wustpfl[ix] = bDebza.Zahwpfl[ix] Debwu.Wust [ix] = bDebza.Zahwust[ix] Debwu.Skonto [ix] = bDebza.ZahSkon[ix]. END. END. /* ---- Interface fuer Zahlung, Skonto ------------------------------------- */ FIND FIRST WFile WHERE WFile.Kto1 = bDebza.Konto AND WFile.Kto2 = BDebop.Konto NO-ERROR. IF NOT AVAILABLE WFile THEN DO: CREATE WFile. ASSIGN WFile.Kto1 = bDebza.Konto WFile.Kto2 = BDebop.Konto WFile.MWST_Cd = 0. END. ASSIGN WFile.Betrag = WFile.Betrag + VZaBetr. FIND FIRST WFile WHERE WFile.Kto1 = VSkoKto AND WFile.Kto2 = BDebop.Konto NO-ERROR. IF NOT AVAILABLE WFile THEN DO: CREATE WFile. ASSIGN WFile.Kto1 = VSkoKto WFile.Kto2 = BDebop.Konto WFile.MWST_Cd = 0. END. ASSIGN WFile.Betrag = WFile.Betrag + VSkBetr. /* ---- Interface fuer Mehrwertsteuer (Vereinnahmt und Skonto) ------------- */ DO ix = 1 TO 10: IF bDebza.ZahWpfl[ix] = 0 AND bDebza.ZahSkon[ix] = 0 THEN NEXT. FIND FIRST Wust NO-LOCK USE-INDEX Wust-k2 WHERE Wust.WuCd = ix NO-ERROR. IF NOT BDebop.WustAbr AND bDebza.ZahWpfl[ix] <> 0 THEN DO: IF BDebop.Fakincl[ix] THEN DO: RundBetr = bDebza.ZahWpfl[ix] / (100 + BDebop.FakWPro[ix]) * BDebop.FakWPro[ix]. Rundcode = 1. RUN "v8/runden.p". END. ELSE DO: Rundbetr = bDebza.ZahWust[ix]. END. FIND FIRST WFile WHERE WFile.Kto1 = SteuNr.Konto_Wust_H AND WFile.Kto2 = Wust.Konto NO-ERROR. IF NOT AVAILABLE WFile THEN DO: CREATE WFile. ASSIGN WFile.Kto1 = SteuNr.Konto_Wust_H WFile.Kto2 = Wust.Konto WFile.MWST_Cd = 0. END. ASSIGN WFile.Betrag = WFile.Betrag + Rundbetr. END. IF NOT BDebop.WustAbr AND bDebza.ZahSkon[ix] <> 0 THEN DO: IF NOT BDebop.WustAbr THEN LVKto1 = SteuNr.Konto_Wust_H. ELSE LVKto1 = Wust.Konto. LVKto2 = VSkoKto. RundBetr = bDebza.ZahSkon[ix] * BDebop.FakWPro[ix] / (100 + BDebop.FakWPro[ix]). Rundcode = 1. RUN "v8/runden.p". FIND FIRST WFile WHERE WFile.Kto1 = LVKto1 AND WFile.Kto2 = LVKto2 NO-ERROR. IF NOT AVAILABLE WFile THEN DO: CREATE WFile. ASSIGN WFile.Kto1 = LVKto1 WFile.Kto2 = LVKto2 WFile.MWST_Cd = 0. END. ASSIGN WFile.Betrag = WFile.Betrag + Rundbetr. END. END. RUN INTERFACE. DVFaknr = BDebop.Faknr. DVKnr = BDebop.Knr. RELEASE bDebop. RELEASE Debwu. RELEASE Debhi. RELEASE bDebza. RUN new-state ('zahlung_verbucht, MAIN':U). LEAVE. END. /* Zahlung Normal */ FIND FIRST XTabel WHERE XTabel.Firma = GVFirma AND XTabel.RecArt = 'KTotal' AND XTabel.Sprcd = 1 AND XTabel.CodeC = F_Konto NO-ERROR. IF NOT AVAILABLE XTabel THEN DO: CREATE XTabel. ASSIGN XTabel.Firma = GVFirma XTabel.RecArt = 'KTotal' XTabel.Sprcd = 1 XTabel.CodeC = F_Konto. END. XTabel.Dec_1 = XTabel.Dec_1 + F_Zah_Betr. F_Konto_Tot = XTabel.Dec_1. FIND FIRST XTabel WHERE XTabel.Firma = GVFirma AND XTabel.RecArt = 'GTotal' AND XTabel.Sprcd = 1 AND XTabel.CodeC = '' NO-ERROR. IF NOT AVAILABLE XTabel THEN DO: CREATE XTabel. ASSIGN XTabel.Firma = GVFirma XTabel.RecArt = 'GTotal' XTabel.Sprcd = 1 XTabel.CodeC = ''. END. XTabel.Dec_1 = XTabel.Dec_1 + F_Zah_Betr. F_Total = XTabel.Dec_1. DO WITH FRAME {&FRAME-NAME}: DISPLAY F_Konto_Tot F_Total. END. F_Faknr = 0. F_FakDat = ?. F_Faellig = ?. F_FakBetr = 0. F_Saldo_T = 0. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}. F_Saldo = 0. F_Skonto_Ber = 0. F_Sko_Max = 0. F_Zah_Betr = 0. F_Skonto = 0. DISPLAY {&List-4} WITH FRAME {&FRAME-NAME}. RUN ANSCHRIFT. RETURN NO-APPLY. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME