&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 cExcelDocument AS CHAR NO-UNDO. DEF VAR cPDFDocument AS CHAR 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 . DEF VAR hExcel AS COM-HANDLE NO-UNDO. DEF VAR cZelle AS CHAR NO-UNDO. DEF VAR iZeile AS INT NO-UNDO. { incl/properties.i } { incl/ttdruckparam.i } 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 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 FIELD Aufnr AS INT FIELD Sort1 AS CHAR FIELD Sort2 AS CHAR FIELD Sort3 AS CHAR FIELD Artnr AS INT FIELD Inhalt AS INT FIELD Jahr AS INT FIELD Pos AS INT FIELD Zeile AS RECID FIELD Preis AS DEC DECIMALS 4 FIELD Aktion AS LOG FIELD LagOrt AS CHAR FIELD MGeli AS DEC FIELD MRuek AS DEC 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 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. /* _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 = 1 cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, cFirma, 'GEMIS_ERPDOKUMENTE' ) NO-ERROR. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma. AdFirma = bSteuer.AdFirma. RUN AUFTRAG_ERMITTELN. IF opcResult <> '' THEN RETURN. FOR EACH sAufko BY sAufko.iFak_Knr: FIND bAdresse NO-LOCK WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = sAufko.iFak_Knr. iSprcd = bAdresse.Sprcd. IF iSprcd <> 1 AND iSprcd <> 3 AND iSprcd <> 4 THEN iSprcd = 1. 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. DO iLauf = 1 TO iAnzDok: dFakDatum = TODAY. iSeite = 0. iFaknr = sAufko.iAufnr. lFirst = TRUE. lPreis = TRUE. lLast = FALSE. EMPTY TEMP-TABLE tTotale . CREATE tTotale. FOR EACH bAufko NO-LOCK WHERE bAufko.Firma = sAufko.cFirma AND bAufko.Aufnr = sAufko.iAufnr: EMPTY TEMP-TABLE tAufze . 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.Fak_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. /* Texte und Werte aus Tabelle 'Tabel' laden für RecArt */ /* FAKART, AUFSTATUS, LIEFART, FAHRER, WISO, ABLAD */ hAufko = BUFFER bAufko:HANDLE. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE. RUN CREATE_TABTEXTE ( hAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR. RUN FUELLEN_tAufze ( bAufko.Aufnr ) NO-ERROR. FOR EACH tAufze WHERE tAufze.Artnr > 0: FIND bAufze NO-LOCK WHERE RECID(bAufze) = tAufze.Zeile. /* Spezial-Auftragsrabatt pro Lieferschein bilden */ IF bAufze.Auf_Sp_Grp > 0 THEN DO: FIND FIRST tSpeRab WHERE tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp NO-ERROR. IF NOT AVAILABLE tSpeRab THEN DO: CREATE tSpeRab. ASSIGN tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp. END. tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bAufze.Auf_Sp_Rab. END. /* Summengruppen-Totale pro Lieferschein bilden */ DO WHILE bAufze.Rab_Su_Grp > 0: FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR. IF NOT AVAILABLE tRabSumm THEN DO: FIND FIRST RabSumm NO-LOCK WHERE RabSumm.Firma = bAufze.Firma AND RabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR. IF NOT AVAILABLE RabSumm THEN LEAVE. CREATE tRabSumm. ASSIGN tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp tRabSumm.Bez = RabSumm.Bez tRabSumm.Auf_Rab = 0 tRabSumm.Abh_Rab = 0. END. LEAVE. END. END. RUN DRUCKEN. REPEAT TRANSACTION: RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ). LEAVE. END. END. END. END. /* _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. FIND Aufze WHERE RECID(Aufze) = tAufze.Zeile NO-LOCK. DO WHILE Aufze.Artnr = 0: RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT Aufze.Bez1 ). IF Aufze.Bez2 = '' THEN RETURN. iZeile = iZeile + 1. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT Aufze.Bez2 ). RETURN. END. FIND Artst OF Aufze NO-LOCK. FIND GGebinde NO-LOCK WHERE GGebinde.Firma = cFirma AND GGebinde.Geb_Cd = Aufze.GGeb_Cd NO-ERROR. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = cFirma AND VGebinde.Geb_Cd = Aufze.VGeb_Cd NO-ERROR. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = cFirma AND KGebinde.Geb_Cd = Aufze.KGeb_Cd NO-ERROR. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B', INPUT iZeile, INPUT STRING(tAufze.Artnr,'999999') ). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT Aufze.Bez1 ). IF Aufze.Jahr > 9 THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G', INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ). IF Aufze.Alk_Gehalt <> 0 THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H', INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ). IF Aufze.VGeb_Me <> 0 THEN DO: cString = STRING(Aufze.VGeb_Me,'->>>') + 'x ' + STRING(VGebinde.KBez,'x(10)'). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I', INPUT iZeile, INPUT cString ). END. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J', INPUT iZeile, INPUT STRING(Aufze.MBest,'->>>>>9') ). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K', INPUT iZeile, INPUT KGebinde.KBez ). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT TRIM(STRING(Aufze.Gewicht,'->>>>>9.99 Kg')) ). IF Aufze.Bez2 <> '' THEN DO: iZeile = iZeile + 1. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT Aufze.Bez2 ). END. IF Aufze.Aktion THEN DO: iZeile = iZeile + 1. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT Aufze.Aktion_Text ). 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 */ IF tParam.lVonBis THEN DO: FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5 WHERE Aufko.Firma = tParam.cFirma AND Aufko.Knr >= tParam.iVonKnr AND Aufko.Knr <= tParam.iBisKnr AND Aufko.Lief_Datum = tParam.dVonDatum AND Aufko.Lief_Datum <= tParam.dBisDatum AND Aufko.Ku_Grp = 03 AND Aufko.Fak_Art = tParam.iFakArt AND Aufko.Auf_Sta = tParam.iAufSta: CREATE sAufko. ASSIGN sAufko.cFirma = Aufko.Firma sAufko.iAufnr = Aufko.Aufnr sAufko.iFak_Knr = Aufko.Fak_Knr sAufko.iSamm_Nr = 0 sAufko.iRecid = RECID(Aufko) sAufko.iFaknr = 0. END. END. ELSE DO: 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.iSamm_Nr = 0 sAufko.iRecid = RECID(Aufko) sAufko.iFaknr = 0. END. END. /* Alle Auftragstotale aller Lieferscheine neu rechnen */ FOR EACH sAufko: FOR EACH bAufko NO-LOCK WHERE bAufko.Firma = sAufko.cFirma AND bAufko.Samm_Nr = sAufko.iSamm_Nr AND bAufko.Fak_Knr = sAufko.iFak_Knr AND bAufko.Lief_Datum >= tParam.dvonDatum AND bAufko.Lief_Datum <= tParam.dbisDatum: 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-DRUCKEN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure PROCEDURE DRUCKEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ 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 nRabWert AS DEC NO-UNDO. DEF VAR iMwstCd AS INT NO-UNDO. DEF VAR nZeiTot AS DEC DECIMALS 4 NO-UNDO. DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR lInkl AS LOG NO-UNDO. DEF VAR cTel AS CHAR NO-UNDO. DEF VAR lRetVal AS LOG NO-UNDO. DEF VAR cDrucker AS CHAR NO-UNDO. DEF VAR cDevices AS CHAR NO-UNDO. FIND FIRST tParam. nFakBetr = 0. iZeile = 10. FIND bAdresse NO-LOCK WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. FIND LDebst NO-LOCK WHERE LDebst.Firma = cFirma AND LDebst.Knr = bAufko.Knr NO-ERROR. FIND FDebst NO-LOCK WHERE FDebst.Firma = cFirma AND FDebst.Knr = bAufko.Fak_Knr NO-ERROR. FIND Wust NO-LOCK WHERE Wust.CodeK = LDebst.MWST AND Wust.CodeA = 99 NO-ERROR. iSprcd = (IF bAdresse.Sprcd = 1 THEN 1 ELSE 4). FIND FIRST Tabel NO-LOCK WHERE Tabel.Firma = cFirma AND Tabel.Recart = 'PREGRP' AND Tabel.CodeI = bAufko.Preis_Grp NO-ERROR. IF AVAILABLE Tabel THEN DO: lInkl = (IF Tabel.Int_1 = 1 THEN TRUE ELSE FALSE). END. ELSE lInkl = FALSE. IF lInkl THEN cTel = (IF bAdresse.Tel-2 <> '' THEN bAdresse.Tel-2 ELSE bAdresse.Tel-1). ELSE cTel = (IF bAdresse.Tel-1 <> '' THEN bAdresse.Tel-1 ELSE bAdresse.Tel-2). IF iSeite = 0 THEN RUN EXCEL_INIT. IF RETURN-VALUE <> '' THEN DO: MESSAGE 'Problem beim Öffnen von Excel und/oder Vorlage' VIEW-AS ALERT-BOX. RETURN 'ERROR'. END. IF bAufko.Adresse[05] <> '' THEN DO: DO ii = 1 TO 5: RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I', INPUT iZeile, INPUT bAufko.Adresse[ii] ). iZeile = iZeile + 1. END. END. ELSE DO: DO ii = 7 TO 11: RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I', INPUT iZeile, INPUT bAdresse.Anschrift[ii] ). iZeile = iZeile + 1. END. END. cDaten = STRING(dFakDatum,'99.99.9999'). iZeile = 22. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT cDaten ). iZeile = 18. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D', INPUT iZeile, INPUT STRING(iFaknr,'>>999999') ). iZeile = 20. cDaten = TRIM(STRING(bAufko.Knr,'>>>>>>9')) + (IF cTel <> '' THEN ' / ' + cTel ELSE ''). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D', INPUT iZeile, INPUT cDaten ). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K', INPUT iZeile, INPUT bAufko.I_Best ). iZeile = 21. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D', INPUT iZeile, INPUT TRIM(STRING(bAufko.Gewicht,'->>,>>9.99 Kg')) ). iZeile = 22. FIND FIRST tTabTexte NO-LOCK WHERE tTabTexte.cRecart = 'LIEFART' NO-ERROR. cDaten = STRING(bAufko.Lief_Datum,'99.99.9999') +(IF AVAILABLE tTabTexte THEN ' / ' + tTabTexte.cFeld1 ELSE ''). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D', INPUT iZeile, INPUT cDaten ). iZeile = 25. FOR EACH tAufze NO-LOCK BY tAufze.Aufnr BY tAufze.Sort1 BY tAufze.LagOrt BY tAufze.Sort2 BY tAufze.Pos : FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile. RUN ARTIKELZEILE ( RECID(tAufze) ). iZeile = iZeile + 1. nFakBetr = nFakBetr + Aufze.Net_Betr. RELEASE Aufze. END. RUN SCHLUSS_TEXT_EXCEL. hExcel:ActiveWorkbook:SAVE( ). cDevices = SESSION:GET-PRINTERS(). cDevices = REPLACE(cDevices, ',', CHR(10)). IF tParam.lDokDruck THEN DO: DO ii = 1 TO NUM-ENTRIES(cDevices, CHR(10)): cDrucker = ENTRY(ii, cDevices, CHR(10)). IF cDrucker <> tParam.Drucker THEN NEXT. RUN CHECKPRINTER ( cDrucker , OUTPUT lRetVal ) NO-ERROR. LEAVE. END. IF lRetVal THEN DO: MESSAGE 'gewählter Drucker kann nicht angesprochen werden' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. END. END. IF tParam.lCreatePDF THEN DO: /* cPDFDocument = REPLACE(cExcelDocument, 'xls', 'pdf'). */ /* IF cPDFDocument <> ? THEN DO: */ /* DO WHILE SEARCH(cPDFDocument) <> ?: */ /* ii = ETIME(TRUE). */ /* OS-DELETE VALUE(cPDFDocument) NO-ERROR. */ /* DO WHILE ETIME(FALSE) < 100: */ /* END. */ /* END. */ /* END. */ /* lRetVal = TRUE. */ /* DO ii = 1 TO NUM-ENTRIES(cDevices, CHR(10)): */ /* cDrucker = ENTRY(ii, cDevices, CHR(10)). */ /* IF INDEX(cDrucker, 'PDF') = 0 THEN NEXT. */ /* IF INDEX(cDrucker, 'FAX') > 0 THEN NEXT. */ /* RUN CHECKPRINTER ( cDrucker , OUTPUT lRetVal ) NO-ERROR. */ /* LEAVE. */ /* END. */ /* IF lRetVal THEN DO: */ /* MESSAGE 'Kein PDF-Drucker gefunden' */ /* VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */ /* END. */ /* */ /* cDrucker = SESSION:PRINTER-NAME + ' auf ' + SESSION:PRINTER-PORT. */ /* hExcel:APPLICATION:ActivePrinter = cDrucker NO-ERROR. */ /* IF ERROR-STATUS:ERROR THEN DO: */ /* cDrucker = SESSION:PRINTER-NAME + ' on ' + SESSION:PRINTER-PORT. */ /* hExcel:APPLICATION:ActivePrinter = cDrucker NO-ERROR. */ /* END. */ /* IF ERROR-STATUS:ERROR THEN DO: */ /* hExcel:VISIBLE = TRUE. */ /* MESSAGE 'Kann ' cDrucker */ /* ' nicht dem Excel zuweisen ' VIEW-AS ALERT-BOX. */ /* END. */ /* ELSE DO: */ /* hExcel:ActiveWorkbook:PrintOut (1, TRUE). */ /* END. */ END. IF tParam.lVonBis AND tParam.lDokDruck THEN DO: hExcel:ActiveWindow:SelectedSheets:PrintOut ( 1, 2, 1, FALSE, tParam.Drucker, FALSE, FALSE, '', TRUE ). /* hExcel:ActiveWorkbook:PrintOut ( 1, TRUE, FALSE ).*/ hExcel:ActiveWorkbook:Close( FALSE ). END. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT hExcel ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-EXCEL_INIT) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL_INIT Procedure PROCEDURE EXCEL_INIT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cVorlage AS CHAR NO-UNDO. DEF VAR cPfad AS CHAR NO-UNDO. DEF VAR lRetVal AS LOG NO-UNDO. DEF VAR xTemplate AS CHAR NO-UNDO. DEF VAR xDokument AS CHAR NO-UNDO. DEF VAR xSprcd AS INT NO-UNDO. FIND FIRST tParam. hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'. xSprcd = (IF iSprcd > 4 THEN 4 ELSE iSprcd). cPfad = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'EXCEL_FORMULARE') NO-ERROR. IF cPfad = ? THEN cPfad = ''. IF cPfad = '' THEN cPfad = SESSION:TEMP-DIR. ELSE DO: FILE-INFO:FILE-NAME = cPfad. cPfad = FILE-INFO:FULL-PATHNAME. cPfad = REPLACE(cPfad, '\', '/'). END. xTemplate = SUBSTITUTE(tParam.Template, STRING(bAufko.Ku_Grp,'99'), STRING(iSprcd,'99') ). xDokument = SUBSTITUTE(tParam.Template, STRING(bAufko.Aufnr ,'9999999'), STRING(bAufko.Knr,'999999') ). cVorlage = xDokument + CHR(01) + 'viper\realwines\' + xTemplate + CHR(01) + cPfad. RUN CREATEDATEI ( INPUT cVorlage ). cExcelDocument = RETURN-VALUE. IF cExcelDocument BEGINS 'ERROR' THEN DO: MESSAGE 'Keine gültige Vorlage gefunden ' cVorlage VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. RETURN 'ERROR'. END. cExcelDocument = REPLACE(cExcelDocument, '.\' , ''). cExcelDocument = REPLACE(cExcelDocument, '..\', ''). FILE-INFO:FILE-NAME = cExcelDocument NO-ERROR. cExcelDocument = FILE-INFO:FULL-PATHNAME. RUN OPENEXCEL ( INPUT hExcel, INPUT cExcelDocument, INPUT '', OUTPUT lRetVal ). IF NOT lRetVal THEN DO: IF VALID-HANDLE(hExcel) THEN RUN RELEASEEXCEL ( INPUT hExcel ). RETURN 'ERROR'. END. RETURN ''. 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 INPUT PARAMETER ipAufnr AS INT NO-UNDO. 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. EMPTY TEMP-TABLE tAufze. FIND Steuer NO-LOCK WHERE Steuer.Firma = cFirma NO-ERROR. IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt. ASSIGN minPos = 0 maxPos = 9999 iPlusMinus = 0. /* Kommentar zu Beginn eines Auftrages */ lArtikel = FALSE. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = cFirma AND Aufze.Aufnr = ipAufnr AND Aufze.Pos > minPos: IF Aufze.Artnr > 0 THEN DO: lArtikel = TRUE. LEAVE. END. minPos = Aufze.Pos. CREATE tAufze. ASSIGN tAufze.Aufnr = Aufze.Aufnr tAufze.Artnr = Aufze.Artnr tAufze.Inhalt = Aufze.Inhalt tAufze.Jahr = Aufze.Jahr tAufze.Pos = Aufze.Pos tAufze.Zeile = RECID(Aufze) tAufze.Aktion = Aufze.Aktion tAufze.Preis = Aufze.Preis tAufze.MGeli = Aufze.MGeli tAufze.MRuek = Aufze.MRuek. 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. /* Kommentar am Ende eines Auftrages */ IF lArtikel THEN DO: FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = cFirma AND Aufze.Aufnr = ipAufnr BY Aufze.Pos DESCENDING: IF Aufze.Artnr > 0 THEN LEAVE. maxPos = Aufze.Pos. CREATE tAufze. ASSIGN tAufze.Aufnr = Aufze.Aufnr tAufze.Artnr = Aufze.Artnr tAufze.Inhalt = Aufze.Inhalt tAufze.Jahr = Aufze.Jahr tAufze.Pos = Aufze.Pos tAufze.Zeile = RECID(Aufze) tAufze.Aktion = Aufze.Aktion tAufze.Preis = Aufze.Preis tAufze.MGeli = Aufze.MGeli tAufze.MRuek = Aufze.MRuek. 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. END. /* Artikelzeilen nach Ruestplatz und Ort */ cLagOrt = ''. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = cFirma AND Aufze.Aufnr = ipAufnr AND Aufze.Pos > minPos AND Aufze.Pos < MaxPos BY Aufze.Pos DESCENDING: IF Aufze.Artnr > 0 THEN DO: FIND ArtLager NO-LOCK WHERE ArtLager.Firma = Aufze.Firma AND ArtLager.Artnr = Aufze.Artnr AND ArtLager.Inhalt = Aufze.Inhalt AND ArtLager.Jahr = Aufze.Jahr AND ArtLager.Lager = Aufze.Lager. cLagOrt = ArtLager.Ort. END. iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0). FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2 WHERE RuestPlatz.Firma = Aufze.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.abLagOrt <= cLagOrt NO-ERROR. IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90. ELSE jPlatz = RuestPlatz.Platz. CREATE tAufze. ASSIGN tAufze.Aufnr = Aufze.Aufnr tAufze.Artnr = Aufze.Artnr tAufze.Inhalt = Aufze.Inhalt tAufze.Jahr = Aufze.Jahr tAufze.Pos = Aufze.Pos tAufze.Zeile = RECID(Aufze) tAufze.Aktion = Aufze.Aktion tAufze.Preis = Aufze.Preis tAufze.MGeli = Aufze.MGeli tAufze.MRuek = Aufze.MRuek. 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. IF tAufze.Artnr > 0 AND tAufze.MGeli = 0 THEN DELETE tAufze. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-GEBINDE_ABRECHNUNG) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_ABRECHNUNG Procedure PROCEDURE GEBINDE_ABRECHNUNG : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR lTotal AS LOG NO-UNDO. DEF VAR nBetrag AS DEC NO-UNDO. DEF VAR i1 AS INT NO-UNDO. DEF VAR i2 AS INT NO-UNDO. DEF VAR iMwstCd AS INT NO-UNDO. DEF VAR nZTot AS DEC NO-UNDO. lTotal = FALSE. i2 = 0. nZTot = 0. FOR EACH AufGKon NO-LOCK WHERE AufGKon.Firma = BAufko.Firma AND AufGKon.Aufnr = BAufko.Aufnr AND AufGKon.Gebuehr <> 0 AND AufGKon.Betrag <> 0 : iMwstCd = AufGKon.MWST_Cd. IF i2 = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. FIND GebKonto NO-LOCK WHERE GebKonto.Firma = cFirma AND GebKonto.Geb_Cd = AufGKon.Geb_Cd. i1 = AufGKon.Ausgang. IF AufGKon.Depot = 0 AND AufGKon.Gebuehr = 0 THEN nBetrag = GebKonto.Depot + GebKonto.Gebuehr. ELSE nBetrag = AufGKon.Depot + AufGKon.Gebuehr. Rundbetr = i1 * nBetrag. iMwstCd = AufGKon.MWSt_Cd. nZTot = nZTot + Rundbetr. cDaten = GebKonto.Bez. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nBetrag,"->>>>9.999")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(iMwstCd,"z9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N', INPUT iZeile, INPUT cDaten ). i2 = i2 + 1. END. IF i2 > 0 THEN lTotal = TRUE. IF lTotal THEN DO: iZeile = iZeile + 2. cDaten = TRIM(SUBSTRING(cFormText[11],21,20)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cdaten = TRIM(STRING(nZTot,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). nFakBetr = nFakBetr + nZTot. END. RELEASE AufGKon. lTotal = FALSE. i2 = 0. nZTot = 0. FOR EACH AufGKon NO-LOCK WHERE AufGKon.Firma = BAufko.Firma AND AufGKon.Aufnr = BAufko.Aufnr AND AufGKon.Depot <> 0 : IF AufGKon.Eingang = 0 AND AufGKon.Ausgang = 0 THEN NEXT. IF i2 = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. FIND GebKonto NO-LOCK WHERE GebKonto.Firma = cFirma AND GebKonto.Geb_Cd = AufGKon.Geb_Cd. i1 = AufGKon.Ausgang. IF AufGKon.Depot = 0 AND AufGKon.Gebuehr = 0 THEN nBetrag = GebKonto.Depot + GebKonto.Gebuehr. ELSE nBetrag = AufGKon.Depot + AufGKon.Gebuehr. Rundbetr = i1 * nBetrag. iMwstCd = AufGKon.MWSt_Cd. nZTot = nZTot + Rundbetr. cDaten = GebKonto.Bez. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nBetrag,"->>>>9.999")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(iMwstCd,"z9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N', INPUT iZeile, INPUT cDaten ). i2 = i2 + 1. END. IF i2 > 0 THEN lTotal = TRUE. IF lTotal THEN DO: iZeile = iZeile + 2. cDaten = TRIM(SUBSTRING(cFormText[11],21,20)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cdaten = TRIM(STRING(nZTot,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). nFakBetr = nFakBetr + nZTot. END. IF lTotal THEN DO: iZeile = iZeile + 2. cDaten = TRIM(SUBSTRING(cFormText[15],21,20)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-GEBINDE_SALDO) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_SALDO Procedure PROCEDURE GEBINDE_SALDO : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FOR EACH AufGKon NO-LOCK WHERE AufGKon.Firma = BAufko.Firma AND AufGKon.Aufnr = BAufko.Aufnr AND AufGKon.Depot <> 0 AND AufGKon.Betrag <> 0 : FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = AufGKon.Geb_Cd NO-ERROR. IF NOT AVAILABLE tGebKto THEN DO: FIND GebKonto NO-LOCK WHERE GebKonto.Firma = AufGKon.Firma AND GebKonto.Geb_Cd = AufGKon.Geb_Cd . CREATE tGebKto. ASSIGN tGebKto.Sort_Cd = GebKonto.Sort_Cd tGebKto.Geb_Cd = GebKonto.Geb_Cd tGebKto.Bez = GebKonto.Bez tGebKto.Preis = AufGKon.Depot tGebKto.MWST_Cd = AufGKon.MWSt_Cd. END. tGebKto.A_Anz = tGebKto.A_Anz + AufGKon.Ausgang. tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis. tGebKto.E_Anz = tGebKto.E_Anz + AufGKon.Eingang. tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-MEHRWERTSTEUER) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE MEHRWERTSTEUER Procedure PROCEDURE MEHRWERTSTEUER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. iZeile = iZeile + 1. DO ix = 1 TO 11: IF bAufko.Wpfl[ix] = 0 THEN NEXT. FIND LAST MWSTAns USE-INDEX MWSTAns-k1 WHERE MWSTAns.MWST_Cd = ix AND MWSTAns.Datum <= BAUfko.Kond_Datum NO-LOCK. iZeile = iZeile + 1. cDaten = (IF bAufko.Wust[ix] = 0 THEN cFormText[19] ELSE cFormText[20]). cDaten = SUBSTITUTE(cDaten, TRIM(STRING(MWSTAns.Ansatz,'>>9.99%'))). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(ix,"z9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N', INPUT iZeile, INPUT cDaten ). nFakBetr = nFakBetr + bAufko.Wust[ix]. END. Rundbetr = nFakBetr. Rundcode = 1. RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ). nFakBetr = Rundbetr. iZeile = iZeile + 2. cDaten = TRIM(cFormText[16]). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-SCHLUSS_TEXT_EXCEL) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHLUSS_TEXT_EXCEL Procedure PROCEDURE SCHLUSS_TEXT_EXCEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cTextArt AS CHAR NO-UNDO. DEF VAR cTabTexte AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. cTextArt = 'DOK' + STRING(bAufko.Fak_Art,'99'). FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1 WHERE TabTexte.Firma = cFirma AND TabTexte.TextArt = cTextArt AND TabTexte.Sprcd = iSprcd NO-ERROR. IF NOT AVAILABLE TabTexte THEN RETURN. iZeile = iZeile + 1. cTabTexte = TabTexte.Inhalt. DO ix = 1 TO NUM-ENTRIES(cTabTexte, CHR(10)): iZeile = iZeile + 1. cTextArt = ENTRY(ix, cTabTexte, CHR(10)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cTextArt ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-SUMMENRABATTE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SUMMENRABATTE Procedure PROCEDURE SUMMENRABATTE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR RText AS CHAR FORMAT "x(20)" NO-UNDO. DEF VAR WText AS CHAR NO-UNDO. DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR lTotal AS LOG NO-UNDO. DEF VAR lRabatt AS LOG NO-UNDO. DEF VAR iPlus AS INT NO-UNDO. DEF VAR nRabWert AS DEC NO-UNDO. DEF VAR iMwstCd AS INT NO-UNDO. /* Auftragsrabatt ---------------------------------------------------- */ lTotal = FALSE. iPlus = 0. FOR EACH tRabSumm WHERE tRabSumm.Auf_Rab <> 0 BY tRabSumm.Rab_Summ: Rundbetr = tRabSumm.Auf_Rab. nFakBetr = nFakBetr - Rundbetr. IF NOT lRabatt THEN NEXT. IF iPlus = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. IF Rundbetr < 0 THEN RText = cZusText. ELSE RText = cRabText. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1 WHERE AufRabSu.Firma = bAufko.Firma AND AufRabSu.Aufnr = bAufko.Aufnr AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ. IF AufRabSu.F_Proz_Betr THEN WText = "%". ELSE WText = "Fr.". nRabWert = ABSOLUT(AufRabSu.F_Wert). cDaten = RText + " " + tRabSumm.Bez + " " + STRING(nRabWert,"z9.99- ") + WText. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = STRING(- Rundbetr,"->>>>9.99"). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). iPlus = iPlus + 1. END. IF iPlus > 0 THEN lTotal = TRUE. /* Abholrabatt ------------------------------------------------------- */ iPlus = 0. FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0 BY tRabSumm.Rab_Summ: Rundbetr = tRabSumm.Abh_Rab. nFakBetr = nFakBetr - Rundbetr. IF NOT lRabatt THEN NEXT. IF iPlus = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. IF Rundbetr < 0 THEN RText = cZusText. ELSE RText = cRabText. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1 WHERE AufRabSu.Firma = bAufko.Firma AND AufRabSu.Aufnr = bAufko.Aufnr AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ. IF AufRabSu.A_Proz_Betr THEN WText = "%". ELSE WText = "Fr.". nRabWert = ABSOLUT(AufRabSu.A_Wert). cDaten = RText + " " + tRabSumm.Bez + " " + STRING(nRabWert,"z9.99- ") + WText. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = STRING(- Rundbetr,"->>>>9.99"). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). iPlus = iPlus + 1. END. IF iPlus > 0 THEN lTotal = TRUE. /* Spezialpreis-Auftragsrabatte ---------------------------------------- */ iPlus = 0. FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0 BY tSpeRab.Rab_Grp: Rundbetr = tSpeRab.Auf_Betr. nFakBetr = nFakBetr - Rundbetr. IF NOT lRabatt THEN NEXT. IF iPlus = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. IF Rundbetr < 0 THEN RText = cZusText. ELSE RText = cRabText. FIND Tabel NO-LOCK WHERE Tabel.Firma = cFirma AND Tabel.RecArt = 'ARABGRP' AND Tabel.CodeC = '' AND Tabel.CodeI = tSpeRab.Rab_Grp AND Tabel.Sprcd = 1 . FIND FIRST AufSpRab NO-LOCK WHERE AufSpRab.Firma = bAufko.Firma AND AufSpRab.Aufnr = bAufko.Aufnr AND AufSpRab.Rab_Grp = tSpeRab.Rab_Grp. IF AufSpRab.Auf_Proz_Betr THEN WText = "%". ELSE WText = "Fr.". nRabWert = ABSOLUT(AufSpRab.Auf_Wert). cDaten = RText + " " + tRabSumm.Bez + " " + STRING(nRabWert,"z9.99- ") + WText. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = STRING(- Rundbetr,"->>>>9.99"). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). iPlus = iPlus + 1. END. IF iPlus > 0 THEN lTotal = TRUE. IF lTotal THEN DO: iZeile = iZeile + 1. cDaten = TRIM(SUBSTRING(cFormText[14],21,20)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). END. /* Recycling-Gebühren ------------------------------------------------ */ lTotal = FALSE. iPlus = 0. FOR EACH AufGKon NO-LOCK WHERE AufGKon.Firma = bAufko.Firma AND AufGKon.Aufnr = bAufko.Aufnr AND AufGKon.Gebuehr <> 0 AND AufGKon.Betrag <> 0 : nFakBetr = nFakBetr + AufGKon.Betrag. IF NOT lRabatt THEN NEXT. IF iPlus = 0 THEN iZeile = iZeile + 2. ELSE iZeile = iZeile + 1. iMwstCd = AufGKon.MWSt_Cd. FIND GebKonto OF AufGKon NO-LOCK NO-ERROR. IF NOT AVAILABLE GebKonto THEN cDaten = TRIM(SUBSTRING(cFormText[11],41,20)). ELSE cDaten = GebKonto.Bez. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N', INPUT iZeile, INPUT cDaten ). iPlus = iPlus + 1. END. IF iPlus > 0 THEN lTotal = TRUE. IF lTotal THEN DO: iZeile = iZeile + 1. cDaten = TRIM(SUBSTRING(cFormText[14],21,20)). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C', INPUT iZeile, INPUT cDaten ). cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")). RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M', INPUT iZeile, INPUT cDaten ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF