&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure /*------------------------------------------------------------------------ File : Purpose : Syntax : Description : Author(s) : Created : Notes : ----------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ DEF INPUT PARAMETER iphParam AS HANDLE NO-UNDO. DEF OUTPUT PARAMETER opcResult AS CHAR NO-UNDO. DEF VAR iSeite AS INT NO-UNDO. DEF VAR iAnzDok AS INT NO-UNDO. DEF VAR iLauf AS INT NO-UNDO. DEF VAR lFirst AS LOG INIT FALSE NO-UNDO. DEF VAR lLast AS LOG INIT FALSE NO-UNDO. DEF VAR lPreis AS LOG NO-UNDO. DEF VAR cFirma AS CHAR NO-UNDO. DEF VAR AdFirma AS CHAR NO-UNDO. DEF VAR nFakBetr AS DEC NO-UNDO. DEF VAR dFakDatum AS DATE NO-UNDO. DEF VAR iFaknr AS INT NO-UNDO. DEF VAR iSprcd AS INT NO-UNDO. DEF VAR nTotale AS DEC EXTENT 15 NO-UNDO. DEF VAR cFormtext AS CHAR EXTENT 30 NO-UNDO. DEF VAR cRabText AS CHAR NO-UNDO. DEF VAR cZusText AS CHAR NO-UNDO. DEF VAR cEpzText AS CHAR NO-UNDO. DEF VAR cBesrKopf AS CHAR EXTENT 12 NO-UNDO. DEF VAR lDebIncl AS LOG NO-UNDO. DEF VAR Rundbetr AS DEC DECIMALS 4 NO-UNDO. DEF VAR RundCode AS INT INIT 1 NO-UNDO. DEF VAR htTabTexte AS HANDLE NO-UNDO. DEF VAR hAufko AS HANDLE NO-UNDO. DEF VAR nGewicht AS DEC DECIMALS 3 NO-UNDO. DEF VAR iMaxPos AS INT INIT 2650 NO-UNDO. DEF VAR cvpr_Dokument AS CHAR NO-UNDO. DEF VAR iArtZeile AS INT NO-UNDO. DEF VAR iVPagePos AS INT NO-UNDO. DEF VAR iVGroupPos AS INT NO-UNDO. DEF BUFFER bAufko FOR Aufko . DEF BUFFER bAufze FOR Aufze . DEF BUFFER FDebst FOR Debst . /* Fakturaadresse */ DEF BUFFER LDebst FOR Debst . /* Lieferadresse */ DEF BUFFER LAdresse FOR Adresse . DEF BUFFER bAdresse FOR Adresse . DEF BUFFER bWust FOR Wust . DEF BUFFER bSteuer FOR Steuer . { incl/ttdruckparam.i } DEF TEMP-TABLE tDokument FIELD cGruppe AS CHAR FIELD iZeile AS INT FIELD cFeld AS CHAR FIELD cInhalt AS CHAR INDEX tDokument-k1 IS PRIMARY cGruppe iZeile cFeld . DEF TEMP-TABLE tTotale FIELD nMwstPfl AS DEC EXTENT 12 FIELD nMwstBet AS DEC EXTENT 12 FIELD nSammTot AS DEC FIELD nSkBer AS DEC FIELD nWW AS DEC . DEF TEMP-TABLE sAufko FIELD cFirma AS CHAR FIELD iAufnr AS INT FIELD iFak_Knr AS INT FIELD iKnr AS INT FIELD iSamm_Nr AS INT FIELD iRecid AS RECID FIELD iFaknr AS INT . DEF TEMP-TABLE tAufko LIKE Aufko FIELD iRecid AS RECID . DEF TEMP-TABLE tAufze LIKE Aufze FIELD Sort1 AS CHAR FIELD Sort2 AS CHAR FIELD Sort3 AS CHAR FIELD LagOrt AS CHAR INDEX tAufze-k1 IS PRIMARY Aufnr Sort1 Sort2 Sort3 . DEF TEMP-TABLE tSpeRab FIELD Rab_Grp AS INT FIELD Auf_Betr AS DEC DECIMALS 4 . DEF TEMP-TABLE tGebKto FIELD Sort_Cd AS CHAR FIELD Geb_Cd AS CHAR FIELD Bez AS CHAR FIELD Preis AS DEC FIELD A_Anz AS DEC FIELD A_Betrag AS DEC FIELD E_Anz AS DEC FIELD E_Betrag AS DEC FIELD MWST_Art AS INT FIELD MWST_Cd AS INT . DEF TEMP-TABLE tRabSumm FIELD Rab_Summ AS INT FIELD Bez AS CHAR FIELD F_Rab_Art AS INT FIELD F_Wert AS DEC DECIMALS 4 FIELD A_Rab_Art AS INT FIELD A_Wert AS DEC DECIMALS 4 FIELD Auf_Rab AS DEC DECIMALS 4 FIELD Abh_Rab AS DEC DECIMALS 4 . DEF TEMP-TABLE tUmsGrp FIELD Ums_Grp AS INT FIELD Mwst AS INT FIELD Ansatz AS DEC FIELD Bez AS CHAR FIELD Ums_Betr AS DEC DECIMALS 4 . DEF TEMP-TABLE tTabTexte FIELD cRecArt AS CHAR FIELD iZeile AS INT FIELD cFeld1 AS CHAR FIELD cFeld2 AS CHAR FIELD cFeld3 AS CHAR FIELD iFeld1 AS INT FIELD iFeld2 AS INT FIELD iFeld3 AS INT INDEX tTabTexte-k1 IS PRIMARY cRecArt iZeile. DEF TEMP-TABLe tAufGKon LIKE AufGKon. DEF TEMP-TABLE rAufze LIKE Aufze. DEF VAR hrAufze AS HANDLE NO-UNDO. hrAufze = TEMP-TABLE rAufze:DEFAULT-BUFFER-HANDLE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Procedure &Scoped-define DB-AWARE no /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Procedure Allow: Frames: 0 Add Fields to: Neither Other Settings: CODE-ONLY COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW Procedure ASSIGN HEIGHT = 15 WIDTH = 60. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure /* *************************** Main Block *************************** */ opcResult = ''. CREATE tParam. htParam:BUFFER-COPY(iphParam). ASSIGN cFirma = tParam.cFirma iAnzDok = tParam.Anzahl lPreis = FALSE /*tParam.lPreis*/. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma. AdFirma = bSteuer.AdFirma. RUN AUFTRAG_ERMITTELN. IF opcResult <> '' THEN RETURN. FOR EACH sAufko BY sAufko.iKnr: FIND bAdresse NO-LOCK WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = sAufko.iKnr. iSprcd = bAdresse.Sprcd. RUN GET_FORMTEXT ( tParam.cInstall, tParam.cDokument, iSprcd, OUTPUT cFormText ) NO-ERROR. cRabText = TRIM(SUBSTRING(cFormText[21],01,20)). cZusText = TRIM(SUBSTRING(cFormText[21],21,20)). cEpzText = TRIM(SUBSTRING(cFormText[21],41,20)). RELEASE bAdresse. { vpr.i INIT } { vpr.i START } DO iLauf = 1 TO iAnzDok: dFakDatum = TODAY. iSeite = 0. iFaknr = sAufko.iFaknr. lFirst = TRUE. lLast = FALSE. EMPTY TEMP-TABLE tUmsGrp . EMPTY TEMP-TABLE tTotale . CREATE tTotale. FOR EACH bAufko NO-LOCK WHERE bAufko.Firma = sAufko.cFirma AND bAufko.Aufnr = sAufko.iAufnr BREAK BY bAufko.Firma BY bAufko.Aufnr : EMPTY TEMP-TABLE tGebKto . EMPTY TEMP-TABLE tRabSumm . EMPTY TEMP-TABLE tSpeRab . EMPTY TEMP-TABLE tTabTexte . FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. FIND LDebst NO-LOCK USE-INDEX Debst-k1 WHERE LDebst.Firma = cFirma AND LDebst.Knr = bAufko.Knr NO-ERROR. FIND FDebst NO-LOCK USE-INDEX Debst-k1 WHERE FDebst.Firma = cFirma AND FDebst.Knr = bAufko.Fak_Knr NO-ERROR. FIND bWust NO-LOCK USE-INDEX Wust-k1 WHERE bWust.CodeK = LDebst.MWST AND bWust.CodeA = 99 NO-ERROR. lDebIncl = FALSE. IF AVAILABLE bWust THEN lDebIncl = bWust.Incl. dFakDatum = (IF bAufko.Lief_Datum < TODAY THEN TODAY ELSE bAufko.Lief_Datum). hAufko = BUFFER bAufko:HANDLE. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE. /* Texte und Werte aus Tabelle 'Tabel' laden für RecArt */ /* FAKART, AUFSTATUS, LIEFART, FAHRER, WISO, ABLAD */ RUN CREATE_TABTEXTE ( hAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR. /* FOR EACH tAufze */ /* WHERE tAufze.Artnr > 0: */ /* */ /* /* Spezial-Auftragsrabatt pro Lieferschein bilden */ */ /* */ /* IF tAufze.Auf_Sp_Grp > 0 THEN DO: */ /* FIND FIRST tSpeRab */ /* WHERE tSpeRab.Rab_Grp = tAufze.Auf_Sp_Grp NO-ERROR. */ /* IF NOT AVAILABLE tSpeRab THEN DO: */ /* CREATE tSpeRab. */ /* ASSIGN tSpeRab.Rab_Grp = tAufze.Auf_Sp_Grp. */ /* END. */ /* tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + tAufze.Auf_Sp_Rab. */ /* END. */ /* */ /* /* Summengruppen-Totale pro Lieferschein bilden */ */ /* */ /* DO WHILE tAufze.Rab_Su_Grp > 0: */ /* FIND FIRST tRabSumm */ /* WHERE tRabSumm.Rab_Summ = tAufze.Rab_Su_Grp NO-ERROR. */ /* IF NOT AVAILABLE tRabSumm THEN DO: */ /* FIND FIRST RabSumm NO-LOCK */ /* WHERE RabSumm.Firma = tAufze.Firma */ /* AND RabSumm.Rab_Summ = tAufze.Rab_Su_Grp NO-ERROR. */ /* IF NOT AVAILABLE RabSumm THEN LEAVE. */ /* CREATE tRabSumm. */ /* ASSIGN tRabSumm.Rab_Summ = tAufze.Rab_Su_Grp */ /* tRabSumm.Bez = RabSumm.Bez */ /* tRabSumm.Auf_Rab = 0 */ /* tRabSumm.Abh_Rab = 0. */ /* END. */ /* LEAVE. */ /* END. */ /* END. */ IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE. RUN DRUCKEN. END. END. { vpr.i STOP } END. PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" : DEFINE INPUT PARAMETER lphwnd AS LONG. DEFINE INPUT PARAMETER lpOperation AS CHAR. DEFINE INPUT PARAMETER lpFile AS CHAR. DEFINE INPUT PARAMETER lpParameters AS CHAR. DEFINE INPUT PARAMETER lpDirectory AS CHAR. DEFINE INPUT PARAMETER nShowCmd AS LONG. DEFINE RETURN PARAMETER hInstance AS LONG. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure PROCEDURE ARTIKELZEILE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipRecid AS RECID NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR nRabWert AS DEC NO-UNDO. DEF VAR xRabText AS CHAR NO-UNDO. FIND tAufze WHERE RECID(tAufze) = ipRecid NO-LOCK. iArtZeile = iArtZeile + 1. DO WHILE tAufze.Artnr = 0: cString = tAufze.Bez1. IF tAufze.Bez1 <> '' THEN DO: cString = cString + (IF cString = '' THEN '' ELSE CHR(10)) + tAufze.Bez2. END. CREATE tDokument. ASSIGN tDokument.cGruppe = 'ArtikelZeile1' tDokument.iZeile = iArtZeile tDokument.cFeld = 'Bez1' tDokument.cInhalt = cString. RETURN. END. FIND Artst OF tAufze NO-LOCK. FIND GGebinde NO-LOCK WHERE GGebinde.Firma = cFirma AND GGebinde.Geb_Cd = tAufze.GGeb_Cd NO-ERROR. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = cFirma AND VGebinde.Geb_Cd = tAufze.VGeb_Cd NO-ERROR. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = cFirma AND KGebinde.Geb_Cd = tAufze.KGeb_Cd NO-ERROR. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ). RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(tAufze.Artnr,"999999") ). RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge' , STRING(tAufze.MBest,"->>,>>9") ). IF tAufze.VGeb_Be <> 0 THEN DO: cString = STRING(tAufze.VGeb_Be,'->>>>') + 'x ' + VGebinde.KBez. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ). END. cString = tAufze.Bez1. IF tAufze.Bez2 <> '' THEN DO: cString = cString + (IF cString = '' THEN '' ELSE CHR(10)) + tAufze.Bez2. END. IF tAufze.Aktion THEN DO: cString = cString + (IF cString = '' THEN '' ELSE CHR(10)) + tAufze.Aktion_Text. END. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ). IF tAufze.Jahr > 9 THEN DO: cString = STRING(tAufze.Jahr,"9999"). RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ). END. IF tAufze.Alk_Gehalt <> 0 THEN DO: cString = STRING(tAufze.Alk_Gehalt,"zz9.9%"). RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ). END. /* DO WHILE lPreis : */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(tAufze.Preis ,'>>>,>>9.99') ). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(tAufze.Bru_Betr,'->>>,>>9.99') ). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC' , STRING(tAufze.WuCd ,'z9') ). */ /* */ /* IF tAufze.Rab_Betr = 0 THEN LEAVE. */ /* */ /* iArtZeile = iArtZeile + 1. */ /* nRabWert = ABSOLUTE(tAufze.Rab_Wert). */ /* IF tAufze.Rab_Art = 3 THEN xRabText = cEpzText. */ /* ELSE DO: */ /* IF tAufze.Rab_Betr < 0 THEN xRabText = cZusText. */ /* IF tAufze.Rab_Betr > 0 THEN xRabText = cRabText. */ /* END. */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ). */ /* */ /* IF tAufze.Rab_Art = 1 THEN cString = STRING(nRabWert,"->9.9%"). */ /* IF tAufze.Rab_Art = 2 OR */ /* tAufze.Rab_Art = 3 THEN cString = STRING(nRabWert,"-9.99"). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- tAufze.Rab_Betr,"->>>,>>9.99")) ). */ /* LEAVE. */ /* END. */ /* */ /* DO WHILE lPreis: */ /* IF tAufze.Zus_Betr = 0 THEN LEAVE. */ /* */ /* iArtZeile = iArtZeile + 1. */ /* nRabWert = ABSOLUTE(tAufze.Zus_Wert). */ /* IF tAufze.Zus_Art = 3 THEN xRabText = cEpzText. */ /* ELSE DO: */ /* IF tAufze.Zus_Betr < 0 THEN xRabText = cRabText. */ /* IF tAufze.Zus_Betr > 0 THEN xRabText = cZusText. */ /* END. */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ). */ /* */ /* IF tAufze.Zus_Art = 1 THEN cString = STRING(nRabWert,"->9.9%"). */ /* IF tAufze.Zus_Art = 2 OR */ /* tAufze.Zus_Art = 3 THEN cString = STRING(nRabWert,"-9.99"). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ). */ /* RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(+ tAufze.Zus_Betr,"->>>,>>9.99")) ). */ /* LEAVE. */ /* END. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-AUFTRAG_ERMITTELN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAG_ERMITTELN Procedure PROCEDURE AUFTRAG_ERMITTELN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR iAufnr AS INT NO-UNDO. FIND FIRST tParam. EMPTY TEMP-TABLE sAufko. /* Sammeln aller Aufträge pro Sammelnummer */ FIND FIRST bAufko NO-LOCK WHERE bAufko.Firma = tParam.cFirma AND bAufko.Aufnr = tParam.iAufnr NO-ERROR. IF NOT AVAILABLE bAufko THEN RETURN. FIND FIRST bAufze NO-LOCK WHERE bAufze.Firma = bAufko.Firma AND bAufze.Aufnr = bAufko.Aufnr AND bAufze.Artnr > 0 NO-ERROR. IF NOT AVAILABLE bAufze THEN DO: RUN CREATE_RUECKNAHMEZEILEN ( bAufko.Firma, bAufko.Aufnr ). END. FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5 WHERE Aufko.Firma = tParam.cFirma AND Aufko.Aufnr = tParam.iAufnr : CREATE sAufko. ASSIGN sAufko.cFirma = Aufko.Firma sAufko.iAufnr = Aufko.Aufnr sAufko.iFak_Knr = Aufko.Fak_Knr sAufko.iKnr = Aufko.Knr sAufko.iSamm_Nr = Aufko.Samm_Nr sAufko.iRecid = RECID(Aufko) sAufko.iFaknr = Aufko.Faknr. END. /* Alle Auftragstotale aller Lieferscheine neu rechnen */ FOR EACH sAufko: FOR EACH bAufko NO-LOCK WHERE bAufko.Firma = sAufko.cFirma AND bAufko.Aufnr = sAufko.iAufnr : DYNAMIC-FUNCTION('calculateAuftragsTotal':U, bAufko.Firma, bAufko.Aufnr, OUTPUT nTotale ) NO-ERROR. RELEASE bAufko. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-AUSGABE_ARTIKELZEILE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure PROCEDURE AUSGABE_ARTIKELZEILE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cZellen AS CHAR NO-UNDO. DEF VAR cWerte AS CHAR NO-UNDO. DEF VAR iPos AS INT NO-UNDO. FOR EACH tDokument WHERE tDokument.cGruppe = 'ArtikelZeile1' BREAK BY tDokument.cGruppe BY tDokument.iZeile: IF FIRST-OF ( tDokument.cGruppe ) THEN DO: iVPagePos = vpr_getPageVPos() + 20. RUN vpr_setPageVPos ( iVPagePos ). RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ). END. IF FIRST-OF ( tDokument.iZeile ) THEN DO: cZellen = ''. cWerte = ''. END. cWerte = cWerte + tDokument.cInhalt. cZellen = cZellen + tDokument.cFeld. IF NOT LAST-OF ( tDokument.iZeile ) THEN DO: ASSIGN cWerte = cWerte + CHR(01) cZellen = cZellen + ','. NEXT. END. RUN vpr_SetDelimiter (CHR(01)). RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte). iVPagePos = vpr_getPageVPos(). iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1'). IF iPos > iMaxPos THEN DO: RUN VIPER_NEUE_SEITE. RUN DRUCKEN_ADRESSE. iVPagePos = vpr_getPageVPos() + 20. RUN vpr_setPageVPos ( iVPagePos ). RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte). END. RUN vpr_FlushGroup ('ArtikelZeile1'). iVPagePos = vpr_getPageVPos(). IF LAST-OF ( tDokument.cGruppe ) THEN LEAVE. iVPagePos = vpr_getPageVPos(). RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ). END. FOR EACH tDokument WHERE tDokument.cGruppe = 'ArtikelZeile1': DELETE tDokument. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-AUSGABE_GRUPPE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_GRUPPE Procedure PROCEDURE AUSGABE_GRUPPE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipGruppe AS CHAR NO-UNDO. DEF VAR cZellen AS CHAR NO-UNDO. DEF VAR cWerte AS CHAR NO-UNDO. DEF VAR iSpace AS INT NO-UNDO. FIND FIRST tParam. iSpace = vpr_getPageVPos(). FOR EACH tDokument NO-LOCK WHERE tDokument.cGruppe = ipGruppe BREAK BY tDokument.cGruppe BY tDokument.iZeile: IF FIRST-OF ( tDokument.iZeile ) THEN iSpace = iSpace + 40. END. IF iSpace > iMaxPos THEN DO: RUN vpr_NewPage. RUN vpr_InitGroups(''). IF iLauf = iAnzDok THEN RUN vpr_initGraphObj. iSeite = iSeite + 1. RUN DRUCKEN_ADRESSE. END. iVPagePos = vpr_getPageVPos(). CASE ipGruppe: WHEN 'Gebindeabrechnung' THEN DO: iVPagePos = iVPagePos + 20. RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', iVPagePos ). RUN vpr_FlushGroup ( 'GebindeabrechnungTitel'). iVPagePos = vpr_getPageVPos(). END. OTHERWISE DO: END. END CASE. FOR EACH tDokument WHERE tDokument.cGruppe = ipGruppe BREAK BY tDokument.cGruppe BY tDokument.iZeile: IF FIRST-OF ( tDokument.cGruppe ) THEN DO: IF ipGruppe <> 'Kondition' AND ipGruppe <> 'BESR' AND ipGruppe <> 'ADRESSE' THEN DO: iVPagePos = vpr_getPageVPos(). RUN vpr_setGroupVPos ( ipGruppe, iVPagePos ). END. END. IF FIRST-OF ( tDokument.iZeile ) THEN DO: cZellen = ''. cWerte = ''. END. cWerte = cWerte + tDokument.cInhalt. cZellen = cZellen + tDokument.cFeld. IF NOT LAST-OF ( tDokument.iZeile ) THEN DO: ASSIGN cWerte = cWerte + CHR(01) cZellen = cZellen + ','. NEXT. END. RUN vpr_SetDelimiter (CHR(01)). RUN vpr_setGroupText (ipGruppe, cZellen, cWerte). RUN vpr_FlushGroup (ipGruppe). END. FOR EACH tDokument WHERE tDokument.cGruppe = ipGruppe: DELETE tDokument. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-CREATE_RUECKNAHMEZEILEN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_RUECKNAHMEZEILEN Procedure PROCEDURE CREATE_RUECKNAHMEZEILEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipFirma AS CHAR NO-UNDO. DEF INPUT PARAMETER ipAufnr AS INT NO-UNDO. DEF VAR nMenge AS DEC NO-UNDO. DEF VAR nKGeb_Me AS DEC NO-UNDO. DEF VAR nVGeb_Me AS DEC NO-UNDO. DEF VAR nGGeb_Me AS DEC NO-UNDO. DEF VAR iAnz AS INT NO-UNDO. DEF VAR MW AS INT NO-UNDO. DEF VAR iPos AS INT NO-UNDO. DEF BUFFER bAufko FOR Aufko. DEF BUFFER bAufze FOR Aufze. EMPTY TEMP-TABLE tAufze. iPos = 0. FIND bAufko NO-LOCK WHERE bAufko.Firma = ipFirma AND bAufko.Aufnr = ipAufnr. /* Bemerkungen in Rücknahmeschein */ FOR EACH bAufze NO-LOCK WHERE bAufze.Firma = bAufko.Firma AND bAufze.Aufnr = bAufko.Aufnr: IF bAufze.Artnr > 0 THEN LEAVE. iPos = iPos + 5. CREATE tAufze. BUFFER-COPY bAufze EXCEPT Pos TO tAufze ASSIGN tAufze.Pos = iPos. END. FOR EACH Aufko NO-LOCK WHERE Aufko.Firma = bAufko.Firma AND Aufko.Samm_Nr = bAufko.Samm_Nr AND Aufko.Knr = bAufko.Knr AND Aufko.Aufnr <> bAufko.Aufnr, EACH Aufze NO-LOCK WHERE Aufze.Firma = Aufko.Firma AND Aufze.Aufnr = Aufko.Aufnr AND Aufze.Artnr > 0 AND Aufze.MGeli <> 0 BREAK BY Aufze.Artnr BY Aufze.Inhalt BY Aufze.Jahr: IF FIRST-OF ( Aufze.Jahr ) THEN DO: ASSIGN nMenge = 0.0 nKGeb_Me = 0.0 nVGeb_Me = 0.0 nGGeb_Me = 0.0. END. ASSIGN nMenge = nMenge + Aufze.MGeli nKGeb_Me = nKGeb_Me + Aufze.KGeb_Me nVGeb_Me = nVGeb_Me + Aufze.VGeb_Me nGGeb_Me = nGGeb_Me + Aufze.GGeb_Me. IF NOT LAST-OF ( Aufze.Jahr ) THEN NEXT. IF nMenge < 0 THEN NEXT. EMPTY TEMP-TABLE rAufze. iPos = iPos + 5. CREATE rAufze. BUFFER-COPY Aufze EXCEPT Firma Aufnr Pos MBest MGeli MRuek KGeb_Be VGeb_Be GGeb_Be KGeb_Me VGeb_Me GGeb_Me KGeb_Ru VGeb_Ru GGeb_Ru TrNr TO rAufze ASSIGN rAufze.Firma = bAufko.Firma rAufze.Aufnr = bAufko.Aufnr rAufze.Pos = iPos rAufze.MBest = nMenge rAufze.KGeb_Be = nKGeb_Me rAufze.VGeb_Be = nVGeb_Me rAufze.GGeb_Be = nGGeb_Me. /* DYNAMIC-FUNCTION('fillAufze':U, INPUT-OUTPUT hrAufze ) NO-ERROR. */ /* ASSIGN rAufze.MBest = nMenge */ /* rAufze.KGeb_Be = nKGeb_Me */ /* rAufze.VGeb_Be = nVGeb_Me */ /* rAufze.GGeb_Be = nGGeb_Me. */ DYNAMIC-FUNCTION('calculateZeilenTotal':U, INPUT-OUTPUT hrAufze ) NO-ERROR. CREATE tAufze. BUFFER-COPY rAufze TO tAufze. END. EMPTY TEMP-TABLE tAufGKon. FOR EACH tAufze NO-LOCK: DO WHILE tAufze.KGebKto <> '': IF tAufze.KGeb_Be = 0 THEN LEAVE. FIND GebKonto USE-INDEX GebKonto-k1 WHERE GebKonto.Firma = tAufze.Firma AND GebKonto.Geb_Cd = tAufze.KGebKto NO-LOCK. IF GebKonto.MWST_Art = 0 THEN MW = 11. IF GebKonto.MWST_Art = 1 THEN MW = tAufze.WuCd. IF GebKonto.MWST_Art = 2 THEN MW = GebKonto.MWST_Cd. FIND tAufGKon USE-INDEX AufGKon-k1 WHERE tAufGKon.Firma = tAufze.Firma AND tAufGKon.Aufnr = tAufze.Aufnr AND tAufGKon.Geb_Cd = GebKonto.Geb_Cd AND tAufGKon.MWSt_Cd = MW NO-ERROR. IF NOT AVAILABLE tAufGKon THEN DO: CREATE tAufGKon. ASSIGN tAufGKon.Firma = tAufze.Firma tAufGKon.Aufnr = tAufze.Aufnr tAufGKon.Geb_Cd = GebKonto.Geb_Cd tAufGKon.MWSt_Cd = MW tAufGKon.Gebuehr = GebKonto.Gebuehr tAufGKon.Depot = GebKonto.Depot tAufGKon.Sort_Cd = GebKonto.Sort_Cd. END. DO WHILE TRUE: IF tAufze.Preis = 0 AND tAufGKon.Gebuehr <> 0 THEN LEAVE. tAufGKon.Ausgang = tAufGKon.Ausgang + tAufze.KGeb_Be. tAufGKon.Betrag = (tAufGKon.Ausgang - tAufGKon.Eingang) * (tAufGKon.Depot + tAufGKon.Gebuehr). LEAVE. END. LEAVE. END. DO WHILE tAufze.VGebKto <> '': IF tAufze.VGeb_Be = 0 THEN LEAVE. FIND GebKonto USE-INDEX GebKonto-k1 WHERE GebKonto.Firma = tAufze.Firma AND GebKonto.Geb_Cd = tAufze.VGebKto NO-LOCK. IF GebKonto.MWST_Art = 0 THEN MW = 11. IF GebKonto.MWST_Art = 1 THEN MW = tAufze.WuCd. IF GebKonto.MWST_Art = 2 THEN MW = GebKonto.MWST_Cd. FIND tAufGKon USE-INDEX AufGKon-k1 WHERE tAufGKon.Firma = tAufze.Firma AND tAufGKon.Aufnr = tAufze.Aufnr AND tAufGKon.Geb_Cd = GebKonto.Geb_Cd AND tAufGKon.MWSt_Cd = MW NO-ERROR. IF NOT AVAILABLE tAufGKon THEN DO: CREATE tAufGKon. ASSIGN tAufGKon.Firma = tAufze.Firma tAufGKon.Aufnr = tAufze.Aufnr tAufGKon.Geb_Cd = GebKonto.Geb_Cd tAufGKon.MWSt_Cd = MW tAufGKon.Gebuehr = GebKonto.Gebuehr tAufGKon.Depot = GebKonto.Depot tAufGKon.Sort_Cd = GebKonto.Sort_Cd. END. DO WHILE TRUE: IF tAufze.Preis = 0 AND tAufGKon.Gebuehr <> 0 THEN LEAVE. tAufGKon.Ausgang = tAufGKon.Ausgang + tAufze.VGeb_Be. tAufGKon.Betrag = (tAufGKon.Ausgang - tAufGKon.Eingang) * (tAufGKon.Depot + tAufGKon.Gebuehr). LEAVE. END. LEAVE. END. DO WHILE tAufze.GGebKto <> '': IF tAufze.GGeb_Be = 0 THEN LEAVE. FIND GebKonto USE-INDEX GebKonto-k1 WHERE GebKonto.Firma = tAufze.Firma AND GebKonto.Geb_Cd = tAufze.GGebKto NO-LOCK. IF GebKonto.MWST_Art = 0 THEN MW = 11. IF GebKonto.MWST_Art = 1 THEN MW = tAufze.WuCd. IF GebKonto.MWST_Art = 2 THEN MW = GebKonto.MWST_Cd. FIND tAufGKon USE-INDEX AufGKon-k1 WHERE tAufGKon.Firma = tAufze.Firma AND tAufGKon.Aufnr = tAufze.Aufnr AND tAufGKon.Geb_Cd = GebKonto.Geb_Cd AND tAufGKon.MWSt_Cd = MW NO-ERROR. IF NOT AVAILABLE tAufGKon THEN DO: CREATE tAufGKon. ASSIGN tAufGKon.Firma = tAufze.Firma tAufGKon.Aufnr = tAufze.Aufnr tAufGKon.Geb_Cd = GebKonto.Geb_Cd tAufGKon.MWSt_Cd = MW tAufGKon.Gebuehr = GebKonto.Gebuehr tAufGKon.Depot = GebKonto.Depot tAufGKon.Sort_Cd = GebKonto.Sort_Cd. END. DO WHILE TRUE: IF tAufze.Preis = 0 AND tAufGKon.Gebuehr <> 0 THEN LEAVE. tAufGKon.Ausgang = tAufGKon.Ausgang + tAufze.GGeb_Be. tAufGKon.Betrag = (tAufGKon.Ausgang - tAufGKon.Eingang) * (tAufGKon.Depot + tAufGKon.Gebuehr). LEAVE. END. LEAVE. END. END. RUN FUELLEN_tAufze. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-DRUCKEN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure PROCEDURE DRUCKEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cText AS CHAR NO-UNDO. DEF VAR cLAdresse AS CHAR NO-UNDO. DEF VAR RText AS CHAR NO-UNDO. DEF VAR WText AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR i1 AS INT NO-UNDO. DEF VAR nBetrag AS DEC NO-UNDO. DEF VAR iMwstCd AS INT NO-UNDO. DEF VAR nZeiTot AS DEC DECIMALS 4 NO-UNDO. DEF VAR lJa AS LOG NO-UNDO. DEF VAR cPDFName AS CHAR INIT '' NO-UNDO. FIND FIRST tParam. IF tParam.lBatch THEN DO: ASSIGN tParam.lOpenPDF = FALSE. END. nFakBetr = 0. IF iSeite = 0 THEN RUN VIPER_INIT. RUN DRUCKEN_KOPF. iArtZeile = 0. iVPagePos = vpr_getPageVPos(). RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ). FOR EACH tAufze NO-LOCK BY tAufze.Aufnr BY tAufze.Sort1 BY tAufze.LagOrt BY tAufze.Sort2 BY tAufze.Pos : RUN ARTIKELZEILE ( RECID(tAufze) ). nFakBetr = nFakBetr + tAufze.Net_Betr. END. IF lPreis THEN DO: iArtZeile = iArtZeile + 1. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ). iArtZeile = iArtZeile + 1. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , TRIM(SUBSTRING(cFormText[10],41,20)) ). RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ). END. RUN AUSGABE_ARTIKELZEILE. iArtZeile = 1. RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1' , ' ' ). RUN AUSGABE_GRUPPE ('Zusatztext'). /* Gebinde Aus- und Eingänge ---------------------------------------- */ FOR EACH tAufGKon NO-LOCK WHERE tAufGKon.Depot <> 0 AND tAufGKon.Betrag <> 0 : FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = tAufGKon.Geb_Cd NO-ERROR. IF NOT AVAILABLE tGebKto THEN DO: FIND GebKonto NO-LOCK WHERE GebKonto.Firma = tAufGKon.Firma AND GebKonto.Geb_Cd = tAufGKon.Geb_Cd. CREATE tGebKto. ASSIGN tGebKto.Sort_Cd = GebKonto.Sort_Cd tGebKto.Geb_Cd = GebKonto.Geb_Cd tGebKto.Bez = GebKonto.Bez tGebKto.Preis = tAufGKon.Depot tGebKto.MWST_Cd = tAufGKon.MWSt_Cd. END. tGebKto.A_Anz = tGebKto.A_Anz + tAufGKon.Ausgang. tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis. tGebKto.E_Anz = tGebKto.E_Anz + tAufGKon.Eingang. tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis. END. RELEASE tAufGKon. /* Gebindelieferungen ------------------------------------------------ */ IF FDebst.Geb_Rg THEN DO: nBetrag = 0. iArtZeile = 0. FOR EACH tAufGKon NO-LOCK WHERE tAufGKon.Depot <> 0 AND (tAufGKon.Eingang <> 0 OR tAufGKon.Ausgang <> 0) BREAK BY tAufGKon.Firma BY tAufGKon.Aufnr: FIND GebKonto NO-LOCK WHERE GebKonto.Firma = cFirma AND GebKonto.Geb_Cd = tAufGKon.Geb_Cd. i1 = tAufGKon.Ausgang - tAufGKon.Eingang. Rundbetr = tAufGKon.Betrag. iMwstCd = tAufGKon.MWSt_Cd. nBetrag = nBetrag + Rundbetr. iArtZeile = iArtZeile + 1. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'Gebindetext' , GebKonto.Bez ). RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeGel' , TRIM(STRING(tAufGKon.Ausgang,"->>,>>9")) ). RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeRet' , TRIM(STRING(tAufGKon.Eingang,"->>,>>9")) ). RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeSaldo', TRIM(STRING(i1 ,"->>,>>9")) ). END. RELEASE tAufGKon. RELEASE GebKonto. nFakBetr = nFakBetr + nBetrag. IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung'). END. /* /* Auftragstext ------------------------------------------------------ */ */ /* */ /* cText = BAufko.Auf_Text. */ /* IF cText <> '' THEN DO: */ /* iVPagePos = vpr_getPageVPos() + 20. */ /* RUN vpr_setGroupVPos ( 'Zusatztext', iVPagePos ). */ /* DO i1 = 1 TO NUM-ENTRIES(cText, CHR(10)): */ /* RUN vpr_setCellText ( 'Bemerkung_1', 'Zusatztext', ENTRY(i1, cText, CHR(10)) ). */ /* RUN vpr_flushGroup ('Zusatztext'). */ /* END. */ /* END. */ /* Gebinderücknahmetabelle ------------------------------------------- */ iVPagePos = vpr_getPageVPos(). iVGroupPos = vpr_getGroupVPos('Gebindetabelle'). IF iVPagePos < iVGroupPos THEN RUN vpr_flushGroup('Gebindetabelle'). ELSE DO: RUN VIPER_NEUE_SEITE. RUN DRUCKEN_ADRESSE. RUN vpr_flushGroup('Gebindetabelle'). END. /* ------------------------------------------------------ */ /* Druckausgabe */ /* ------------------------------------------------------ */ RUN vpr_EndDoc. cvpr_Dokument = SUBSTITUTE('Lieferscheine\&1-&2_&3.vpr', STRING(bAufko.Knr ,'999999'), STRING(bAufko.Aufnr,'9999999'), tParam.cDokument). RUN vpr_SaveDoc ( cvpr_Dokument ). DO WHILE tParam.lDokDruck: IF NOT tParam.lBatch THEN DO: SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR. IF ERROR-STATUS:ERROR OR SESSION:PRINTER-NAME <> tParam.Drucker THEN DO: RUN vpr_printerDialog ( OUTPUT lJa ). IF NOT lJa THEN LEAVE. END. END. RUN vpr_printDoc (0, 0). LEAVE. END. IF tParam.lCreatePDF THEN DO: cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf'). RUN vpr_printPDF (0, 0, INPUT-OUTPUT cPDFName ). END. IF tParam.lOpenPDF THEN DO: DEF VAR o-i AS i NO-UNDO. FILE-INFO:FILE-NAME = cPDFName. cPDFName = FILE-INFO:FULL-PATHNAME. RUN shellExecuteA (0, "open", cPDFName, "", "", 0, OUTPUT o-i). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-DRUCKEN_ADRESSE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ADRESSE Procedure PROCEDURE DRUCKEN_ADRESSE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cZellen AS CHAR NO-UNDO. DEF VAR cWerte AS CHAR NO-UNDO. FIND FIRST tParam. FIND FIRST tDokument WHERE tDokument.cGruppe = 'KOPF' AND tDokument.iZeile = 1 AND tDokument.cFeld = 'Seite' NO-ERROR. IF NOT AVAILABLE tDokument THEN DO: CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Seite'. END. tDokument.cInhalt = STRING(iSeite,'z9'). cZellen = ''. cWerte = ''. FOR EACH tDokument WHERE tDokument.cGruppe = 'Kopf' BREAK BY tDokument.cGruppe BY tDokument.cFeld: cWerte = cWerte + tDokument.cInhalt. cZellen = cZellen + tDokument.cFeld. IF NOT LAST-OF ( tDokument.cGruppe ) THEN ASSIGN cWerte = cWerte + CHR(01) cZellen = cZellen + ','. END. RUN vpr_SetDelimiter (CHR(01)). RUN vpr_setGroupText ('Kopf', cZellen, cWerte). RUN vpr_FlushGroup ('Kopf'). IF iSeite = 1 THEN DO: cZellen = ''. cWerte = ''. FOR EACH tDokument WHERE tDokument.cGruppe = 'KopfDetail' BREAK BY tDokument.cGruppe BY tDokument.cFeld: cWerte = cWerte + tDokument.cInhalt. cZellen = cZellen + tDokument.cFeld. IF NOT LAST-OF ( tDokument.cGruppe ) THEN ASSIGN cWerte = cWerte + CHR(01) cZellen = cZellen + ','. END. RUN vpr_SetDelimiter (CHR(01)). RUN vpr_setGroupText ('KopfDetail', cZellen, cWerte). RUN vpr_FlushGroup ('KopfDetail'). END. RUN vpr_FlushGroup ('Fusstext'). RUN vpr_FlushGroup ('Ueberschrift'). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-DRUCKEN_KOPF) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure PROCEDURE DRUCKEN_KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cText AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR i1 AS INT NO-UNDO. FIND FIRST tParam. RUN VIPER_NEUE_SEITE. IF iSeite = 1 THEN DO: iFaknr = tParam.iAufnr. cBesrKopf = ''. IF bAufko.Adresse[05] <> '' THEN DO: i1 = 6. DO ii = 1 TO 5: CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Adresse_' + STRING((6 + ii),'99') tDokument.cInhalt = bAufko.Adresse[ii]. i1 = i1 + 1. cBesrKopf[i1] = bAufko.Adresse[ii]. END. END. ELSE DO: DO ii = 5 TO 11: CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Adresse_' + STRING(ii,'99') tDokument.cInhalt = bAdresse.Anschrift[ii]. cBesrKopf[ii] = bAdresse.Anschrift[ii]. END. END. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Ort_Datum' tDokument.cInhalt = TRIM(SUBSTRING(cFormText[07],01,20)) + " " + STRING(TODAY,"99.99.9999"). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'T_Dokument' tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0 THEN TRIM(SUBSTRING(cFormText[02],01,20)) ELSE TRIM(SUBSTRING(cFormText[02],21,20))). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Aufnr' tDokument.cInhalt = STRING(iFaknr,'z999999'). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPF' tDokument.iZeile = 1 tDokument.cFeld = 'Aufnr_Code' tDokument.cInhalt = '*' + TRIM(STRING(iFaknr,'z999999')) + '*'. FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'WISO' NO-ERROR. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Wirtesonntag' tDokument.cInhalt = (IF AVAILABLE tTabTexte THEN tTabTexte.cFeld3 ELSE ' '). FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Ablade' tDokument.cInhalt = (IF AVAILABLE tTabTexte THEN tTabTexte.cFeld3 ELSE ' '). FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'FAHRER' NO-ERROR. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Chauffeur' tDokument.cInhalt = (IF AVAILABLE tTabTexte THEN tTabTexte.cFeld1 ELSE ' '). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Auf_Datum' tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999'). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Lief_Datum' tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999'). CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'U_Ref' tDokument.cInhalt = bAufko.U_Ref. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Knr' tDokument.cInhalt = STRING(bAufko.Knr,'999999'). cText = ''. cText = (IF bAdresse.Tel-1 <> '' THEN bAdresse.Tel-1 ELSE bAdresse.Tel-2). IF bAdresse.Natel <> '' THEN cText = cText + (IF cText = '' THEN '' ELSE ' / ') + bAdresse.Natel. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Telefon' tDokument.cInhalt = cText. CREATE tDokument. ASSIGN tDokument.cGruppe = 'KOPFDETAIL' tDokument.iZeile = 1 tDokument.cFeld = 'Gewicht' tDokument.cInhalt = TRIM(STRING(nGewicht,'->>>,>>9.999')). END. RUN DRUCKEN_ADRESSE. IF iSeite <> 1 THEN RETURN. cText = bAufko.Abh_Text + (IF bAufko.Abh_Text <> '' THEN CHR(10) + CHR(10) ELSE '') + bAufko.Auf_Text. IF cText = '' THEN RETURN. iVPagePos = vpr_getPageVPos() + 20. RUN vpr_setGroupVPos ( 'Zusatztext' , iVPagePos ). RUN vpr_setCellText ( 'Bemerkung_1', 'Zusatztext', cText ). RUN vpr_flushGroup ( 'Zusatztext' ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-FUELLEN_tAufze) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tAufze Procedure PROCEDURE FUELLEN_tAufze : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR minPos AS INT NO-UNDO. DEF VAR maxPos AS INT NO-UNDO. DEF VAR jPlatz AS INT NO-UNDO. DEF VAR cLagOrt AS CHAR NO-UNDO. DEF VAR iRuestArt AS INT NO-UNDO. DEF VAR iPlusMinus AS INT NO-UNDO. DEF VAR lArtikel AS LOG NO-UNDO. FIND Steuer NO-LOCK WHERE Steuer.Firma = cFirma NO-ERROR. IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt. ASSIGN minPos = 0 maxPos = 9999 iPlusMinus = 0 nGewicht = 0. /* Kommentar zu Beginn eines Auftrages */ lArtikel = FALSE. FOR EACH tAufze NO-LOCK WHERE Aufze.Pos > minPos: IF tAufze.Artnr > 0 THEN DO: lArtikel = TRUE. LEAVE. END. minPos = tAufze.Pos. ASSIGN tAufze.Sort1 = STRING(0,'99') tAufze.Sort2 = '' tAufze.Sort3 = STRING(tAufze.Artnr ,'999999') + STRING(tAufze.Inhalt,'9999') + STRING(tAufze.Jahr ,'9999') + STRING(iPlusMinus ,'9') + STRING(tAufze.Pos ,'99999'). tAufze.LagOrt = ''. END. /* Artikelzeilen nach Ruestplatz und Ort */ cLagOrt = ''. FOR EACH tAufze WHERE tAufze.Pos > minPos AND tAufze.Pos < MaxPos BY tAufze.Pos DESCENDING: IF tAufze.Artnr > 0 THEN DO: FIND Artst NO-LOCK WHERE Artst.Firma = tAufze.Firma AND Artst.Artnr = tAufze.Artnr AND Artst.Inhalt = tAufze.Inhalt AND Artst.Jahr = tAufze.Jahr NO-ERROR. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = tAufze.Firma AND KGebinde.Geb_Cd = tAufze.KGeb_Cd NO-ERROR. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = tAufze.Firma AND VGebinde.Geb_Cd = tAufze.VGeb_Cd NO-ERROR. FIND GGebinde NO-LOCK WHERE GGebinde.Firma = tAufze.Firma AND GGebinde.Geb_Cd = tAufze.GGeb_Cd NO-ERROR. FIND ArtLager NO-LOCK WHERE ArtLager.Firma = tAufze.Firma AND ArtLager.Artnr = tAufze.Artnr AND ArtLager.Inhalt = tAufze.Inhalt AND ArtLager.Jahr = tAufze.Jahr AND ArtLager.Lager = tAufze.Lager. cLagOrt = ArtLager.Ort. tAufze.Gewicht = (Artst.Gewicht * tAufze.KGeb_Be) + (KGebinde.Gewicht * tAufze.KGeb_Be) + (VGebinde.Gewicht * tAufze.VGeb_Be) + (GGebinde.Gewicht * tAufze.GGeb_Be). nGewicht = nGewicht + tAufze.Gewicht. END. FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2 WHERE RuestPlatz.Firma = tAufze.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.abLagOrt <= cLagOrt NO-ERROR. IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90. ELSE jPlatz = RuestPlatz.Platz. ASSIGN tAufze.Sort1 = STRING(jPlatz,'99') tAufze.Sort2 = cLagOrt tAufze.Sort3 = STRING(tAufze.Artnr ,'999999') + STRING(tAufze.Inhalt,'9999') + STRING(tAufze.Jahr ,'9999') + STRING(iPlusMinus ,'9') + STRING(tAufze.Pos ,'99999'). tAufze.LagOrt = cLagort. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-VIPER_CREATE_DOKUMENT) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_CREATE_DOKUMENT Procedure PROCEDURE VIPER_CREATE_DOKUMENT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipGruppe AS CHAR NO-UNDO. DEF INPUT PARAMETER ipZeile AS INT NO-UNDO. DEF INPUT PARAMETER ipFeld AS CHAR NO-UNDO. DEF INPUT PARAMETER ipInhalt AS CHAR NO-UNDO. CREATE tDokument. ASSIGN tDokument.cGruppe = ipGruppe tDokument.iZeile = ipZeile tDokument.cFeld = ipFeld tDokument.cInhalt = ipInhalt. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-VIPER_INIT) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_INIT Procedure PROCEDURE VIPER_INIT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cTemplate AS CHAR NO-UNDO. DEF VAR cDokument AS CHAR NO-UNDO. DEF VAR cZellen AS CHAR NO-UNDO. DEF VAR cZelle AS CHAR NO-UNDO. DEF VAR cGruppe AS CHAR NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. FIND FIRST tParam. IF iLauf = 1 THEN DO: cTemplate = tParam.cInstall + '/' + tParam.cDokument + '.vfr'. RUN vpr_LoadVFR (cTemplate). RUN vpr_ActivateReport (tParam.cDokument). RUN vpr_SelectPrinter (tParam.Drucker). RUN vpr_setPrinterAttrib('duplex=1'). /* cString = SUBSTITUTE('copies=&1', tParam.Anzahl). */ RUN vpr_SetPrinterAttrib('copies=2'). RUN vpr_ResetDoc. RUN vpr_SetDocAttrib ('PAPERSIZE=A4'). RUN vpr_SetPreviewMode ('Direct'). RUN vpr_setDocTitle (tParam.cDokument). IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ). END. ELSE DO: RUN vpr_NewPage. IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie ). END. RUN vpr_InitGroups(""). RUN vpr_InitGraphObj. RUN vpr_SetGroupAttrib ("Kopf" , "Fixed=true"). RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true"). RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true"). iMaxPos = 2650. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-VIPER_NEUE_SEITE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_NEUE_SEITE Procedure PROCEDURE VIPER_NEUE_SEITE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR iPos AS INT NO-UNDO. FIND FIRST tParam. DO WHILE TRUE: IF iSeite = 0 THEN DO: RUN vpr_InitGroups(''). IF iLauf = iAnzDok THEN RUN vpr_initGraphObj. iSeite = iSeite + 1. LEAVE. END. RUN vpr_NewPage. RUN vpr_InitGroups(''). IF iLauf = 1 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ). ELSE RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie ). RUN vpr_initGraphObj. iSeite = iSeite + 1. LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF