&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gPreismutationen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gPreismutationen /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM2 SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* 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 VARIABLE MaxPage AS INTEGER NO-UNDO. DEFINE VARIABLE AktSeite AS INTEGER NO-UNDO. DEFINE VARIABLE FMutFlag AS LOG NO-UNDO. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO. DEFINE VARIABLE ok AS LOG NO-UNDO. DEFINE VARIABLE AddText AS CHARACTER NO-UNDO. DEFINE VARIABLE VWGrp AS INTEGER NO-UNDO. DEFINE TEMP-TABLE TArtPreis LIKE ArtPreis. DEFINE BUFFER BArtPreis FOR ArtPreis. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME gPreismutationen /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS F_Datum CB_PreisGrp T_Brutto CB_WGrp CB_PGrp ~ F_vonInhalt F_bisInhalt R_Gebindeart CB_Land CB_Hersteller F_bemerkung ~ F_LetztesDatum R_Runden CB_Art F_Wert Btn_OK Btn_Cancel RECT-5 &Scoped-Define DISPLAYED-OBJECTS F_Datum CB_PreisGrp T_Brutto CB_WGrp ~ CB_PGrp F_vonInhalt F_bisInhalt R_Gebindeart CB_Land CB_Hersteller ~ F_bemerkung F_LetztesDatum R_Runden CB_Art F_Wert /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 F_Datum T_Brutto F_vonInhalt F_bisInhalt F_bemerkung ~ F_LetztesDatum R_Runden F_Wert /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel AUTO-END-KEY LABEL "&Abbrechen" SIZE 15 BY 1 BGCOLOR 15 . DEFINE BUTTON Btn_OK LABEL "&Starten" SIZE 15 BY 1 BGCOLOR 15 . DEFINE VARIABLE CB_Art AS CHARACTER FORMAT "X(256)":U LABEL "Auf-/Abschlagsart" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Prozent","Betrag","Nettomarge" DROP-DOWN-LIST SIZE 25 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Hersteller AS CHARACTER FORMAT "X(256)":U LABEL "Hersteller" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Land AS CHARACTER FORMAT "X(256)":U LABEL "Herkunftsland" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_PGrp AS CHARACTER FORMAT "X(256)":U LABEL "Produktegruppe" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_PreisGrp AS CHARACTER FORMAT "X(256)":U LABEL "Preisgruppe" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_WGrp AS CHARACTER FORMAT "X(256)":U LABEL "Warengruppe" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_bemerkung AS CHARACTER FORMAT "X(256)":U LABEL "Bemerkung" VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_bisInhalt AS INTEGER FORMAT "zzz9":U INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Datum AS DATE FORMAT "99.99.9999":U LABEL "ab Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_LetztesDatum AS DATE FORMAT "99.99.9999":U LABEL "letztes Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 TOOLTIP "Letztes zu berücksichtigendes Preisdatum" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_vonInhalt AS INTEGER FORMAT "zzz9":U INITIAL 0 LABEL "von - bis Inhalt (cl)" VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Wert AS DECIMAL FORMAT "zz9.9999-":U INITIAL 0 LABEL "Wert" VIEW-AS FILL-IN NATIVE SIZE 14 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE R_Gebindeart AS INTEGER VIEW-AS RADIO-SET HORIZONTAL RADIO-BUTTONS "Kleingeninde", 1, "Artikelnummer", 2 SIZE 38.2 BY 1 NO-UNDO. DEFINE VARIABLE R_Runden AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Keine Rundung", 1, "5er Rundung", 2, "10er Rundung", 3 SIZE 40 BY 2 NO-UNDO. DEFINE RECTANGLE RECT-5 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 86 BY 15.38. DEFINE VARIABLE T_Brutto AS LOGICAL INITIAL NO LABEL "Bruttopreis ?" VIEW-AS TOGGLE-BOX SIZE 17 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gPreismutationen F_Datum AT ROW 1.52 COL 20 COLON-ALIGNED CB_PreisGrp AT ROW 3 COL 20 COLON-ALIGNED T_Brutto AT ROW 3 COL 69 CB_WGrp AT ROW 4 COL 20 COLON-ALIGNED CB_PGrp AT ROW 5 COL 20 COLON-ALIGNED F_vonInhalt AT ROW 6 COL 20 COLON-ALIGNED F_bisInhalt AT ROW 6 COL 30 COLON-ALIGNED R_Gebindeart AT ROW 6 COL 42.8 NO-LABELS WIDGET-ID 14 CB_Land AT ROW 7 COL 20 COLON-ALIGNED WIDGET-ID 2 CB_Hersteller AT ROW 8 COL 20 COLON-ALIGNED WIDGET-ID 8 F_bemerkung AT ROW 9 COL 20 COLON-ALIGNED WIDGET-ID 10 F_LetztesDatum AT ROW 10 COL 20 COLON-ALIGNED WIDGET-ID 12 R_Runden AT ROW 11.24 COL 22 NO-LABELS WIDGET-ID 4 CB_Art AT ROW 13.52 COL 20 COLON-ALIGNED F_Wert AT ROW 14.52 COL 20 COLON-ALIGNED Btn_OK AT ROW 13.52 COL 69 Btn_Cancel AT ROW 14.52 COL 69 RECT-5 AT ROW 1.24 COL 2 SPACE(0.99) SKIP(1.32) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Preise Linear mutieren". /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gPreismutationen /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX gPreismutationen FRAME-NAME Custom */ ASSIGN FRAME gPreismutationen:SCROLLABLE = FALSE FRAME gPreismutationen:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_bemerkung IN FRAME gPreismutationen 6 */ /* SETTINGS FOR FILL-IN F_bisInhalt IN FRAME gPreismutationen 6 */ /* SETTINGS FOR FILL-IN F_Datum IN FRAME gPreismutationen 6 */ /* SETTINGS FOR FILL-IN F_LetztesDatum IN FRAME gPreismutationen 6 */ /* SETTINGS FOR FILL-IN F_vonInhalt IN FRAME gPreismutationen 6 */ /* SETTINGS FOR FILL-IN F_Wert IN FRAME gPreismutationen 6 */ /* SETTINGS FOR RADIO-SET R_Runden IN FRAME gPreismutationen 6 */ /* SETTINGS FOR TOGGLE-BOX T_Brutto IN FRAME gPreismutationen 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gPreismutationen /* Query rebuild information for DIALOG-BOX gPreismutationen _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gPreismutationen */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gPreismutationen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreismutationen gPreismutationen ON END-ERROR OF FRAME gPreismutationen /* Preise Linear mutieren */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreismutationen gPreismutationen ON GO OF FRAME gPreismutationen /* Preise Linear mutieren */ DO: /* RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ) NO-ERROR. */ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreismutationen gPreismutationen ON WINDOW-CLOSE OF FRAME gPreismutationen /* Preise Linear mutieren */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gPreismutationen ON CHOOSE OF Btn_OK IN FRAME gPreismutationen /* Starten */ DO: RUN NEURECHNEN. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_PreisGrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_PreisGrp gPreismutationen ON VALUE-CHANGED OF CB_PreisGrp IN FRAME gPreismutationen /* Preisgruppe */ DO: DEFINE VARIABLE cString AS CHARACTER NO-UNDO. RUN FIND_PREISGRUPPE ( INTEGER(SELF:SCREEN-VALUE), OUTPUT cString ). IF cString = '' OR cString = ? THEN RETURN NO-APPLY. IF INTEGER(ENTRY(3, cString, CHR(01))) = 1 THEN T_Brutto:SCREEN-VALUE = STRING(TRUE). ELSE T_Brutto:SCREEN-VALUE = STRING(FALSE). RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_WGrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_WGrp gPreismutationen ON VALUE-CHANGED OF CB_WGrp IN FRAME gPreismutationen /* Warengruppe */ DO: DEFINE VARIABLE Wgr AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: Wgr = INTEGER(CB_WGrp:SCREEN-VALUE) NO-ERROR. RUN COMBO_PRODUKTEGRUPPE (INPUT CB_PGrp:HANDLE, INPUT Wgr) NO-ERROR. cString = 'Alle;XXXXXX;' + CB_PGrp:LIST-ITEM-PAIRS. CB_PGrp:LIST-ITEM-PAIRS = cString. CB_PGrp :SCREEN-VALUE = ENTRY(2, CB_PGrp :LIST-ITEM-PAIRS, ';'). END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gPreismutationen /* *************************** Main Block *************************** */ MaxPage = 1. AktSeite = 1. Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. SESSION:DATA-ENTRY-RETURN = TRUE. /* TRIGGERS ------------------------------------------------------ */ ON 'END-ERROR':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN ENDE. RETURN NO-APPLY. END. /* ------------------------------------------------------------------ */ {src/adm2/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gPreismutationen _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: ------------------------------------------------------------------------------*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gPreismutationen _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 gPreismutationen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gPreismutationen PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE Wgr AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: RUN COMBO_LAND (INPUT CB_Land :HANDLE) NO-ERROR. CB_Land:LIST-ITEM-PAIRS = 'alle Länder;ALLE;' + CB_Land:LIST-ITEM-PAIRS. CB_Land:SCREEN-VALUE = ENTRY(2, CB_Land:LIST-ITEM-PAIRS, ';'). RUN COMBO_HERSTELLER (INPUT CB_Hersteller:HANDLE) NO-ERROR. CB_Hersteller:LIST-ITEM-PAIRS = 'alle Hersteller;999999;' + CB_Hersteller:LIST-ITEM-PAIRS. CB_Hersteller:SCREEN-VALUE = ENTRY(2, CB_Hersteller:LIST-ITEM-PAIRS, ';'). RUN COMBO_PREISGRP (INPUT CB_PreisGrp:HANDLE) NO-ERROR. RUN COMBO_WARENGRUPPE (INPUT CB_WGrp :HANDLE) NO-ERROR. cString = 'Alle;XXXXXX;' + CB_WGrp:LIST-ITEM-PAIRS. CB_WGrp:LIST-ITEM-PAIRS = cString. CB_PreisGrp:SCREEN-VALUE = ENTRY(2, CB_PreisGrp:LIST-ITEM-PAIRS, ';'). CB_WGrp :SCREEN-VALUE = ENTRY(2, CB_WGrp :LIST-ITEM-PAIRS, ';'). CB_Art:SCREEN-VALUE = CB_Art:ENTRY(1). END. RUN SUPER. DO WITH FRAME {&FRAME-NAME}: APPLY 'VALUE-CHANGED' TO CB_PreisGrp. APPLY 'VALUE-CHANGED' TO CB_WGrp. END. RUN FENSTER_TITEL ( INPUT FRAME {&FRAME-NAME}:HANDLE ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gPreismutationen _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ DISPLAY F_Datum CB_PreisGrp T_Brutto CB_WGrp CB_PGrp F_vonInhalt F_bisInhalt R_Gebindeart CB_Land CB_Hersteller F_bemerkung F_LetztesDatum R_Runden CB_Art F_Wert WITH FRAME gPreismutationen. ENABLE F_Datum CB_PreisGrp T_Brutto CB_WGrp CB_PGrp F_vonInhalt F_bisInhalt R_Gebindeart CB_Land CB_Hersteller F_bemerkung F_LetztesDatum R_Runden CB_Art F_Wert Btn_OK Btn_Cancel RECT-5 WITH FRAME gPreismutationen. VIEW FRAME gPreismutationen. {&OPEN-BROWSERS-IN-QUERY-gPreismutationen} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gPreismutationen PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. IF AktSeite > 1 THEN DO: RUN selectPage ( INPUT 1 ). RETURN NO-APPLY. END. RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ). APPLY 'GO' TO FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject gPreismutationen PROCEDURE exitObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN ENDE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEURECHNEN gPreismutationen PROCEDURE NEURECHNEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VWGrp AS INTEGER NO-UNDO. DEFINE VARIABLE VPGrp AS INTEGER NO-UNDO. DEFINE VARIABLE VPreisGrp AS INTEGER NO-UNDO. DEFINE VARIABLE VArt AS INTEGER NO-UNDO. DEFINE VARIABLE FBrutto AS LOG NO-UNDO. DEFINE VARIABLE VPreis AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE WucdK AS INTEGER NO-UNDO. DEFINE VARIABLE WucdA AS INTEGER NO-UNDO. DEFINE VARIABLE Ansatz AS DECIMAL NO-UNDO. DEFINE VARIABLE Rundbetr AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE cLkz AS CHARACTER NO-UNDO. DEFINE VARIABLE iHerst AS INTEGER NO-UNDO. DEFINE VARIABLE cDBUser AS CHARACTER NO-UNDO. DEFINE VARIABLE iGebindeArt AS INTEGER NO-UNDO. EMPTY TEMP-TABLE tArtPreis. CREATE tArtPreis. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. VPreisGrp = INTEGER(CB_PreisGrp :SCREEN-VALUE) NO-ERROR. VWGrp = INTEGER(CB_WGrp :SCREEN-VALUE) NO-ERROR. VPGrp = INTEGER(CB_PGrp :SCREEN-VALUE) NO-ERROR. iHerst = INTEGER(CB_Hersteller:SCREEN-VALUE) NO-ERROR. iGebindeArt = INTEGER(R_GebindeArt :SCREEN-VALUE) NO-ERROR. VArt = LOOKUP (CB_Art:SCREEN-VALUE, CB_Art:LIST-ITEMS). cLkz = CB_Land :SCREEN-VALUE NO-ERROR. IF CB_WGrp:SCREEN-VALUE = 'XXXXXX' THEN VWGrp = ?. IF CB_PGrp:SCREEN-VALUE = 'XXXXXX' THEN VPGrp = ?. IF F_LetztesDatum = ? THEN F_LetztesDatum = F_Datum - 1. IF iGebindeArt = ? THEN iGebindeArt = 1. IF F_Wert = 0 AND VArt = 3 THEN RETURN NO-APPLY. DISABLE Btn_OK Btn_Cancel. FBrutto = FALSE. IF T_Brutto = TRUE THEN FBrutto = TRUE. WucdK = 0. FOR EACH Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Preis_Grp = VPreisGrp NO-LOCK: WucdK = Debst.MWST. LEAVE. END. cDBUser = DYNAMIC-FUNCTION('getDBUser':U) NO-ERROR. FOR EACH Artst USE-INDEX Artst-k1 WHERE Artst.Firma = Firma AND Artst.Aktiv = TRUE AND ((VWGrp = ?) OR (Artst.Wg_Grp = VWGrp)) AND ((VPGrp = ?) OR (Artst.Prod_Grp = VPGrp)) AND ((cLkz = 'ALLE') OR (Artst.Herk_Lkz = cLkz)) AND ((iHerst = 999999) OR (Artst.Herst = iHerst)) NO-LOCK: CASE iGebindeArt: WHEN 1 THEN DO: FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = Artst.Firma AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-LOCK NO-ERROR. IF NOT AVAILABLE KGebinde THEN NEXT. IF KGebinde.Inhalt < F_VonInhalt OR KGebinde.Inhalt > F_BisINhalt THEN NEXT. END. WHEN 2 THEN DO: IF Artst.Inhalt < F_vonInhalt THEN NEXT. IF Artst.Inhalt > F_bisInhalt THEN NEXT. END. END CASE. FIND LAST ArtPreis USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Artst.Firma AND ArtPreis.Artnr = Artst.Artnr AND ArtPreis.Inhalt = Artst.Inhalt AND ArtPreis.Jahr = Artst.Jahr AND ArtPreis.Aktion = FALSE AND ArtPreis.Preis_Grp = VPreisGrp AND ArtPreis.Ab_Datum <= F_LetztesDatum NO-ERROR. IF NOT AVAILABLE ArtPreis THEN NEXT. FIND FIRST tArtPreis. BUFFER-COPY ArtPreis TO tArtPreis ASSIGN tArtPreis.Ab_Datum = F_Datum tArtPreis.erstellt_am = TODAY tArtPreis.Aenderungs_Art = VArt tArtPreis.Aenderungs_Text = F_Bemerkung tArtPreis.Aenderungs_Wert = F_Wert tArtPreis.Aenderungs_Rundung = R_Runden tArtPreis.Aenderungs_Sabe = cDBUser. WucdA = Artst.MWST. FIND Wust USE-INDEX Wust-k1 WHERE Wust.CodeK = WucdK AND Wust.CodeA = WucdA NO-LOCK NO-ERROR. FIND LAST MWSTAns USE-INDEX MWSTAns-k1 WHERE MWSTAns.MWST_Cd = Wust.WuCd AND MWSTAns.Datum <= F_Datum NO-LOCK NO-ERROR. IF AVAILABLE MWSTAns THEN Ansatz = MWSTAns.Ansatz. IF FBrutto THEN VPreis = tArtPreis.VK_Brutto. ELSE VPreis = tArtPreis.VK_Netto. CASE VArt: WHEN 1 THEN DO: /* Prozent */ Rundbetr = VPreis * (100 + F_Wert) / 100. END. WHEN 2 THEN DO: /* Betrag */ Rundbetr = VPreis + F_Wert. END. WHEN 3 THEN DO: /* Betrag */ IF Artst.Listen_Ep = 0 THEN DO: MESSAGE 'Dieser Artikel hat kein Listen-EP' SKIP 'Preismutation manuell machen ! ' SKIP 'Artikelnummer / Inhalt / Jahr ' Artst.Artnr '/' Artst.Inhalt '/' Artst.Jahr VIEW-AS ALERT-BOX INFORMATION. END. Rundbetr = Artst.Listen_EP * (100 + F_Wert) / 100. IF FBrutto THEN Rundbetr = Rundbetr * (100 + Ansatz) / 100. END. END CASE. IF FBrutto OR R_Runden > 1 THEN DO: RUN RUNDEN ( INPUT (R_Runden - 1), INPUT-OUTPUT Rundbetr ). END. IF FBrutto THEN DO: tArtPreis.VK_Brutto = Rundbetr. tArtPreis.VK_Netto = Rundbetr / (100 + Ansatz) * 100. END. ELSE DO: tArtPreis.VK_Netto = Rundbetr. tArtPreis.VK_Brutto = Rundbetr * (100 + Ansatz) / 100. END. IF Artst.Listen_EP <> 0 THEN tArtPreis.Marge = 100 - (Artst.Listen_EP * 100 / tArtPreis.VK_Netto). ELSE tArtPreis.Marge = 0. FIND ArtPreis OF tArtPreis NO-ERROR. IF NOT AVAILABLE ArtPreis THEN DO: CREATE ArtPreis. END. BUFFER-COPY tArtPreis TO ArtPreis. END. ENABLE Btn_OK Btn_Cancel. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME