&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gPreislisteKunde &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gPreislisteKunde /*------------------------------------------------------------------------ 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 Fenster AS HANDLE NO-UNDO. DEFINE VARIABLE Pgr AS INTEGER NO-UNDO. DEFINE VARIABLE Firma AS CHARACTER INIT '1000' NO-UNDO. DEFINE VARIABLE AdFirma AS CHARACTER INIT '1000' NO-UNDO. DEFINE VARIABLE FwSprcd AS INTEGER NO-UNDO. DEFINE VARIABLE RetVal AS CHARACTER NO-UNDO. DEFINE VARIABLE xPreisgrp AS CHARACTER NO-UNDO. DEFINE VARIABLE ProgName AS CHARACTER NO-UNDO. DEFINE VARIABLE Inkl AS LOG NO-UNDO. DEFINE VARIABLE cVGebinde AS CHARACTER NO-UNDO. DEFINE VARIABLE iVGebInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE cKGebinde AS CHARACTER NO-UNDO. DEFINE VARIABLE iKGebInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE cDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE iVerband AS INTEGER NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO. DEFINE BUFFER BArtst FOR Artst. DEFINE TEMP-TABLE tArtikGrp NO-UNDO LIKE ArtikGrp FIELD cWgr AS CHARACTER FIELD cPgr AS CHARACTER. DEFINE TEMP-TABLE tCategory NO-UNDO FIELD cWarenGrp AS CHARACTER FIELD cProdGrp AS CHARACTER FIELD cArtGrp AS CHARACTER FIELD cKatId AS CHARACTER INDEX tCategory-k1 IS PRIMARY cKatId . DEFINE TEMP-TABLE tArtikel NO-UNDO FIELD Wg_Grp AS INTEGER FIELD Prod_Grp AS INTEGER FIELD Art_Grp AS INTEGER FIELD Rab_Grp AS INTEGER FIELD Herst AS INTEGER FIELD Artnr AS INTEGER FIELD Inhalt AS INTEGER FIELD Jahr AS INTEGER FIELD KGeb_Cd AS CHARACTER FIELD VGeb_Cd AS CHARACTER FIELD KGebinde AS CHARACTER FIELD VGebinde AS CHARACTER FIELD KGeb_Inhalt AS INTEGER FIELD VGeb_Inhalt AS INTEGER FIELD Alk_Gehalt AS DECIMAL FIELD Bez1 AS CHARACTER FIELD Bez2 AS CHARACTER FIELD Preis AS DECIMAL DECIMALS 3 FIELD Netto AS LOG INIT FALSE FIELD Bez AS CHARACTER FIELD DEP AS DECIMAL DECIMALS 4 FIELD LEP AS DECIMAL DECIMALS 4 FIELD Listen_EP AS DECIMAL DECIMALS 4 FIELD cEAN AS CHARACTER FIELD cBildLink AS CHARACTER FIELD Aktiv AS LOGICAL FIELD Ausverk AS INTEGER INDEX tArtikel-k1 AS PRIMARY Wg_Grp Prod_Grp Art_Grp Artnr Inhalt Jahr INDEX tArtikel-k2 Artnr Inhalt Jahr . DEFINE TEMP-TABLE tPreise FIELD Artnr AS INTEGER FIELD Inhalt AS INTEGER FIELD Jahr AS INTEGER FIELD Knr AS INTEGER FIELD Preis_Grp AS INTEGER FIELD lAktion AS LOG FIELD Preis AS DECIMAL DECIMALS 3 FIELD ab_Datum AS DATE FIELD bis_Datum AS DATE INDEX tPreise-k1 IS PRIMARY Artnr Inhalt Jahr Knr Preis_Grp lAktion. DEFINE BUFFER bas_tPreise FOR tPreise. DEFINE BUFFER akt_tPreise FOR tPreise. DEFINE TEMP-TABLE tDebitor NO-UNDO FIELD Knr AS INTEGER FIELD FremdKnr AS CHARACTER FIELD cGruppe AS CHARACTER INDEX tDebitor-k1 IS PRIMARY Knr. DEFINE TEMP-TABLE tAufze LIKE Aufze FIELD iStatus AS INTEGER FIELD Knr AS INTEGER FIELD Datum AS DATE . DEFINE VARIABLE htAufze AS HANDLE NO-UNDO. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE. DEFINE TEMP-TABLE tOrder FIELD iKnr AS INTEGER FIELD iSupplierList AS INTEGER FIELD cName AS CHARACTER FIELD cArtnr AS CHARACTER FIELD iDelProd AS INTEGER FIELD iDelList AS INTEGER FIELD iSupplier AS INTEGER FIELD iPos AS INTEGER FIELD cGroup AS CHARACTER FIELD cFutureOrder AS CHARACTER FIELD nPreis AS DECIMAL FIELD cLiefDatum AS CHARACTER . /* _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 gPreislisteKunde /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS T_Kundendaten CB_Hogagrp Hersteller ~ Warengruppen Preisdatum VonArtnr BisArtnr R_Preisliste Btn_Excel ~ T_Artikeldaten T_Preise RECT-37 &Scoped-Define DISPLAYED-OBJECTS T_Kundendaten CB_Hogagrp Hersteller ~ Warengruppen Preisdatum VonArtnr BisArtnr R_Preisliste T_Artikeldaten ~ T_Preise /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-5 Btn_Excel &Scoped-define List-6 T_Kundendaten Hersteller Warengruppen Preisdatum ~ VonArtnr BisArtnr R_Preisliste T_Artikeldaten T_Preise /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getKGebinde gPreislisteKunde FUNCTION getKGebinde RETURNS LOGICAL ( ipcGeb_Cd AS CHARACTER, OUTPUT opcGebinde AS CHARACTER, OUTPUT opiInhalt AS INTEGER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getVGebinde gPreislisteKunde FUNCTION getVGebinde RETURNS LOGICAL ( ipcGeb_Cd AS CHARACTER, OUTPUT opcGebinde AS CHARACTER, OUTPUT opiInhalt AS INTEGER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Excel IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/results%.ico":U LABEL "Excel" SIZE 7 BY 1.81. DEFINE VARIABLE CB_Hogagrp AS CHARACTER FORMAT "X(256)":U LABEL "Hoga-Gruppe" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 45 BY 1 NO-UNDO. DEFINE VARIABLE BisArtnr AS INTEGER FORMAT "999999":U INITIAL 999999 VIEW-AS FILL-IN SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE Hersteller AS CHARACTER FORMAT "X(256)":U LABEL "Hersteller" VIEW-AS FILL-IN NATIVE SIZE 45 BY 1 TOOLTIP "F1, rechte Maustaste zur Auswahl" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE Preisdatum AS DATE FORMAT "99.99.9999":U LABEL "Preisdatum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE VonArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Artikelnummer" VIEW-AS FILL-IN SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE Warengruppen AS CHARACTER FORMAT "X(256)":U LABEL "Warengruppen" VIEW-AS FILL-IN NATIVE SIZE 45 BY 1 TOOLTIP "F1, rechte Maustaste zur Auswahl" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE R_Preisliste AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Preislistencode nicht berücksichtigen", 1, "nur Artikel mit Preislistencode = Ja", 2, "nur Artikel mit Preislistencode = Nein", 3 SIZE 45 BY 2.38 NO-UNDO. DEFINE RECTANGLE RECT-37 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 90 BY 13.33. DEFINE VARIABLE T_Artikeldaten AS LOGICAL INITIAL NO LABEL "Export Artikeldaten" VIEW-AS TOGGLE-BOX SIZE 35 BY 1 NO-UNDO. DEFINE VARIABLE T_Kundendaten AS LOGICAL INITIAL NO LABEL "Export Kundendaten" VIEW-AS TOGGLE-BOX SIZE 35 BY 1 NO-UNDO. DEFINE VARIABLE T_Preise AS LOGICAL INITIAL NO LABEL "Export Preise" VIEW-AS TOGGLE-BOX SIZE 35 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gPreislisteKunde T_Kundendaten AT ROW 11 COL 30 WIDGET-ID 2 CB_Hogagrp AT ROW 2.52 COL 28 COLON-ALIGNED Hersteller AT ROW 3.48 COL 28 COLON-ALIGNED Warengruppen AT ROW 4.48 COL 28 COLON-ALIGNED Preisdatum AT ROW 5.48 COL 28 COLON-ALIGNED VonArtnr AT ROW 6.48 COL 28 COLON-ALIGNED BisArtnr AT ROW 6.48 COL 41 COLON-ALIGNED NO-LABELS R_Preisliste AT ROW 8 COL 30 NO-LABELS Btn_Excel AT ROW 4 COL 82.2 T_Artikeldaten AT ROW 12 COL 30 WIDGET-ID 4 T_Preise AT ROW 13 COL 30 WIDGET-ID 6 RECT-37 AT ROW 1.24 COL 2 SPACE(0.99) SKIP(0.23) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Preisliste für Verbandskunden". /* *********************** 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 gPreislisteKunde /* ************************* 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 gPreislisteKunde FRAME-NAME Custom */ ASSIGN FRAME gPreislisteKunde:SCROLLABLE = FALSE FRAME gPreislisteKunde:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN BisArtnr IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR BUTTON Btn_Excel IN FRAME gPreislisteKunde 5 */ /* SETTINGS FOR FILL-IN Hersteller IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR FILL-IN Preisdatum IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR RADIO-SET R_Preisliste IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR TOGGLE-BOX T_Artikeldaten IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR TOGGLE-BOX T_Kundendaten IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR TOGGLE-BOX T_Preise IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR FILL-IN VonArtnr IN FRAME gPreislisteKunde 6 */ /* SETTINGS FOR FILL-IN Warengruppen IN FRAME gPreislisteKunde 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gPreislisteKunde /* Query rebuild information for DIALOG-BOX gPreislisteKunde _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gPreislisteKunde */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gPreislisteKunde &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreislisteKunde gPreislisteKunde ON END-ERROR OF FRAME gPreislisteKunde /* Preisliste für Verbandskunden */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreislisteKunde gPreislisteKunde ON GO OF FRAME gPreislisteKunde /* Preisliste für Verbandskunden */ DO: RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ) NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gPreislisteKunde gPreislisteKunde ON WINDOW-CLOSE OF FRAME gPreislisteKunde /* Preisliste für Verbandskunden */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Excel &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Excel gPreislisteKunde ON CHOOSE OF Btn_Excel IN FRAME gPreislisteKunde /* Excel */ DO: DO WITH FRAME {&FRAME-NAME}: Btn_Excel:VISIBLE = FALSE. SESSION:SET-WAIT-STATE('GENERAL'). RUN REPORT. SESSION:SET-WAIT-STATE(''). Btn_Excel:VISIBLE = TRUE. RUN ENDE. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Hersteller &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Hersteller gPreislisteKunde ON HELP OF Hersteller IN FRAME gPreislisteKunde /* Hersteller */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF:HANDLE, INPUT 'HERST' ). APPLY 'END' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Hersteller gPreislisteKunde ON RIGHT-MOUSE-CLICK OF Hersteller IN FRAME gPreislisteKunde /* Hersteller */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF:HANDLE, INPUT 'HERST' ). APPLY 'END' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME R_Preisliste &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL R_Preisliste gPreislisteKunde ON RETURN OF R_Preisliste IN FRAME gPreislisteKunde DO: APPLY 'TAB' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Warengruppen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Warengruppen gPreislisteKunde ON HELP OF Warengruppen IN FRAME gPreislisteKunde /* Warengruppen */ DO: RUN g-auswahl-wgr.w ( INPUT SELF:HANDLE ). APPLY 'END' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Warengruppen gPreislisteKunde ON RIGHT-MOUSE-CLICK OF Warengruppen IN FRAME gPreislisteKunde /* Warengruppen */ DO: RUN g-auswahl-wgr.w ( INPUT SELF:HANDLE ). APPLY 'END' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gPreislisteKunde /* *************************** Main Block *************************** */ MaxPage = 1. AktSeite = 1. Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. AdFirma = DYNAMIC-FUNCTION('GETADMANDANT':U) NO-ERROR. ProgName = ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.') NO-ERROR. GET-KEY-VALUE SECTION 'FwSteuer' KEY 'FwSprcd' VALUE RetVal. IF RetVal = ? THEN RetVal = '1'. FwSprcd = INTEGER(RetVal) NO-ERROR. cPath = DYNAMIC-FUNCTION ('getFehlwert':U, Firma, 'HOGAPATH') NO-ERROR. SESSION:DATA-ENTRY-RETURN = TRUE. SUBSCRIBE TO 'TOOLBAR' ANYWHERE. /* TRIGGERS ------------------------------------------------------ */ ON 'ALT-CURSOR-RIGHT':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN NEXTPAGE. END. ON 'ALT-CURSOR-LEFT':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN PREVPAGE. END. ON 'U1':U OF {&WINDOW-NAME} ANYWHERE DO: RUN ENTRY_CURSOR. END. /* ON 'PAGE-DOWN':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'Next':U ). END. ON 'PAGE-UP':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'Prev':U ). END. ON 'ALT-RETURN':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'UPDATE':U ). END. ON 'ALT-INS':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'ADD':U ). END. ON 'ALT-DEL':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'DELETE':U ). END. ON 'ALT-R':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'RESET':U ). END. ON 'F9':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'SAVE':U ). END. ON 'ALT-S':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'SAVE':U ). END. ON 'ALT-K':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'COPY':U ). END. ON 'END-ERROR':U OF FRAME {&FRAME-NAME} ANYWHERE DO: FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. IF FMutFlag = FALSE THEN DO: RUN ENDE. RETURN NO-APPLY. END. RUN TOOLBAR IN h_dyntoolbar ( INPUT 'CANCEL':U ). 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 gPreislisteKunde _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 BEREINIGEN gPreislisteKunde PROCEDURE BEREINIGEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT-OUTPUT PARAMETER ipString AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. cString = ''. DO ix = 1 TO NUM-ENTRIES(ipString, ','): IF CString <> '' THEN cString = cString + ','. cString = cString + STRING(INTEGER(ENTRY(ix, ipString)),'999'). END. ipString = cString. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE changePage gPreislisteKunde PROCEDURE changePage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ RUN SUPER. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN addLink ( h_dyntoolbar , 'TableIO':U , h_v-auftr ). */ /* RUN addLink ( h_dyntoolbar , 'Navigation':U , h_d-auftr ). */ /* RUN ToolbarInit ( INPUT h_d-auftr ). */ RUN ENTRY_CURSOR. END. WHEN 2 THEN DO: RUN ENTRY_CURSOR. END. END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gPreislisteKunde _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 gPreislisteKunde. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gPreislisteKunde PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. RUN SUPER. RUN FENSTER_TITEL ( INPUT FRAME {&FRAME-NAME}:HANDLE ) NO-ERROR. RUN COMBO_HOGAGRP ( CB_Hogagrp:HANDLE ). cString = 'Alle Gruppen;999999;' + CB_Hogagrp:LIST-ITEM-PAIRS. CB_Hogagrp:LIST-ITEM-PAIRS = cString. RUN LESENFWAUSWERTUNGEN ( INPUT ProgName, INPUT FRAME {&FRAME-NAME}:CURRENT-ITERATION ). Preisdatum:SCREEN-VALUE IN FRAME {&FRAME-NAME} = STRING(TODAY). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gPreislisteKunde _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 T_Kundendaten CB_Hogagrp Hersteller Warengruppen Preisdatum VonArtnr BisArtnr R_Preisliste T_Artikeldaten T_Preise WITH FRAME gPreislisteKunde. ENABLE T_Kundendaten CB_Hogagrp Hersteller Warengruppen Preisdatum VonArtnr BisArtnr R_Preisliste Btn_Excel T_Artikeldaten T_Preise RECT-37 WITH FRAME gPreislisteKunde. VIEW FRAME gPreislisteKunde. {&OPEN-BROWSERS-IN-QUERY-gPreislisteKunde} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gPreislisteKunde 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. MESSAGE SUBSTITUTE('Die Daten wurden in das Verzeichnis &1 exportiert', cPath) VIEW-AS ALERT-BOX. 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 ENTRY_CURSOR gPreislisteKunde PROCEDURE ENTRY_CURSOR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: /* WHEN 1 THEN RUN applyEntry IN h_v-adresse ( INPUT ? ). */ /* WHEN 2 THEN RUN applyEntry IN h_f-adrkomm ( INPUT ? ). */ /* WHEN 3 THEN RUN applyEntry IN h_b-auftbb ( INPUT ? ). */ /* WHEN 4 THEN RUN applyEntry IN h_b-aufdet ( INPUT ? ). */ /* WHEN 5 THEN RUN applyEntry IN h_b-aufstreu ( INPUT ? ). */ /* WHEN 6 THEN RUN applyEntry IN h_b-auffak ( INPUT ? ). */ /* WHEN 7 THEN RUN applyEntry IN h_b-position ( INPUT ? ). */ END CASE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject gPreislisteKunde 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 NEXTPAGE gPreislisteKunde PROCEDURE NEXTPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = MaxPage THEN AktSeite = 1. ELSE AktSeite = AktSeite + 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PREVPAGE gPreislisteKunde PROCEDURE PREVPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = 1 THEN AktSeite = MaxPage. ELSE AktSeite = AktSeite - 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT gPreislisteKunde PROCEDURE REPORT : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE Netto AS LOG NO-UNDO. DEFINE VARIABLE Alk AS CHARACTER NO-UNDO. DEFINE VARIABLE Preis AS CHARACTER NO-UNDO. DEFINE VARIABLE xWgr AS CHARACTER NO-UNDO. DEFINE VARIABLE xPgr AS CHARACTER NO-UNDO. DEFINE VARIABLE xAgr AS CHARACTER NO-UNDO. DEFINE VARIABLE xHer AS CHARACTER NO-UNDO. DEFINE VARIABLE cDel AS CHARACTER NO-UNDO. DEFINE VARIABLE cGeb AS CHARACTER NO-UNDO. DEFINE VARIABLE cGebInhalt AS CHARACTER NO-UNDO. DEFINE VARIABLE cGebBez AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadImport AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadCustomer AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadCategories AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadPrices AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadSelling AS CHARACTER NO-UNDO. DEFINE VARIABLE cHeadOrder AS CHARACTER NO-UNDO. DEFINE VARIABLE cKatId AS CHARACTER NO-UNDO. DEFINE VARIABLE cPreisGrp AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Vorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE Dokument AS CHARACTER NO-UNDO. DEFINE VARIABLE Daten AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE Zeile AS INTEGER NO-UNDO. cHeadImport = 'Name in DE&1Name in FR&1Name in IT&1Name in EN&1Supplier s Product ID&1Pre supplier&1EAN Codes&1Currency&1Not in use 9&1Not in use 10&1Category&1Base unit&1Price per base unit&1Quantity per selling unit&1Sale price per base unit&1' + 'Not in use 16&1Sale valid to&1Product type&1Packing size&1Selling unit name&1Not in use 21&1Not in use 22&1Not in use 23&1Not in use 24&1Netto weight&1Dry weight&1Not in use 27&1Recipe unit&1Available&1Delete&1HTML DE&1Not in use 32&1' + 'Image&1Sale valid from&1Novelty&1Novelty valid to&1New price&1Price valid to&1Not in use 39&1Last order time&1Amount of preparation days&1Not in use 42&1HTML EN&1HTML FR&1HTML IT&1Attachments DE&1Attachments EN&1Attachments FR&1Attachments IT&1' + 'Stock amount&1Recommended retail price&1Minimal stock amount&1Not in use 53&1Product without price&1Price valid from&1Attributes&1VAT Data&1pool ID&1Services&1Consumer unit&1Consumer units per base&1unitProduct_DE;Product_FR;Product_IT;Product_EN'. cHeadCustomer = 'Customer_Id&1Manual_Id&1Group_Id&1Minimal_amount&1Shipping_price'. cHeadCategories = 'Category Id&1Parent Id&1Name De&1Name Fr&1Name It&1Name En'. cHeadPrices = 'Supplier Product ID&1Price group&1Base price&1Valid from&1Valid to&1Type&1Minimal amount'. cHeadSelling = 'Article Number&1Code&1Quantity&1Is Default'. cHeadOrder = 'Feld1&1Feld2&1Feld3&1Feld4&1Feld5&1Feld6&1Feld7&1Feld8&1Feld9&1Feld10&1Feld11&1Feld12'. cDel = CHR(09). DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. IF VonArtnr = 0 AND BisArtnr = 0 THEN BisArtnr = 999999. IF BisArtnr < VonArtnr THEN BisArtnr = VonArtnr. IF PreisDatum = ? THEN Preisdatum = TODAY. RUN BEREINIGEN ( INPUT-OUTPUT Hersteller ). RUN BEREINIGEN ( INPUT-OUTPUT Warengruppen ). iVerband = INTEGER(CB_Hogagrp:SCREEN-VALUE). DISPLAY {&List-6}. END. RUN SCHREIBENFWAUSWERTUNGEN ( INPUT ProgName, INPUT FRAME {&FRAME-NAME}:CURRENT-ITERATION ). RUN SELEKTION. FIND FIRST tArtikel NO-LOCK NO-ERROR. IF NOT AVAILABLE tArtikel THEN RETURN. /* OUTPUT TO 'C:\LogFiles\Hogalog_Preise.csv'.*/ /* FOR EACH tPreise: */ /* EXPORT DELIMITER ';' tPreise. */ /* END. */ /* OUTPUT CLOSE. */ IF T_Artikeldaten THEN DO: cDateiName = SUBSTITUTE('&1categories.csv', cPath). OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadCategories, cDel) CHR(10). PUT CONTROL SUBSTITUTE('0000&1&1Beverages', cDel) CHR(10). /* ------------------------------------------------------ */ /* Kategorien (Warengruppe, Produktegruppe, Artikelgruppe */ /* ------------------------------------------------------ */ FOR EACH WarenGrp NO-LOCK WHERE WarenGrp.Firma = Firma /* AND WarenGrp.Bez1 <> '' */ /* AND WarenGrp.Bez1 <> '-0-'*/ : FIND FIRST tArtikel NO-LOCK WHERE tArtikel.Wg_Grp = WarenGrp.Wgr NO-ERROR. IF NOT AVAILABLE tArtikel THEN NEXT. PUT CONTROL SUBSTITUTE('&2&1&3&1&4&1&5&1&6&1&7', cDel, STRING(WarenGrp.Wgr,'9999'), '0000', WarenGrp.Bez1, /* Deutsch */ '', /* Französisch */ '', /* Italienisch */ '') /* Englisch */ CHR(10). FOR EACH ProdGrp NO-LOCK WHERE ProdGrp.Firma = WarenGrp.Firma AND ProdGrp.Wgr = WarenGrp.Wgr AND ProdGrp.Bez1 <> '' AND ProdGrp.Bez1 <> '-0-': FIND FIRST tArtikel NO-LOCK WHERE tArtikel.Wg_Grp = ProdGrp.Wgr AND tArtikel.Prod_Grp = ProdGrp.Prod_Grp NO-ERROR. IF NOT AVAILABLE tArtikel THEN NEXT. PUT CONTROL SUBSTITUTE('&2&1&3&1&4&1&5&1&6&1&7', cDel, STRING(ProdGrp.Wgr,'9999') + STRING(ProdGrp.Prod_Grp,'9999'), STRING(ProdGrp.Wgr,'9999'), ProdGrp.Bez1, /* Deutsch */ '', /* Französisch */ '', /* Italienisch */ '') /* Englisch */ CHR(10). FOR EACH ArtikGrp NO-LOCK WHERE ArtikGrp.Firma = ProdGrp.Firma AND ArtikGrp.Wgr = ProdGrp.Wgr AND ArtikGrp.Prod_Grp = ProdGrp.Prod_Grp AND ArtikGrp.Bez1 <> '' AND ArtikGrp.Bez1 <> '-0-': FIND FIRST tArtikel NO-LOCK WHERE tArtikel.Wg_Grp = ArtikGrp.Wgr AND tArtikel.Prod_Grp = ArtikGrp.Prod_Grp AND tArtikel.Art_Grp = ArtikGrp.Art_Grp NO-ERROR. IF NOT AVAILABLE tArtikel THEN NEXT. PUT CONTROL SUBSTITUTE('&2&1&3&1&4&1&5&1&6&1&7', cDel, STRING(ArtikGrp.Wgr,'9999') + STRING(ArtikGrp.Prod_Grp,'9999') + STRING(ArtikGrp.Art_Grp ,'9999'), STRING(ArtikGrp.Wgr,'9999') + STRING(ArtikGrp.Prod_Grp,'9999'), ArtikGrp.Bez1, /* Deutsch */ '', /* Französisch */ '', /* Italienisch */ '') /* Englisch */ CHR(10). CREATE tCategory. ASSIGN tCategory.cWarenGrp = STRING(WarenGrp.Wgr ,'9999') tCategory.cProdGrp = STRING(ProdGrp.Prod_Grp,'9999') tCategory.cArtGrp = STRING(ArtikGrp.Art_Grp,'9999') tCategory.cKatId = tCategory.cWarenGrp + tCategory.cProdGrp + tCategory.cArtGrp. END. END. END. OUTPUT CLOSE. END. /* ------------------------------------------------------ */ /* Kleingebinde und Verkaufsgebinde */ /* ------------------------------------------------------ */ IF T_Artikeldaten THEN DO: cDateiName = SUBSTITUTE('&1Selling_units.csv', cPath). OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadSelling, cDel) CHR(10). FOR EACH tArtikel: FIND WarenGrp NO-LOCK WHERE WarenGrp.Firma = Firma AND WarenGrp.Wgr = tArtikel.Wg_Grp NO-ERROR. PUT CONTROL STRING(tArtikel.Artnr ,'999999') STRING(tArtikel.Inhalt,'9999') STRING(tArtikel.Jahr ,'9999') cDel tArtikel.VGebinde cDel tArtikel.VGeb_Inhalt cDel STRING(TRUE) CHR(10). IF WarenGrp.Int_2 = 0 THEN NEXT. DYNAMIC-FUNCTION('getVGebinde':U, VGebinde.Geb_Cd, OUTPUT cVGebinde, OUTPUT iVGebInhalt). PUT CONTROL STRING(tArtikel.Artnr ,'999999') STRING(tArtikel.Inhalt,'9999') STRING(tArtikel.Jahr ,'9999') cDel tArtikel.KGebinde cDel tArtikel.KGeb_Inhalt cDel STRING(FALSE) CHR(10). END. OUTPUT CLOSE. END. /* ------------------------------------------------------ */ /* Artikel-Liste */ /* ------------------------------------------------------ */ IF T_Artikeldaten THEN DO: cDateiName = SUBSTITUTE('&1ImportListe.csv', cPath). OUTPUT TO Value(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadImport, CHR(09)) CHR(10). FOR EACH tArtikel USE-INDEX tArtikel-k1 NO-LOCK BREAK BY tArtikel.Wg_Grp BY tArtikel.Prod_Grp BY tArtikel.Art_Grp BY tArtikel.Artnr BY tArtikel.Inhalt BY tArtikel.Jahr : IF NOT FIRST-OF ( tArtikel.Jahr ) THEN NEXT. cKatId = STRING(tArtikel.Wg_Grp,'9999') + STRING(tArtikel.Prod_Grp ,'9999') + STRING(tArtikel.Art_Grp ,'9999'). FIND FIRST tCategory NO-LOCK WHERE tCategory.cKatId = cKatId NO-ERROR. IF NOT AVAILABLE tCategory THEN NEXT. FIND WarenGrp NO-LOCK WHERE WarenGrp.Firma = Firma AND WarenGrp.Wgr = tArtikel.Wg_Grp NO-ERROR. IF FIRST-OF ( tArtikel.Wg_Grp) THEN DO: RUN FIND_WARENGRP ( INPUT tArtikel.Wg_Grp, OUTPUT cString ). IF cString <> '?' AND cString <> '' THEN xWgr = ENTRY(2, cString, CHR(01)). ELSE xWgr = ''. xWgr = 'Beverages'. END. IF FIRST-OF ( tArtikel.Prod_Grp) THEN DO: RUN FIND_PRODGRP ( INPUT tArtikel.Wg_Grp, INPUT tArtikel.Prod_Grp, OUTPUT cString ). IF cString <> '?' AND cString <> '' THEN xPgr = ENTRY(2, cString, CHR(01)). ELSE xPgr = ''. END. IF FIRST-OF ( tArtikel.Art_Grp) THEN DO: RUN FIND_ARTIKGRP ( INPUT tArtikel.Wg_Grp, INPUT tArtikel.Prod_Grp, INPUT tArtikel.Art_Grp, OUTPUT cString ). IF cString <> '?' AND cString <> '' THEN xAgr = ENTRY(2, cString, CHR(01)). ELSE xAgr = ''. END. RUN FIND_HERSTELLER ( INPUT tArtikel.Herst, OUTPUT cString ). IF cString <> '?' AND cString <> '' THEN xHer = ENTRY(2, cString, CHR(01)). ELSE xHer = ''. PUT CONTROL tArtikel.Bez1 ' ' tArtikel.Bez2 cDel /* 01 */ tArtikel.Bez1 ' ' tArtikel.Bez2 cDel /* 02 */ tArtikel.Bez1 ' ' tArtikel.Bez2 cDel /* 03 */ tArtikel.Bez1 ' ' tArtikel.Bez2 cDel /* 04 */ STRING(tArtikel.Artnr ,'999999') STRING(tArtikel.Inhalt,'9999') STRING(tArtikel.Jahr ,'9999') cDel /* 05 */ xHer cDel /* 06 */ tArtikel.cEAN cDel /* 07 */ 'CHF' cDel /* 08 */ '' cDel /* 09 */ '' cDel /* 10 */ STRING(tArtikel.Wg_Grp ,'9999') STRING(tArtikel.Prod_Grp,'9999') STRING(tArtikel.Art_Grp ,'9999') cDel /* 11 */ tArtikel.KGebinde cDel /* 12 */ '#' cDel /* 13 */ (IF WarenGrp.Int_2 = 1 THEN 1 ELSE tArtikel.VGeb_Inhalt) cDel /* 14 */ '#' cDel /* 15 */ '' cDel /* 16 */ '#' cDel /* 17 */ '3' cDel /* 18 */ tArtikel.VGeb_Inhalt cDel /* 19 */ tArtikel.VGebinde cDel /* 20 */ '' cDel /* 21 */ '' cDel /* 22 */ '' cDel /* 23 */ '' cDel /* 24 */ '' cDel /* 25 */ '' cDel /* 26 */ '' cDel /* 27 */ '' cDel /* 28 */ '1' cDel /* 29 */ (IF tArtikel.Aktiv AND tArtikel.Ausverk < 9 THEN '0' ELSE '1') cDel /* 30 */ '' cDel /* 31 */ '0' cDel /* 32 */ tArtikel.cBildLink cDel /* 33 */ '#' cDel /* 34 */ '' cDel /* 35 */ '' cDel /* 36 */ '#' cDel /* 37 */ '' cDel /* 38 */ '' cDel /* 39 */ '' cDel /* 40 */ '' cDel /* 41 */ '' cDel /* 42 */ '' cDel /* 43 */ '' cDel /* 44 */ '' cDel /* 45 */ '' cDel /* 46 */ '' cDel /* 47 */ '' cDel /* 48 */ '' cDel /* 49 */ '' cDel /* 50 */ '#' cDel /* 51 */ '' cDel /* 52 */ '' cDel /* 53 */ '0' cDel /* 54 */ '#' cDel /* 55 */ '' cDel /* 56 */ '' cDel /* 57 */ '' cDel /* 58 */ '' cDel /* 59 */ '' cDel /* 60 */ '' cDel /* 61 */ CHR(10). END. OUTPUT CLOSE. END. /* ------------------------------------------------------ */ /* Kunden */ /* ------------------------------------------------------ */ IF T_Kundendaten THEN DO: cDateiName = SUBSTITUTE('&1customer_assign.csv', cPath). OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadCustomer, CHR(09)) CHR(10). FOR EACH tDebitor: PUT CONTROL tDebitor.FremdKnr cDel TRIM(STRING(tDebitor.Knr,'>>>>>9')) cDel tDebitor.cGruppe cDel '0' cDel '0' CHR(10). END. OUTPUT CLOSE. END. /* ------------------------------------------------------ */ /* Preise pro Preisgruppe (eigentlich pro Kunde) */ /* ------------------------------------------------------ */ IF T_Preise THEN DO: cDateiName = SUBSTITUTE('&1prices.csv', cPath). OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadPrices, CHR(09)) CHR(10). FOR EACH tPreise BREAK BY tPreise.Preis_Grp BY tPreise.Artnr BY tPreise.Inhalt BY tPreise.Jahr BY tPreise.Knr : IF FIRST-OF (tPreise.Preis_Grp) THEN DO: cPreisGrp = STRING(tPreise.Preis_Grp,'999'). RUN FIND_PREISGRUPPE ( INPUT Debst.Preis_Grp, OUTPUT cString ). IF cString = '' THEN inkl = FALSE. ELSE DO: IF INTEGER(ENTRY(3, cString, CHR(01))) = 1 THEN inkl = TRUE. ELSE inkl = FALSE. cPreisGrp = ENTRY(2, cString, CHR(01)). END. END. PUT CONTROL STRING(tPreise.Artnr ,'999999') STRING(tPreise.Inhalt,'9999') STRING(tPreise.Jahr ,'9999') cDel (IF tPreise.Knr = 0 THEN cPreisGrp ELSE STRING(tPreise.Knr,'999999')) cDel TRIM(STRING(tPreise.Preis,'>>>9.99')) cDel STRING(tPreise.ab_Datum,'99.99.9999') cDel (IF tPreise.bis_Datum <> ? THEN STRING(tPreise.bis_Datum,'99.99.9999') ELSE '') cDel STRING(tPreise.lAktion,'1/0') cDel '0' CHR(10). END. OUTPUT CLOSE. END. /* ------------------------------------------------------ */ /* Favoriten/Berstellvorschlag */ /* ------------------------------------------------------ */ /* IF T_Kundendaten THEN*/ /* DO: */ cDateiName = SUBSTITUTE('&1ImportOrderList.csv', cPath). OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. PUT CONTROL SUBSTITUTE(cHeadOrder, CHR(09)) CHR(10). FOR EACH tOrder: PUT CONTROL TRIM(STRING(tOrder.iKnr,'>>>>>9')) cDel TRIM(STRING(tOrder.iSupplierList,'>9')) cDel tOrder.cName cDel tOrder.cArtnr cDel TRIM(STRING(tOrder.iDelProd,'>9')) cDel TRIM(STRING(tOrder.iDelList,'>9')) cDel '0' cDel TRIM(STRING(tOrder.iPos,'>>>9')) cDel tOrder.cGroup cDel '' cDel '0' cDel '' CHR(10). END. OUTPUT CLOSE. /* END.*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE selectPage gPreislisteKunde PROCEDURE selectPage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER piPageNum AS INTEGER NO-UNDO. DEFINE VARIABLE FMutFlag AS LOG NO-UNDO. DEFINE VARIABLE MutProg AS CHARACTER NO-UNDO. FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. DO WHILE TRUE: IF NOT FMutFlag THEN LEAVE. MutProg = DYNAMIC-FUNCTION('GETMUTPROG':U). IF MutProg <> THIS-PROCEDURE:FILE-NAME THEN LEAVE. RETURN NO-APPLY. END. CASE piPageNum: END CASE. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN removeLink ( h_dyntoolbar , 'TableIO':U , h_v-auftr ). */ /* RUN removeLink ( h_dyntoolbar , 'Navigation':U , h_d-auftr ). */ END. END CASE. RUN SUPER( INPUT piPageNum). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SELEKTION gPreislisteKunde PROCEDURE SELEKTION : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE Sprcd AS INTEGER NO-UNDO. DEFINE VARIABLE FwPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE NoPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE AbPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE Preis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE Zei_Rab_Art AS INTEGER NO-UNDO. DEFINE VARIABLE Zei_Rab_Wert AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE Preis AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE RabAr AS INTEGER NO-UNDO. DEFINE VARIABLE RabPr AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE RabFr AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE FAbweich AS LOG NO-UNDO. DEFINE VARIABLE FSpezPreis AS INTEGER NO-UNDO. DEFINE VARIABLE NettoRab AS INTEGER NO-UNDO. DEFINE VARIABLE FwPreisGrp AS INTEGER NO-UNDO. DEFINE VARIABLE iNummer AS INTEGER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE lPreisgrp AS LOGICAL NO-UNDO. DEFINE VARIABLE cVerband AS CHARACTER NO-UNDO. DEFINE VARIABLE cPreisGrp AS CHARACTER NO-UNDO. DEFINE VARIABLE rbas_tPreise AS RECID NO-UNDO. DEFINE VARIABLE rakt_tPreise AS RECID NO-UNDO. Sprcd = 1. FwPreis_Grp = DYNAMIC-FUNCTION('GETFWPREISGRP':U) NO-ERROR. NettoRab = DYNAMIC-FUNCTION('GETFWNETTORAB':U) NO-ERROR. EMPTY TEMP-TABLE tDebitor . EMPTY TEMP-TABLE tArtikel . EMPTY TEMP-TABLE tArtikGrp. EMPTY TEMP-TABLE tOrder . FIND Steuer NO-LOCK WHERE Steuer.Firma = Firma NO-ERROR. FwPreisGrp = Steuer.Fwi14. FOR EACH Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Firma AND Artst.Artnr >= VonArtnr AND Artst.Artnr <= BisArtnr AND Artst.eShop = TRUE AND ((R_Preisliste = 1) OR (R_Preisliste = 2 AND Artst.Preisliste = TRUE) OR (R_Preisliste = 3 AND Artst.Preisliste = FALSE)) AND ((Warengruppen = '') OR (Warengruppen <> '' AND LOOKUP(STRING(Artst.Wg_Grp,"999"), Warengruppen, ',') > 0)) AND ((Hersteller = '') OR (Hersteller <> '' AND LOOKUP(STRING(Artst.Herst,"999"), Hersteller , ',') > 0)) AND Artst.Aktiv = TRUE AND Artst.Ausverk < 9 , FIRST Artbez NO-LOCK OF Artst: IF Artbez.Bez1 = '' AND Artst.Bez = '' THEN NEXT. lRetVal = DYNAMIC-FUNCTION ('getVGebinde':U, Artst.VGeb_Cd, OUTPUT cVGebinde, OUTPUT iVGebInhalt) NO-ERROR. IF NOT lRetVal THEN NEXT. IF iVGebInhalt = 0 THEN NEXT. lRetVal = DYNAMIC-FUNCTION ('getKGebinde':U, Artst.KGeb_Cd, OUTPUT cKGebinde, OUTPUT iKGebInhalt) NO-ERROR. IF NOT lRetVal THEN NEXT. IF iKGebInhalt = 0 THEN NEXT. CREATE tArtikel. BUFFER-COPY Artst TO tArtikel ASSIGN tArtikel.Bez1 = Artbez.Bez1 tArtikel.Bez2 = Artbez.Bez2 tArtikel.KGebinde = cKGebinde tArtikel.KGeb_Inhalt = iKGebInhalt tArtikel.VGebinde = cVGebinde tArtikel.VGeb_Inhalt = iVGebInhalt. IF tArtikel.Bez1 = '' THEN tArtikel.Bez1 = Artst.Bez. FIND FIRST ArtLief NO-LOCK WHERE ArtLief.Firma = Artst.Firma AND ArtLief.Artnr = Artst.Artnr AND ArtLief.Inhalt = Artst.Inhalt AND ArtLief.Jahr = Artst.Jahr AND ArtLief.Strichcode_KGeb <> '' NO-ERROR. IF AVAILABLE ArtLief THEN tArtikel.cEAN = ArtLief.Strichcode_KGeb. IF tArtikel.cEAN <> '' THEN tArtikel.cBildLink = SUBSTITUTE('https://produkte.huber-getraenke.ch/&1_1.png', tArtikel.cEAN). END. FOR EACH WarenGrp NO-LOCK WHERE WarenGrp.Firma = Firma, EACH ProdGrp OF WarenGrp NO-LOCK, EACH ArtikGrp OF ProdGrp NO-LOCK: FIND FIRST tArtikel WHERE tArtikel.Wg_Grp = ArtikGrp.Wgr AND tArtikel.Prod_Grp = ArtikGrp.Prod_Grp AND tArtikel.Art_Grp = ArtikGrp.Art_Grp NO-ERROR. IF NOT AVAILABLE tArtikel THEN NEXT. IF ProdGrp.Bez1 = '' THEN NEXT. IF ProdGrp.Bez1 = '-0-' THEN NEXT. iNummer = INTEGER(ProdGrp.Bez1) NO-ERROR. IF NOT ERROR-STATUS:ERROR THEN NEXT. IF iNummer = 0 THEN NEXT. CREATE tArtikGrp. BUFFER-COPY ArtikGrp TO tArtikGrp ASSIGN tArtikGrp.Dec_1 = 0 tArtikGrp.cWgr = WarenGrp.Bez1 tArtikGrp.cPgr = ProdGrp.Bez1. END. EMPTY TEMP-TABLE tPreise. FOR EACH Tabel NO-LOCK WHERE Tabel.Firma = Firma AND Tabel.Recart = 'HOGAUSER' AND Tabel.Sprcd = 1 AND Tabel.Int_1 > 0 AND Tabel.Flag_1 = TRUE AND ((iVerband = 999999) OR (iVerband <> 999999 AND Tabel.CodeC = STRING(iVerband,'999999')) ), FIRST Debst NO-LOCK WHERE Debst.Firma = Firma AND Debst.Knr = Tabel.Int_1 AND Debst.Aktiv = TRUE : RUN FIND_PREISGRUPPE ( INPUT Debst.Preis_Grp, OUTPUT cString ). IF cString = '' THEN inkl = FALSE. ELSE DO: IF INTEGER(ENTRY(3, cString, CHR(01))) = 1 THEN inkl = TRUE. ELSE inkl = FALSE. END. cPreisGrp = ENTRY(2, cString, CHR(01)). lPreisGrp = FALSE. CREATE tDebitor. ASSIGN tDebitor.Knr = Debst.Knr tDebitor.FremdKnr = STRING(Tabel.Int_2,'>>>>>>>>>') tDebitor.cGruppe = cPreisGrp. FOR EACH tArtikel: FIND KGebinde NO-LOCK WHERE KGebinde.Firma = Firma AND KGebinde.Geb_Cd = tArtikel.KGeb_Cd NO-ERROR. FIND LAST ArtPreis NO-LOCK WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = tArtikel.Artnr AND ArtPreis.Inhalt = tArtikel.Inhalt AND ArtPreis.Jahr = tArtikel.Jahr AND ArtPreis.Preis_Grp = Debst.Preis_Grp AND ArtPreis.Ab_Datum <= PreisDatum AND ArtPreis.Aktion = FALSE NO-ERROR. IF NOT AVAILABLE ArtPreis THEN DO: DELETE tArtikel. NEXT. END. rbas_tPreise = ?. rakt_tPreise = ?. FIND FIRST tPreise NO-LOCK WHERE tPreise.Artnr = tArtikel.Artnr AND tPreise.Inhalt = tArtikel.Inhalt AND tPreise.Jahr = tArtikel.Jahr AND tPreise.Knr = 0 AND tPreise.Preis_Grp = Debst.Preis_Grp AND tPreise.lAktion = FALSE NO-ERROR. IF NOT AVAILABLE tPreise THEN DO: CREATE tPreise. ASSIGN tPreise.Artnr = tArtikel.Artnr tPreise.Inhalt = tArtikel.Inhalt tPreise.Jahr = tArtikel.Jahr tPreise.Knr = 0 tPreise.Preis_Grp = Debst.Preis_Grp tPreise.lAktion = FALSE tPreise.Preis = (IF inkl THEN ArtPreis.VK_Brutto ELSE ArtPreis.VK_Netto) tPreise.ab_Datum = ArtPreis.Ab_Datum tPreise.bis_Datum = ?. END. rbas_tPreise = RECID(tPreise). Preis = tPreise.Preis. FIND LAST AktPreis NO-LOCK WHERE AktPreis.Firma = Firma AND AktPreis.Artnr = tArtikel.Artnr AND AktPreis.Inhalt = tArtikel.Inhalt AND AktPreis.Jahr = tArtikel.Jahr AND AktPreis.Grp = Debst.Preis_Grp AND AktPreis.Ab_Datum <= PreisDatum AND AktPreis.Bis_Datum >= PreisDatum NO-ERROR. IF AVAILABLE AktPreis THEN DO: FIND FIRST tPreise NO-LOCK WHERE tPreise.Artnr = tArtikel.Artnr AND tPreise.Inhalt = tArtikel.Inhalt AND tPreise.Jahr = tArtikel.Jahr AND tPreise.Knr = 0 AND tPreise.Preis_Grp = Debst.Preis_Grp AND tPreise.lAktion = TRUE NO-ERROR. IF NOT AVAILABLE tPreise THEN DO: CREATE tPreise. ASSIGN tPreise.Artnr = tArtikel.Artnr tPreise.Inhalt = tArtikel.Inhalt tPreise.Jahr = tArtikel.Jahr tPreise.Knr = 0 tPreise.Preis_Grp = Debst.Preis_Grp tPreise.lAktion = TRUE tPreise.ab_Datum = AktPreis.Ab_Datum tPreise.bis_Datum = AktPreis.Bis_Datum. CASE AktPreis.Art: WHEN 0 THEN tPreise.Preis = Preis - AktPreis.Wert. WHEN 1 THEN tPreise.Preis = (Preis * (100 - AktPreis.Wert) / 100). END CASE. END. rakt_tPreise = RECID(tPreise). END. RELEASE bas_tPreise. RELEASE akt_tPreise. IF rbas_tPreise <> ? THEN FIND bas_tPreise NO-LOCK WHERE RECID(bas_tPreise) = rbas_tPreise. IF rakt_tPreise <> ? THEN FIND akt_tPreise NO-LOCK WHERE RECID(akt_tPreise) = rakt_tPreise. EMPTY TEMP-TABLE tAufze. CREATE tAufze. ASSIGN tAufze.Firma = Firma tAufze.Knr = Debst.Knr tAufze.Artnr = tArtikel.Artnr tAufze.Inhalt = tArtikel.Inhalt tAufze.Jahr = tArtikel.Jahr tAufze.iStatus = 0 tAufze.VGeb_Be = 1 tAufze.KGeb_Be = VGebinde.Inhalt tAufze.MBest = tAufze.KGeb_Be tAufze.MGeli = tAufze.KGeb_Be tAufze.VGeb_Me = 1 tAufze.KGeb_Me = VGebinde.Inhalt tAufze.Datum = bas_tPreise.ab_Datum + 1. . DYNAMIC-FUNCTION ('fillAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. PreisArt = DYNAMIC-FUNCTION ('getPreisAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. IF tAufze.Preis <> bas_tPreise.Preis AND PreisArt >= 0 THEN DO: CREATE tPreise. ASSIGN tPreise.Artnr = tArtikel.Artnr tPreise.Inhalt = tArtikel.Inhalt tPreise.Jahr = tArtikel.Jahr tPreise.Knr = Debst.Knr tPreise.Preis_Grp = Debst.Preis_Grp tPreise.lAktion = FALSE tPreise.ab_Datum = tAufze.Datum tPreise.bis_Datum = ? tPreise.Preis = tAufze.Preis. IF NOT lPreisGrp THEN DO: tDebitor.cGruppe = tDebitor.cGruppe + ',' + string(Debst.Knr,'999999'). lPreisGrp = TRUE. END. END. IF NOT AVAILABLE akt_tPreise THEN NEXT. EMPTY TEMP-TABLE tAufze. CREATE tAufze. ASSIGN tAufze.Firma = Firma tAufze.Knr = Debst.Knr tAufze.Artnr = tArtikel.Artnr tAufze.Inhalt = tArtikel.Inhalt tAufze.Jahr = tArtikel.Jahr tAufze.iStatus = 0 tAufze.VGeb_Be = 1 tAufze.KGeb_Be = VGebinde.Inhalt tAufze.MBest = tAufze.KGeb_Be tAufze.MGeli = tAufze.KGeb_Be tAufze.VGeb_Me = 1 tAufze.KGeb_Me = VGebinde.Inhalt tAufze.Datum = akt_tPreise.ab_Datum + 1. . DYNAMIC-FUNCTION ('fillAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. PreisArt = DYNAMIC-FUNCTION ('getPreisAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. IF tAufze.Preis <> akt_tPreise.Preis AND PreisArt >= 5 AND PreisArt <= 6 THEN DO: CREATE tPreise. ASSIGN tPreise.Artnr = tArtikel.Artnr tPreise.Inhalt = tArtikel.Inhalt tPreise.Jahr = tArtikel.Jahr tPreise.Knr = Debst.Knr tPreise.Preis_Grp = Debst.Preis_Grp tPreise.lAktion = TRUE tPreise.ab_Datum = akt_tPreise.ab_Datum tPreise.bis_Datum = akt_tPreise.bis_Datum tPreise.Preis = tAufze.Preis. IF NOT lPreisGrp THEN DO: tDebitor.cGruppe = tDebitor.cGruppe + ',' + string(Debst.Knr,'999999'). lPreisGrp = TRUE. END. END. END. END. FOR EACH tDebitor: FOR EACH KunBest NO-LOCK WHERE KunBest.Firma = Firma AND KunBest.Knr = tDebitor.Knr: FIND Artst NO-LOCK OF KunBest NO-ERROR. IF NOT AVAILABLE Artst THEN NEXT. FIND FIRST tArtikel USE-INDEX tArtikel-k2 WHERE tArtikel.Artnr = Artst.Artnr AND tArtikel.Inhalt = Artst.Inhalt AND tArtikel.Jahr = Artst.Jahr NO-ERROR. IF NOT AVAILABLE tArtikel THEN NEXT. CREATE tOrder. ASSIGN tOrder.iKnr = KunBest.Knr tOrder.iPos = KunBest.Pos tOrder.cArtnr = STRING(KunBest.Artnr ,'999999') + STRING(KunBest.Inhalt,'9999') + STRING(KunBest.Jahr ,'9999') tOrder.cGroup = STRING(Artst.Wg_Grp ,'9999') + STRING(Artst.Prod_Grp,'9999') + STRING(Artst.Art_Grp ,'9999') tOrder.iDelProd = (IF Artst.Aktiv AND Artst.Ausverk < 9 THEN 0 ELSE 1) tOrder.cName = 'Favoriten'. . EMPTY TEMP-TABLE tAufze. CREATE tAufze. ASSIGN tAufze.Firma = Firma tAufze.Knr = KunBest.Knr tAufze.Artnr = Artst.Artnr tAufze.Inhalt = Artst.Inhalt tAufze.Jahr = Artst.Jahr tAufze.iStatus = 0 tAufze.VGeb_Be = 1 tAufze.KGeb_Be = 1 tAufze.MBest = 1 tAufze.MGeli = 1 tAufze.VGeb_Me = 1 tAufze.KGeb_Me = 1 tAufze.Datum = TODAY. . DYNAMIC-FUNCTION ('fillAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. PreisArt = DYNAMIC-FUNCTION ('getPreisAufze':U, INPUT-OUTPUT htAufze) NO-ERROR. FIND FIRST tAufze. ASSIGN tOrder.nPreis = tAufze.Preis. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE STANDARD_PREIS gPreislisteKunde PROCEDURE STANDARD_PREIS : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE Sprcd AS INTEGER NO-UNDO. DEFINE VARIABLE FwPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE NoPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE AbPreis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE Preis_Grp AS INTEGER NO-UNDO. DEFINE VARIABLE Zei_Rab_Art AS INTEGER NO-UNDO. DEFINE VARIABLE Zei_Rab_Wert AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE Preis AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE RabAr AS INTEGER NO-UNDO. DEFINE VARIABLE RabPr AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE RabFr AS DECIMAL DECIMALS 3 NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE FAbweich AS LOG NO-UNDO. DEFINE VARIABLE FSpezPreis AS INTEGER NO-UNDO. DEFINE VARIABLE NettoRab AS INTEGER NO-UNDO. DEFINE VARIABLE FwPreisGrp AS INTEGER NO-UNDO. Sprcd = 1. FwPreis_Grp = DYNAMIC-FUNCTION('GETFWPREISGRP':U) NO-ERROR. NettoRab = DYNAMIC-FUNCTION('GETFWNETTORAB':U) NO-ERROR. ASSIGN NoPreis_Grp = FwPreis_Grp Zei_Rab_Art = 0 Zei_Rab_Wert = 0. RUN FIND_PREISGRUPPE ( INPUT NoPreis_Grp, OUTPUT cString ). IF cString = '' THEN inkl = FALSE. ELSE DO: IF INTEGER(ENTRY(3, cString, CHR(01))) = 1 THEN inkl = TRUE. ELSE inkl = FALSE. END. FOR EACH tArtikel NO-LOCK: Preis_Grp = NoPreis_Grp. FSpezPreis = 0. Preis = 0. RabAr = Zei_Rab_Art. RabPr = 0. RabFr = 0. IF RabAr = 1 THEN RabPr = + Zei_Rab_Wert. IF RabAr = 2 THEN RabFr = + Zei_Rab_Wert. IF RabAr = 3 THEN RabFr = - Zei_Rab_Wert. IF RabAr <> 3 THEN DO: IF tArtikel.Netto THEN ASSIGN RabAr = 0 RabPr = 0 RabFr = 0. END. DO WHILE TRUE: /* -------------------------------------------------------------- */ /* Artikelpreis ermittel mit entsprechender Preisgruppe */ /* -------------------------------------------------------------- */ FIND LAST ArtPreis USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = tArtikel.Artnr AND ArtPreis.Inhalt = tArtikel.Inhalt AND ArtPreis.Jahr = tArtikel.Jahr AND ArtPreis.Preis_Grp = Preis_Grp AND ArtPreis.Aktion = FALSE AND ArtPreis.Ab_Datum <= Preisdatum NO-LOCK NO-ERROR. DO WHILE TRUE: IF AVAILABLE ArtPreis THEN LEAVE. FIND LAST ArtPreis USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = tArtikel.Artnr AND ArtPreis.Inhalt = tArtikel.Inhalt AND ArtPreis.Jahr = tArtikel.Jahr AND ArtPreis.Preis_Grp = FwPreis_Grp AND ArtPreis.Aktion = FALSE AND ArtPreis.Ab_Datum <= Preisdatum NO-LOCK NO-ERROR. LEAVE. END. IF AVAILABLE ArtPreis THEN DO: IF Inkl THEN Preis = ArtPreis.VK_Brutto. ELSE Preis = ArtPreis.VK_Netto. END. LEAVE. END. IF RabAr = 1 THEN Preis = Preis * (100 - RabPr) / 100. IF RabAr = 2 THEN Preis = Preis - RabFr. IF RabAr = 3 THEN Preis = Preis - RabFr. IF inkl THEN RUN RUNDEN ( INPUT 1, INPUT-OUTPUT Preis ). tArtikel.Preis = Preis. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TOOLBAR gPreislisteKunde PROCEDURE TOOLBAR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcAction AS CHARACTER NO-UNDO. /* RUN TOOLBAR IN h_dyntoolbar ( INPUT pcAction ). */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getKGebinde gPreislisteKunde FUNCTION getKGebinde RETURNS LOGICAL ( ipcGeb_Cd AS CHARACTER, OUTPUT opcGebinde AS CHARACTER, OUTPUT opiInhalt AS INTEGER ): /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ ASSIGN opcGebinde = 'Fl' opiInhalt = 1. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = Firma AND KGebinde.Geb_Cd = ipcGeb_Cd NO-ERROR. IF NOT AVAILABLE KGebinde THEN RETURN FALSE. DO WHILE TRUE: opiInhalt = KGebinde.Inhalt. IF INDEX(KGebinde.KBez, 'FL') > 0 THEN DO: ASSIGN opcGebinde = 'Fl'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Port') > 0 THEN DO: ASSIGN opcGebinde = 'Po'. LEAVE. END. IF INDEX(KGebinde.KBez, 'DS') > 0 THEN DO: ASSIGN opcGebinde = 'Ds'. LEAVE. END. IF INDEX(KGebinde.KBez, 'TP') > 0 THEN DO: ASSIGN opcGebinde = 'Tp'. LEAVE. END. IF INDEX(KGebinde.Bez, 'PET') > 0 THEN DO: ASSIGN opcGebinde = 'Pe'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Bech') > 0 THEN DO: ASSIGN opcGebinde = 'Bec'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Tet') > 0 THEN DO: ASSIGN opcGebinde = 'Tp'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Eis') > 0 THEN DO: ASSIGN opcGebinde = 'Kg'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Elo') > 0 THEN DO: ASSIGN opcGebinde = 'PAK'. LEAVE. END. IF INDEX(KGebinde.KBez, 'EW') > 0 THEN DO: ASSIGN opcGebinde = 'Ew'. LEAVE. END. IF INDEX(KGebinde.Bez, 'Beut') > 0 THEN DO: ASSIGN opcGebinde = 'BT'. LEAVE. END. IF INDEX(KGebinde.KBez, 'Bech') > 0 THEN DO: ASSIGN opcGebinde = 'Bec'. LEAVE. END. IF INDEX(KGebinde.KBez, 'LT') > 0 THEN DO: ASSIGN opcGebinde = 'Lt'. LEAVE. END. RETURN FALSE. END. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getVGebinde gPreislisteKunde FUNCTION getVGebinde RETURNS LOGICAL ( ipcGeb_Cd AS CHARACTER, OUTPUT opcGebinde AS CHARACTER, OUTPUT opiInhalt AS INTEGER ): /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ ASSIGN opcGebinde = 'Ha' opiInhalt = 1. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = Firma AND VGebinde.Geb_Cd = ipcGeb_Cd NO-ERROR. IF NOT AVAILABLE VGebinde THEN RETURN FALSE. DO WHILE TRUE: opiInhalt = VGebinde.Inhalt. IF INDEX(VGebinde.KBez, 'Fass') > 0 THEN DO: ASSIGN opcGebinde = 'Fa'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Har') > 0 THEN DO: ASSIGN opcGebinde = 'Ha'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Car') > 0 OR INDEX(VGebinde.KBez, 'Kar') > 0 THEN DO: ASSIGN opcGebinde = 'K'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Bid') > 0 THEN DO: ASSIGN opcGebinde = 'BID'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Prop') > 0 THEN DO: ASSIGN opcGebinde = 'TA'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Con') > 0 THEN DO: ASSIGN opcGebinde = 'CON'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Co2') > 0 THEN DO: ASSIGN opcGebinde = 'CO2'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Bech') > 0 THEN DO: ASSIGN opcGebinde = 'Bec'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Magnum') > 0 THEN DO: ASSIGN opcGebinde = 'MAG'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Pack') > 0 OR INDEX(VGebinde.KBez, 'Sixp') > 0 THEN DO: ASSIGN opcGebinde = 'PAK'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Plast') > 0 THEN DO: ASSIGN opcGebinde = 'Pla'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Gall') > 0 THEN DO: ASSIGN opcGebinde = 'Gal'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Eis') > 0 THEN DO: ASSIGN opcGebinde = 'Kg'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Bag') > 0 THEN DO: ASSIGN opcGebinde = 'BT'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Glas') > 0 THEN DO: ASSIGN opcGebinde = 'Gl'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Stand') > 0 THEN DO: ASSIGN opcGebinde = 'Fl'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Rolle') > 0 THEN DO: ASSIGN opcGebinde = 'Ro'. LEAVE. END. IF INDEX(VGebinde.KBez, 'Shot') > 0 THEN DO: ASSIGN opcGebinde = 'Sho'. LEAVE. END. RETURN FALSE. END. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME