浏览代码

Im Projekt den Ordner GUI entfernt

walter.riechsteiner 2 月之前
父节点
当前提交
77fc79cef6
共有 100 个文件被更改,包括 0 次插入116680 次删除
  1. 0 14
      GUI/AllowCertificatePolicy.cls
  2. 0 401
      GUI/ArtikelBestandRechnen.p
  3. 0 532
      GUI/DigitalDrink/TEST_Absatz_Abschluss.p
  4. 0 27
      GUI/DigitalDrink/Test_ddArtikelexport.p
  5. 0 4
      GUI/DigitalDrink/compile.p
  6. 0 527
      GUI/DigitalDrink/ddabsatzzahlen.p
  7. 0 195
      GUI/DigitalDrink/ddaktionenexport.p
  8. 0 354
      GUI/DigitalDrink/ddartikelexport.p
  9. 0 329
      GUI/DigitalDrink/ddinhaltsstoffe.p
  10. 0 39
      GUI/DigitalDrink/ttDDArtikel.i
  11. 0 10
      GUI/DigitalDrink/ttinhaltsstoffe.i
  12. 0 2284
      GUI/DruckProgramme/Huber/Auftragsschein.p
  13. 0 2161
      GUI/DruckProgramme/Huber/Faktura.p
  14. 0 2110
      GUI/DruckProgramme/Huber/FestFaktura.p
  15. 0 2295
      GUI/DruckProgramme/Huber/FestSammelRechnung.p
  16. 0 874
      GUI/DruckProgramme/Huber/Ladeschein.p
  17. 0 2257
      GUI/DruckProgramme/Huber/LieferFak.p
  18. 0 99
      GUI/DruckProgramme/Huber/LieferPreis.p
  19. 0 1872
      GUI/DruckProgramme/Huber/Lieferschein.p
  20. 0 43
      GUI/DruckProgramme/Huber/Mail-Lieferschein-1.html
  21. 0 6
      GUI/DruckProgramme/Huber/Mail-Protokoll-Tabelle.html
  22. 0 21
      GUI/DruckProgramme/Huber/Mail-Protokoll.html
  23. 0 41
      GUI/DruckProgramme/Huber/Mail-Rechnung-1.html
  24. 0 1309
      GUI/DruckProgramme/Huber/Offerte.p
  25. 0 1160
      GUI/DruckProgramme/Huber/Palettenschein.p
  26. 0 1565
      GUI/DruckProgramme/Huber/Ruecknahme.p
  27. 0 2327
      GUI/DruckProgramme/Huber/SammelRechnung.p
  28. 0 2082
      GUI/DruckProgramme/Huber/Sav_Faktura.p
  29. 0 2179
      GUI/DruckProgramme/Huber/Sav_FestSammelRechnung.p
  30. 0 2176
      GUI/DruckProgramme/Huber/Sav_LieferFak.p
  31. 0 2245
      GUI/DruckProgramme/Huber/Sav_SammelRechnung.p
  32. 0 2525
      GUI/DruckProgramme/LaTorre/Faktura.p
  33. 0 2296
      GUI/DruckProgramme/LaTorre/LieferFak.p
  34. 0 99
      GUI/DruckProgramme/LaTorre/LieferPreis.p
  35. 0 1706
      GUI/DruckProgramme/LaTorre/Lieferschein.p
  36. 0 6
      GUI/DruckProgramme/LaTorre/Mail-Protokoll-Tabelle.html
  37. 0 21
      GUI/DruckProgramme/LaTorre/Mail-Protokoll.html
  38. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-1.html
  39. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-2.html
  40. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-3.html
  41. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-4.html
  42. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-5.html
  43. 0 39
      GUI/DruckProgramme/LaTorre/Mail-Rechnung-6.html
  44. 0 1273
      GUI/DruckProgramme/LaTorre/Offerte.p
  45. 0 2478
      GUI/DruckProgramme/LaTorre/SammelRechnung.p
  46. 0 2317
      GUI/DruckProgramme/LaTorre/Sav_Faktura.p
  47. 0 2354
      GUI/DruckProgramme/LaTorre/Sav_SammelRechnung.p
  48. 0 2200
      GUI/DruckProgramme/california/Faktura.p
  49. 0 2165
      GUI/DruckProgramme/california/Sav_Faktura.p
  50. 0 2199
      GUI/DruckProgramme/oswald/Faktura.p
  51. 0 2197
      GUI/DruckProgramme/oswald/LieferFak.p
  52. 0 101
      GUI/DruckProgramme/oswald/LieferPreis.p
  53. 0 1836
      GUI/DruckProgramme/oswald/Lieferschein.p
  54. 0 39
      GUI/DruckProgramme/oswald/Mail-Rechnung-1.html
  55. 0 1211
      GUI/DruckProgramme/oswald/Offerte.p
  56. 0 2212
      GUI/DruckProgramme/oswald/SammelRechnung.p
  57. 0 2165
      GUI/DruckProgramme/oswald/Sav_Faktura.p
  58. 0 2131
      GUI/DruckProgramme/oswald/Sav_SammelRechnung.p
  59. 0 1568
      GUI/DruckProgramme/realwines/Faktura.p
  60. 0 2102
      GUI/DruckProgramme/realwines/Faktura_pdf.p
  61. 0 1425
      GUI/DruckProgramme/realwines/Lieferschein.p
  62. 0 1296
      GUI/DruckProgramme/realwines/Offerte.p
  63. 0 2046
      GUI/DruckProgramme/realwines/Sav_Faktura_pdf.p
  64. 0 2525
      GUI/DruckProgramme/sanmartino/Faktura.p
  65. 0 1211
      GUI/DruckProgramme/sanmartino/Offerte.p
  66. 0 2314
      GUI/DruckProgramme/sanmartino/SammelRechnung.p
  67. 0 2398
      GUI/DruckProgramme/sanmartino/Sav_Faktura.p
  68. 0 2224
      GUI/DruckProgramme/sanmartino/Sav_SammelRechnung.p
  69. 0 2394
      GUI/DruckProgramme/wiederkehr/Faktura.p
  70. 0 2338
      GUI/DruckProgramme/wiederkehr/FestRechnung.p
  71. 0 2461
      GUI/DruckProgramme/wiederkehr/Kasse.p
  72. 0 2478
      GUI/DruckProgramme/wiederkehr/LieferFak.p
  73. 0 97
      GUI/DruckProgramme/wiederkehr/LieferPreis.p
  74. 0 2041
      GUI/DruckProgramme/wiederkehr/Lieferschein.p
  75. 0 1211
      GUI/DruckProgramme/wiederkehr/Offerte.p
  76. 0 1589
      GUI/DruckProgramme/wiederkehr/Ruecknahme.p
  77. 0 2318
      GUI/DruckProgramme/wiederkehr/SammelRechnung.p
  78. 0 2361
      GUI/DruckProgramme/wiederkehr/Sav_Faktura.p
  79. 0 2225
      GUI/DruckProgramme/wiederkehr/Sav_FestRechnung.p
  80. 0 2430
      GUI/DruckProgramme/wiederkehr/Sav_LieferFak.p
  81. 0 2215
      GUI/DruckProgramme/wiederkehr/Sav_SammelRechnung.p
  82. 0 17
      GUI/FRAMEWORK.ds
  83. 0 4
      GUI/Femeld.mut
  84. 0 17
      GUI/Ge_MIS.ds
  85. 0 132
      GUI/GetRestDataJSON.p
  86. 0 91
      GUI/POST_HTTP-REQUEST.p
  87. 0 686
      GUI/REORG_HUBER.p
  88. 0 217
      GUI/RenameDokumente.p
  89. 0 1678
      GUI/SESAMSQL.p
  90. 0 2117
      GUI/SESAMSQL_SPEZ.p
  91. 0 193
      GUI/SendMailStart.p
  92. 0 1
      GUI/TRIGGERS/t-RuestSav-delete.p
  93. 0 171
      GUI/TRIGGERS/t-adresse-write.p
  94. 0 121
      GUI/TRIGGERS/t-ansprech-delete.p
  95. 0 156
      GUI/TRIGGERS/t-ansprech-write.p
  96. 0 113
      GUI/TRIGGERS/t-artbez-write.p
  97. 0 18
      GUI/TRIGGERS/t-artlager-delete.p
  98. 0 47
      GUI/TRIGGERS/t-artlager-write.p
  99. 0 196
      GUI/TRIGGERS/t-artlief-write.p
  100. 0 135
      GUI/TRIGGERS/t-artst-write.p

+ 0 - 14
GUI/AllowCertificatePolicy.cls

@@ -1,14 +0,0 @@
-USING System.Net.*.
-USING System.Net.ServicePointManager.*.
-USING System.Security.Cryptography.X509Certificates.*.
-
-CLASS AllowCertificatePolicy IMPLEMENTS ICertificatePolicy:
-    METHOD PUBLIC LOGICAL CheckValidationResult ( INPUT poSrvPoint           AS ServicePoint,
-        INPUT poCertificate        AS X509Certificate,
-        INPUT poRequest            AS WebRequest,
-        INPUT piCertificateProblem AS INTEGER ):
-        RETURN TRUE.
-		
-    END METHOD.
-END CLASS.
-    

+ 0 - 401
GUI/ArtikelBestandRechnen.p

@@ -1,401 +0,0 @@
-&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 VAR cParam     AS CHAR NO-UNDO.
-DEF VAR cFirma     AS CHAR NO-UNDO.
-DEF VAR iVonArtnr  AS INT  NO-UNDO.
-DEF VAR iBisArtnr  AS INT  NO-UNDO.
-DEF VAR iVonInhalt AS INT  NO-UNDO.
-DEF VAR iBisInhalt AS INT  NO-UNDO.
-DEF VAR iVonJahr   AS INT  NO-UNDO.
-DEF VAR iBisJahr   AS INT  NO-UNDO.
-DEF VAR cBenutzer  AS CHAR INIT 'Batch' NO-UNDO.
-
-DEF VAR cLogName   AS CHAR NO-UNDO.
-DEF STREAM LogStream.
-
-DEF TEMP-TABLE tBestand
-    FIELD Lager       AS INT
-    FIELD ilRecid     AS RECID
-    FIELD iaRecid     AS RECID
-    FIELD Inv_Datum   AS DATE
-    FIELD Inv_Bestand AS DEC
-    FIELD Eingang     AS DEC
-    FIELD Ausgang     AS DEC
-    FIELD iTrnr       AS INT
-    .
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-    ( ipMessage AS CHAR  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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              = 61.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-DEF VAR cMessage AS CHAR NO-UNDO.
-    
-cLogName = DYNAMIC-FUNCTION('getLogName':U) NO-ERROR.
-    
-cParam = SESSION:PARAMETER.
-ASSIGN  
-    cFirma     = ENTRY(1, cParam, ';')
-    iVonArtnr  = INTEGER(ENTRY(2, cParam, ';'))
-    iBisArtnr  = INTEGER(ENTRY(3, cParam, ';'))
-    iVonInhalt = INTEGER(ENTRY(4, cParam, ';'))
-    iBisInhalt = INTEGER(ENTRY(5, cParam, ';'))
-    iVonJahr   = INTEGER(ENTRY(6, cParam, ';'))
-    iBisJahr   = INTEGER(ENTRY(7, cParam, ';')).
-
-cMessage = SUBSTITUTE('Start der Bestandeskorrektur am &1 um &2 für Firma &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), cFirma).
-cMessage = cMessage + SUBSTITUTE(' mit Parameter -> &1-&2 / &3-&4 / &5-&6'   , iVonArtnr, iBisArtnr, iVonInhalt, iBisInhalt, iVonJahr, iBisJahr).
-DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-RUN RECHNEN.
-    
-cMessage = SUBSTITUTE('Ende  der Bestandeskorrektur am &1 um &2 für Firma &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), cFirma).
-DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-RUN KUNBESTBEREINIGEN.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-KUNBESTBEREINIGEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KUNBESTBEREINIGEN Procedure 
-PROCEDURE KUNBESTBEREINIGEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    FOR EACH KunBest
-        WHERE KunBest.Firma = cFirma:
-        FIND Artst NO-LOCK OF KunBest NO-ERROR.
-        IF NOT AVAILABLE Artst THEN 
-        DO:
-            DELETE KunBest.
-            NEXT.
-        END.
-        IF NOT Artst.Aktiv THEN 
-        DO:
-            DELETE KunBest.
-            NEXT.
-        END.
-        IF Artst.Ausverk <> 9 THEN NEXT.
-        DELETE KunBest.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-RECHNEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RECHNEN Procedure 
-PROCEDURE RECHNEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR VInvBest    AS DEC  DECIMALS 4 NO-UNDO.
-    DEF VAR VEingang    AS DEC  DECIMALS 4 NO-UNDO.
-    DEF VAR VAusgang    AS DEC  DECIMALS 4 NO-UNDO.
-    DEF VAR VDatum      AS DATE NO-UNDO.
-    DEF VAR nOldBestand AS DEC  DECIMALS 4 NO-UNDO.
-    DEF VAR cString     AS CHAR NO-UNDO.
-    
-    DEF BUFFER bArtLager FOR ArtLager.
-    DEF BUFFER bArtst    FOR Artst   .
-    DEF BUFFER bArtbw    FOR Artbw   .
-
-    DISABLE TRIGGERS FOR LOAD OF Artst   .
-    DISABLE TRIGGERS FOR LOAD OF ArtLager.
-
-    FOR EACH bArtst NO-LOCK
-        WHERE bArtst.Firma   = cFirma
-        AND   bArtst.Artnr  >= iVonArtnr
-        AND   bArtst.Artnr  <= iBisArtnr
-        AND   bArtst.Inhalt >= iVonInhalt
-        AND   bArtst.Inhalt <= iBisInhalt
-        AND   bArtst.Jahr   >= iVonJahr
-        AND   bArtst.Jahr   <= iBisJahr:
-            
-        EMPTY TEMP-TABLE tBestand.
-        
-        FOR EACH bArtLager NO-LOCK
-            WHERE bArtLager.Firma  = cFirma
-            AND   bArtLager.Artnr  = bArtst.Artnr
-            AND   bArtLager.Inhalt = bArtst.Inhalt
-            AND   bArtLager.Jahr   = bArtst.Jahr:
-            CREATE  tBestand.
-            ASSIGN  
-                tBestand.Lager     = bArtLager.Lager
-                tBestand.ilRecid   = RECID(bArtLager)
-                tBestand.iaRecid   = RECID(bArtst)
-                tBestand.Inv_Datum = bArtLager.Datum_Inv
-                tBestand.iTrnr     = 0.
-                
-            IF tBestand.Inv_Datum <> ? THEN 
-            DO:
-                FOR EACH bArtbw NO-LOCK 
-                    WHERE bArtbw.Firma  = bArtst.Firma
-                    AND   bArtbw.Artnr  = bArtst.Artnr
-                    AND   bArtbw.Inhalt = bArtst.Inhalt
-                    AND   bArtbw.Jahr   = bArtst.Jahr
-                    AND   bArtbw.Lager  = bArtLager.Lager
-                    AND   bArtbw.Tr_Art = 21
-                    AND   bArtbw.Datum  = tBestand.Inv_Datum :
-                    
-                    IF bArtbw.Trnr > tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr.
-                END.
-            END.
-                
-            IF tBestand.Inv_Datum = ? THEN 
-            DO:
-                FIND FIRST bArtbw NO-LOCK USE-INDEX Artbw-k7
-                    WHERE bArtbw.Firma  = bArtst.Firma
-                    AND   bArtbw.Artnr  = bArtst.Artnr
-                    AND   bArtbw.Inhalt = bArtst.Inhalt
-                    AND   bArtbw.Jahr   = bArtst.Jahr
-                    AND   bArtbw.Lager  = bArtLager.Lager
-                    AND   bArtbw.Tr_Art = 21 NO-ERROR.
-                IF AVAILABLE bArtbw THEN tBestand.Inv_Datum = bArtbw.Datum.
-                ELSE                     tBestand.Inv_Datum = 01/01/0001.
-                IF  AVAILABLE bArtbw             AND
-                    bArtbw.Trnr < tBestand.iTrnr THEN tBestand.iTrnr = bArtbw.Trnr.
-            END.
-        END.
-        
-        FOR EACH tBestand:
-            FOR EACH bArtbw NO-LOCK USE-INDEX Artbw-k2
-                WHERE bArtbw.Firma    = bArtst.Firma
-                AND   bArtbw.Artnr    = bArtst.Artnr
-                AND   bArtbw.Inhalt   = bArtst.Inhalt
-                AND   bArtbw.Jahr     = bArtst.Jahr
-                AND   bArtbw.Lag_Buch = TRUE
-                AND   bArtbw.Lager    = tBestand.Lager
-                AND   bArtbw.Datum   >= tBestand.Inv_Datum:
-                IF  bArtbw.Datum  = tBestand.Inv_Datum AND
-                    bArtbw.Tr_Art < 21                 AND
-                    bArtbw.Trnr   < tBestand.iTrnr     THEN NEXT.
-                    
-                DO WHILE TRUE:
-                    IF bArtbw.Tr_Art < 11 THEN 
-                    DO:
-                        tBestand.Ausgang = tBestand.Ausgang + bArtbw.Menge.
-                        LEAVE.
-                    END.
-                    IF bArtbw.Tr_Art < 21 THEN 
-                    DO:
-                        tBestand.Eingang = tBestand.Eingang + bArtbw.Menge.
-                        LEAVE.
-                    END.
-                    tBestand.Inv_Bestand = tBestand.Inv_Bestand + bArtbw.Menge.
-                    LEAVE.
-                END.
-            END.
-        END.
-        
-        REPEAT TRANSACTION:
-            FIND FIRST tBestand.
-            FIND Artst EXCLUSIVE-LOCK 
-                WHERE RECID(Artst) = tBestand.iaRecid NO-WAIT NO-ERROR.
-            IF  NOT AVAILABLE Artst AND
-                LOCKED Artst        THEN 
-            DO:
-                cString = SUBSTITUTE('Artst &1 ist in Zugriff', Artst.Artnr ).
-                DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
-                NEXT.
-            END.
-            nOldBestand = Artst.Bestand.
-            Artst.Bestand = 0.
-            FOR EACH tBestand:
-                FIND ArtLager EXCLUSIVE-LOCK
-                    WHERE RECID(ArtLager) = tBestand.ilRecid NO-WAIT NO-ERROR.
-                IF  NOT AVAILABLE ArtLager AND
-                    LOCKED ArtLager        THEN 
-                DO:
-                    cString = SUBSTITUTE('ArtLager &1 ist in Zugriff', Artst.Artnr ).
-                    DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
-                    NEXT.
-                END.
-                ASSIGN  
-                    ArtLager.Inv_Best = tBestand.Inv_Bestand
-                    ArtLager.Eingang  = tBestand.Eingang
-                    ArtLager.Ausgang  = tBestand.Ausgang
-                    ArtLager.Bestand  = tBestand.Inv_Bestand
-                                      + tBestand.Eingang
-                                      - tBestand.Ausgang.
-                IF tBestand.Inv_Datum <> 01/01/0001 THEN ArtLager.Datum_Inv = tBestand.Inv_Datum.
-                Artst.Bestand = Artst.Bestand + ArtLager.Bestand.
-                RELEASE ArtLager.
-            END.
-            IF Artst.Bestand <> nOldBestand THEN 
-            DO:
-                cString = SUBSTITUTE('&1;&2;&3', Artst.Artnr, Artst.Bestand, nOldBestand ).
-                DYNAMIC-FUNCTION('writeLogFile':U, cString) NO-ERROR.
-            END.
-            RELEASE Artst.
-            LEAVE.
-        END.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cPath AS CHAR NO-UNDO.
-    
-    GET-KEY-VALUE SECTION 'GrundEinstellungen'
-        KEY     'Ge_MIS_LOGS'
-        VALUE   cPath.
-    IF  cPath = '' OR
-        cPath = ?  THEN cPath = SESSION:TEMP-DIRECTORY.
-    IF  SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND
-        SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'.
-    cPath = cPath
-        + 'BestandesKorrektur.csv'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-    ( ipMessage AS CHAR  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cString AS CHAR NO-UNDO.
-
-    cString = SUBSTITUTE('&1', ipMessage).
-    OUTPUT STREAM LogStream TO VALUE(cLogName) APPEND.
-    PUT STREAM LogStream CONTROL cString CHR(10).
-    OUTPUT STREAM LogStream CLOSE.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 532
GUI/DigitalDrink/TEST_Absatz_Abschluss.p

@@ -1,532 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : ddabsatzzahlen.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Wed Jun 23 09:36:53 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-USING OpenEdge.Core.Collections.List FROM PROPATH.
-USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Customer FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Manufacturer FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.AbsatzAbschluss FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.ResponseStatus FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Sale FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AbsatzdatenImport FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AbsatzAbschlussImport FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.BusinessType FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.SalesUnit FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
-
-DEFINE VARIABLE ipdVonDatum    AS DATE      NO-UNDO INIT 08/01/2020.
-DEFINE VARIABLE ipdBisDatum    AS DATE      NO-UNDO INIT 08/31/2020.
-DEFINE VARIABLE ipiHerst       AS INTEGER   NO-UNDO INIT 999999.
-DEFINE VARIABLE ipiLieferant   AS INTEGER   NO-UNDO INIT 999999.
-DEFINE VARIABLE ipcWgr         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lAbschluss     AS LOGICAL   NO-UNDO INIT TRUE. 
-DEFINE VARIABLE lTest          AS LOGICAL   NO-UNDO INIT TRUE. 
-
-DEFINE VARIABLE Firma          AS CHARACTER NO-UNDO INIT '1000'.
-DEFINE VARIABLE iKnr           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGeb          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iKGeb          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cWgr           AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lRetVal        AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogFilePfad   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogFile       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cProgramm      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iJahr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iMonat         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cAnmeldung     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cVGebGLN       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cHerstGLN      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cHerst         AS CHARACTER NO-UNDO.
-
-{ propertiesDD.i   }
-{ properties.i }
-
-DEFINE VARIABLE oDigitalDrinkHandler   AS DigitalDrinkHandler   NO-UNDO.
-DEFINE VARIABLE oResponseStatus        AS ResponseStatus        NO-UNDO.
-
-DEFINE VARIABLE oAbsatzDatenImport     AS AbsatzdatenImport     NO-UNDO.
-DEFINE VARIABLE oAbsatzAbschlussImport AS AbsatzAbschlussImport NO-UNDO.
-DEFINE VARIABLE oCustomer              AS Customer              NO-UNDO.
-DEFINE VARIABLE oManufacturer          AS Manufacturer          NO-UNDO.
-DEFINE VARIABLE oAbsatzAbschluss       AS AbsatzAbschluss       NO-UNDO.
-DEFINE VARIABLE oSale                  AS Sale                  NO-UNDO.
-
-DEFINE TEMP-TABLE tArtbw LIKE Artbw
-    FIELD JJ  AS INTEGER 
-    FIELD MM  AS INTEGER
-    FIELD GLN AS CHARACTER
-    
-    INDEX tArtbw-k1 IS PRIMARY 
-    JJ
-    MM
-    GLN. 
-
-DEFINE TEMP-TABLE tAbschluss
-    FIELD JJ     AS INTEGER 
-    FIELD MM     AS INTEGER 
-    FIELD GLN    AS CHARACTER
-    FIELD cHerst AS CHARACTER 
-    FIELD lOK    AS LOGICAL.
-
-DEFINE TEMP-TABLE tAbsatzZahlen
-    FIELD JJ          AS INTEGER 
-    FIELD MM          AS INTEGER  
-    FIELD Knr         AS INTEGER 
-    FIELD Artnr       AS INTEGER 
-    FIELD Inhalt      AS INTEGER 
-    FIELD Jahr        AS INTEGER 
-    FIELD Herst       AS INTEGER
-    FIELD HerstGln    AS CHARACTER
-    FIELD Hersteller  AS CHARACTER  
-    FIELD Fak_Datum   AS DATE  
-    FIELD VGeb_Me     AS INTEGER 
-    FIELD KGeb_Me     AS INTEGER 
-    FIELD VGeb_Cd     AS CHARACTER 
-    FIELD KGeb_Cd     AS CHARACTER
-    FIELD VGeb_Bez    AS CHARACTER 
-    FIELD KGeb_Bez    AS CHARACTER
-    FIELD VGeb_Inhalt AS INTEGER  
-    FIELD KGeb_Inhalt AS INTEGER  
-    FIELD Bezeichnung AS CHARACTER
-    FIELD Kgr         AS INTEGER
-    FIELD VGeb_gln    AS CHARACTER  
-    
-    INDEX tAbsatzZahlen-k1 IS PRIMARY
-    JJ  
-    MM    
-    Knr
-    Artnr
-    Inhalt
-    Jahr
-
-    INDEX tAbsatzZahlen-k2
-    JJ  
-    MM    
-    Herst
-    Knr
-    Artnr
-    Inhalt
-    Jahr.
-    
-DEFINE BUFFER btAbsatzZahlen FOR tAbsatzZahlen.
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-
-/* ***************************  Main Block  *************************** */
-
-{ super/funktionen.i }
-
-cAnmeldung = SUBSTITUTE('&2&1&3&1&4&1&5', CHR(01), cBatchUser, cBatchPassw, '1000' ).
-RUN ANMELDUNG ( INPUT cAnmeldung ).
-Firma = DYNAMIC-FUNCTION ('getMandant':U) NO-ERROR.
-
-cProgramm = 'ddabsatzzahlen'.
-
-cLogFilePfad = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-cLogFile     = cLogFilePfad + cProgramm + '&1.log'.
-cLogFile     = SUBSTITUTE(cLogFile, STRING(TODAY,'99999999')).
-
-OS-DELETE VALUE(cLogFile) NO-ERROR.
-
-/*ASSIGN                       */
-/*    ipdVonDatum = 01/01/2020 */
-/*    ipdBisDatum = 06/30/2020.*/
-    
-EMPTY TEMP-TABLE tArtbw     .
-EMPTY TEMP-TABLE tAbschluss .
-
-FOR EACH Artst NO-LOCK 
-    WHERE Artst.Firma  = Firma
-    AND   Artst.Aktiv  = TRUE,
-    
-    FIRST Tabel NO-LOCK 
-    WHERE Tabel.Firma  = Firma
-    AND   Tabel.Recart = 'HERST'
-    AND   Tabel.CodeC  = ''
-    AND   Tabel.CodeI  = Artst.Herst
-    AND   Tabel.Bez2  <> '',
-        
-    FIRST Artbez NO-LOCK 
-    WHERE Artbez.Firma    = Artst.Firma
-    AND   Artbez.Artnr    = Artst.Artnr
-    AND   Artbez.Inhalt   = Artst.Inhalt
-    AND   Artbez.Jahr     = Artst.Jahr,
-    
-    FIRST KGebinde NO-LOCK 
-    WHERE KGebinde.Firma  = Artst.Firma
-    AND   KGebinde.Geb_Cd = Artst.KGeb_Cd,
-    
-    FIRST VGebinde NO-LOCK 
-    WHERE VGebinde.Firma  = Artst.Firma
-    AND   VGebinde.Geb_Cd = Artst.VGeb_Cd,
-    
-    EACH Artbw NO-LOCK 
-    WHERE Artbw.Firma     = Artst.Firma
-    AND   Artbw.Artnr     = Artst.Artnr
-    AND   Artbw.Inhalt    = Artst.Inhalt
-    AND   Artbw.Jahr      = Artst.Jahr
-    AND   Artbw.Fak_Dat  <> ?
-    AND   Artbw.Fak_Dat  >= ipdVonDatum
-    AND   Artbw.Fak_Dat  <= ipdBisDatum
-    AND   Artbw.Tr_Art    = 1
-    AND   Artbw.lDDUmsatz = FALSE ,
-    
-    FIRST Debst NO-LOCK 
-    WHERE Debst.Firma = Artst.Firma
-    AND   Debst.Knr   = Artbw.Knr
-    :
-        
-    IF  SUBSTRING(Tabel.Bez2,01,01) < '0' OR
-        SUBSTRING(Tabel.Bez2,01,01) > '9' THEN NEXT.
-
-    IF  ipiHerst <> 999999 THEN 
-    DO:
-        IF Artst.Herst <> ipiHerst THEN NEXT.
-    END.
-    
-    cVGebGLN = ''.
-    IF ipiLieferant <> 999999 THEN 
-    DO:
-        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.Knr    = ipiLieferant NO-ERROR.
-        IF NOT AVAILABLE ArtLief THEN NEXT.
-        
-        cVGebGLN = ArtLief.Strichcode_VGeb.
-    END.
-    ELSE 
-    DO:
-        FOR EACH 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_VGeb <> '':
-                
-            cVGebGLN = ArtLief.Strichcode_VGeb.
-            LEAVE.
-        END.
-    END.
-    
-    IF cVGebGLN = '' THEN NEXT.
-    
-    IF ipcWgr <> '' THEN 
-    DO:        
-        cWgr = STRING(Artst.Wg_Grp,'999').
-        IF LOOKUP(cWgr, ipcWgr, ',') = 0 THEN NEXT.
-    END.
-        
-    iKnr = (IF Debst.KnrFak > 0 AND Debst.KnrFak <> Debst.KnrLie THEN Debst.KnrFak ELSE Artbw.Knr).
-    
-    iJahr  = YEAR (Artbw.Fak_Dat).
-    iMonat = MONTH(Artbw.Fak_Dat).
-    
-    CREATE  tArtbw.
-    BUFFER-COPY Artbw TO tArtbw
-        ASSIGN  
-        tArtbw.JJ  = iJahr
-        tArtbw.MM  = iMonat
-        tArtbw.GLN = Tabel.Bez2.    /*  Hersteller - GLN    */
-    
-    FIND FIRST tAbsatzZahlen
-        WHERE tAbsatzZahlen.JJ        = iJahr
-        AND   tAbsatzZahlen.MM        = iMonat
-        AND   tAbsatzZahlen.Knr       = iKnr
-        AND   tAbsatzZahlen.Artnr     = Artbw.Artnr
-        AND   tAbsatzZahlen.Inhalt    = Artbw.Inhalt
-        AND   tAbsatzZahlen.Jahr      = Artbw.Jahr
-        AND   tAbsatzZahlen.Fak_Datum = Artbw.Fak_Dat NO-ERROR.
-    IF NOT AVAILABLE tAbsatzZahlen THEN 
-    DO:
-        CREATE  tAbsatzZahlen.
-        ASSIGN  
-            tAbsatzZahlen.JJ          = iJahr
-            tAbsatzZahlen.MM          = iMonat
-            tAbsatzZahlen.Knr         = iKnr
-            tAbsatzZahlen.Artnr       = Artbw.Artnr
-            tAbsatzZahlen.Inhalt      = Artbw.Inhalt
-            tAbsatzZahlen.Jahr        = Artbw.Jahr
-            tAbsatzZahlen.Fak_Datum   = Artbw.Fak_Dat
-            tAbsatzZahlen.Herst       = Artst.Herst
-            tAbsatzZahlen.HerstGln    = Tabel.Bez2
-            tAbsatzZahlen.Hersteller  = Tabel.Bez1
-            tAbsatzZahlen.Bezeichnung = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2)
-            tAbsatzZahlen.KGeb_Cd     = Artst.KGeb_Cd
-            tAbsatzZahlen.VGeb_Cd     = Artst.VGeb_Cd
-            tAbsatzZahlen.KGeb_Bez    = KGebinde.Bez
-            tAbsatzZahlen.VGeb_Bez    = VGebinde.Bez
-            tAbsatzZahlen.KGeb_Inhalt = KGebinde.Inhalt 
-            tAbsatzZahlen.VGeb_Inhalt = VGebinde.Inhalt
-            tAbsatzZahlen.Kgr         = Debst.Ku_Grp
-            tAbsatzZahlen.VGeb_gln    = cVGebGLN 
-            .
-    END.
-    ASSIGN  
-        tAbsatzZahlen.KGeb_Me = tAbsatzZahlen.KGeb_Me + Artbw.KGeb_Me
-        tAbsatzZahlen.VGeb_Me = tAbsatzZahlen.VGeb_Me + Artbw.VGeb_Me.
-END.
-
-IF lTest THEN lDebug = TRUE.
-
-IF lDebug THEN 
-DO:
-    oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-        INPUT cDevURL_Import,
-        INPUT cDevServerNameIndicator,
-        INPUT cClientId,
-        INPUT cPassword,
-        INPUT cClientName,
-        INPUT iGLN-Huber).
-END.
-ELSE 
-DO:
-    oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-        INPUT cURL_Import,
-        INPUT cServerNameIndicator,
-        INPUT cClientId,
-        INPUT cPassword,
-        INPUT cClientName,
-        INPUT iGLN-Huber).
-END.
-        
-oDigitalDrinkHandler:lDebug = lDebug.
-
-FOR EACH btAbsatzZahlen USE-INDEX tAbsatzZahlen-k2
-    BREAK BY btAbsatzZahlen.JJ
-    BY btAbsatzZahlen.MM
-    BY btAbsatzZahlen.Herst:
-        
-    IF NOT FIRST-OF (btAbsatzZahlen.Herst) THEN NEXT.
-        
-    RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Start Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4',
-        btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM) ).        
-
-    oAbsatzDatenImport = NEW AbsatzdatenImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
-    oAbsatzDatenImport:lDebug = lDebug.
-
-    /*  ------------------------------------------------------  */
-    /*  Alle Kunden pro Hersteller und Monat                    */
-    /*  ------------------------------------------------------  */
-    
-    FOR EACH tAbsatzZahlen
-        WHERE tAbsatzZahlen.JJ    = btAbsatzZahlen.JJ
-        AND   tAbsatzZahlen.MM    = btAbsatzZahlen.MM
-        AND   tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
-        
-        BREAK BY tAbsatzZahlen.Knr:
-        
-        IF NOT FIRST-OF ( tAbsatzZahlen.Knr ) THEN NEXT.
-        
-        FIND Adresse NO-LOCK 
-            WHERE Adresse.Firma = Firma
-            AND   Adresse.Knr   = tAbsatzZahlen.Knr NO-ERROR.
-    
-        oCustomer = NEW Customer().
-    
-        ASSIGN  
-            oCustomer:ino        = tAbsatzZahlen.Knr
-            oCustomer:cname1     = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
-            oCustomer:cname2     = (IF Adresse.Firma2 <> '' THEN Adresse.Firma2 ELSE Adresse.Vorname)
-            oCustomer:cstreet    = Adresse.Strasse
-            oCustomer:czipcode   = Adresse.Plz
-            oCustomer:ccity      = Adresse.Ort
-            oCustomer:ccountry   = Adresse.Lkz
-            oCustomer:cphone1    = Adresse.Tel-1
-            oCustomer:cphone2    = Adresse.Tel-2
-            oCustomer:cfax       = Adresse.Tel-3
-            oCustomer:ctaxNumber = ''
-            oCustomer:cmail      = Adresse.Mail
-            oCustomer:cstreet2   = ''
-            oCustomer:cpostbox   = Adresse.Postfach
-            oCustomer:cinfo      = ''
-            oCustomer:cgln       = ''.
-        
-        CASE tAbsatzZahlen.Kgr:
-            WHEN 15 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-02.
-            WHEN 03 OR
-            WHEN 12 OR
-            WHEN 17 OR 
-            WHEN 14 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-01.
-            WHEN 10 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-06.
-            WHEN 04 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-16.
-            WHEN 05 OR 
-            WHEN 01 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-09.
-            WHEN 11 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-04.
-            WHEN 07 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-11.
-            OTHERWISE 
-            oCustomer:eBusinessType = BusinessType:SC-16.
-        END CASE.
-    
-        oAbsatzDatenImport:addCustomer(oCustomer).
-    
-    END.
-
-    /*  ------------------------------------------------------  */
-    /*  Alle Verkäufe eines Herstellers pro Kunde und Monat     */
-    /*  ------------------------------------------------------  */
-    
-    FOR EACH tAbsatzZahlen
-        WHERE tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
-        AND   tAbsatzZahlen.JJ    = btAbsatzZahlen.JJ
-        AND   tAbsatzZahlen.MM    = btAbsatzZahlen.MM
-        
-        BREAK BY tAbsatzZahlen.Herst
-        BY tAbsatzZahlen.Knr
-        BY tAbsatzZahlen.Artnr
-        BY tAbsatzZahlen.Inhalt
-        BY tAbsatzZahlen.Jahr :
-              
-        IF FIRST-OF ( tAbsatzZahlen.Herst ) THEN 
-        DO:
-            oManufacturer = NEW Manufacturer().
-            ASSIGN  
-                oManufacturer:cgln              = tAbsatzZahlen.HerstGln
-                oManufacturer:csalesDescription = tAbsatzZahlen.Hersteller.
-                
-            ASSIGN
-                cHerstGLN = tAbsatzZahlen.HerstGln
-                cHerst    = tAbsatzZahlen.Hersteller.
-        END.
-    
-        IF FIRST-OF ( tAbsatzZahlen.Jahr ) THEN 
-        DO:
-            ASSIGN  
-                iVGeb = 0
-                iKGeb = 0.
-        END.
-    
-        ASSIGN  
-            iVGeb = iVGeb + tAbsatzZahlen.VGeb_Me
-            iKGeb = iKGeb + tAbsatzZahlen.KGeb_Me.
-            
-        IF NOT LAST-OF ( tAbsatzZahlen.Jahr ) THEN NEXT.
-    
-        oSale = NEW Sale().
-        ASSIGN  
-            oSale:icustomerNo      = tAbsatzZahlen.Knr
-            oSale:cGTIN            = tAbsatzZahlen.VGeb_gln
-            oSale:carticleNoClient = STRING(tAbsatzZahlen.Artnr ,'999999')
-                                  + '.'
-                                  + STRING(tAbsatzZahlen.Inhalt,'9999')  
-                                  + '.'
-                                  + STRING(tAbsatzZahlen.Jahr  ,'9999')
-            oSale:carticleName     = tAbsatzZahlen.Bezeichnung
-            oSale:ifilling         = tAbsatzZahlen.VGeb_Inhalt
-            oSale:ffillingContent  = tAbsatzZahlen.KGeb_Inhalt
-            oSale:dtdate           = tAbsatzZahlen.Fak_Datum
-            oSale:fnormal          = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
-            oSale:fcampaign        = 0  
-            oSale:ffree            = 0  
-            oSale:ftotal           = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
-            oSale:eunit            = SalesUnit:SU-03.
-        oManufacturer:addSales(oSale).
-    END.
-    
-    oAbsatzDatenImport:addManufacturer(oManufacturer).
-    
-    /*    lRetVal = oDigitalDrinkHandler:getAbsatzDatenImport(INPUT oAbsatzDatenImport, INPUT Type:IMP001, OUTPUT opErrorMessage, OUTPUT oResponseStatus).*/
-
-    lRetVal = TRUE.    
-    IF lRetVal THEN 
-    DO:
-        CREATE  tAbschluss.
-        ASSIGN  
-            tAbschluss.GLN    = cHerstGln
-            tAbschluss.JJ     = tAbsatzZahlen.JJ
-            tAbschluss.MM     = tAbsatzZahlen.MM
-            tAbschluss.cHerst = cHerst
-            tAbschluss.lOK    = FALSE.
-    END.
-    
-    RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Ende  Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4 -> &5',
-        btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM, STRING(lRetVal,'OK/Fehlerhaft')) ).        
-
-    IF VALID-OBJECT (oSale)              THEN DELETE OBJECT oSale.
-    IF VALID-OBJECT (oManufacturer)      THEN DELETE OBJECT oManufacturer.
-    IF VALID-OBJECT (oCustomer)          THEN DELETE OBJECT oCustomer.
-    IF VALID-OBJECT (oAbsatzDatenImport) THEN DELETE OBJECT oAbsatzDatenImport.
-END.
-
-OUTPUT TO 'C:\LogFiles\tAbschluss.csv'.
-FOR EACH tAbschluss:
-    EXPORT DELIMITER ';' tAbschluss.
-END.
-OUTPUT CLOSE.
-
-DO WHILE lAbschluss:
-    oAbsatzAbschlussImport = NEW AbsatzAbschlussImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
-    oAbsatzAbschlussImport:lDebug = lDebug.
-
-    FOR EACH tAbschluss:
-
-        oAbsatzAbschluss = NEW AbsatzAbschluss ().
-
-        oAbsatzAbschluss:cgln   = tAbschluss.GLN.
-        oAbsatzAbschluss:iYear  = tAbschluss.JJ.
-        oAbsatzAbschluss:iMonth = tAbschluss.MM.
-
-        lRetVal = oAbsatzAbschlussImport:oAbsatzAbschlussList:Add(oAbsatzAbschluss).
-        RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('&1 - &2 - &3 - &4 - &5', tAbschluss.cHerst, tAbschluss.GLN, tAbschluss.JJ, tAbschluss.MM, lRetVal) ).
-
-        lRetVal = oDigitalDrinkHandler:getAbsatzAbschlussImport(INPUT oAbsatzAbschlussImport, INPUT Type:IMP002, OUTPUT opErrorMessage, OUTPUT oResponseStatus).
-        RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Abschluss Absatzmeldung -> &1', STRING(lRetVal,'OK/Fehlerhaft')) ).
-        
-        tAbschluss.lOK = lRetVal.
-        
-        IF VALID-OBJECT (oAbsatzAbschluss) THEN DELETE OBJECT oAbsatzAbschluss.
-    END.
-
-    FOR EACH tAbschluss
-        WHERE tAbschluss.lOK = TRUE,
-
-        EACH tArtbw USE-INDEX tArtbw-k1
-        WHERE tArtbw.JJ  = tAbschluss.JJ
-        AND   tArtbw.MM  = tAbschluss.MM
-        AND   tArtbw.GLN = tAbschluss.GLN:
-
-        FIND Artbw
-            WHERE Artbw.Firma = tArtbw.Firma
-            AND   Artbw.Trnr  = tArtbw.Trnr NO-ERROR.
-        IF NOT AVAILABLE Artbw THEN NEXT.
-        Artbw.lDDUmsatz = TRUE.
-    END.
-    LEAVE.
-END.
-
-FINALLY:
-    IF VALID-OBJECT (oSale)                  THEN DELETE OBJECT oSale.
-    IF VALID-OBJECT (oManufacturer)          THEN DELETE OBJECT oManufacturer.
-    IF VALID-OBJECT (oCustomer)              THEN DELETE OBJECT oCustomer.
-    IF VALID-OBJECT (oAbsatzDatenImport)     THEN DELETE OBJECT oAbsatzDatenImport.
-    IF VALID-OBJECT (oAbsatzAbschluss)       THEN DELETE OBJECT oAbsatzAbschluss.
-    IF VALID-OBJECT (oAbsatzAbschlussImport) THEN DELETE OBJECT oAbsatzAbschlussImport.
-    IF VALID-OBJECT (oDigitalDrinkHandler)   THEN DELETE OBJECT oDigitalDrinkHandler.
-END FINALLY.
-

+ 0 - 27
GUI/DigitalDrink/Test_ddArtikelexport.p

@@ -1,27 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : Test_ddArtikelexport
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : javier.garcia
-    Created     : Tue Apr 06 10:06:16 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-{ ttDDArtikel.i }
-
-DEFINE VARIABLE ipcGlnNr AS CHARACTER INITIAL 7611793000004 NO-UNDO.
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-
-/* ***************************  Main Block  *************************** */
-
-
-RUN ddartikelexport.p (INPUT ipcGlnNr, OUTPUT TABLE ttDDArtikel).

+ 0 - 4
GUI/DigitalDrink/compile.p

@@ -1,4 +0,0 @@
-COMPILE DigitalDrink/ddinhaltsstoffe.p SAVE.
-COMPILE DigitalDrink/ddartikelexport.p SAVE.
-COMPILE w-inhaltsstoffe.w SAVE.
-COMPILE w-ddartikelabgleich.w SAVE.

+ 0 - 527
GUI/DigitalDrink/ddabsatzzahlen.p

@@ -1,527 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : ddabsatzzahlen.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Wed Jun 23 09:36:53 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-USING OpenEdge.Core.Collections.List FROM PROPATH.
-USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Customer FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Manufacturer FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.AbsatzAbschluss FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.ResponseStatus FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Sale FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AbsatzdatenImport FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AbsatzAbschlussImport FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.BusinessType FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.SalesUnit FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
-
-DEFINE INPUT PARAMETER ipdVonDatum    AS DATE      NO-UNDO.
-DEFINE INPUT PARAMETER ipdBisDatum    AS DATE      NO-UNDO.
-DEFINE INPUT PARAMETER ipiHerst       AS INTEGER   NO-UNDO.
-DEFINE INPUT PARAMETER ipiLieferant   AS INTEGER   NO-UNDO.
-DEFINE INPUT PARAMETER ipcWgr         AS CHARACTER NO-UNDO.
-DEFINE INPUT PARAMETER lAbschluss     AS LOGICAL   NO-UNDO. 
-DEFINE INPUT PARAMETER lTest          AS LOGICAL   NO-UNDO. 
-
-DEFINE VARIABLE Firma          AS CHARACTER NO-UNDO INIT '1000'.
-DEFINE VARIABLE iKnr           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGeb          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iKGeb          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cWgr           AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lRetVal        AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogFilePfad   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogFile       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cProgramm      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iJahr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iMonat         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cAnmeldung     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cVGebGLN       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cHerstGLN      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cHerst         AS CHARACTER NO-UNDO.
-
-{ propertiesDD.i   }
-{ properties.i }
-
-DEFINE VARIABLE oDigitalDrinkHandler   AS DigitalDrinkHandler   NO-UNDO.
-DEFINE VARIABLE oResponseStatus        AS ResponseStatus        NO-UNDO.
-
-DEFINE VARIABLE oAbsatzDatenImport     AS AbsatzdatenImport     NO-UNDO.
-DEFINE VARIABLE oAbsatzAbschlussImport AS AbsatzAbschlussImport NO-UNDO.
-DEFINE VARIABLE oCustomer              AS Customer              NO-UNDO.
-DEFINE VARIABLE oManufacturer          AS Manufacturer          NO-UNDO.
-DEFINE VARIABLE oAbsatzAbschluss       AS AbsatzAbschluss       NO-UNDO.
-DEFINE VARIABLE oSale                  AS Sale                  NO-UNDO.
-
-DEFINE TEMP-TABLE tArtbw LIKE Artbw
-    FIELD JJ  AS INTEGER 
-    FIELD MM  AS INTEGER
-    FIELD GLN AS CHARACTER
-    
-    INDEX tArtbw-k1 IS PRIMARY 
-    JJ
-    MM
-    GLN. 
-
-DEFINE TEMP-TABLE tAbschluss
-    FIELD JJ     AS INTEGER 
-    FIELD MM     AS INTEGER 
-    FIELD GLN    AS CHARACTER
-    FIELD cHerst AS CHARACTER 
-    FIELD lOK    AS LOGICAL.
-
-DEFINE TEMP-TABLE tAbsatzZahlen
-    FIELD JJ          AS INTEGER 
-    FIELD MM          AS INTEGER  
-    FIELD Knr         AS INTEGER 
-    FIELD Artnr       AS INTEGER 
-    FIELD Inhalt      AS INTEGER 
-    FIELD Jahr        AS INTEGER 
-    FIELD Herst       AS INTEGER
-    FIELD HerstGln    AS CHARACTER
-    FIELD Hersteller  AS CHARACTER  
-    FIELD Fak_Datum   AS DATE  
-    FIELD VGeb_Me     AS INTEGER 
-    FIELD KGeb_Me     AS INTEGER 
-    FIELD VGeb_Cd     AS CHARACTER 
-    FIELD KGeb_Cd     AS CHARACTER
-    FIELD VGeb_Bez    AS CHARACTER 
-    FIELD KGeb_Bez    AS CHARACTER
-    FIELD VGeb_Inhalt AS INTEGER  
-    FIELD KGeb_Inhalt AS INTEGER  
-    FIELD Bezeichnung AS CHARACTER
-    FIELD Kgr         AS INTEGER
-    FIELD VGeb_gln    AS CHARACTER  
-    
-    INDEX tAbsatzZahlen-k1 IS PRIMARY
-    JJ  
-    MM    
-    Knr
-    Artnr
-    Inhalt
-    Jahr
-
-    INDEX tAbsatzZahlen-k2
-    JJ  
-    MM    
-    Herst
-    Knr
-    Artnr
-    Inhalt
-    Jahr.
-    
-DEFINE BUFFER btAbsatzZahlen FOR tAbsatzZahlen.
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-
-/* ***************************  Main Block  *************************** */
-
-{ super/funktionen.i }
-
-cAnmeldung = SUBSTITUTE('&2&1&3&1&4&1&5', CHR(01), cBatchUser, cBatchPassw, '1000' ).
-RUN ANMELDUNG ( INPUT cAnmeldung ).
-Firma = DYNAMIC-FUNCTION ('getMandant':U) NO-ERROR.
-
-cProgramm = ENTRY(1, THIS-PROCEDURE:NAME, '.' ).
-
-cLogFilePfad = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-cLogFile     = cLogFilePfad + cProgramm + '&1.log'.
-cLogFile     = SUBSTITUTE(cLogFile, STRING(TODAY,'99999999')).
-
-OS-DELETE VALUE(cLogFile) NO-ERROR.
-
-/*ASSIGN                       */
-/*    ipdVonDatum = 01/01/2020 */
-/*    ipdBisDatum = 06/30/2020.*/
-    
-EMPTY TEMP-TABLE tArtbw     .
-EMPTY TEMP-TABLE tAbschluss .
-
-FOR EACH Artst NO-LOCK 
-    WHERE Artst.Firma  = Firma
-    AND   Artst.Aktiv  = TRUE,
-    
-    FIRST Tabel NO-LOCK 
-    WHERE Tabel.Firma  = Firma
-    AND   Tabel.Recart = 'HERST'
-    AND   Tabel.CodeC  = ''
-    AND   Tabel.CodeI  = Artst.Herst
-    AND   Tabel.Bez2  <> '',
-        
-    FIRST Artbez NO-LOCK 
-    WHERE Artbez.Firma    = Artst.Firma
-    AND   Artbez.Artnr    = Artst.Artnr
-    AND   Artbez.Inhalt   = Artst.Inhalt
-    AND   Artbez.Jahr     = Artst.Jahr,
-    
-    FIRST KGebinde NO-LOCK 
-    WHERE KGebinde.Firma  = Artst.Firma
-    AND   KGebinde.Geb_Cd = Artst.KGeb_Cd,
-    
-    FIRST VGebinde NO-LOCK 
-    WHERE VGebinde.Firma  = Artst.Firma
-    AND   VGebinde.Geb_Cd = Artst.VGeb_Cd,
-    
-    EACH Artbw NO-LOCK 
-    WHERE Artbw.Firma     = Artst.Firma
-    AND   Artbw.Artnr     = Artst.Artnr
-    AND   Artbw.Inhalt    = Artst.Inhalt
-    AND   Artbw.Jahr      = Artst.Jahr
-    AND   Artbw.Fak_Dat  <> ?
-    AND   Artbw.Fak_Dat  >= ipdVonDatum
-    AND   Artbw.Fak_Dat  <= ipdBisDatum
-    AND   Artbw.Tr_Art    = 1
-    AND   Artbw.lDDUmsatz = FALSE ,
-    
-    FIRST Debst NO-LOCK 
-    WHERE Debst.Firma = Artst.Firma
-    AND   Debst.Knr   = Artbw.Knr
-    :
-        
-    IF  SUBSTRING(Tabel.Bez2,01,01) < '0' OR
-        SUBSTRING(Tabel.Bez2,01,01) > '9' THEN NEXT.
-
-    IF  ipiHerst <> 999999 THEN 
-    DO:
-        IF Artst.Herst <> ipiHerst THEN NEXT.
-    END.
-    
-    cVGebGLN = ''.
-    IF ipiLieferant <> 999999 THEN 
-    DO:
-        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.Knr    = ipiLieferant NO-ERROR.
-        IF NOT AVAILABLE ArtLief THEN NEXT.
-        
-        cVGebGLN = ArtLief.Strichcode_VGeb.
-    END.
-    ELSE 
-    DO:
-        FOR EACH 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_VGeb <> '':
-                
-            cVGebGLN = ArtLief.Strichcode_VGeb.
-            LEAVE.
-        END.
-    END.
-    
-    IF cVGebGLN = '' THEN NEXT.
-    
-    IF ipcWgr <> '' THEN 
-    DO:        
-        cWgr = STRING(Artst.Wg_Grp,'999').
-        IF LOOKUP(cWgr, ipcWgr, ',') = 0 THEN NEXT.
-    END.
-        
-    iKnr = (IF Debst.KnrFak > 0 AND Debst.KnrFak <> Debst.KnrLie THEN Debst.KnrFak ELSE Artbw.Knr).
-    
-    iJahr  = YEAR (Artbw.Fak_Dat).
-    iMonat = MONTH(Artbw.Fak_Dat).
-    
-    CREATE  tArtbw.
-    BUFFER-COPY Artbw TO tArtbw
-        ASSIGN  
-        tArtbw.JJ  = iJahr
-        tArtbw.MM  = iMonat
-        tArtbw.GLN = Tabel.Bez2.    /*  Hersteller - GLN    */
-    
-    FIND FIRST tAbsatzZahlen
-        WHERE tAbsatzZahlen.JJ        = iJahr
-        AND   tAbsatzZahlen.MM        = iMonat
-        AND   tAbsatzZahlen.Knr       = iKnr
-        AND   tAbsatzZahlen.Artnr     = Artbw.Artnr
-        AND   tAbsatzZahlen.Inhalt    = Artbw.Inhalt
-        AND   tAbsatzZahlen.Jahr      = Artbw.Jahr
-        AND   tAbsatzZahlen.Fak_Datum = Artbw.Fak_Dat NO-ERROR.
-    IF NOT AVAILABLE tAbsatzZahlen THEN 
-    DO:
-        CREATE  tAbsatzZahlen.
-        ASSIGN  
-            tAbsatzZahlen.JJ          = iJahr
-            tAbsatzZahlen.MM          = iMonat
-            tAbsatzZahlen.Knr         = iKnr
-            tAbsatzZahlen.Artnr       = Artbw.Artnr
-            tAbsatzZahlen.Inhalt      = Artbw.Inhalt
-            tAbsatzZahlen.Jahr        = Artbw.Jahr
-            tAbsatzZahlen.Fak_Datum   = Artbw.Fak_Dat
-            tAbsatzZahlen.Herst       = Artst.Herst
-            tAbsatzZahlen.HerstGln    = Tabel.Bez2
-            tAbsatzZahlen.Hersteller  = Tabel.Bez1
-            tAbsatzZahlen.Bezeichnung = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2)
-            tAbsatzZahlen.KGeb_Cd     = Artst.KGeb_Cd
-            tAbsatzZahlen.VGeb_Cd     = Artst.VGeb_Cd
-            tAbsatzZahlen.KGeb_Bez    = KGebinde.Bez
-            tAbsatzZahlen.VGeb_Bez    = VGebinde.Bez
-            tAbsatzZahlen.KGeb_Inhalt = KGebinde.Inhalt 
-            tAbsatzZahlen.VGeb_Inhalt = VGebinde.Inhalt
-            tAbsatzZahlen.Kgr         = Debst.Ku_Grp
-            tAbsatzZahlen.VGeb_gln    = cVGebGLN 
-            .
-    END.
-    ASSIGN  
-        tAbsatzZahlen.KGeb_Me = tAbsatzZahlen.KGeb_Me + Artbw.KGeb_Me
-        tAbsatzZahlen.VGeb_Me = tAbsatzZahlen.VGeb_Me + Artbw.VGeb_Me.
-END.
-
-IF lTest THEN lDebug = TRUE.
-
-IF lDebug THEN 
-DO:
-    oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-        INPUT cDevURL_Import,
-        INPUT cDevServerNameIndicator,
-        INPUT cClientId,
-        INPUT cPassword,
-        INPUT cClientName,
-        INPUT iGLN-Huber).
-END.
-ELSE 
-DO:
-    oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-        INPUT cURL_Import,
-        INPUT cServerNameIndicator,
-        INPUT cClientId,
-        INPUT cPassword,
-        INPUT cClientName,
-        INPUT iGLN-Huber).
-END.
-        
-oDigitalDrinkHandler:lDebug = lDebug.
-
-FOR EACH btAbsatzZahlen USE-INDEX tAbsatzZahlen-k2
-    BREAK BY btAbsatzZahlen.JJ
-    BY btAbsatzZahlen.MM
-    BY btAbsatzZahlen.Herst:
-        
-    IF NOT FIRST-OF (btAbsatzZahlen.Herst) THEN NEXT.
-        
-    RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Start Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4',
-        btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM) ).        
-
-    oAbsatzDatenImport = NEW AbsatzdatenImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
-    oAbsatzDatenImport:lDebug = lDebug.
-
-    /*  ------------------------------------------------------  */
-    /*  Alle Kunden pro Hersteller und Monat                    */
-    /*  ------------------------------------------------------  */
-    
-    FOR EACH tAbsatzZahlen
-        WHERE tAbsatzZahlen.JJ    = btAbsatzZahlen.JJ
-        AND   tAbsatzZahlen.MM    = btAbsatzZahlen.MM
-        AND   tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
-        
-        BREAK BY tAbsatzZahlen.Knr:
-        
-        IF NOT FIRST-OF ( tAbsatzZahlen.Knr ) THEN NEXT.
-        
-        FIND Adresse NO-LOCK 
-            WHERE Adresse.Firma = Firma
-            AND   Adresse.Knr   = tAbsatzZahlen.Knr NO-ERROR.
-    
-        oCustomer = NEW Customer().
-    
-        ASSIGN  
-            oCustomer:ino        = tAbsatzZahlen.Knr
-            oCustomer:cname1     = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
-            oCustomer:cname2     = (IF Adresse.Firma2 <> '' THEN Adresse.Firma2 ELSE Adresse.Vorname)
-            oCustomer:cstreet    = Adresse.Strasse
-            oCustomer:czipcode   = Adresse.Plz
-            oCustomer:ccity      = Adresse.Ort
-            oCustomer:ccountry   = Adresse.Lkz
-            oCustomer:cphone1    = Adresse.Tel-1
-            oCustomer:cphone2    = Adresse.Tel-2
-            oCustomer:cfax       = Adresse.Tel-3
-            oCustomer:ctaxNumber = ''
-            oCustomer:cmail      = Adresse.Mail
-            oCustomer:cstreet2   = ''
-            oCustomer:cpostbox   = Adresse.Postfach
-            oCustomer:cinfo      = ''
-            oCustomer:cgln       = ''.
-        
-        CASE tAbsatzZahlen.Kgr:
-            WHEN 15 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-02.
-            WHEN 03 OR
-            WHEN 12 OR
-            WHEN 17 OR 
-            WHEN 14 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-01.
-            WHEN 10 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-06.
-            WHEN 04 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-16.
-            WHEN 05 OR 
-            WHEN 01 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-09.
-            WHEN 11 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-04.
-            WHEN 07 THEN 
-                oCustomer:eBusinessType = BusinessType:SC-11.
-            OTHERWISE 
-            oCustomer:eBusinessType = BusinessType:SC-16.
-        END CASE.
-    
-        oAbsatzDatenImport:addCustomer(oCustomer).
-    
-    END.
-
-    /*  ------------------------------------------------------  */
-    /*  Alle Verkäufe eines Herstellers pro Kunde und Monat     */
-    /*  ------------------------------------------------------  */
-    
-    FOR EACH tAbsatzZahlen
-        WHERE tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
-        AND   tAbsatzZahlen.JJ    = btAbsatzZahlen.JJ
-        AND   tAbsatzZahlen.MM    = btAbsatzZahlen.MM
-        
-        BREAK BY tAbsatzZahlen.Herst
-        BY tAbsatzZahlen.Knr
-        BY tAbsatzZahlen.Artnr
-        BY tAbsatzZahlen.Inhalt
-        BY tAbsatzZahlen.Jahr :
-              
-        IF FIRST-OF ( tAbsatzZahlen.Herst ) THEN 
-        DO:
-            oManufacturer = NEW Manufacturer().
-            ASSIGN  
-                oManufacturer:cgln              = tAbsatzZahlen.HerstGln
-                oManufacturer:csalesDescription = tAbsatzZahlen.Hersteller.
-                
-            ASSIGN
-                cHerstGLN = tAbsatzZahlen.HerstGln
-                cHerst    = tAbsatzZahlen.Hersteller.
-        END.
-    
-        IF FIRST-OF ( tAbsatzZahlen.Jahr ) THEN 
-        DO:
-            ASSIGN  
-                iVGeb = 0
-                iKGeb = 0.
-        END.
-    
-        ASSIGN  
-            iVGeb = iVGeb + tAbsatzZahlen.VGeb_Me
-            iKGeb = iKGeb + tAbsatzZahlen.KGeb_Me.
-            
-        IF NOT LAST-OF ( tAbsatzZahlen.Jahr ) THEN NEXT.
-    
-        oSale = NEW Sale().
-        ASSIGN  
-            oSale:icustomerNo      = tAbsatzZahlen.Knr
-            oSale:cGTIN            = tAbsatzZahlen.VGeb_gln
-            oSale:carticleNoClient = STRING(tAbsatzZahlen.Artnr ,'999999')
-                                  + '.'
-                                  + STRING(tAbsatzZahlen.Inhalt,'9999')  
-                                  + '.'
-                                  + STRING(tAbsatzZahlen.Jahr  ,'9999')
-            oSale:carticleName     = tAbsatzZahlen.Bezeichnung
-            oSale:ifilling         = tAbsatzZahlen.VGeb_Inhalt
-            oSale:ffillingContent  = tAbsatzZahlen.KGeb_Inhalt
-            oSale:dtdate           = tAbsatzZahlen.Fak_Datum
-            oSale:fnormal          = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
-            oSale:fcampaign        = 0  
-            oSale:ffree            = 0  
-            oSale:ftotal           = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
-            oSale:eunit            = SalesUnit:SU-03.
-        oManufacturer:addSales(oSale).
-    END.
-    
-    oAbsatzDatenImport:addManufacturer(oManufacturer).
-    
-    lRetVal = oDigitalDrinkHandler:getAbsatzDatenImport(INPUT oAbsatzDatenImport, INPUT Type:IMP001, OUTPUT opErrorMessage, OUTPUT oResponseStatus).
-
-    lRetVal = TRUE.    
-    IF lRetVal THEN 
-    DO:
-        CREATE  tAbschluss.
-        ASSIGN  
-            tAbschluss.GLN    = cHerstGln
-            tAbschluss.JJ     = tAbsatzZahlen.JJ
-            tAbschluss.MM     = tAbsatzZahlen.MM
-            tAbschluss.cHerst = cHerst
-            tAbschluss.lOK    = FALSE.
-    END.
-    
-    RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Ende  Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4 -> &5',
-        btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM, STRING(lRetVal,'OK/Fehlerhaft')) ).        
-
-    IF VALID-OBJECT (oSale)              THEN DELETE OBJECT oSale.
-    IF VALID-OBJECT (oManufacturer)      THEN DELETE OBJECT oManufacturer.
-    IF VALID-OBJECT (oCustomer)          THEN DELETE OBJECT oCustomer.
-    IF VALID-OBJECT (oAbsatzDatenImport) THEN DELETE OBJECT oAbsatzDatenImport.
-END.
-
-DO WHILE lAbschluss:
-
-    FOR EACH tAbschluss:
-        oAbsatzAbschlussImport = NEW AbsatzAbschlussImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
-        oAbsatzAbschlussImport:lDebug = lDebug.
-
-        oAbsatzAbschluss = NEW AbsatzAbschluss ().
-
-        oAbsatzAbschluss:cgln   = tAbschluss.GLN.
-        oAbsatzAbschluss:iYear  = tAbschluss.JJ.
-        oAbsatzAbschluss:iMonth = tAbschluss.MM.
-        
-        lRetVal = oAbsatzAbschlussImport:oAbsatzAbschlussList:Add(oAbsatzAbschluss).
-        RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('&1 - &2 - &3 - &4 - &5', tAbschluss.cHerst, tAbschluss.GLN, tAbschluss.JJ, tAbschluss.MM, lRetVal) ).
-        
-        lRetVal = oDigitalDrinkHandler:getAbsatzAbschlussImport(INPUT oAbsatzAbschlussImport, INPUT Type:IMP002, OUTPUT opErrorMessage, OUTPUT oResponseStatus).
-        RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Abschluss Absatzmeldung -> &1 / &2', STRING(lRetVal,'OK/Fehlerhaft'), opErrorMessage) ).
-        
-        tAbschluss.lOK = lRetVal.
-        
-        IF VALID-OBJECT (oAbsatzAbschluss)       THEN DELETE OBJECT oAbsatzAbschluss.
-        IF VALID-OBJECT (oAbsatzAbschlussImport) THEN DELETE OBJECT oAbsatzAbschlussImport  .
-    END.
-
-    FOR EACH tAbschluss
-        WHERE tAbschluss.lOK = TRUE,
-
-        EACH tArtbw USE-INDEX tArtbw-k1
-        WHERE tArtbw.JJ  = tAbschluss.JJ
-        AND   tArtbw.MM  = tAbschluss.MM
-        AND   tArtbw.GLN = tAbschluss.GLN:
-
-        FIND Artbw
-            WHERE Artbw.Firma = tArtbw.Firma
-            AND   Artbw.Trnr  = tArtbw.Trnr NO-ERROR.
-        IF NOT AVAILABLE Artbw THEN NEXT.
-        Artbw.lDDUmsatz = TRUE.
-    END.
-    LEAVE.
-END.
-
-FINALLY:
-    IF VALID-OBJECT (oSale)                  THEN DELETE OBJECT oSale.
-    IF VALID-OBJECT (oManufacturer)          THEN DELETE OBJECT oManufacturer.
-    IF VALID-OBJECT (oCustomer)              THEN DELETE OBJECT oCustomer.
-    IF VALID-OBJECT (oAbsatzDatenImport)     THEN DELETE OBJECT oAbsatzDatenImport.
-    IF VALID-OBJECT (oAbsatzAbschluss)       THEN DELETE OBJECT oAbsatzAbschluss.
-    IF VALID-OBJECT (oAbsatzAbschlussImport) THEN DELETE OBJECT oAbsatzAbschlussImport.
-    IF VALID-OBJECT (oDigitalDrinkHandler)   THEN DELETE OBJECT oDigitalDrinkHandler.
-END FINALLY.
-

+ 0 - 195
GUI/DigitalDrink/ddaktionenexport.p

@@ -1,195 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : ddaktionenexport.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Fri Jul 30 16:23:21 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-USING OpenEdge.Core.Collections.IListIterator FROM PROPATH.
-USING OpenEdge.Core.Collections.List FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.AktionsFilter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Campaign FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AktionenExportRequest FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.AktionenExportResponse FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.BillingType FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.CustomerGroup FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.ConditionState FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.AktionsUnit FROM PROPATH.
-
-{ propertiesDD.i }
-
-DEFINE VARIABLE oDigitalDrinkHandler    AS DigitalDrinkHandler    NO-UNDO.
-DEFINE VARIABLE oAktionenExportRequest  AS AktionenExportRequest  NO-UNDO.
-DEFINE VARIABLE oAktionenExportResponse AS AktionenExportResponse NO-UNDO.
-DEFINE VARIABLE oFilter                 AS AktionsFilter          NO-UNDO.
-
-DEFINE VARIABLE opErrorMessage          AS CHARACTER              NO-UNDO.
-DEFINE VARIABLE oCampaign               AS Campaign               NO-UNDO.
-DEFINE VARIABLE oCustomerGroup          AS CustomerGroup          NO-UNDO.
-DEFINE VARIABLE oParameters             AS List                   NO-UNDO.
-DEFINE VARIABLE oCampaignList           AS List                   NO-UNDO.
-DEFINE VARIABLE oCustomerList           AS List                   NO-UNDO.
-
-DEFINE VARIABLE oIterator               AS IListIterator          NO-UNDO.
-DEFINE VARIABLE oCustIterator           AS IListIterator          NO-UNDO.
-DEFINE VARIABLE cStringEx               AS CHARACTER              NO-UNDO EXTENT.
-
-DEFINE VARIABLE cString                 AS CHARACTER              NO-UNDO.
-DEFINE VARIABLE clString                AS LONGCHAR               NO-UNDO.
-DEFINE VARIABLE lRetVal                 AS LOGICAL                NO-UNDO.
-DEFINE VARIABLE ii                      AS INTEGER                NO-UNDO.
-
-DEFINE TEMP-TABLE tCampaign
-    FIELD cType           AS CHARACTER 
-    FIELD cHerstGLN       AS CHARACTER 
-    FIELD cTitle          AS CHARACTER 
-    FIELD cBeschreibung   AS CHARACTER 
-    FIELD cAktType        AS CHARACTER 
-    FIELD dvonDatum       AS DATE 
-    FIELD dbisDatum       AS DATE 
-    FIELD nWert           AS DECIMAL 
-    FIELD cStatus         AS CHARACTER 
-    FIELD lVerkaufsAktion AS LOGICAL
-    FIELD cAktionsUnit    AS CHARACTER
-    FIELD cBundleGTIN     AS CHARACTER  
-    FIELD cBundleName     AS CHARACTER
-    FIELD cCustomers      AS CHARACTER   
-    .
-DEFINE TEMP-TABLE tAktArtikel
-    FIELD Artnr        AS INTEGER 
-    FIELD Inhalt       AS INTEGER 
-    FIELD Jahr         AS INTEGER 
-    FIELD cType        AS CHARACTER 
-    FIELD cHersteller  AS CHARACTER 
-    FIELD cTitle       AS CHARACTER 
-    FIELD cAktArt      AS CHARACTER 
-    FIELD dvonDatum    AS DATE 
-    FIELD dBisDatum    AS DATE 
-    FIELD nWert        AS DECIMAL 
-    FIELD cAktionsUnit AS CHARACTER 
-    FIELD cGebinde     AS CHARACTER
-    
-    INDEX tAktArtikel-k1 IS PRIMARY 
-    Artnr
-    Inhalt
-    Jahr 
-    .
-
-/*DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO.*/
-/*                                                     */
-DEFINE OUTPUT PARAMETER TABLE FOR tCampaign.
-
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-
-/* ***************************  Main Block  *************************** */
-
-oDigitalDrinkHandler = NEW DigitalDrinkHandler(     /*  Parameters aus properties */
-    INPUT cURL_Export,
-    INPUT cServerNameIndicator, 
-    INPUT cClientId,
-    INPUT cPassword, 
-    INPUT cClientName,
-    INPUT iGLN-Huber).
-oDigitalDrinkHandler:lDebug = lDebug.
-
-oFilter = NEW AktionsFilter().
-ASSIGN
-    oFilter:eBillingType          = BillingType:BT-EK
-    oFilter:cmanufacturerGLN      = '7611793000004'       /*  CoCa    */
-    oFilter:dtvalidFrom           = DATE(01/01/2021)
-    oFilter:dtvalidTo             = DATE(12/31/2021)
-    oFilter:eConditionState       = ConditionState:Con_Released
-    oFilter:dtLastRequirementDate = DATE(01/01/2021)
-    .
-    
-    
-oAktionenExportRequest = NEW AktionenExportRequest().
-ASSIGN
-    oAktionenExportRequest:cSenderName       = cClientName
-    oAktionenExportRequest:eType             = TYPE:EXP003
-    oAktionenExportRequest:oParameterFilters = oFilter
-    oAktionenExportRequest:lDebug            = TRUE.
-
-lRetVal = oDigitalDrinkHandler:getAktionenExport(oAktionenExportRequest, OUTPUT opErrorMessage, OUTPUT oAktionenExportResponse ).
-
-IF oAktionenExportResponse:iStateCount = 0 THEN RETURN.
-
-oCampaignList = oAktionenExportResponse:oCampaignList.
-oIterator     = oCampaignList:ListIterator().
-
-EMPTY TEMP-TABLE tCampaign.
-
-DO WHILE oIterator:HasNext():
-    oCampaign = CAST(oIterator:NEXT(), Campaign).
-      
-    CREATE  tCampaign.
-    ASSIGN  
-        tCampaign.cType           = oCampaign:eType:ToString()
-        tCampaign.cHerstGLN       = oCampaign:cManufacturerGln  
-        tCampaign.cTitle          = oCampaign:cTitle
-        tCampaign.cBeschreibung   = oCampaign:cDescription
-        tCampaign.cAktType        = oCampaign:eBillingType:ToString()
-        tCampaign.dVonDatum       = oCampaign:dtValidFrom
-        tCampaign.dbisDatum       = oCampaign:dtValidTo
-        tCampaign.nWert           = oCampaign:fValue
-        tCampaign.cStatus         = oCampaign:eConditionState:ToString()
-        tCampaign.lVerkaufsAktion = oCampaign:lSalespromotion
-        tCampaign.cAktionsUnit    = oCampaign:eUnit:ToString()
-        .
-        
-    EXTENT(cStringEx) = ?.
-    cString           = ''.
-    IF oCampaign:oBundlesGtin:Count > 0 THEN 
-    DO:
-        EXTENT(cStringEx) = oCampaign:oBundlesGtin:Count.
-        cStringEx = oCampaign:oBundlesGtin:ToArray().
-        DO ii = 1 TO oCampaign:oBundlesGtin:Count:
-            tCampaign.cBundleGTIN = tCampaign.cBundleGTIN
-                + (IF tCampaign.cBundleGTIN = '' THEN '' ELSE ',')
-                + cStringEx[ii].
-        END.
-    END.
-    
-    EXTENT(cStringEx) = ?.
-    cString           = ''.
-    IF oCampaign:oBundlesName:Count > 0 THEN 
-    DO:
-        EXTENT(cStringEx) = oCampaign:oBundlesName:Count.
-        cStringEx = oCampaign:oBundlesName:ToArray().
-        DO ii = 1 TO oCampaign:oBundlesName:Count:
-            tCampaign.cBundleName = tCampaign.cBundleName
-                + (IF tCampaign.cBundleName = '' THEN '' ELSE ',')
-                + cStringEx[ii].
-        END.
-    END.
-    
-    oCustomerList = oCampaign:oCustomerGroupList.
-    oCustIterator = oCustomerList:ListIterator().
-
-    DO WHILE oCustIterator:HasNext():
-        oCustomerGroup = CAST(oCustIterator:Next(), CustomerGroup).
-        tCampaign.cCustomers = tCampaign.cCustomers
-            + (IF tCampaign.cCustomers = '' THEN '' ELSE ',')
-            + oCustomerGroup:ToString().
-    END.
-    
-END.
-
-OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\Kampanien.csv' NO-MAP NO-CONVERT.
-FOR EACH tCampaign:
-    EXPORT DELIMITER ';' tCampaign.
-END.
-OUTPUT CLOSE.

+ 0 - 354
GUI/DigitalDrink/ddartikelexport.p

@@ -1,354 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : digitaldrinkartikelexport.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Thu Dec 17 06:48:29 CET 2020
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-USING OpenEdge.Core.Collections.IListIterator FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Bundle FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Content FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Filter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Product FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.TrustLevel FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportRequest FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Language FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
-
-{ propertiesDD.i }
-
-DEFINE VARIABLE oDigitalDrinkHandler  AS DigitalDrinkHandler        NO-UNDO.
-DEFINE VARIABLE oArtikelstammExport   AS ArtikelstammExportRequest  NO-UNDO.
-DEFINE VARIABLE oParameters           AS Parameter                  NO-UNDO.
-DEFINE VARIABLE oFilters              AS Filter                     NO-UNDO.
-DEFINE VARIABLE oProducts             AS Product                    NO-UNDO.
-DEFINE VARIABLE oTrust                AS TrustLevel                 NO-UNDO.
-DEFINE VARIABLE oBundles              AS Bundle                     NO-UNDO.
-DEFINE VARIABLE oContent              AS Content                    NO-UNDO.
-DEFINE VARIABLE oSupplierGLN          AS Content                    NO-UNDO.
-DEFINE VARIABLE dtLastRequirementDate AS DATE                       NO-UNDO.
-DEFINE VARIABLE lRequirementAllDates  AS LOGICAL                    NO-UNDO.
-
-DEFINE VARIABLE opErrorMessage        AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE oProductData          AS ArtikelstammExportResponse NO-UNDO.
-
-DEFINE VARIABLE oProductsIterator     AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oTrustIterator        AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oBundlesIterator      AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oContentIterator      AS IListIterator              NO-UNDO.
-
-DEFINE VARIABLE cString               AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cBundleName           AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cStringEx             AS CHARACTER                  NO-UNDO EXTENT.
-DEFINE VARIABLE cStateId              AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cType                 AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE ii                    AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE i1                    AS INTEGER                    NO-UNDO INIT 0.
-DEFINE VARIABLE iAnzProdukte          AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE lRetVal               AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lResult               AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lBasis                AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lInhalt               AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lMarketing            AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE iArt                  AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE lFound                AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE cHerstArtnr           AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cEANKGeb              AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cEANVGeb              AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cEANGGeb              AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE iKGebMe               AS DECIMAL                    NO-UNDO.
-DEFINE VARIABLE iVGebMe               AS DECIMAL                    NO-UNDO.
-DEFINE VARIABLE iGGebMe               AS DECIMAL                    NO-UNDO.
-DEFINE VARIABLE cDDVGebinde           AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE lAktiv                AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lVerfuegbar           AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE nInhalte              AS DECIMAL                    NO-UNDO EXTENT 5.
-DEFINE VARIABLE nWert                 AS DECIMAL                    NO-UNDO.
-
-{ ttDDArtikel.i }
-
-DEFINE BUFFER bttDDArtikel FOR ttDDArtikel.
-
-DEFINE TEMP-TABLE tCharList
-    FIELD cFeld AS CHARACTER.
-
-DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO.
-        
-DEFINE OUTPUT PARAMETER TABLE FOR ttDDArtikel.
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-/* ************************  Function Prototypes ********************** */
-
-
-
-/* ***************************  Main Block  *************************** */
-
-/* ************************  Function Implementations ***************** */
-
-oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-    INPUT cURL_Export,
-    INPUT cServerNameIndicator, 
-    INPUT cClientId,
-    INPUT cPassword, 
-    INPUT cClientName,
-    INPUT iGLN-Huber).
-
-oDigitalDrinkHandler:lDebug = lDebug.
-
-oProducts = NEW Product().
-/*oProducts:cManufacturerGLN = "7611793000004".       /*  Coca Cola   */*/
-oProducts:cManufacturerGLN = ipcGlnNr.
-oBundles = NEW Bundle().
-
-oFilters = NEW Filter(INPUT oProducts, INPUT oBundles).
-
-oParameters = NEW Parameter().
-oParameters:cClientId        = cClientId.
-oParameters:cClientName      = cClientName.
-oParameters:lContentMappings = TRUE.
-oParameters:eLanguage        = Language:de.
-oParameters:oFilters         = oFilters.
-
-lResult = oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData).
-MESSAGE lResult opErrorMessage
-    VIEW-AS ALERT-BOX.
-
-IF oProductData:oResponseStatus:cState <> 'DONE' THEN 
-DO: 
-    MESSAGE 'Abfrage misslungen' VIEW-AS ALERT-BOX.
-    RETURN 'ERROR'.
-END.
-
-iAnzProdukte = oProductData:oResponseStatus:iStateCount.
-
-oProductsIterator = oProductData:oProductsList:ListIterator().
-iAnzProdukte      = oProductData:oProductsList:Size.
-
-DO WHILE oProductsIterator:HasNext():
-    oProducts = CAST(oProductsIterator:Next(), Product).
-    
-    iAnzProdukte = iAnzProdukte + 1.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  Prüfung auf Freigegeben (Produzent oder DigitalDrink)               */
-    /*  ------------------------------------------------------------------  */
-    lRetVal          = FALSE.
-    oTrustIterator   = oProducts:oTrustLevelList:ListIterator().
-    
-    /*    DO WHILE oTrustIterator:HasNext():                                                */
-    /*        oTrust  = CAST(oTrustIterator:NEXT(), TrustLevel ) NO-ERROR.                  */
-    /*        IF ERROR-STATUS:ERROR THEN MESSAGE 'Trust-Error' ERROR-STATUS:GET-MESSAGE (1).*/
-    /*        cString = oTrust:cCode.                                                       */
-    /*        CASE cString:                                                                 */
-    /*            WHEN 'provedProducer'       THEN                                          */
-    /*                lRetVal = TRUE.                                                       */
-    /*            WHEN 'provedDigitalDrink'   THEN                                          */
-    /*                lRetVal = TRUE.                                                       */
-    /*        END.                                                                          */
-    /*        IF lRetVal THEN LEAVE.                                                        */
-    /*    END.                                                                              */
-    /*    IF NOT lRetVal THEN NEXT.*/
-
-    cString  = oProducts:cname.
-    cStateId = oProducts:cStateId.
-    
-    CASE cStateId:
-        WHEN 'Prd_Deleted'  THEN 
-            NEXT.
-        WHEN 'Prd_Created'  THEN 
-            NEXT.
-        WHEN 'Prd_Archived' THEN 
-            NEXT.
-        WHEN 'Prd_Denied'   THEN 
-            NEXT.
-        WHEN 'Prd_Denied_SalesData' THEN 
-            NEXT.
-    END CASE.
-
-    oContent         = oProducts:oContent.
-    oBundlesIterator = oProducts:oBundlesList:ListIterator().
-
-    BUNDLE:
-    DO WHILE oBundlesIterator:HasNext():
-        oBundles = CAST(oBundlesIterator:Next(), Bundle).
-
-        cStateId = oBundles:cStateID.
-    
-        lAktiv      = TRUE.
-        lVerfuegbar = TRUE.
-        CASE cStateId:
-            WHEN 'Art_Deleted'  THEN 
-                lAktiv      = FALSE.
-            WHEN 'Art_Created'  THEN 
-                lVerfuegbar = FALSE. 
-            WHEN 'Art_Archived' THEN 
-                lAktiv      = FALSE. 
-            WHEN 'Art_Denied'   THEN 
-                lVerfuegbar = FALSE.
-            WHEN 'Art_Denied_SalesData' THEN 
-                lVerfuegbar = FALSE.
-        END CASE.
-
-        cBundleName = oBundles:cname.
-        /*        IF lDebug THEN MESSAGE 'Bundle : ' cBundleName.*/
-    
-        cString = oBundles:cTypeID NO-ERROR.
-        lRetVal = TRUE.
-        iArt    = 0.
-        lFound  = FALSE.
-        
-        ASSIGN
-            cEANKGeb = ''
-            cEANVGeb = ''
-            cEANGGeb = ''.
-        DO WHILE TRUE:
-            IF oBundles:cGTIN = '' THEN 
-            DO:
-                iArt = 2.
-                cEANKGeb = oBundles:crootBundleGTIN. 
-                cEANVGeb = oBundles:cParentBundleGTIN.
-                iGGebMe  = oBundles:iQuantity.
-                LEAVE.
-            END.
-            
-            IF  oBundles:cParentBundleGTIN = '' AND
-                oBundles:crootBundleGTIN   = '' THEN 
-            DO:
-                iArt     = 0.
-                cEANKGeb = oBundles:cGTIN.
-                iKGebMe  = oBundles:fQuantityLiter * 100. 
-                LEAVE.
-            END.
-            
-            cType = oBundles:cTypeID.
-            IF cType BEGINS 'CON.BEV.PA' THEN 
-            DO:
-                iArt = 2.
-                cEANKGeb = oBundles:crootBundleGTIN. 
-                cEANVGeb = oBundles:cParentBundleGTIN.
-                cEANGGeb = oBundles:cGTIN.
-                iGGebMe  = oBundles:iQuantity.
-                LEAVE.
-            END.
-            
-            iArt = 1.
-            cEANKGeb = oBundles:crootBundleGTIN. 
-            cEANVGeb = oBundles:cGTIN.
-            iVGebMe  = oBundles:iQuantity. 
-            LEAVE.
-        END.
-        
-        EXTENT(cStringEx) = ?.
-        cString           = ''.
-        IF oBundles:oSuppliersGln:Count > 0 THEN 
-        DO:
-            EXTENT(cStringEx) = oBundles:oSuppliersGln:Count.
-            cStringEx = oBundles:oSuppliersGln:ToArray().
-            DO ii = 1 TO oBundles:oSuppliersGln:Count:
-                cString = cString
-                    + (IF cString = '' THEN '' ELSE ',')
-                    + cStringEx[ii].
-            END.
-        END.
-        
-        cHerstArtnr = oBundles:cManufacturerArtNo.
-        IF cHerstArtnr = ? THEN cHerstArtnr = ''.
-        
-        IF iArt = 0 THEN 
-        DO:
-            CREATE  ttDDArtikel.
-            ASSIGN
-                ttDDArtikel.iArt        = iArt
-                ttDDArtikel.Bezeichnung = oBundles:cName
-                ttDDArtikel.HerstArtnr  = cHerstArtnr
-                ttDDArtikel.LieferGLN   = cString
-                ttDDArtikel.Gebinde     = oBundles:cTypeID
-                ttDDArtikel.lFound      = FALSE
-                ttDDArtikel.EANKGeb     = cEANKGeb
-                ttDDArtikel.EANVGeb     = ''
-                ttDDArtikel.EANGGeb     = ''
-                ttDDArtikel.KGebMe      = iKGebMe
-                ttDDArtikel.KGebCd      = oBundles:cTypeID
-                ttDDArtikel.lAktiv      = lAktiv
-                ttDDArtikel.lVerfuegbar = lVerfuegbar
-                ttDDArtikel.lAnzeigen   = TRUE.
-            IF  oBundles:cTypeID = 'CON.BEV.BA.PR' OR 
-                oBundles:cTypeID = 'CON.BEV.BA.PO' THEN 
-            DO:
-                iArt               = 1.
-                iVGebMe            = iKGebMe / 100.
-                iKGebMe            = 100.
-                ttDDArtikel.KGebMe = iKGebMe.
-            END.
-                 
-        END.
-        IF iArt = 1 THEN 
-        DO:
-            nInhalte = 0.
-            i1       = 0.
-            DO ii = 1 TO NUM-ENTRIES (oBundles:cName, ' '):
-                cString = ENTRY(ii, oBundles:cName, ' ').
-                nWert   = DECIMAL(cString) NO-ERROR.
-                IF ERROR-STATUS:ERROR THEN NEXT.
-                IF  nWert = 0 OR
-                    nWert = ? THEN NEXT.
-                i1 = i1 + 1.
-                nInhalte[i1] = nWert.
-            END.
-            IF i1 > 2 THEN DO:
-                MESSAGE 'Produkt = ' STRING(oBundles:cName) '-' nInhalte[01] '-' nInhalte[02]
-                VIEW-AS ALERT-BOX.
-                iVGebMe = nInhalte[01] * nInhalte[02].
-                END.
-            CREATE  ttDDArtikel.
-            ASSIGN
-                ttDDArtikel.iArt        = iArt
-                ttDDArtikel.Bezeichnung = oBundles:cName
-                ttDDArtikel.HerstArtnr  = cHerstArtnr
-                ttDDArtikel.LieferGLN   = cString
-                ttDDArtikel.Gebinde     = oBundles:cTypeID
-                ttDDArtikel.lFound      = FALSE
-                ttDDArtikel.EANKGeb     = cEANKGeb
-                ttDDArtikel.EANVGeb     = cEANVGeb
-                ttDDArtikel.EANGGeb     = ''
-                ttDDArtikel.VGebMe      = iVGebMe
-                ttDDArtikel.VGebCd      = oBundles:cTypeID
-                ttDDArtikel.lAktiv      = lAktiv
-                ttDDArtikel.lVerfuegbar = lVerfuegbar
-                ttDDArtikel.lAnzeigen   = TRUE.
-        END. 
-        IF iArt = 2 THEN 
-        DO:
-            CREATE  ttDDArtikel.
-            ASSIGN
-                ttDDArtikel.iArt        = iArt
-                ttDDArtikel.Bezeichnung = oBundles:cName
-                ttDDArtikel.HerstArtnr  = cHerstArtnr
-                ttDDArtikel.LieferGLN   = cString
-                ttDDArtikel.Gebinde     = oBundles:cTypeID
-                ttDDArtikel.lFound      = FALSE
-                ttDDArtikel.EANKGeb     = cEANKGeb
-                ttDDArtikel.EANVGeb     = cEANVGeb
-                ttDDArtikel.EANGGeb     = cEANGGeb
-                ttDDArtikel.GGebMe      = iGGebMe
-                ttDDArtikel.GGebCd      = oBundles:cTypeID
-                ttDDArtikel.lAktiv      = lAktiv
-                ttDDArtikel.lVerfuegbar = lVerfuegbar
-                ttDDArtikel.lAnzeigen   = TRUE.
-        END. 
-    END.
-        
-END.

+ 0 - 329
GUI/DigitalDrink/ddinhaltsstoffe.p

@@ -1,329 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : digitaldrinkartikelexport.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Thu Dec 17 06:48:29 CET 2020
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-USING OpenEdge.Core.Assert FROM PROPATH.
-USING OpenEdge.Core.Collections.IListIterator FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Bundle FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Content FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.ContentDetails FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Filter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.Product FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.beans.TrustLevel FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Language FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportRequest FROM PROPATH.
-USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse FROM PROPATH.
-
-{ propertiesDD.i }
-
-DEFINE VARIABLE oDigitalDrinkHandler  AS DigitalDrinkHandler        NO-UNDO.
-DEFINE VARIABLE oArtikelstammExport   AS ArtikelstammExportRequest  NO-UNDO.
-DEFINE VARIABLE oParameters           AS Parameter                  NO-UNDO.
-DEFINE VARIABLE oFilters              AS Filter                     NO-UNDO.
-DEFINE VARIABLE oProducts             AS Product                    NO-UNDO.
-DEFINE VARIABLE oTrust                AS TrustLevel                 NO-UNDO.
-DEFINE VARIABLE oBundles              AS Bundle                     NO-UNDO.
-DEFINE VARIABLE oContent              AS Content                    NO-UNDO.
-DEFINE VARIABLE oContentDetails       AS ContentDetails             NO-UNDO.
-DEFINE VARIABLE oSupplierGLN          AS Content                    NO-UNDO.
-DEFINE VARIABLE dtLastRequirementDate AS DATE                       NO-UNDO.
-DEFINE VARIABLE lRequirementAllDates  AS LOGICAL                    NO-UNDO.
-
-DEFINE VARIABLE opErrorMessage        AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE oProductData          AS ArtikelstammExportResponse NO-UNDO.
-
-DEFINE VARIABLE oProductsIterator     AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oTrustIterator        AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oBundlesIterator      AS IListIterator              NO-UNDO.
-DEFINE VARIABLE oContentIterator      AS IListIterator              NO-UNDO.
-
-DEFINE VARIABLE cString               AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE cStringEx             AS CHARACTER                  NO-UNDO EXTENT.
-DEFINE VARIABLE cType                 AS CHARACTER                  NO-UNDO.
-DEFINE VARIABLE ii                    AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE i1                    AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE iAnzProdukte          AS INTEGER                    NO-UNDO.
-DEFINE VARIABLE lRetVal               AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lBasis                AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lInhalt               AS LOGICAL                    NO-UNDO.
-DEFINE VARIABLE lMarketing            AS LOGICAL                    NO-UNDO.
-
-{ ttinhaltsstoffe.i }
-
-DEFINE TEMP-TABLE tCharList
-    FIELD cFeld AS CHARACTER 
-    .
-
-DEFINE INPUT  PARAMETER ipcGlnNr  AS CHARACTER NO-UNDO.
-DEFINE INPUT  PARAMETER ipcGtinNr AS CHARACTER NO-UNDO.
-        
-DEFINE OUTPUT PARAMETER TABLE FOR tinhalt.
-
-/* ********************  Preprocessor Definitions  ******************** */
-
-/* ************************  Function Prototypes ********************** */
-
-
-
-/* ***************************  Main Block  *************************** */
-
-/* ************************  Function Implementations ***************** */
-
-
-oDigitalDrinkHandler = NEW DigitalDrinkHandler(
-    INPUT cURL_Export,
-    INPUT cServerNameIndicator, 
-    INPUT cClientId,
-    INPUT cPassword, 
-    INPUT cClientName,
-    INPUT iGLN-Huber).
-    
-oDigitalDrinkHandler:lDebug = lDebug.
-
-oProducts = NEW Product().
-IF ipcGlnNr <> '' THEN oProducts:cManufacturerGLN = ipcGlnNr.
-oBundles = NEW Bundle().
-oBundles:cGTIN =ipcGtinNr. 
-
-oFilters = NEW Filter(INPUT oProducts, INPUT oBundles).
-
-MESSAGE ipcGlnNr '-' ipcGtinNr
-VIEW-AS ALERT-BOX.
-       
-oParameters                  = NEW Parameter().
-oParameters:cClientId        = cClientId.
-oParameters:cClientName      = cClientName.
-oParameters:lContentMappings = TRUE.
-oParameters:eLanguage        = Language:de.
-oParameters:oFilters         = oFilters.
-
-/*Assert:Equals(TRUE, oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData)).*/
-oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData).
-
-IF oProductData:oResponseStatus:cState <> 'DONE' THEN 
-DO: 
-    MESSAGE 'Abfrage misslungen' VIEW-AS ALERT-BOX.
-    RETURN 'ERROR'.
-END.
- 
-iAnzProdukte = oProductData:oResponseStatus:iStateCount.
-
-oProductsIterator = oProductData:oProductsList:ListIterator().
-DO WHILE oProductsIterator:HasNext():
-    oProducts = CAST(oProductsIterator:Next(), Product).
-    
-    oTrustIterator   = oProducts:oTrustLevelList:ListIterator().
-    
-    /*  ------------------------------------------------------------------  */
-    /*  Prüfung auf Freigegeben (Produzent oder DigitalDrink)               */
-    /*  ------------------------------------------------------------------  */
-    lRetVal = FALSE.
-    DO WHILE oTrustIterator:HasNext():
-        oTrust = CAST(oTrustIterator:NEXT(), TrustLevel ). 
-        cString = oTrust:cCode.
-        CASE cString:
-            WHEN 'provedProducer'       THEN 
-                lRetVal = TRUE.          
-            WHEN 'provedDigitalDrink'   THEN 
-                lRetVal = TRUE.
-        END.
-        IF lRetVal THEN LEAVE.
-    END.
-    /*    IF NOT lRetVal THEN NEXT.*/
-
-    /*  ------------------------------------------------------------------  */
-    /*  Allergiestoffe                                                      */
-    /*  ------------------------------------------------------------------  */
-    oContent          = oProducts:oContent.
-    EXTENT(cStringEx) = ?.
-    cStringEx = oContent:oallergenic:ToArray().
-    DO ii = 1 TO oContent:oallergenic:Count:
-        CREATE  tInhalt.
-        ASSIGN  
-            tInhalt.cType  = 'allergenic'
-            tInhalt.cStoff = cStringEx[ii].
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  animalSubstances                                                    */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oAnimalSubstances:Count <> ? AND
-        oContent:oAnimalSubstances:Count <> 0 THEN 
-    DO:    
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oAnimalSubstances:ToArray().
-        DO ii = 1 TO oContent:oAnimalSubstances:Count:
-            CREATE  tInhalt.
-            ASSIGN  
-                tInhalt.cType  = 'animalSubstances'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  vegetable                                                           */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oVegetables:Count <> ? AND
-        oContent:oVegetables:Count <> 0 THEN 
-    DO:    
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oVegetables:ToArray().
-        DO ii = 1 TO oContent:oVegetables:Count:
-            CREATE  tInhalt.
-            ASSIGN  
-                tInhalt.cType  = 'vegetables'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  fruits                                                              */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oFruits:Count <> ? AND
-        oContent:oFruits:Count <> 0 THEN 
-    DO:    
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oFruits:ToArray().
-        DO ii = 1 TO oContent:oFruits:Count:
-            CREATE  tInhalt.
-            ASSIGN  
-                tInhalt.cType  = 'Fruits'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  fruits                                                              */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oDyes:Count <> ? AND
-        oContent:oDyes:Count <> 0 THEN
-    DO:
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oDyes:ToArray().
-        DO ii = 1 TO oContent:oDyes:Count:
-            CREATE  tInhalt.
-            ASSIGN
-                tInhalt.cType  = 'Dyes'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  Preservative                                                        */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oPreservative:Count <> ? AND
-        oContent:oPreservative:Count <> 0 THEN
-    DO:
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oPreservative:ToArray().
-        DO ii = 1 TO oContent:oPreservative:Count:
-            CREATE  tInhalt.
-            ASSIGN
-                tInhalt.cType  = 'Preservative'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  Emulsifiers                                                        */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oEmulsifiers:Count <> ? AND
-        oContent:oEmulsifiers:Count <> 0 THEN
-    DO:
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oEmulsifiers:ToArray().
-        DO ii = 1 TO oContent:oEmulsifiers:Count:
-            CREATE  tInhalt.
-            ASSIGN
-                tInhalt.cType  = 'Emulsifiers'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  Sweeteners                                                          */
-    /*  ------------------------------------------------------------------  */
-    oContent = oProducts:oContent.
-    IF  oContent:oSweeteners:Count <> ? AND
-        oContent:oSweeteners:Count <> 0 THEN
-    DO:
-        EXTENT(cStringEx) = ?.
-        cStringEx = oContent:oSweeteners:ToArray().
-        DO ii = 1 TO oContent:oSweeteners:Count:
-            CREATE  tInhalt.
-            ASSIGN
-                tInhalt.cType  = 'Sweeteners'
-                tInhalt.cStoff = cStringEx[ii].
-        END.
-    END.
-    
-    /*  ------------------------------------------------------------------  */
-    /*  nutritionInfo                                                       */
-    /*  ------------------------------------------------------------------  */
-    oContent          = oProducts:oContent.
-    oContentIterator  = oContent:oNutritionInfoList:ListIterator().
-    
-    DO WHILE oContentIterator:HasNext():
-        oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
-
-        CREATE  tInhalt.
-        ASSIGN  
-            tInhalt.cType  = oContentDetails:cName
-            tInhalt.cStoff = oContentDetails:cDescription
-            tInhalt.nWert  = oContentDetails:fValue.
-    END.
-        
-    /*  ------------------------------------------------------------------  */
-    /*  vitamins                                                            */
-    /*  ------------------------------------------------------------------  */
-    oContent          = oProducts:oContent.
-    oContentIterator  = oContent:oVitaminList:ListIterator().
-    
-    DO WHILE oContentIterator:HasNext():
-        oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
-
-        CREATE  tInhalt.
-        ASSIGN  
-            tInhalt.cType  = oContentDetails:cName
-            tInhalt.cStoff = oContentDetails:cDescription
-            tInhalt.nWert  = oContentDetails:fValue.
-    END.
-        
-    /*  ------------------------------------------------------------------  */
-    /*  acidifier                                                           */
-    /*  ------------------------------------------------------------------  */
-    oContent          = oProducts:oContent.
-    oContentIterator  = oContent:oAcidifierList:ListIterator().
-    
-    DO WHILE oContentIterator:HasNext():
-        oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
-
-        CREATE  tInhalt.
-        ASSIGN  
-            tInhalt.cType  = oContentDetails:cName
-            tInhalt.cStoff = oContentDetails:cDescription
-            tInhalt.nWert  = oContentDetails:fValue.
-    END.
-    
-END.

+ 0 - 39
GUI/DigitalDrink/ttDDArtikel.i

@@ -1,39 +0,0 @@
-/*  ----------------------------------------------  */
-/*  Temp-Table der ArtikelExport-Abfrage bei DD     */
-/*  ----------------------------------------------  */
-DEFINE TEMP-TABLE ttDDArtikel
-    FIELD iArt        AS INTEGER 
-    FIELD Bezeichnung AS CHARACTER 
-    FIELD HerstArtnr  AS CHARACTER 
-    FIELD EANKGeb     AS CHARACTER 
-    FIELD EANVGeb     AS CHARACTER 
-    FIELD EANGGeb     AS CHARACTER 
-    FIELD LieferGLN   AS CHARACTER
-    FIELD Gebinde     AS CHARACTER
-    FIELD lFound      AS LOGICAL 
-    FIELD Artnr       AS INTEGER 
-    FIELD Inhalt      AS INTEGER 
-    FIELD Jahr        AS INTEGER 
-    FIELD rArtst      AS RECID
-    FIELD KGebMe      AS INTEGER 
-    FIELD VGebMe      AS INTEGER 
-    FIELD GGebMe      AS INTEGER
-    FIELD KGebCd      AS CHARACTER  
-    FIELD VGebCd      AS CHARACTER  
-    FIELD GGebCd      AS CHARACTER
-    FIELD lAktiv      AS LOGICAL
-    FIELD lVerfuegbar AS LOGICAL
-    FIELD lAnzeigen   AS LOGICAL 
-    
-    INDEX ttDDArtikel-k1 IS PRIMARY
-    iArt 
-    Bezeichnung
-    INDEX ttDDArtikel-k2
-    iArt 
-    EANKGeb  
-    INDEX ttDDArtikel-k3
-    HerstArtnr
-    INDEX ttDDArtikel-k4
-    iArt
-    EANVGeb
-    .

+ 0 - 10
GUI/DigitalDrink/ttinhaltsstoffe.i

@@ -1,10 +0,0 @@
-/*  --------------------------------------------------------------  */
-/*  TEMP-TABLE fue die Artikel-Inhaltsstoffe (DigitalDrink)         */
-/*  --------------------------------------------------------------  */
-DEFINE TEMP-TABLE tInhalt
-    FIELD cType     AS CHARACTER FORMAT "x(20)"
-    FIELD cStoff    AS CHARACTER FORMAT "x(40)"
-    FIELD nWert     AS DECIMAL   FORMAT "->>>,>>9.99"
-    .
-DEFINE VARIABLE htInhalt AS HANDLE NO-UNDO.
-htInhalt = TEMP-TABLE tInhalt:DEFAULT-BUFFER-HANDLE.

+ 0 - 2284
GUI/DruckProgramme/Huber/Auftragsschein.p

@@ -1,2284 +0,0 @@
-&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
-&ANALYZE-RESUME
-
-USING OpenEdge.Core.String FROM PROPATH.
-USING OpenEdge.Net.HTTP.ClientBuilder FROM PROPATH.
-USING OpenEdge.Net.HTTP.Credentials FROM PROPATH.
-USING OpenEdge.Net.HTTP.IHttpClient FROM PROPATH.
-USING OpenEdge.Net.HTTP.IHttpRequest FROM PROPATH.
-USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
-USING OpenEdge.Net.HTTP.RequestBuilder FROM PROPATH.
-USING OpenEdge.Net.HTTP.ResponseBuilder FROM PROPATH.
-USING OpenEdge.Net.URI FROM PROPATH.
-
-&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  ************************** */
-
-
-DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-DEFINE VARIABLE AdFirma    AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE FBFirma    AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Firma      AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Progname   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogName   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lBatch     AS LOGICAL   NO-UNDO INIT TRUE.
-DEFINE VARIABLE cUser      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE sAktiv     AS LOGICAL   NO-UNDO INIT FALSE.
-
-/*DEFINE VARIABLE cBenutzerDaten AS CHARACTER NO-UNDO.               */
-/*DEFINE VARIABLE cBenutzer      AS CHARACTER NO-UNDO.               */
-/*DEFINE VARIABLE cRuester       AS CHARACTER NO-UNDO.               */
-DEFINE VARIABLE iAufnr     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iRecid     AS RECID     NO-UNDO.
-DEFINE VARIABLE iPlatz     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzahl    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
-DEFINE VARIABLE FormText   AS CHARACTER NO-UNDO EXTENT 30.
-DEFINE VARIABLE iSeite     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZusZZ     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE dDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE cZeile     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cKopf      AS CHARACTER NO-UNDO EXTENT 50.
-DEFINE VARIABLE cRabText   AS CHARACTER NO-UNDO FORMAT "x(25)".
-DEFINE VARIABLE cZusText   AS CHARACTER NO-UNDO FORMAT "x(25)".
-DEFINE VARIABLE cEpzText   AS CHARACTER NO-UNDO FORMAT "x(25)".
-DEFINE VARIABLE lOpen      AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE lMutation  AS LOGICAL   NO-UNDO INIT FALSE.
-DEFINE VARIABLE lMailLS    AS LOGICAL   NO-UNDO INIT FALSE.
-DEFINE VARIABLE lFirst     AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE lDrucken   AS LOGICAL   NO-UNDO.
-
-{ properties.i }
-
-{ incl/ttdruckparam.i  }
-{ incl/ttsendmail.i    }
-
-DEFINE STREAM out_Stream.
-
-DEFINE BUFFER bAufko     FOR Aufko    .
-DEFINE BUFFER bAufze     FOR Aufze    .
-DEFINE BUFFER bTabel     FOR Tabel    .
-DEFINE BUFFER bArtst     FOR Artst    .
-DEFINE BUFFER bSchrift   FOR Schrift  .
-DEFINE BUFFER bDrucker   FOR Drucker  .
-DEFINE BUFFER bSteuer    FOR Steuer   .
-DEFINE BUFFER bDebst     FOR Debst    .
-DEFINE BUFFER bAdresse   FOR Adresse  .
-DEFINE BUFFER bLotLager  FOR LotLager .
-DEFINE BUFFER bHoReLager FOR HoReLager.
-
-DEFINE TEMP-TABLE tAufze NO-UNDO LIKE Aufze
-    FIELD Platz   AS INTEGER
-    FIELD Lagort  AS CHARACTER
-    FIELD cMutArt AS CHARACTER
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Platz
-    Lagort
-    Pos
-    
-    INDEX tAufze-k2
-    Firma
-    Aufnr
-    Pos.
-    
-DEFINE BUFFER btAufze FOR tAufze.
-    
-DEFINE TEMP-TABLE zAufze LIKE tAufze.
-        
-DEFINE TEMP-TABLE tRuestAuf LIKE RuestAuf.  
-
-DEFINE VARIABLE htRuestAuf AS HANDLE NO-UNDO.
-DEFINE VARIABLE hrawTable  AS HANDLE NO-UNDO.
-htRuestAuf = TEMP-TABLE tRuestAuf:DEFAULT-BUFFER-HANDLE.
-hrawTable  = BUFFER rawTable:HANDLE.  
-
-DEFINE TEMP-TABLE tDrucker NO-UNDO
-    FIELD Drucker AS CHARACTER.
-    
-DEFINE TEMP-TABLE tSchrift NO-UNDO LIKE Schrift
-    FIELD iPlatz  AS INTEGER
-    FIELD Schacht AS INTEGER
-    FIELD Anzahl  AS INTEGER
-    FIELD iRecid  AS RECID
-    INDEX tSchrift-k1 IS PRIMARY
-    iPlatz
-    Schname
-    Schbild.
-
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    INDEX tTabTexte-k1 IS PRIMARY
-    cRecArt
-    iZeile.
-    
-DEFINE TEMP-TABLE tLagerorte
-    FIELD iPrio        AS INTEGER 
-    FIELD Art          AS INTEGER  
-    FIELD Artnr        AS INTEGER 
-    FIELD Inhalt       AS INTEGER
-    FIELD Jahr         AS INTEGER 
-    FIELD cSort        AS CHARACTER
-    FIELD HoReLager_Id AS INTEGER 
-    FIELD rHoReLager   AS RECID  
-    FIELD rLotLager    AS RECID
-    FIELD Lotnr        AS CHARACTER 
-    FIELD Verfall      AS DATE 
-    FIELD Bestand      AS INTEGER
-    FIELD Platz        AS INTEGER    
-    
-    INDEX tLagerorte-k1 IS PRIMARY
-    Artnr
-    Inhalt
-    Jahr
-    iPrio
-    Art 
-    cSort.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogfileName Procedure 
-FUNCTION getLogfileName RETURNS CHARACTER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-&IF DEFINED(EXCLUDE-putStream) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD putStream Procedure
-FUNCTION putStream RETURNS LOGICAL 
-    (ipAttrib AS CHARACTER,
-    ipAnzZeilen AS INTEGER,
-    INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* *********************** 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  *************************** */
-
-DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO.
-DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE kRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE tRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iCodeI    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cMessage  AS CHARACTER NO-UNDO.
-    
-DEFINE BUFFER dTabel    FOR Tabel.
-DEFINE BUFFER brawTable FOR rawTable.
-    
-SAktiv   = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
-IF SAktiv = ? THEN SAktiv = FALSE.
-
-IF SAktiv THEN 
-DO:
-    AdFirma  = DYNAMIC-FUNCTION('getAdMandant':U)   NO-ERROR.
-    FBFirma  = DYNAMIC-FUNCTION('getFBMandant':U)   NO-ERROR.
-    Firma    = DYNAMIC-FUNCTION('getMandant':U)     NO-ERROR.
-    Progname = DYNAMIC-FUNCTION('makeProgname':U,   INPUT THIS-PROCEDURE ) NO-ERROR.
-    cUser    = DYNAMIC-FUNCTION('getBenutzer')      NO-ERROR.
-    cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR.
-    lBatch   = DYNAMIC-FUNCTION('getBatch':U)       NO-ERROR.
-END.
-
-EMPTY TEMP-TABLE tDrucker.
-EMPTY TEMP-TABLE tSchrift.
-cPrinters = SESSION:GET-PRINTERS().
-DO ix = 1 TO NUM-ENTRIES(cPrinters, ','):
-    CREATE  tDrucker.
-    ASSIGN  
-        tDrucker.Drucker = ENTRY(ix, cPrinters, ',').
-END.
-    
-FIND bSteuer NO-LOCK
-    WHERE bSteuer.Firma = Firma.
-
-TABELLE:
-DO WHILE TRUE:
-    
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-        FIND FIRST bTabel NO-LOCK
-            WHERE bTabel.Firma  = Firma
-            AND   bTabel.RecArt = 'AUFDRUCK'
-            AND   bTabel.CodeI  > iCodeI
-            AND   bTabel.Bez1   = ''
-            AND   bTabel.Int_2  = 1 NO-ERROR.
-        IF NOT AVAILABLE bTabel THEN LEAVE TABELLE.
-    
-        tRecid = RECID(bTabel).
-        iCodeI = bTabel.CodeI.
-        
-        FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR.
-        IF  NOT AVAILABLE bTabel AND
-            LOCKED bTabel        THEN 
-        DO:
-            RELEASE bTabel.
-            FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR.
-            IF NOT AVAILABLE Tabel THEN NEXT.
-            
-            cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5',
-                Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            RELEASE Tabel.
-            NEXT.
-        END.
-        IF NOT AVAILABLE bTabel THEN NEXT.
-        
-        bTabel.Bez1 = 'A'.
-        lDrucken    = bTabel.Flag_3.
-        cMessage = SUBSTITUTE('Tabel Flag_3 = &1 ', bTabel.Flag_3 ).
-        RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            
-        FIND bAufko NO-LOCK
-            WHERE bAufko.Firma = bTabel.Firma
-            AND   bAufko.Aufnr = bTabel.Int_1 NO-ERROR.
-                
-        IF NOT AVAILABLE bAufko THEN 
-        DO:
-            DELETE  bTabel.
-            RELEASE bTabel.
-            NEXT.
-        END.
-                
-        iAufnr    = bAufko.Aufnr.
-        kRecid    = RECID(bAufko).
-        iRuestArt = bTabel.Int_3.
-        cRetValue = ''.
-
-        DO WHILE TRUE:
-            RUN LAGERORTE_ERMITTELN.
-            RUN FUELLEN_tAufze.
-        
-            FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR.
-            IF NOT AVAILABLE tAufze THEN 
-            DO:
-                DELETE  bTabel.
-                RELEASE bTabel.
-                NEXT TABELLE.
-            END.
-                    
-            RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
-            cMessage = SUBSTITUTE('Auftragsschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            
-            FIND bAufko WHERE RECID(bAufko) = kRecid.
-            RUN AUFTRAGSSCHEIN.
-            cRetValue = RETURN-VALUE.
-            cMessage  = SUBSTITUTE('Auftragsschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            IF cRetValue <> '' THEN LEAVE.
-                    
-            RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
-            cMessage = SUBSTITUTE('Rüstschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            
-            FIND bAufko WHERE RECID(bAufko) = kRecid.
-            RUN RUESTSCHEIN.
-            cRetValue = RETURN-VALUE.
-            cMessage  = SUBSTITUTE('Ruestschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-                    
-            LEAVE.
-        END.
-            
-        IF cRetValue <> '' THEN 
-        DO:
-            bTabel.Bez1 = 'F'.
-            RELEASE bTabel.
-            NEXT TABELLE.
-        END.
-    
-        IF AVAILABLE bTabel THEN 
-        DO:
-            FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR.
-            IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE.
-            RELEASE Aufko.
-            DELETE  bTabel.
-            RELEASE bTabel.
-        END.
-    
-        LEAVE.
-    END.
-    
-    IF NOT lMailLS THEN LEAVE.
-    
-    RUN START_HTML_DOKUMENT ( iAufnr ).
-    
-    LEAVE.
-        
-END.
-
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN Procedure 
-PROCEDURE AUFTRAGSSCHEIN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDokArt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hbAufko    AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE htTabTexte AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE nFakBetr   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-
-    cDokArt = 'AUFTRAGSSCHEIN'.
-    iSeite  = 0.
-    iZeile  = 0.
-    iPlatz  = 0.
-    cZeile  = ''.
-    lOpen   = FALSE.
-    dDatum  = bAufko.Lief_Datum.
-
-    RUN LIBILD ( cDokArt ).
-
-    hbAufko    = BUFFER bAufko:HANDLE.
-    htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
-    RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-
-    EMPTY TEMP-TABLE tSchrift.    
-    DO WHILE TRUE:
-        FIND FIRST RuestDaten NO-LOCK
-            WHERE RuestDaten.Firma    = bAufko.Firma
-            AND   RuestDaten.RuestArt = iRuestArt
-            AND   Ruestdaten.AS_Doku  = TRUE NO-ERROR.
-        IF AVAILABLE RuestDaten THEN 
-        DO:
-            iPlatz = RuestDaten.Platz.
-            RUN GET_DRUCKERDATEN ( iPlatz, RuestDaten.AS_Drucker, RuestDaten.AS_Schrift ).
-
-            IF RETURN-VALUE <> '' THEN RETURN RETURN-VALUE.
-            
-            FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz.
-            ASSIGN  
-                tSchrift.Schzztot = RuestDaten.AS_TotZZ
-                tSchrift.Schzzbeg = RuestDaten.AS_KopfZZ
-                tSchrift.Schzzend = RuestDaten.AS_FussZZ
-                tSchrift.Schacht  = RuestDaten.AS_Schacht
-                tSchrift.Anzahl   = RuestDaten.AS_Anzahl.
-            LEAVE.
-        END.
-        LEAVE.
-    END.
-    
-    EMPTY TEMP-TABLE zAufze.
-    CREATE  zAufze.
-
-    FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Knr NO-ERROR.
-            
-    cDateiName = SESSION:TEMP-DIR
-        + 'AuftragsSchein'
-        + STRING(TIME,'999999')
-        + STRING(RANDOM(1, 999999),'999999')
-        + '.txt'.
-
-    OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-    lOpen = TRUE.
-    
-    RUN AUFTRAGSSCHEIN_KOPF.
-    
-    i2 = 0.        
-    FOR EACH tAufze NO-LOCK
-        WHERE tAufze.Platz = 0:
-        FIND FIRST zAufze.
-        BUFFER-COPY tAufze TO zAufze.
-        RUN AUFTRAGSSCHEIN_ARTIKELZEILE.
-        i2 = i2 + 1.
-    END.
-    IF i2 > 0 THEN 
-    DO:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-
-    FOR EACH tAufze NO-LOCK
-        WHERE tAufze.Platz > 0
-        AND   tAufze.Platz < 99
-        
-        BY tAufze.Platz
-        BY tAufze.Lagort
-        BY tAufze.Pos  :
-            
-        FIND FIRST zAufze.
-        BUFFER-COPY tAufze TO zAufze.
-        
-        IF (tSchrift.Schzztot - iZeile - 2) < tSchrift.Schzzend THEN 
-        DO:
-            RUN AUFTRAGSSCHEIN_KOPF.
-        END.
-            
-        RUN AUFTRAGSSCHEIN_ARTIKELZEILE.
-
-        nFakBetr = nFakBetr + tAufze.Net_Betr.
-    END.
-
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    SUBSTRING(cZeile,040) = SUBSTRING(FormText[15],21,20).
-    SUBSTRING(cZeile,100) = STRING(nFakBetr,"->>>,>>9.99").
-    DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru12cpi.
-        
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-
-    IF BAufko.Auf_Text <> '' THEN 
-    DO:
-        cString = BAufko.Auf_Text.
-        i1 = NUM-ENTRIES(cString, CHR(10)).
-        IF i1 > 0 THEN iZusZZ = iZusZZ + i1 + 1.
-    END.
-    
-    IF iZusZZ > 0 THEN iZusZZ = iZusZZ + 2.
-    IF (tSchrift.Schzztot - iZeile - iZusZZ) < tSchrift.Schzzend THEN 
-    DO:
-        RUN AUFTRAGSSCHEIN_KOPF.
-    END.
-    
- 
-    /*  Auftragstext  ------------------------------------------------------    */
-
-    cString = BAufko.Auf_Text.
-    IF cString <> '' THEN 
-    DO:
-        i2 = 0.
-        DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
-            SUBSTRING(cZeile,005) = ENTRY(i1, cString, CHR(10)).
-            DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-            i2 = i2 + 1.
-        END.
-    END.
-    IF i2 > 0 THEN 
-    DO:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    
-    FOR EACH tAufze NO-LOCK
-        WHERE tAufze.Platz = 99:
-        FIND FIRST zAufze.
-        BUFFER-COPY tAufze TO zAufze.
-        RUN AUFTRAGSSCHEIN_ARTIKELZEILE.
-        i2 = i2 + 1.
-    END.
-    
-    IF lOpen = TRUE THEN 
-    DO:
-        OUTPUT STREAM out_Stream CLOSE.
-        lOpen = FALSE.
-
-        RUN DRUCKAUSGABE NO-ERROR.
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-    END.
-
-    RETURN ''.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_ARTIKELZEILE Procedure 
-PROCEDURE AUFTRAGSSCHEIN_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE dRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-
-    FIND FIRST zAufze NO-LOCK.
-    
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
-    DO WHILE zAufze.Artnr = 0:
-        SUBSTRING(cZeile,040) = STRING(zAufze.Bez1,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-        IF zAufze.Bez2 <> '' THEN 
-        DO:
-            SUBSTRING(cZeile,040) = STRING(zAufze.Bez2,"x(30)").
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-        END.
-        RETURN.
-    END.
-    
-    FIND Artst NO-LOCK
-        WHERE Artst.Firma  = zAufze.Firma
-        AND   Artst.Artnr  = zAufze.Artnr
-        AND   Artst.Inhalt = zAufze.Inhalt
-        AND   Artst.Jahr   = zAufze.Jahr.
-            
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = bAufko.Firma
-        AND   VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = bAufko.Firma
-        AND   KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR.
-    
-    SUBSTRING(cZeile,003) = STRING(KGebinde.KBez,"x(10)").
-    IF zAufze.VGeb_Be <> 0 THEN 
-    DO:
-        SUBSTRING(cZeile,015) = STRING(zAufze.VGeb_Be,'->>>')
-            + 'x '
-            + STRING(VGebinde.KBez,'x(10)').
-    END.
-    SUBSTRING(cZeile,031) = STRING(zAufze.MGeli  ,"->>,>>9").
-    SUBSTRING(cZeile,040) = STRING(zAufze.Bez1   ,"x(30)").
-    IF zAufze.Jahr        > 9 THEN SUBSTRING(cZeile,069) = STRING(zAufze.Jahr,"9999").
-    IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,074) = STRING(zAufze.Alk_Gehalt,"zz9.9%").
-    SUBSTRING(cZeile,082) = STRING(zAufze.Artnr  ,"999999").
-    SUBSTRING(cZeile,090) = STRING(zAufze.Preis      ,">>,>>9.999").
-    SUBSTRING(cZeile,100) = STRING(zAufze.Bru_Betr   ,"->>>,>>9.99").
-    SUBSTRING(cZeile,112) = STRING(zAufze.WuCd       ,"z9").
-    cZeile = SUBSTRING(cZeile,001,014)
-        + bDrucker.Drufettb
-        + SUBSTRING(cZeile,015,016)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,031).
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-    IF zAufze.Bez2 <> '' THEN 
-    DO:
-        SUBSTRING(cZeile,040) = STRING(zAufze.Bez2,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-    END.
-    IF zAufze.Aktion THEN 
-    DO:
-        SUBSTRING(cZeile,040) = STRING(zAufze.Aktion_Text,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-    END.
-
-    DO WHILE TRUE:    
-        IF zAufze.Rab_Betr = 0 THEN LEAVE.
-        
-        dRabWert = ABSOLUTE(zAufze.Rab_Wert).
-        IF zAufze.Rab_Art = 3 THEN cString = cEpzText.
-        ELSE 
-        DO:
-            IF zAufze.Rab_Betr < 0 THEN cString = cZusText.
-            IF zAufze.Rab_Betr > 0 THEN cString = cRabText.
-        END.
-        SUBSTRING(cZeile,040) = TRIM(cString).
-        
-        IF zAufze.Rab_Art = 1
-            THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"->9.9%").
-            
-        IF  zAufze.Rab_Art = 2 OR
-            zAufze.Rab_Art = 3
-            THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"-9.99").
-            
-        SUBSTRING(cZeile,100) = STRING(- zAufze.Rab_Betr ,"->>>,>>9.99").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF zAufze.Zus_Betr = 0 THEN LEAVE.
-        
-        dRabWert = ABSOLUTE(zAufze.Zus_Wert).
-        IF zAufze.Zus_Art = 3 THEN cString = cEpzText.
-        ELSE 
-        DO:
-            IF zAufze.Zus_Betr < 0 THEN cString = cRabText.
-            IF zAufze.Zus_Betr > 0 THEN cString = cZusText.
-        END.
-        SUBSTRING(cZeile,040) = TRIM(cString).
-        
-        IF zAufze.Zus_Art = 1
-            THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"->9.9%").
-            
-        IF  zAufze.Zus_Art = 2 OR
-            zAufze.Zus_Art = 3
-            THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"-9.99").
-            
-        SUBSTRING(cZeile,100) = STRING(+ zAufze.Zus_Betr ,"->>>,>>9.99").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_KOPF Procedure 
-PROCEDURE AUFTRAGSSCHEIN_KOPF :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE kk       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cAufnr   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210100' NO-UNDO.
-    DEFINE VARIABLE cBarcode AS CHARACTER NO-UNDO.
-
-    RUN NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        FIND bDebst  NO-LOCK USE-INDEX Debst-k1
-            WHERE bDebst.Firma  = bAufko.Firma
-            AND   bDebst.Knr    = bAufko.Knr NO-ERROR.
-    END.
-
-    ASSIGN  
-        cKopf  = ''
-        cZeile = ''
-        kk     = 0.
-                     
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        kk = kk + 2.
-        DO ix = 1 TO 5:                     
-            IF ix = 5 THEN SUBSTRING(cZeile,003) = bDrucker.Drufettb + bAufko.Adresse[ix] + bDrucker.Drufette.
-            ELSE           SUBSTRING(cZeile,003) = bAufko.Adresse[ix].
-            kk        = kk + 1.
-            cKopf[kk] = cZeile.
-            cZeile    = ''.
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 5 TO 11:
-            IF ix = 11 THEN SUBSTRING(cZeile,003) = bDrucker.Drufettb + bAdresse.Anschrift[ix] + bDrucker.Drufette.
-            ELSE            SUBSTRING(cZeile,003) = bAdresse.Anschrift[ix].
-            kk = kk + 1.
-            cKopf[kk] = cZeile.
-            cZeile    = ''.
-        END.
-    END.
-    IF iSeite = 1 THEN 
-    DO:
-        cAufnr = STRING(bAufko.Aufnr,'9999999').
-        RUN BAR-CODE-39 ( INPUT  cAufnr  ,
-            INPUT  cCodeArt,
-            OUTPUT cBarCode ).
-        kk = kk + 2.
-        SUBSTRING(cKopf[kk],003) = CHR(27) + "&f0S"         /*  Cursorposition speichern    */
-            + CHR(27) + "*p"                                /*  Cursor neu Positionieren anhand der Zeile   */
-            + STRING(((kk + iZeile) * 50),"9999") + "Y"
-            + cBarcode
-            + CHR(027) + "&f1S".                            /*  Cusrorposition zurückholen  */
-    END.
-    
-    kk = 12.
-    IF bAufko.Auf_Tot >= 0
-        THEN SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[02],01,20)).
-    ELSE SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[02],21,20)).
-    cKopf[kk] = cKopf[kk] + STRING(bAufko.Aufnr,"zz999999").
-    cKopf[kk] = SUBSTRING(cKopf[kk],001,066)
-        + bDrucker.Drufettb
-        + SUBSTRING(cKopf[kk],067)
-        + bDrucker.Drufette.
-    kk        = kk + 2.
-
-    IF iSeite = 1 THEN 
-    DO:
-        FIND FIRST tTabtexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[19],01,20))
-                + TRIM(bDrucker.Drufettb)
-                + ' '
-                + tTabTexte.cFeld3
-                + TRIM(bDrucker.Drufette).
-            cZeile    = ''.
-            kk        = kk + 1.
-        END.
-        
-        FIND FIRST tTabtexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'WISO' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[19],21,20))
-                + TRIM(bDrucker.Drufettb)
-                + ' '
-                + tTabTexte.cFeld3
-                + TRIM(bDrucker.Drufette).
-            cZeile    = ''.
-            kk        = kk + 1.
-        END.
-    
-        SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[07],41,20))
-            + " "
-            + STRING(bAufko.Auf_Datum,"99.99.9999").
-        SUBSTRING(cKopf[kk],034) = TRIM(SUBSTRING(FormText[08],01,20))
-            + STRING(bAufko.Knr,"zzzzzzz999999").
-        SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[07],01,20))
-            + " "
-            + STRING(dDatum,"99.99.9999").
-        cZeile    = ''.
-        kk        = kk + 1.
-                          
-        SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[09],21,20))
-            + " "
-            + STRING(bAufko.Lief_Datum,"99.99.9999").
-        SUBSTRING(cKopf[kk],034) = TRIM(SUBSTRING(FormText[08],21,20))
-            + STRING(bAufko.Gewicht,"z,zzz,zz9.999-").
-        SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[20],01,20))
-            + STRING(iSeite,'z9').
-        cKopf[kk] = SUBSTRING(cKopf[kk],01,33)
-            + bDrucker.Drufettb
-            + SUBSTRING(cKopf[kk],34,33)
-            + bDrucker.Drufette
-            + SUBSTRING(cKopf[kk],67).
-        cZeile    = ''.
-        kk        = kk + 1.
-        SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[07],21,20))
-            + " "
-            + STRING(bAufko.U_Ref,'x(20)').
-        SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[08],41,20))
-            + " "
-            + bAdresse.Tel-1.
-        cZeile    = ''.
-    END.
-    ELSE 
-    DO:
-        kk = kk + 2.
-        SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[20],01,20))
-            + STRING(iSeite,'z9').
-        kk = kk + 1.
-    END.
-    
-    kk = kk + 2.
-    cZeile = 'Inhalt         Gebinde        Menge  Bezeichnung                    JG   Alk%   ArtNr       Preis     Betrag  C'.
-    SUBSTRING(cKopf[kk],003)     = bDrucker.Druunterb
-        + cZeile
-        + bDrucker.Druuntere.
-    SUBSTRING(cKopf[kk - 1],003) = bDrucker.Druunterb
-        + FILL(' ', LENGTH(cZeile))
-        + bDrucker.Druuntere.
-    cKopf[kk - 1] = bDrucker.Dru15cpi + bDrucker.Drufettb
-        + cKopf[kk - 1]
-        + bDrucker.Drufettb + bDrucker.Dru12cpi.
-    cKopf[kk]     = bDrucker.Dru15cpi + bDrucker.Drufettb
-        + cKopf[kk]
-        + bDrucker.Drufettb + bDrucker.Dru12cpi.
-    kk     = kk + 1.
-    cZeile = ''.
-                          
-    DO ix = 1 TO kk:
-        cZeile = cKopf[ix].
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-    END.
-
-    IF iSeite = 1            AND
-        bAufko.Abh_Text <> '' THEN 
-    DO:
-        cString = bAufko.Abh_Text.
-        i2 = 0.
-        DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
-            SUBSTRING(cZeile,003) = ENTRY(i1, cString, CHR(10)).
-            DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile ) NO-ERROR.
-            i2 = i2 + 1.
-        END.
-        IF i2 > 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-    END.
-                          
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-BAR-CODE-39) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BAR-CODE-39 Procedure 
-PROCEDURE BAR-CODE-39 :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT  PARAMETER ipWert     AS  CHARACTER    NO-UNDO.
-    DEFINE INPUT  PARAMETER ipCodeArt  AS  CHARACTER    NO-UNDO.
-    DEFINE OUTPUT PARAMETER opBarCode  AS  CHARACTER    NO-UNDO.
-
-    DEFINE VARIABLE clr  AS LOG       INIT TRUE NO-UNDO.
-    DEFINE VARIABLE wk   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE drw  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDir AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE k    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE att  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE kod  AS CHARACTER NO-UNDO 
-        INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%".
-
-    att =
-        "100100001001100001101100000000110001100110000001110000000100101100100100"
-        + "001100100000110100100001001001001001101001000000011001100011000001011000"
-        + "000001101100001100001001100000011100100000011001000011101000010000010011"
-        + "100010010001010010000000111100000110001000110000010110110000001011000001"
-        + "111000000010010001110010000011010000010000101110000100011000100010010100"
-        + "010101000010100010010001010000101010".
-
-    DEFINE VARIABLE i   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE j   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE l   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE brd AS INTEGER NO-UNDO.
-    DEFINE VARIABLE jst AS INTEGER NO-UNDO.
-
-    ASSIGN  
-        i         = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2)
-        opBarCode = "~E&f0S~E*c100G"
-        drw       = SUBSTRING("ab"     , i, 1) 
-                      + SUBSTRING(ipCodeArt, 6) 
-                      + SUBSTRING("ba"     , i, 1)
-                      + "P"
-        cDir      = SUBSTRING("XY", i, 1)
-        k         = "*" + ipWert + "*" .
-
-    DO i = 1 TO LENGTH(k):
-        ASSIGN  
-            j  = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8
-            wk = SUBSTRING (att, j, 9) + "0" .
-        DO l = 1 TO 10:
-            ASSIGN  
-                brd       = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4
-                opBarCode = opBarCode 
-                              + (IF clr THEN "~E*c"  + SUBSTRING (ipCodeArt, brd, 2) + drw
-                                        ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2)) 
-                              + jst) + cDir)
-                jst       = INTEGER (SUBSTRING (ipCodeArt, brd, 2))
-                clr       = NOT clr.
-        END. /* of looping 1 to 10 */
-    END. /* of going through string 'k' */
-
-    ASSIGN  
-        opBarCode = opBarCode + "~E&f1S" 
-        wk        = "".
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CREATE_RUESTAUFTRAG) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_RUESTAUFTRAG Procedure 
-PROCEDURE CREATE_RUESTAUFTRAG :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE iSubPos AS INTEGER NO-UNDO.
-    DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
-    
-    DEFINE BUFFER bRuestAuf FOR RuestAuf.
-    DEFINE BUFFER mTabel    FOR Tabel.
-    
-    DISABLE TRIGGERS FOR LOAD OF RuestAuf.
-    
-    EMPTY TEMP-TABLE tRuestAuf.
-    EMPTY TEMP-TABLE zAufze   .
-
-    FIND FIRST tAufze NO-ERROR.
-    IF NOT AVAILABLE tAufze THEN RETURN.
-    
-    FIND bAufko NO-LOCK OF tAufze NO-ERROR.
-    lMailLS = TRUE.
-    IF bAufko.Auf_Sta > 1 THEN lMailLS = FALSE.
-    IF bAufko.Fahrer  = 0 THEN lMailLS = FALSE.
-    
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-    
-        FIND FIRST RuestAuf NO-LOCK 
-            WHERE RuestAuf.Firma = tAufze.Firma
-            AND   RuestAuf.Aufnr = tAufze.Aufnr NO-ERROR.
-        lFirst = (IF AVAILABLE RuestAuf THEN FALSE ELSE TRUE).
-        IF lFirst THEN lMailLS = FALSE.
-        
-        IF lFirst THEN 
-        DO:
-            /*  ------------------------------------------  */
-            /*  Erstmaliger Druck                           */
-            /*  ------------------------------------------  */
-            FOR EACH tAufze:
-                CREATE  zAufze.
-                BUFFER-COPY tAufze
-                    TO      zAufze
-                    ASSIGN  
-                    zAufze.cMutArt = 'NN'.
-            END.
-            LEAVE.
-        END.
-        
-        FOR EACH RuestAuf NO-LOCK 
-            WHERE RuestAuf.Firma = tAufze.Firma
-            AND   RuestAuf.Aufnr = tAufze.Aufnr:
-                
-            /*  ------------------------------------------  */
-            /*  Test auf RuestAuftragszeilen ohne Aufze     */
-            /*  ------------------------------------------  */
-            FIND Aufze NO-LOCK OF RuestAuf NO-ERROR.
-            IF NOT AVAILABLE Aufze THEN 
-            DO:
-                lMutation = TRUE.
-                lRetVal   = DYNAMIC-FUNCTION ('deleteRuestAuf':U, RECID(RuestAuf)) NO-ERROR.
-                RELEASE RuestAuf.
-                NEXT.
-            END.
-            
-            CREATE  tRuestAuf.            
-            BUFFER-COPY RuestAuf TO tRuestAuf.
-        END.
-        
-        FOR EACH tAufze:
-            CREATE  zAufze.
-            BUFFER-COPY tAufze
-                TO      zAufze.
-                
-            FIND FIRST tRuestAuf
-                WHERE tRuestAuf.Firma = tAufze.Firma
-                AND   tRuestAuf.Aufnr = tAufze.Aufnr
-                AND   tRuestAuf.Pos   = tAufze.Pos NO-ERROR.
-            IF NOT AVAILABLE tRuestAuf THEN 
-            DO:
-                zAufze.cMutArt = 'NN'.
-                NEXT.
-            END.
-            
-            IF  tRuestAuf.lGeruestet                AND 
-                tRuestAuf.MBest    = zAufze.MBest   AND
-                tRuestAuf.Lagerort = zAufze.Lagort  THEN NEXT.
-                
-            IF  NOT tRuestAuf.lGeruestet            AND 
-                tRuestAuf.MGeli    = 0              AND
-                tRuestAuf.Lagerort = zAufze.Lagort  THEN NEXT.
-                
-            IF  zAufze.MBest <  tRuestAuf.MGeli THEN 
-            DO:
-                FIND Aufze    NO-LOCK OF tAufze.
-                FIND RuestAuf NO-LOCK OF tRuestAuf.
-                lRetVal = DYNAMIC-FUNCTION ('deleteRuestAuf':U, RECID(RuestAuf)) NO-ERROR. 
-                lRetVal = DYNAMIC-FUNCTION ('deleteAufLot':U  , RECID(Aufze))    NO-ERROR.
-                zAufze.cMutArt = 'NN'.
-                NEXT.
-            END. 
-                
-            zAufze.cMutArt = 'M'.
-        END.
-        
-        LEAVE.
-    END.
-             
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-    
-        FOR EACH zAufze NO-LOCK 
-            WHERE zAufze.cMutArt <> '':
-                
-            FIND FIRST tLagerorte
-                WHERE tlagerorte.Artnr   = zAufze.Artnr
-                AND   tLagerorte.Inhalt  = zAufze.Inhalt
-                AND   tLagerorte.Jahr    = zAufze.Jahr.
-
-            IF zAufze.cMutArt BEGINS 'N' THEN 
-            DO:
-                CREATE  RuestAuf.
-                ASSIGN  
-                    RuestAuf.Firma          = zAufze.Firma
-                    RuestAuf.Aufnr          = zAufze.Aufnr
-                    RuestAuf.Platz          = tLagerorte.Platz
-                    RuestAuf.Pos            = zAufze.Pos
-                    RuestAuf.SubPos         = iSubPos
-                    RuestAuf.Artnr          = zAufze.Artnr
-                    RuestAuf.Inhalt         = zAufze.Inhalt
-                    RuestAuf.Jahr           = zAufze.Jahr
-                    RuestAuf.Lagerort       = tLagerorte.cSort
-                    RuestAuf.GGeb_Best      = zAufze.GGeb_Be
-                    RuestAuf.VGeb_Best      = zAufze.VGeb_Be 
-                    RuestAuf.KGeb_Best      = zAufze.KGeb_Be
-                    RuestAuf.lGeladen       = FALSE 
-                    RuestAuf.lGeruestet     = FALSE 
-                    RuestAuf.lLAGedruckt    = FALSE 
-                    RuestAuf.lLSGedruckt    = FALSE
-                    RuestAuf.lPAGedruckt    = FALSE 
-                    RuestAuf.lRSGedruckt    = FALSE 
-                    RuestAuf.lWeiter        = FALSE 
-                    RuestAuf.MBest          = zAufze.MBest
-                    RuestAuf.AnzPaletten    = 0
-                    RuestAuf.iMenge         = 0
-                    RuestAuf.GGeb_Geli      = 0
-                    RuestAuf.VGeb_Geli      = 0 
-                    RuestAuf.KGeb_Geli      = 0
-                    RuestAuf.MGeli          = 0
-                    RuestAuf.RecidArtLager  = ?
-                    RuestAuf.Verfall        = ?
-                    RuestAuf.Lotnr          = ''
-                    RuestAuf.RecidHoReLager = tLagerorte.rHoReLager
-                    RuestAuf.RecidLotLager  = tLagerorte.rLotLager
-                    RuestAuf.iMenge         = zAufze.KGeb_Be NO-ERROR.
-                NEXT.
-            END.
-            
-            IF zAufze.cMutArt = 'M' THEN 
-            DO:
-                FIND FIRST RuestAuf
-                    WHERE RuestAuf.Firma = zAufze.Firma
-                    AND   RuestAuf.Aufnr = zAufze.Aufnr
-                    AND   RuestAuf.Pos   = zAufze.Pos.
-
-                ASSIGN
-                    RuestAuf.Lagerort    = zAufze.Lagort
-                    RuestAuf.Platz       = tLagerorte.Platz
-                    RuestAuf.MBest       = zAufze.MBest   
-                    RuestAuf.iMenge      = zAufze.MBest   
-                    RuestAuf.GGeb_Best   = zAufze.GGeb_Be 
-                    RuestAuf.VGeb_Best   = zAufze.VGeb_Be 
-                    RuestAuf.KGeb_Best   = zAufze.KGeb_Be 
-                    RuestAuf.lGeladen    = FALSE 
-                    RuestAuf.lGeruestet  = FALSE
-                    RuestAuf.lLAGedruckt = FALSE
-                    RuestAuf.lLSGedruckt = FALSE
-                    RuestAuf.lPAGedruckt = FALSE
-                    RuestAuf.lRSGedruckt = FALSE
-                    RuestAuf.lWeiter     = FALSE. 
-            END.
-            
-        END.
-        
-        RELEASE Aufze   .
-        RELEASE RuestAuf.
-        RELEASE Aufko   .
-
-        LEAVE.
-    END.
-    
-    IF NOT lMailLS THEN RETURN .
-    
-    lMutation = FALSE.
-    FOR EACH zAufze NO-LOCK
-        WHERE zAufze.cMutArt <> '':
-            
-        FIND Aufze NO-LOCK OF zAufze NO-ERROR.
-        FIND FIRST rawTable NO-LOCK
-            WHERE rawTable.Firma       = Aufze.Firma 
-            AND   rawTable.Tabelle     = 'RUESTAUF'
-            AND   rawTable.Tabelle_Id  = RECID(Aufze) NO-ERROR.
-        IF NOT AVAILABLE rawTable THEN NEXT. 
-
-        lMutation = TRUE.
-        LEAVE.
-    END.
-    
-    IF lMutation THEN 
-    DO:
-        REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-            FIND FIRST zAufze NO-ERROR.
-            FOR EACH RuestAuf NO-LOCK 
-                WHERE RuestAuf.Firma = zAufze.Firma
-                AND   RuestAuf.Aufnr = zAufze.Aufnr
-                AND   RuestAuf.lGeladen:
-                
-                FIND bRuestAuf WHERE RECID(bRuestAuf) = RECID(RuestAuf) EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-                IF AVAILABLE bRuestAuf THEN 
-                DO:
-                    bRuestAuf.lGeladen = FALSE.
-                    RELEASE bRuestAuf.
-                    NEXT.
-                END.
-            END.
-            RELEASE RuestAuf.
-            LEAVE.
-        END.
-    END.
-    
-    lMailLS = lMutation.
-    
-    RETURN.     /*  Neuer Rüstschein erstellt   */
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKAUSGABE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKAUSGABE Procedure
-PROCEDURE DRUCKAUSGABE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAnzKopien AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE sRecid     AS RECID     NO-UNDO.
-    DEFINE VARIABLE iSize      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iSchacht   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER INIT '' NO-UNDO.
-
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
-    IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
-
-    sRecid     = tSchrift.iRecid.
-    iAnzKopien = tSchrift.Anzahl.
-    iSchacht   = tSchrift.Schacht.    
-    
-    RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR.
-    
-    IF iAnzKopien = 0 THEN iAnzKopien = 1.
-
-    DO iKopie = 1 TO iAnzKopien WHILE lDrucken:
-        iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName        ,
-            sRecid            ,
-            tSchrift.Schacht  ,
-            240               ,    /* Blockgrösse      */
-            'ibm850'          ,
-            iAnzKopien        ).   /*  Anzahl Kopien   */
-        IF iSize = 0 THEN 
-        DO:
-            cString = 'Druckvorgang gescheitert !!! '.
-            RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR.
-            
-            IF lBatch THEN RETURN ERROR.
-            
-            MESSAGE cString VIEW-AS ALERT-BOX ERROR.
-            RETURN ERROR.
-        END.
-        
-        IF iKopie < iAnzKopien THEN 
-        DO:
-            ETIME(TRUE).
-            DO WHILE ETIME(FALSE) < 200:
-            END.
-        END.
-    END.
-
-    OS-DELETE VALUE(cDateiName) NO-ERROR.
-
-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:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE minPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lArtikel AS LOG       NO-UNDO.
-
-    EMPTY TEMP-TABLE tAufze.
-    
-    ASSIGN  
-        minPos = 0
-        maxPos = 9999.
-
-    /*  --------------------------------------  */
-    /*  Kommentar zu Beginn eines Auftrages     */
-    /*  --------------------------------------  */
-    lArtikel = FALSE.
-    FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k1
-        WHERE Aufze.Firma = Firma
-        AND   Aufze.Aufnr = bAufko.Aufnr
-        AND   Aufze.Pos   > minPos:
-            
-        IF Aufze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Aufze.Pos.
-        CREATE  tAufze.
-        BUFFER-COPY Aufze TO tAufze
-            ASSIGN  
-            tAufze.Platz  = 0
-            tAufze.LagOrt = ''.
-    END.
-    
-    /*  ----------------------------------------------  */
-    /*  Kommentar am Ende eines Auftrages               */
-    /*  ebenfalls an den Anfang des Auftrages schieben  */
-    /*  ----------------------------------------------  */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Aufze NO-LOCK
-            WHERE Aufze.Firma = Firma
-            AND   Aufze.Aufnr = bAufko.Aufnr
-            
-            BY Aufze.Pos DESCENDING:
-                
-            IF Aufze.Artnr > 0 THEN LEAVE.
-            maxPos = Aufze.Pos.
-            CREATE  tAufze.
-            BUFFER-COPY Aufze TO tAufze
-                ASSIGN  
-                tAufze.Platz  = 0
-                tAufze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Artikelzeilen dem Ruestsektor und Lagerplatz zuteilen   */
-    /*  ------------------------------------------------------  */
-    FOR EACH Aufze NO-LOCK
-        WHERE Aufze.Firma = Firma
-        AND   Aufze.Aufnr = bAufko.Aufnr
-        AND   Aufze.Pos   > minPos
-        AND   Aufze.Pos   < MaxPos:
-        
-        IF Aufze.Artnr > 0 THEN 
-        DO:
-            cLagOrt = ''.
-            jPlatz  = -1.            
-            FOR FIRST tLagerOrte NO-LOCK 
-                WHERE tLagerOrte.Artnr  = Aufze.Artnr
-                AND   tLagerOrte.Inhalt = Aufze.Inhalt
-                AND   tLagerOrte.Jahr   = Aufze.Jahr :
-                cLagOrt = tLagerorte.cSort.
-                jPlatz  = tLagerorte.Platz.
-            END.
-        END.
-        
-        CREATE  tAufze.
-        BUFFER-COPY Aufze TO tAufze
-            ASSIGN  
-            tAufze.Platz  = jPlatz
-            tAufze.LagOrt = cLagort.
-    END.
-    
-/*    OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\tAufze.csv'.*/
-/*    FOR EACH tAufze:                                    */
-/*        EXPORT DELIMITER ';' tAufze.                    */
-/*    END.                                                */
-/*    OUTPUT CLOSE.                                       */
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-GET_DRUCKERDATEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GET_DRUCKERDATEN Procedure 
-PROCEDURE GET_DRUCKERDATEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipDrucker   AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipSchrift   AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE lJa    AS LOG INIT TRUE NO-UNDO.
-    DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO.
-
-    DO WHILE TRUE:
-        FIND FIRST tDrucker NO-LOCK
-            WHERE tDrucker.Drucker = ipDrucker NO-ERROR.
-        IF AVAILABLE tDrucker THEN LEAVE.
-        
-        cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker). 
-        RETURN cMessage.
-    END.
-    
-    RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR.
-    IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker).
-        
-    DO WHILE TRUE:
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = ipDrucker
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = SESSION:PRINTER-NAME
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-
-        cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'.
-        RETURN cMessage.
-    END.
-
-    CREATE  tSchrift.
-    BUFFER-COPY Schrift TO tSchrift 
-        ASSIGN  
-        tSchrift.iPlatz  = ipPlatz
-        tSchrift.SchName = SESSION:PRINTER-NAME
-        tSchrift.iRecid  = RECID(Schrift).
-    FIND bDrucker NO-LOCK
-        WHERE bDrucker.Drucker = tSchrift.SchDru.
-
-    RETURN ''.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-LAGERORTE_ERMITTELN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LAGERORTE_ERMITTELN Procedure 
-PROCEDURE LAGERORTE_ERMITTELN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE iArt   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE iRecid AS RECID   NO-UNDO.
-    
-    EMPTY TEMP-TABLE tLagerOrte.
-    
-    FOR EACH bAufze NO-LOCK 
-        WHERE bAufze.Firma  = bAufko.Firma
-        AND   bAufze.Aufnr  = bAUfko.Aufnr
-        AND   bAufze.Artnr  > 0,
-        
-        FIRST bArtst NO-LOCK 
-        WHERE bArtst.Firma  = bAufze.Firma
-        AND   bArtst.Artnr  = bAufze.Artnr
-        AND   bArtst.Inhalt = bAufze.Inhalt
-        AND   bArtst.Jahr   = bAufze.Jahr :
-            
-        FIND FIRST HoReLager NO-LOCK
-            WHERE HoReLager.Firma   = bAufze.Firma
-            AND   HoReLager.Art     = 1
-            AND   HoReLager.Lager   = bAufze.Lager
-            AND   HoReLager.Artnr   = bAufze.Artnr
-            AND   HoReLager.Inhalt  = bAufze.Inhalt
-            AND   HoReLager.Jahr    = bAufze.Jahr NO-ERROR.
-            
-        IF NOT AVAILABLE HoReLager THEN 
-        DO:
-            FIND FIRST HoReLager NO-LOCK
-                WHERE HoReLager.Firma   = bAufze.Firma
-                AND   HoReLager.Art     = 1
-                AND   HoReLager.Lager   = bAufze.Lager
-                AND   HoReLager.Artnr   = bAufze.Artnr
-                AND   HoReLager.Inhalt  = bAufze.Inhalt NO-ERROR.
-        END.
-        
-        IF NOT AVAILABLE HoReLager THEN 
-        DO:
-            FIND FIRST HoReLager NO-LOCK
-                WHERE HoReLager.Firma   = bAufze.Firma
-                AND   HoReLager.Art     = 3
-                AND   HoReLager.Lager   = bAufze.Lager
-                AND   HoReLager.Artnr   = bAufze.Artnr
-                AND   HoReLager.Inhalt  = bAufze.Inhalt NO-ERROR.
-        END.
-        
-        CREATE  tLagerOrte.
-        ASSIGN
-            tLagerorte.iPrio        = 1   
-            tLagerorte.Artnr        = bAufze.Artnr
-            tLagerorte.Inhalt       = bAufze.Inhalt
-            tLagerorte.Jahr         = bAufze.Jahr 
-            tLagerorte.cSort        = (IF AVAILABLE HoReLager THEN HoReLager.cSort         ELSE '99'           )
-            tLagerorte.HoReLager_Id = (IF AVAILABLE HoReLager THEN HoReLager.HoReLager_Id  ELSE 0              )
-            tLagerorte.Bestand      = (IF AVAILABLE HoReLager THEN HoReLager.Bestand       ELSE bAufze.MBest   )
-            tLagerorte.Lotnr        = ''
-            tLagerorte.Verfall      = ?
-            tLagerorte.rHoReLager   = (IF AVAILABLE HoReLager THEN RECID(HoReLager)        ELSE ?              )
-            tLagerorte.rLotLager    = ?
-            tLagerorte.Art          = (IF AVAILABLE HoReLager THEN HoReLager.Art           ELSE 1              )
-            tLagerorte.Platz        = iPlatz.
-    
-    END.
-    
-    FOR EACH tLagerOrte:
-        FIND LAST RuestPlatz NO-LOCK USE-INDEX RuestPlatz-k2
-            WHERE RuestPlatz.Firma     = Firma
-            AND   RuestPlatz.RuestArt  = iRuestArt
-            AND   RuestPlatz.abLagort <= tLagerorte.cSort NO-ERROR.
-        tLagerorte.Platz = (IF AVAILABLE RuestPlatz THEN RuestPlatz.Platz ELSE 0).
-    END.
-    
-/*    OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\tLagerorte.csv'.*/
-/*    FOR EACH tLagerorte:                                    */
-/*        EXPORT DELIMITER ';' tLagerorte.                    */
-/*    END.                                                    */
-/*    OUTPUT CLOSE.                                           */
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-LIBILD) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LIBILD Procedure
-PROCEDURE LIBILD:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokArt    AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-    
-    cProgName = bSteuer.Fwc10 + ":" + ipDokArt.
-    FormText  = "".
-    FOR EACH LiBild USE-INDEX LiBild-k1
-        WHERE LiBild.Sprcd = 1
-        AND   LiBild.Prog  = cProgName
-        AND   LiBild.Tenr  > 0  NO-LOCK
-                    
-        ix = 1 TO 40:
-                    
-        FormText[ix] = LiBild.Litext.
-    END.
-    
-    cRabText =   TRIM(SUBSTRING(FormText[21],01,20)).
-    cZusText =   TRIM(SUBSTRING(FormText[21],21,20)).
-    cEpzText =   TRIM(SUBSTRING(FormText[21],41,20)).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-&IF DEFINED(EXCLUDE-NEUE_SEITE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_SEITE Procedure 
-PROCEDURE NEUE_SEITE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-
-    IF iSeite > 0 THEN 
-    DO:
-        PUT STREAM out_Stream CONTROL CHR(12).
-    END.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    iSeite = iSeite + 1.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-RUESTSCHEIN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN Procedure 
-PROCEDURE RUESTSCHEIN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDokArt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hbAufko    AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE htTabTexte AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE nFakBetr   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cDrucker   AS CHARACTER NO-UNDO.
-
-    ASSIGN  
-        cDokArt   = 'RUEST'
-        iSeite    = 0
-        iZeile    = 0
-        iPlatz    = 0
-        cZeile    = ''
-        lOpen     = FALSE
-        dDatum    = bAufko.Lief_Datum
-        lMutation = FALSE.
-    
-    RUN CREATE_RUESTAUFTRAG.
-    
-    RUN LIBILD ( cDokArt ).
-
-    hbAufko    = BUFFER bAufko:HANDLE.
-    htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
-    RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-
-    EMPTY TEMP-TABLE tSchrift.    
-    FOR EACH RuestDaten NO-LOCK
-        WHERE RuestDaten.Firma    = bAufko.Firma
-        AND   RuestDaten.RuestArt = iRuestArt
-        AND   RuestDaten.Platz    > 0
-        AND   RuestDaten.RU_Doku  = TRUE :
-            
-        iPlatz = RuestDaten.Platz.
-        RUN GET_DRUCKERDATEN ( iPlatz, RuestDaten.RU_Drucker, RuestDaten.RU_Schrift ).
-
-        IF RETURN-VALUE <> '' THEN RETURN RETURN-VALUE.
-            
-        FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz.
-        ASSIGN  
-            tSchrift.Schzztot = RuestDaten.RU_TotZZ
-            tSchrift.Schzzbeg = RuestDaten.RU_KopfZZ
-            tSchrift.Schzzend = RuestDaten.RU_FussZZ
-            tSchrift.Schacht  = RuestDaten.RU_Schacht
-            tSchrift.Anzahl   = RuestDaten.RU_Anzahl.
-    END.
-
-    EMPTY TEMP-TABLE zAufze.
-    CREATE zAufze.
-    
-    FOR EACH tAufze NO-LOCK
-        WHERE tAufze.Platz > 0
-        AND   tAufze.Platz < 99
-        AND   tAufze.Artnr > 0
-            
-        BREAK
-        BY tAufze.Platz
-        BY tAufze.Lagort
-        BY tAufze.Pos  :
-            
-        FIND FIRST zAufze.
-        BUFFER-COPY tAufze TO zAufze
-            ASSIGN  
-            zAufze.Lagort = tAufze.Lagort
-            zAufze.Platz  = tAufze.Platz.
-            
-        DO WHILE TRUE:
-            IF NOT FIRST-OF ( tAufze.Platz ) THEN LEAVE.
-            ASSIGN  
-                iSeite = 0
-                iZeile = 0
-                iPlatz = tAufze.Platz.
-            FIND FIRST tSchrift NO-LOCK
-                WHERE tSchrift.iPlatz  = iPlatz.
-                    
-            FIND bDrucker NO-LOCK
-                WHERE bDrucker.Drucker = tSchrift.SchDru.
-                    
-            IF NOT lOpen THEN 
-            DO:
-                cDrucker   = tSchrift.Schname.
-                cDateiName = SESSION:TEMP-DIR
-                    + 'RuestPapier'
-                    + STRING(TIME,'999999')
-                    + STRING(RANDOM(1, 999999),'999999')
-                    + '.txt'.
-                OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-                lOpen = TRUE.
-                LEAVE.
-            END.
-            
-            IF tSchrift.Schname = cDrucker THEN 
-            DO:
-                PUT STREAM out_Stream CONTROL CHR(12).
-                LEAVE.
-            END.
-            
-            OUTPUT STREAM out_Stream CLOSE.
-            lOpen = FALSE.
-            RUN DRUCKAUSGABE NO-ERROR.
-            IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-            
-            cDrucker   = tSchrift.Schname.
-            cDateiName = SESSION:TEMP-DIR
-                + 'RuestPapier'
-                + STRING(TIME,'999999')
-                + STRING(RANDOM(1, 999999),'999999')
-                + '.txt'.
-            OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-            lOpen = TRUE.
-            LEAVE.
-        END.
-        
-        IF  iSeite = 0                                            OR
-            (tSchrift.Schzztot - iZeile - 2) <= tSchrift.Schzzend THEN 
-        DO:
-            RUN RUESTSCHEIN_KOPF ( iPlatz ).
-            
-            FIND FIRST zAufze.
-            BUFFER-COPY tAufze TO zAufze.
-        END.
-            
-        RUN RUESTSCHEIN_ARTIKELZEILE.
-        
-        IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT.
-        
-        cZeile = FILL('=', 100).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-        FOR EACH btAufze NO-LOCK
-            WHERE btAufze.Platz = 99:
-            FIND FIRST zAufze.
-            BUFFER-COPY btAufze TO zAufze.
-            RUN RUESTSCHEIN_ARTIKELZEILE.
-            i2 = i2 + 1.
-        END.
-        
-    END.
-    
-    FOR EACH RuestAuf
-        WHERE RuestAuf.Firma  = bAufko.Firma
-        AND   RuestAuf.Aufnr  = bAufko.Aufnr:
-        RuestAuf.lRSGedruckt = TRUE.
-    END.
-    
-    IF lOpen THEN 
-    DO:
-        OUTPUT STREAM out_Stream CLOSE.
-        lOpen = FALSE.
-        RUN DRUCKAUSGABE NO-ERROR.
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-    END.
-    
-    IF bAufko.Auf_Sta < 1 THEN RUN WEITER ( bAufko.Aufnr ).    
-    RETURN ''.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-RUESTSCHEIN_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_ARTIKELZEILE Procedure
-PROCEDURE RUESTSCHEIN_ARTIKELZEILE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO.
-
-    FIND FIRST zAufze NO-LOCK.
-    
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
-    DO WHILE zAufze.Artnr = 0:
-        SUBSTRING(cZeile,036) = STRING(zAufze.Bez1,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        IF zAufze.Bez2 <> '' THEN 
-        DO:
-            SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)").
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        RETURN.
-    END.
-    
-    FIND Artst NO-LOCK OF zAufze.
-            
-    FIND VGebinde
-        WHERE VGebinde.Firma  = zAufze.Firma
-        AND   VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR.
-    FIND KGebinde
-        WHERE KGebinde.Firma  = zAufze.Firma
-        AND   KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR.
-    FIND FIRST ArtLief NO-LOCK
-        WHERE ArtLief.Firma            = zAufze.Firma
-        AND   ArtLief.Artnr            = zAufze.Artnr
-        AND   ArtLief.Inhalt           = zAufze.Inhalt
-        AND   ArtLief.Jahr             = zAufze.Jahr
-        AND   ArtLief.Strichcode_KGeb <> '' NO-ERROR.
-    cBarCode = ''.
-    oBarCode = ''.
-
-    IF AVAILABLE ArtLief THEN 
-    DO:
-        IF ArtLief.Strichcode_KGeb <> '' THEN cBarCode = ArtLief.Strichcode_KGeb.
-    END.
-    IF cBarCode = '' THEN cBarCode = Artst.Strichcode.
-    IF cBarCode = '' THEN cBarCode = TRIM(STRING(zAufze.Artnr ,'zzzzz9'))
-            + '.'
-            + TRIM(STRING(zAufze.Inhalt,'zzz9'))
-            + '.'
-            + TRIM(STRING(zAufze.Jahr  ,'zzz9')).
-    ELSE cBarCode = ''.
-    /*  Alle Artikelbarcode drucken */
-    /*    IF cBarCode = '' THEN cBarCode = TRIM(STRING(zAufze.Artnr ,'zzzzz9'))*/
-    /*            + '.'                                                        */
-    /*            + TRIM(STRING(zAufze.Inhalt,'zzz9'))                         */
-    /*            + '.'                                                        */
-    /*            + TRIM(STRING(zAufze.Jahr  ,'zzz9')).                        */
-    /*  --------------------------  */
-
-    IF cBarCode <> '' THEN 
-    DO:             .
-        RUN BAR-CODE-39 ( INPUT  cBarCode,
-            INPUT  cCodeArt,
-            OUTPUT oBarCode ).
-    END.
-                      
-    SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)").
-    IF zAufze.VGeb_Be <> 0 THEN 
-    DO:
-        SUBSTRING(cZeile,012) = STRING(zAufze.VGeb_Be,'->>>')
-            + 'x '
-            + VGebinde.KBez.
-    END.
-    SUBSTRING(cZeile,028) = STRING(zAufze.MBest  ,"->>>>9").
-    SUBSTRING(cZeile,036) = STRING(zAufze.Bez1   ,"x(30)").
-    IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(zAufze.Alk_Gehalt,"zz9.9%").
-    IF zAufze.Jahr        > 9 THEN SUBSTRING(cZeile,075) = STRING(zAufze.Jahr,"9999").
-    
-    SUBSTRING(cZeile,081) = STRING(zAufze.Artnr ,"999999").
-
-    FIND FIRST RuestAuf NO-LOCK
-        WHERE RuestAuf.Firma  = zAufze.Firma
-        AND   RuestAuf.Aufnr  = zAufze.Aufnr
-        AND   RuestAuf.Pos    = zAufze.Pos.    
-    SUBSTRING(cZeile,089) = RuestAuf.Lagerort.
-        
-    cZeile = bDrucker.Drufettb
-        + SUBSTRING(cZeile,001,027)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,028,061)
-        + bDrucker.Drufettb
-        + SUBSTRING(cZeile,089,014)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,103).
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF zAufze.Bez2 <> '' THEN 
-    DO:
-        SUBSTRING(cZeile,036)  = STRING(zAufze.Bez2,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    IF oBarCode <> '' THEN 
-    DO:
-        SUBSTRING(cZeile,036) = CHR(27) + "&f0S"        /*  Cursorposition speichern    */
-            + CHR(27) + "*p"          /*  Cursor neu Positionieren anhand der Zeile   */
-            + STRING((iZeile * 50) - 25,"9999") + "Y"
-            + oBarcode
-            + CHR(027) + "&f1S".      /*  Cusrorposition zurückholen  */
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    ELSE 
-    DO:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-&IF DEFINED(EXCLUDE-RUESTSCHEIN_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_KOPF Procedure
-PROCEDURE RUESTSCHEIN_KOPF:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE cAufnr     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-    
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    /* P = Portrait     */
-    /* L = Landscape    */
-    DEFINE VARIABLE cCodeArt   AS CHARACTER INIT 'P0210200' NO-UNDO.
-
-    RUN NEUE_SEITE.
-
-    PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi.
-    PUT STREAM out_Stream CONTROL CHR(27) '&k2G'.
-    
-    cAufnr = STRING(bAufko.Aufnr,'9999999')
-        + '.'
-        + TRIM(STRING(ipPlatz,'>9')).
-    RUN BAR-CODE-39 ( INPUT  cAufnr  ,
-        INPUT  cCodeArt,
-        OUTPUT oBarCode ).
-                      
-    oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode
-        + CHR(027) + "*p" + "405y" + "260X"
-        + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb
-        + cAufnr
-        + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette
-        + CHR(027) + "*p" + "0y" + "0X".
-    PUT STREAM out_Stream CONTROL oBarCode.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    
-    /*    IF iSeite = 1 THEN                                              */
-    /*    DO:                                                             */
-    /*        FIND LDebst  USE-INDEX Debst-k1                             */
-    /*            WHERE LDebst.Firma  = bAufko.Firma                      */
-    /*            AND   LDebst.Knr    = bAufko.Knr       NO-LOCK NO-ERROR.*/
-    /*        FIND FDebst  USE-INDEX Debst-k1                             */
-    /*            WHERE FDebst.Firma  = bAufko.Firma                      */
-    /*            AND   FDebst.Knr    = bAufko.Fak_Knr   NO-LOCK NO-ERROR.*/
-    /*    END.                                                            */
-
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        DO ix = 1 TO 5:                     
-            SUBSTRING(cZeile,066) = bAufko.Adresse[ix].
-            IF ix = 5 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE           
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 12:
-            SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix].
-            IF ix = 11 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE            
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-    END.
-    
-    IF bAufko.Auf_Tot >= 0
-        THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20).
-    ELSE SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20).
-    IF lMutation THEN cZeile = cZeile + ' (KORREKTUR) '.
-    SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20))
-        + " "
-        + STRING(dDatum,"99.99.9999").
-    cZeile = bDrucker.Drufettb
-        + SUBSTRING(cZeile,001,50)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,051).
-    DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF iSeite = 1 THEN 
-    DO:
-        FIND FIRST tTabtexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3.
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20))
-            + STRING(bAufko.Gewicht,"zz,zz9.999-").
-        cZeile = TRIM(bDrucker.Drufettb)
-            + SUBSTRING(cZeile,001,65)
-            + TRIM(bDrucker.Drufette)
-            + SUBSTRING(cZeile,066).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20))
-            + " "
-            + STRING(bAufko.Auf_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20))
-            + STRING(bAufko.Knr,"z999999").
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20))
-            + " "
-            + bAdresse.Tel-1.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-                          
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20))
-            + " "
-            + STRING(bAufko.Lief_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20))
-            + " ".       /*  Lieferart   */
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20))
-            + " "
-            + STRING(bAufko.U_Ref,'x(20)').
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-
-    SUBSTRING(cZeile,001) = TRIM(SUBSTRING(FormText[03],01,70)).
-    SUBSTRING(cZeile,071) = TRIM(SUBSTRING(FormText[04],01,70)).
-    DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF  iSeite = 1            AND
-        bAufko.Abh_Text <> '' THEN 
-    DO:
-        cString = bAufko.Abh_Text.
-        i2 = 0.
-        DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
-            SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)).
-            DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-            i2 = i2 + 1.
-        END.
-        IF i2 > 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-    END.
-
-    IF iSeite = 1 THEN 
-    DO:
-        i2 = 0.        
-        FOR EACH btAufze NO-LOCK
-            WHERE btAufze.Platz = 0:
-            FIND FIRST zAufze.
-            BUFFER-COPY btAufze TO zAufze.
-            RUN RUESTSCHEIN_ARTIKELZEILE.
-            i2 = i2 + 1.
-        END.
-        IF i2 > 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-
-        FIND FIRST RuestPlatz NO-LOCK
-            WHERE RuestPlatz.Firma    = bAufko.Firma
-            AND   RuestPlatz.RuestArt = iRuestArt
-            AND   RuestPlatz.Platz    = ipPlatz NO-ERROR.
-        i1     = (98 - LENGTH(RuestPlatz.Bezeichnung)) / 2.
-        cZeile = FILL('=', i1) + ' ' + RuestPlatz.Bezeichnung + ' ' + FILL('=', i1).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-                          
-    DO WHILE iSeite > 1:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-&IF DEFINED(EXCLUDE-START_HTML_DOKUMENT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE START_HTML_DOKUMENT Procedure 
-PROCEDURE START_HTML_DOKUMENT :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE INPUT PARAMETER ipiAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE VARIABLE cDateiName    AS CHARACTER     NO-UNDO.
-    DEFINE VARIABLE cMessage      AS CHARACTER     NO-UNDO.
-    DEFINE VARIABLE lRetVal       AS LOGICAL       NO-UNDO.
-
-    DEFINE VARIABLE oClient       AS IHttpClient   NO-UNDO.
-    DEFINE VARIABLE oURI          AS URI           NO-UNDO.
-    DEFINE VARIABLE oCredentials  AS Credentials   NO-UNDO.
-    
-    DEFINE VARIABLE oRequest      AS IHttpRequest  NO-UNDO.
-    DEFINE VARIABLE oResponse     AS IHttpResponse NO-UNDO.
-    DEFINE VARIABLE oResponseBody AS String        NO-UNDO.
-    DEFINE VARIABLE lcString      AS LONGCHAR      NO-UNDO INIT ''.
-    DEFINE VARIABLE cString       AS LONGCHAR      NO-UNDO INIT ''.
-
-    DEFINE VARIABLE cPath         AS CHARACTER     NO-UNDO.
-    
-    cDateiName = SUBSTITUTE('&1&2.html', SESSION:TEMP-DIRECTORY, STRING(ipiAufnr,'9999999')).
-
-    System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy().
-    oClient = ClientBuilder:Build():Client.
-    
-    oURI = NEW URI('http', cWebHost, INTEGER(cWebPort) ).
-
-    cPath = '/'
-        + cWebPath
-        + REPLACE(SUBSTITUTE('/ruesten_anpassung.p?Firma=&1£Aufnr=&2', Firma, ipiAufnr ), '£', '&').
-    oURI:Path = cPath.
-
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:        
-        oRequest      = RequestBuilder:Build('POST', oURI):ContentType('application/x-www-form-urlencoded'):Request.
-        oResponse     = ResponseBuilder:Build():Response.
-        oResponse     = ClientBuilder:Build():Client:Execute(oRequest).
-        oResponseBody = CAST(oResponse:Entity, OpenEdge.Core.STRING).
-        lcString      = oResponseBody:VALUE.
-        COPY-LOB lcString TO FILE cDateiName NO-CONVERT.
-        /*        cDateiName    = SEARCH(cDateiName).*/
-        cString       = lcString.
-        
-        IF cString <> '' THEN 
-        DO:
-            EMPTY TEMP-TABLE tRuestAuf.
-            CREATE  tRuestAuf.
-            FOR EACH rawTable
-                WHERE rawTable.Firma   = Firma
-                AND   rawTable.Tabelle = 'RUESTAUF':
-                
-                FIND FIRST tRuestAuf.
-                htRuestAuf:RAW-TRANSFER (FALSE, hrawTable:BUFFER-FIELD('rawData')).
-                IF tRuestAuf.Aufnr <> ipiAufnr THEN NEXT.
-
-                DELETE  rawTable.            
-                RELEASE rawTable.
-            END.
-        END.
-        LEAVE.
-    END.
-    
-    DELETE OBJECT oUri.
-    
-    EMPTY TEMP-TABLE ttSendMail.
-    CREATE  ttSendMail.
-    ASSIGN  
-        /*        ttSendMail.cFrom         = cMailFromRuestAuf*/
-        ttSendMail.cTo           = cMailToRuestAuf
-        ttSendMail.cCC           = 'wr@adprime.ch'
-        ttSendMail.cBC           = ''
-        ttSendMail.cSubject      = SUBSTITUTE('Aenderung in gerüstetem Auftrag &1', ipiAufnr)
-        ttSendMail.cBody         = SUBSTITUTE('FILE:&1', cDateiName)
-        ttSendMail.cAttachedName = ''
-        ttSendMail.cAttachedFile = ''
-            
-        ttSendMail.cMailServer   = cMailServer
-        ttSendMail.cMailPort     = cMailPort
-        ttSendMail.cMailKonto    = cMailKonto
-        ttSendMail.cMailPassw    = cMailPassw
-        ttSendMail.cDomaine      = cMailDomaine
-        ttsendmail.lAuth         = lMailAuth
-        ttSendMail.lSSLEnabled   = lSSLEnabled.
-    RUN 'sendsmtpmail.p' ( INPUT httSendMail, OUTPUT cMessage, OUTPUT lRetVal ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogfileName Procedure 
-FUNCTION getLogfileName RETURNS CHARACTER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cProg AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    
-    cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-    cProg = REPLACE(Progname, '\', '/').
-    ii    = R-INDEX(cProg, '/').
-    IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1).
-        
-    cPath = cPath
-        + cProg
-        + '_'
-        + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
-        + '.Log'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-putStream) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION putStream Procedure
-FUNCTION putStream RETURNS LOGICAL 
-    ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLF AS CHARACTER NO-UNDO.
-    
-    cLF = FILL(CHR(10), ipAnzZeilen).
-
-    CASE ipAttrib:
-        WHEN 'N' THEN 
-            PUT STREAM out_Stream CONTROL ipZeile.
-        WHEN 'F' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Drufettb  ipZeile bDrucker.Drufette.
-        WHEN 'U' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere.
-    END CASE.
-    
-    PUT STREAM out_Stream CONTROL cLF.
-    iZeile  = iZeile + ipAnzZeilen.
-    ipZeile = ''.
-
-    RETURN TRUE.
-
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2161
GUI/DruckProgramme/Huber/Faktura.p

@@ -1,2161 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast           AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis          AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   NO-UNDO EXTENT 15.
-DEFINE VARIABLE cFormtext       AS CHARACTER NO-UNDO EXTENT 30.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER NO-UNDO EXTENT 12.
-DEFINE VARIABLE lDebIncl        AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   NO-UNDO DECIMALS 4.
-DEFINE VARIABLE RundCode        AS INTEGER   NO-UNDO INIT 1.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iStart          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iEnde           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZusSpace       AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   NO-UNDO INIT 2650  .
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-
-DEFINE TEMP-TABLE tSeiten
-    FIELD iExemplar AS INTEGER 
-    FIELD iStart    AS INTEGER
-    FIELD iEnde     AS INTEGER
-    FIELD iAnzahl   AS INTEGER  
-    FIELD lLogo     AS LOGICAL
-    FIELD lBesr     AS LOGICAL
-    . 
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER ) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* 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  = TRUE.
-            
-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.
-    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.
-    
-    EMPTY TEMP-TABLE tSeiten.
-        
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            IF  iDokumentStatus = 2 AND
-                iLauf > 1           AND
-                iLauf < iAnzDok     THEN LEAVE.
-               
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma  = tParam.cFirma
-        AND   Aufko.Aufnr  = tParam.iAufnr :
-        /*         IF tParam.iVerband <> 999999 THEN DO: */
-        /*             FIND bDebst NO-LOCK */
-        /*                     WHERE bDebst.Firma = Aufko.Firma */
-        /*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-        /*             IF NOT AVAILABLE bDebst THEN NEXT. */
-        /*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-        /*         END. */
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      /* OR
-           Aufko.Fak_Datum < TODAY  */ THEN sAufko.dFakDat = TODAY.
-        ELSE                                sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',')
-            + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        
-        iPos = vpr_getPageVPos().
-        iPos = iPos + vpr_GetGroupHeight('Artikelzeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            iZusSpace = iMaxPos.
-            RUN VIPER_NEUE_SEITE.
-            RUN vpr_setGroupVPos ('ArtikelZeile1', vpr_getPageVPos() ).
-        END.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGroup  AS INTEGER   NO-UNDO.
-    
-    iSpace    = vpr_getPageVPos() + iZusSpace.
-    iGroup    = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-    iSpace    = iSpace + iGroup.
-    iZusSpace = 0.
-    
-    IF ipGruppe = 'FetteZeile' THEN 
-    DO:
-        FOR EACH tDokument NO-LOCK
-            WHERE tDokument.cGruppe = ipGruppe
-            AND   tDokument.cFeld BEGINS 'Bez_':
-            tDokument.cInhalt = vpr_toRTF(tDokument.cInhalt, "").
-        END.
-    END.
-
-    IF iSpace > iMaxPos THEN 
-    DO:
-        iZusSpace = iMaxPos.
-        RUN VIPER_NEUE_SEITE.
-    END.
-    
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = vpr_getPageVPos() + 20.
-                /*                RUN vpr_setPageVPos  ( iVPagePos ).*/
-                RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', vpr_getPageVPos() ).
-                RUN vpr_FlushGroup   ( 'GebindeabrechnungTitel').
-            END.
-        OTHERWISE 
-        DO:
-        END.
-    END CASE.
-    
-    iVPagePos = vpr_getPageVPos().
-
-    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:
-                RUN vpr_setGroupVPos ( ipGruppe, vpr_getPageVPos() ).
-                iVPagePos = vpr_getPageVPos().
-            END.
-        END.
- 
-        IF FIRST-OF ( tDokument.iZeile ) THEN
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01))
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',')
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE iPageBesr AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF  iSeite = 0 AND
-        iLauf  = 1 THEN 
-    DO:
-        RUN VIPER_INIT.
-        RUN DRUCKEN_KOPF.
-    END.
-    IF  iSeite = 0 AND
-        iLauf  > 1 THEN 
-    DO:
-        RUN DRUCKEN_KOPF.
-    END.
-
-    iMaxPos   = 2750.
-    iArtZeile = 0.
-    /*    iVPagePos = vpr_getPageVPos() + 50.                 */
-    /*    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cString = STRING(nRabWert,"z9.99-")
-                + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    iMaxPos   = 2650.
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iZusSpace = 40.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 AND
-        nFakBetr > 0          THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_NewPage.
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-                                
-    IF Rundbetr >= 0 THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-    RUN vpr_EndDoc.
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-        
-    RUN vpr_printOptions ('ShowPrintStatus', 'ON', '', '', '').
-
-    IF tParam.lDokDruck THEN 
-    DO:
-        IF iDokumentStatus < 2 THEN 
-        DO:
-            iStart = 9999.
-            iEnde  = 0.
-            FOR EACH tSeiten:
-                IF tSeiten.iStart < iStart THEN iStart = tSeiten.iStart.
-                IF tSeiten.iEnde  > iEnde  THEN iEnde  = tSeiten.iEnde.
-            END.        
-            IF iStart < 9999 THEN RUN vpr_printDoc ( iStart, iEnde ).
-        END.
-        ELSE 
-        DO:
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 1 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-                RUN vpr_printDoc ( iStart, iEnde ).
-            END.
-        END.
-    END.
-    IF  tParam.lCreatePDF   OR
-        iDokumentStatus > 0 THEN 
-    DO:
-        FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-        IF AVAILABLE tSeiten THEN 
-        DO:
-            iStart = tSeiten.iStart.
-            iEnde  = tSeiten.iEnde.
-        END.
-       
-        IF iDokumentStatus > 0 THEN 
-        DO:
-            FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-            END.
-        END.
-        
-        IF iDokumentStatus = 2 THEN 
-        DO:       
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN iEnde  = tSeiten.iEnde.
-        END.
-        
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_printPDF (iStart, iEnde, INPUT-OUTPUT cPDFName ).
-    END.
-    
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos(iVPagePos).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    /*    RUN vpr_SelectPrinter   (bViperDoc.Drucker).*/
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    CREATE  tSeiten.
-    ASSIGN  
-        tSeiten.iExemplar = 99
-        tSeiten.iAnzahl   = 1
-        tSeiten.lBesr     = TRUE 
-        tSeiten.lLogo     = FALSE.
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        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(dFakDatum,"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').
-    
-        IF  iDokumentStatus > 0 AND
-            iLauf < iAnzDok     THEN 
-        DO:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'PDF'
-                tDokument.cInhalt = 'PDF-RECHNUNG'.
-        END.
-        
-        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 ' ').
-    
-        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(bAufko.Gewicht,'->>>,>>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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tAufze TO tRueckst.
-        END.
-        
-        IF tAufze.Artnr > 0  AND
-            tAufze.MGeli = 0  THEN DELETE tAufze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   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_ResetDoc.
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-        RUN vpr_SetPreviewMode  ('Direct').
-        RUN vpr_setDocTitle     (tParam.cDokument).
-        RUN vpr_SetDelimiter    (CHR(01)).
-    END.
-    ELSE 
-    DO:
-        RUN vpr_NewPage.
-    END.
-    
-    RUN vpr_InitGroups("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie    > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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.
-            CREATE  tSeiten.
-            ASSIGN  
-                tSeiten.iExemplar = iLauf
-                tSeiten.iAnzahl   = iSeite
-                tSeiten.lBesr     = FALSE 
-                tSeiten.lLogo     = (IF iLauf = iAnzDok THEN TRUE ELSE FALSE ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + iZusSpace) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        
-        iSeite    = iSeite + 1.
-        iZusSpace = 0.
-        RUN DRUCKEN_ADRESSE.
-        FIND FIRST tSeiten
-            WHERE tSeiten.iExemplar = iLauf.
-        ASSIGN  
-            tSeiten.iAnzahl = iSeite.
-        RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO INIT 0.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-    
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile:
-
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        RUN vpr_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2110
GUI/DruckProgramme/Huber/FestFaktura.p

@@ -1,2110 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast           AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis          AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   NO-UNDO EXTENT 15.
-DEFINE VARIABLE cFormtext       AS CHARACTER NO-UNDO EXTENT 30.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER NO-UNDO EXTENT 12.
-DEFINE VARIABLE lDebIncl        AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   NO-UNDO DECIMALS 4.
-DEFINE VARIABLE RundCode        AS INTEGER   NO-UNDO INIT 1.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iStart          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iEnde           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZusSpace       AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   NO-UNDO INIT 2650  .
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-
-DEFINE TEMP-TABLE tSeiten
-    FIELD iExemplar AS INTEGER 
-    FIELD iStart    AS INTEGER
-    FIELD iEnde     AS INTEGER
-    FIELD iAnzahl   AS INTEGER  
-    FIELD lLogo     AS LOGICAL
-    FIELD lBesr     AS LOGICAL
-    . 
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-  (ipGruppe AS CHARACTER ) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* 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         = TRUE
-            
-    tParam.Drucker = SESSION:PRINTER-NAME
-    .
-            
-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.
-    RUN GET_FORMTEXT ( tParam.cInstall, 'Faktura', 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.
-    
-    EMPTY TEMP-TABLE tSeiten.
-        
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            IF  iDokumentStatus = 2 AND
-                iLauf > 1           AND
-                iLauf < iAnzDok     THEN LEAVE.
-               
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma  = tParam.cFirma
-        AND   Aufko.Aufnr  = tParam.iAufnr :
-        /*         IF tParam.iVerband <> 999999 THEN DO: */
-        /*             FIND bDebst NO-LOCK */
-        /*                     WHERE bDebst.Firma = Aufko.Firma */
-        /*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-        /*             IF NOT AVAILABLE bDebst THEN NEXT. */
-        /*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-        /*         END. */
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      /* OR
-           Aufko.Fak_Datum < TODAY  */ THEN sAufko.dFakDat = TODAY.
-        ELSE                                sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        
-        iPos = vpr_getPageVPos().
-        iPos = iPos + vpr_GetGroupHeight('Artikelzeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            iZusSpace = iMaxPos.
-            RUN VIPER_NEUE_SEITE.
-            RUN vpr_setGroupVPos ('ArtikelZeile1', vpr_getPageVPos() ).
-        END.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGroup  AS INTEGER   NO-UNDO.
-    
-    iSpace    = vpr_getPageVPos() + iZusSpace.
-    iGroup    = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-    iSpace    = iSpace + iGroup.
-    iZusSpace = 0.
-    
-    IF ipGruppe = 'FetteZeile' THEN 
-    DO:
-        FOR EACH tDokument NO-LOCK
-            WHERE tDokument.cGruppe = ipGruppe
-            AND   tDokument.cFeld BEGINS 'Bez_':
-            tDokument.cInhalt = vpr_toRTF(tDokument.cInhalt, "").
-        END.
-    END.
-
-    IF iSpace > iMaxPos THEN 
-    DO:
-        iZusSpace = iMaxPos.
-        RUN VIPER_NEUE_SEITE.
-    END.
-    
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = vpr_getPageVPos() + 20.
-/*                RUN vpr_setPageVPos  ( iVPagePos ).*/
-                RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', vpr_getPageVPos() ).
-                RUN vpr_FlushGroup   ( 'GebindeabrechnungTitel').
-            END.
-        OTHERWISE 
-        DO:
-        END.
-    END CASE.
-    
-    iVPagePos = vpr_getPageVPos().
-
-    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:
-                RUN vpr_setGroupVPos ( ipGruppe, vpr_getPageVPos() ).
-                iVPagePos = vpr_getPageVPos().
-            END.
-        END.
- 
-        IF FIRST-OF ( tDokument.iZeile ) THEN
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01))
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE iPageBesr AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF  iSeite = 0 AND
-        iLauf  = 1 THEN 
-    DO:
-        RUN VIPER_INIT.
-        RUN DRUCKEN_KOPF.
-    END.
-    IF  iSeite = 0 AND
-        iLauf  > 1 THEN 
-    DO:
-        RUN DRUCKEN_KOPF.
-    END.
-
-    iMaxPos   = 2750.
-    iArtZeile = 0.
-/*    iVPagePos = vpr_getPageVPos() + 50.                 */
-/*    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Auf_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[11],01,20))
-            + " "
-            + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Abh_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[15],01,20))
-            + " "
-            + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    iMaxPos   = 2650.
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iZusSpace = 40.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 AND
-        nFakBetr > 0          THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN DO:
-        RUN vpr_NewPage.
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-                                
-    IF Rundbetr >= 0 THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-    RUN vpr_EndDoc.
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-        
-    RUN vpr_printOptions ('ShowPrintStatus', 'ON', '', '', '').
-
-    IF tParam.lDokDruck THEN 
-    DO:
-        IF iDokumentStatus < 2 THEN 
-        DO:
-            iStart = 9999.
-            iEnde  = 0.
-            FOR EACH tSeiten:
-                IF tSeiten.iStart < iStart THEN iStart = tSeiten.iStart.
-                IF tSeiten.iEnde  > iEnde  THEN iEnde  = tSeiten.iEnde.
-            END.        
-            IF iStart < 9999 THEN RUN vpr_printDoc ( iStart, iEnde ).
-        END.
-        ELSE 
-        DO:
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 1 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-                RUN vpr_printDoc ( iStart, iEnde ).
-            END.
-        END.
-    END.
-    IF  tParam.lCreatePDF   OR
-        iDokumentStatus > 0 THEN 
-    DO:
-        FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-        IF AVAILABLE tSeiten THEN 
-        DO:
-            iStart = tSeiten.iStart.
-            iEnde  = tSeiten.iEnde.
-        END.
-       
-        IF iDokumentStatus > 0 THEN 
-        DO:
-            FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-            END.
-        END.
-        
-        IF iDokumentStatus = 2 THEN 
-        DO:       
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN iEnde  = tSeiten.iEnde.
-        END.
-        
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_printPDF (iStart, iEnde, INPUT-OUTPUT cPDFName ).
-    END.
-    
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos(iVPagePos).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    /*    RUN vpr_SelectPrinter   (bViperDoc.Drucker).*/
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    CREATE  tSeiten.
-    ASSIGN  
-        tSeiten.iExemplar = 99
-        tSeiten.iAnzahl   = 1
-        tSeiten.lBesr     = TRUE 
-        tSeiten.lLogo     = FALSE.
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        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(dFakDatum,"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').
-    
-        IF  iDokumentStatus > 0 AND
-            iLauf < iAnzDok     THEN 
-        DO:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'PDF'
-                tDokument.cInhalt = 'PDF-RECHNUNG'.
-        END.
-        
-        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 ' ').
-    
-        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(bAufko.Gewicht,'->>>,>>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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tAufze TO tRueckst.
-        END.
-        
-        IF tAufze.Artnr > 0  AND
-            tAufze.MGeli = 0  THEN DELETE tAufze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   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_ResetDoc.
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        /*         cString = SUBSTITUTE('copies=&1', tParam.Anzahl). */
-        RUN vpr_SetPrinterAttrib('copies=2').
-        RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-        RUN vpr_SetPreviewMode  ('Direct').
-        RUN vpr_setDocTitle     (tParam.cDokument).
-        RUN vpr_SetDelimiter    (CHR(01)).
-    END.
-    ELSE 
-    DO:
-        RUN vpr_NewPage.
-    END.
-    
-    RUN vpr_InitGroups("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie    > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2750.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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.
-            CREATE  tSeiten.
-            ASSIGN  
-                tSeiten.iExemplar = iLauf
-                tSeiten.iAnzahl   = iSeite
-                tSeiten.lBesr     = FALSE 
-                tSeiten.lLogo     = (IF iLauf = iAnzDok THEN TRUE ELSE FALSE ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + iZusSpace) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        
-        iSeite    = iSeite + 1.
-        iZusSpace = 0.
-        RUN DRUCKEN_ADRESSE.
-        FIND FIRST tSeiten
-            WHERE tSeiten.iExemplar = iLauf.
-        ASSIGN  
-            tSeiten.iAnzahl = iSeite.
-        RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-  ( ipGruppe AS CHARACTER  ):
-/*------------------------------------------------------------------------------
- Purpose:
- Notes:
-------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO INIT 0.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-    
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile:
-
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',') 
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        RUN vpr_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2295
GUI/DruckProgramme/Huber/FestSammelRechnung.p

@@ -1,2295 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast           AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis          AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext       AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl        AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode        AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cFaktext        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iStart          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iEnde           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZusSpace       AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   INIT 2750 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-
-DEFINE TEMP-TABLE tSeiten
-    FIELD iExemplar AS INTEGER 
-    FIELD iStart    AS INTEGER
-    FIELD iEnde     AS INTEGER
-    FIELD iAnzahl   AS INTEGER  
-    FIELD lLogo     AS LOGICAL
-    FIELD lBesr     AS LOGICAL
-    . 
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD iFak_Art AS INTEGER
-    FIELD iAuf_Sta AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    INDEX tTabTexte-k1 IS PRIMARY
-    cRecArt
-    iZeile.
-
-DEFINE TEMP-TABLE tRabSumTot
-    FIELD Aufnr     AS INTEGER
-    FIELD Grp       AS INTEGER
-    FIELD AufRabatt AS DECIMAL
-    FIELD AbhRabatt AS DECIMAL
-    .
-
-/* _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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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.
-            
-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.
-    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.
-        
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = sAufko.cFirma
-        AND   bDebst.Knr   = sAufko.iFak_Knr.
-    iDokumentStatus = bDebst.DokumentStatus.
-    RELEASE bDebst.
-        
-    EMPTY TEMP-TABLE tSeiten.
-        
-    { vpr.i INIT  }
-    { vpr.i START }
-        
-    FIND FIRST tParam.
-    iAnzDok = tParam.Anzahl.
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            IF  iDokumentStatus = 2 AND
-                iLauf > 1           AND
-                iLauf < iAnzDok     THEN LEAVE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-        FIND FIRST tRabSumTot
-            WHERE tRabSumTot.Aufnr = Aufze.Aufnr
-            AND   tRabSumTot.Grp   = Aufze.Rab_Su_Grp NO-ERROR.
-        IF NOT AVAILABLE tRabSumTot THEN 
-        DO:
-            CREATE  tRabSumTot.
-            ASSIGN  
-                tRabSumTot.Aufnr = Aufze.Aufnr
-                tRabSumTot.Grp   = Aufze.Rab_Su_Grp.
-        END.
-        ASSIGN  
-            tRabSumTot.AufRabatt = tRabSumTot.AufRabatt + Aufze.Auf_Rab
-            tRabSumTot.AbhRabatt = tRabSumTot.AbhRabatt + Aufze.Abh_Rab.
-
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
-
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko     .
-    EMPTY TEMP-TABLE tRabSumTot .
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    cFakText = ''.
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF cFakText = ''        AND
-            Aufko.Auf_Text <> '' THEN cFakText = cFakText
-                + (IF cFakText = '' THEN '' ELSE CHR(10))
-                + Aufko.Auf_Text.
-           
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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
-            sAufko.iFak_Art = Aufko.Fak_Art
-            sAufko.iAuf_Sta = Aufko.Auf_Sta.
-    END.
-    
-    /*  Alle Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                    
-                IF Aufko.Fak_Art = sAufko.iFak_Art AND
-                    Aufko.Auf_Sta = sAufko.iAuf_Sta THEN 
-                DO:
-                    IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                        Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                END.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum
-                AND   Aufko.Fak_Art     = sAufko.iFak_Art
-                AND   Aufko.Auf_Sta     = sAufko.iAuf_Sta:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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
-            AND   bAufko.Fak_Art     = sAufko.iFak_Art
-            AND   bAufko.Auf_Sta     = sAufko.iAuf_Sta:
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        
-        iPos = vpr_getPageVPos().
-        iPos = iPos + vpr_GetGroupHeight('Artikelzeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            iZusSpace = iMaxPos.
-            RUN VIPER_NEUE_SEITE.
-            RUN vpr_setGroupVPos ('ArtikelZeile1', vpr_getPageVPos() ).
-        END.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGroup  AS INTEGER   NO-UNDO.
-    
-    iSpace    = vpr_getPageVPos() + iZusSpace.
-    iGroup    = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-    iSpace    = iSpace + iGroup.
-    iZusSpace = 0.
-    
-    IF ipGruppe = 'FetteZeile' THEN 
-    DO:
-        FOR EACH tDokument NO-LOCK
-            WHERE tDokument.cGruppe = ipGruppe
-            AND   tDokument.cFeld BEGINS 'Bez_':
-            tDokument.cInhalt = vpr_toRTF(tDokument.cInhalt, "").
-        END.
-    END.
-
-    IF iSpace > iMaxPos THEN 
-    DO:
-        iZusSpace = iMaxPos.
-        RUN VIPER_NEUE_SEITE.
-    END.
-    
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = vpr_getPageVPos() + 20.
-/*                RUN vpr_setPageVPos  ( iVPagePos ).*/
-                RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', vpr_getPageVPos() ).
-                RUN vpr_FlushGroup   ( 'GebindeabrechnungTitel').
-            END.
-        OTHERWISE 
-        DO:
-        END.
-    END CASE.
-    
-    iVPagePos = vpr_getPageVPos().
-
-    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:
-                RUN vpr_setGroupVPos ( ipGruppe, vpr_getPageVPos() ).
-                iVPagePos = vpr_getPageVPos().
-            END.
-        END.
- 
-        IF FIRST-OF ( tDokument.iZeile ) THEN
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01))
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lFound    AS LOGICAL   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF  iSeite = 0 AND
-        iLauf  = 1 THEN 
-    DO:
-        RUN VIPER_INIT.
-        RUN DRUCKEN_KOPF.
-    END.
-    IF  iSeite = 0 AND
-        iLauf  > 1 THEN 
-    DO:
-        RUN DRUCKEN_KOPF.
-/*        RUN DRUCKEN_ADRESSE.*/
-    END.
-
-    iArtZeile = 1.
-    lFound    = FALSE.
-    iMaxPos   = 2750.
-    IF cFakText <> '' THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', cFakText ).
-        cFakText = ''.
-        lFound   = TRUE.
-    END.
-    
-    IF lFound THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', ' ' ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[18],01,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[17],21,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', ' ' ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        
-        /*  Passanten-Lieferadresse */
-        cLAdresse = ''.
-        IF  bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        
-        /*  Lieferadresse aus Adresse   */
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    END.
-    iZusSpace = (IF iSeite = 1 THEN 0 ELSE 100).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    
-    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')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    IF iArtZeile > 0 THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(AufGKon.MWSt_Cd,'z9') ).
-
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN
-    DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon USE-INDEX AufGKon-k1
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0) NO-LOCK:
-
-            iMwstCd = AufGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1001
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN
-            DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN
-                    tUmsGrp.Ums_Grp = 1001
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.999")) ).
-        END.
-        IF iArtZeile > 0 THEN
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nZeiTot,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN DO:
-            iZusSpace = 30.
-            RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-        END.
-    END.
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    
-    RUN vpr_FlushGroup   ('Fusstext').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos(iVPagePos).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    /*    RUN vpr_SelectPrinter   (bViperDoc.Drucker).*/
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    CREATE  tSeiten.
-    ASSIGN  
-        tSeiten.iExemplar = 99
-        tSeiten.iAnzahl   = 1
-        tSeiten.lBesr     = TRUE 
-        tSeiten.lLogo     = FALSE.
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace    AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPageBesr AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iMaxPos = 2650.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-
-    iZusSpace = 40.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  Rekap nach Umsatzgruppen  ----------------------------------------  */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', ' ' ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', ' ' ).
-    iArtZeile = iArtZeile + 1.
-    cString = vpr_toRTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold').
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', cString ).
-    iArtZeile = 1.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1'  , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Alk%'  , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Preis' , TRIM(STRING(TUmsGrp.Ums_Betr,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Betrag', TRIM(STRING(TUmsGrp.Ansatz  ,">9.99%")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'MC'    , TRIM(STRING(TUmsGrp.Mwst    ,"z9"))          ).
-    END.
-    IF iArtzeile > 1 THEN DO:
-        iZusSpace = 80.
-        RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-        RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-    END.
-    
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 AND
-        nFakBetr > 0          THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN DO:
-        RUN vpr_NewPage.
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-
-    cvpr_Dokument = SUBSTITUTE('Rechnungen\&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-
-    IF Rundbetr >= 0 THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-    RUN vpr_EndDoc.
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-        
-    RUN vpr_printOptions ('ShowPrintStatus', 'ON', '', '', '').
-
-    IF tParam.lDokDruck THEN 
-    DO:
-        IF iDokumentStatus < 2 THEN 
-        DO:
-            iStart = 9999.
-            iEnde  = 0.
-            FOR EACH tSeiten:
-                IF tSeiten.iStart < iStart THEN iStart = tSeiten.iStart.
-                IF tSeiten.iEnde  > iEnde  THEN iEnde  = tSeiten.iEnde.
-            END.        
-            IF iStart < 9999 THEN RUN vpr_printDoc ( iStart, iEnde ).
-        END.
-        ELSE 
-        DO:
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 1 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-                RUN vpr_printDoc ( iStart, iEnde ).
-            END.
-        END.
-    END.
-    IF  tParam.lCreatePDF   OR
-        iDokumentStatus > 0 THEN 
-    DO:
-        FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-        IF AVAILABLE tSeiten THEN 
-        DO:
-            iStart = tSeiten.iStart.
-            iEnde  = tSeiten.iEnde.
-        END.
-       
-        IF iDokumentStatus > 0 THEN 
-        DO:
-            FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-            END.
-        END.
-        
-        IF iDokumentStatus = 2 THEN 
-        DO:       
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN iEnde  = tSeiten.iEnde.
-        END.
-        
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_printPDF (iStart, iEnde, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF  iSeite = 1 /* AND
-        iLauf  = 1 */ THEN 
-    DO:
-        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(dFakDatum,"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(bAufko.Faknr,'z999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-        IF  iDokumentStatus > 0 AND
-            iLauf < iAnzDok     THEN 
-        DO:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'PDF'
-                tDokument.cInhalt = 'PDF-RECHNUNG'.
-        END.
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   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_ResetDoc.
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-        RUN vpr_SetPreviewMode  ('Direct').
-        RUN vpr_setDocTitle     (tParam.cDokument).
-        RUN vpr_SetDelimiter    (CHR(01)).
-    END.
-    ELSE 
-    DO:
-        RUN vpr_NewPage.
-    END.
-    
-    RUN vpr_InitGroups("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie    > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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.
-            CREATE  tSeiten.
-            ASSIGN  
-                tSeiten.iExemplar = iLauf
-                tSeiten.iAnzahl   = iSeite
-                tSeiten.lBesr     = FALSE 
-                tSeiten.lLogo     = (IF iLauf = iAnzDok THEN TRUE ELSE FALSE ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + iZusSpace) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        
-        iSeite    = iSeite + 1.
-        iZusSpace = 0.
-        RUN DRUCKEN_ADRESSE.
-        FIND FIRST tSeiten
-            WHERE tSeiten.iExemplar = iLauf.
-        ASSIGN  
-            tSeiten.iAnzahl = iSeite.
-        RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO INIT 0.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-    
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile:
-
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',') 
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        RUN vpr_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 874
GUI/DruckProgramme/Huber/Ladeschein.p

@@ -1,874 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : Palettenschein.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Mon May 31 14:11:18 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-/*          This .W file was created with the Progress AppBuilder.      */
-/*----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-BLOCK-LEVEL ON ERROR UNDO, THROW.
-
-DEFINE VARIABLE sAktiv         AS LOGICAL   NO-UNDO INIT FALSE.
-DEFINE VARIABLE AdFirma        AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Firma          AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Progname       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogName       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lBatch         AS LOGICAL   NO-UNDO INIT TRUE.
-DEFINE VARIABLE cUser          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iRuestArt      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cRuester       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iPlatz         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAufnr         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzahl        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSeite         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZeile         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE dDatum         AS DATE      NO-UNDO.
-DEFINE VARIABLE lOpen          AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE cZeile         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cKopf          AS CHARACTER NO-UNDO EXTENT 50.
-DEFINE VARIABLE FormText       AS CHARACTER NO-UNDO EXTENT 30.
-DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cDateiName     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cDrucker       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cMessage       AS CHARACTER NO-UNDO.
-
-{ properties.i }
-
-{ incl/ttdruckparam.i  }
-
-DEFINE STREAM out_Stream.
-
-DEFINE BUFFER bAufko     FOR Aufko    .
-DEFINE BUFFER bAufze     FOR Aufze    .
-DEFINE BUFFER bTabel     FOR Tabel    .
-DEFINE BUFFER bArtst     FOR Artst    .
-DEFINE BUFFER bSchrift   FOR Schrift  .
-DEFINE BUFFER bDrucker   FOR Drucker  .
-DEFINE BUFFER bSteuer    FOR Steuer   .
-DEFINE BUFFER bDebst     FOR Debst    .
-DEFINE BUFFER bAdresse   FOR Adresse  .
-DEFINE BUFFER bLotLager  FOR LotLager .
-DEFINE BUFFER bHoReLager FOR HoReLager.
-
-DEFINE TEMP-TABLE tDrucker NO-UNDO
-    FIELD Drucker AS CHARACTER.
-    
-DEFINE TEMP-TABLE tSchrift NO-UNDO LIKE Schrift
-    FIELD iPlatz  AS INTEGER
-    FIELD Schacht AS INTEGER
-    FIELD Anzahl  AS INTEGER
-    FIELD iRecid  AS RECID
-    INDEX tSchrift-k1 IS PRIMARY
-    iPlatz
-    Schname
-    Schbild.
-
-DEFINE TEMP-TABLE tAufze NO-UNDO LIKE Aufze
-    FIELD Platz  AS INTEGER
-    FIELD Lagort AS CHARACTER
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Platz
-    Lagort
-    Artnr.
-
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    INDEX tTabTexte-k1 IS PRIMARY
-    cRecArt
-    iZeile.
-    
-/* ********************  Preprocessor Definitions  ******************** */
-
-/* ************************  Function Prototypes ********************** */
-
-
-FUNCTION getLogfileName RETURNS CHARACTER 
-    (  ) FORWARD.
-
-FUNCTION putStream RETURNS LOGICAL 
-    (ipAttrib AS CHARACTER,
-    ipAnzZeilen AS INTEGER,
-    INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD.
-
-
-/* ***************************  Main Block  *************************** */
-
-DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO.
-DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE kRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE tRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iCodeI    AS INTEGER   NO-UNDO INIT -1.
-    
-DEFINE BUFFER dTabel FOR Tabel.
-    
-SAktiv   = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
-IF SAktiv = ? THEN SAktiv = FALSE.
-
-IF SAktiv THEN 
-DO:
-    AdFirma  = DYNAMIC-FUNCTION('getAdMandant':U)   NO-ERROR.
-    Firma    = DYNAMIC-FUNCTION('getMandant':U)     NO-ERROR.
-    Progname = DYNAMIC-FUNCTION('makeProgname':U,   INPUT THIS-PROCEDURE ) NO-ERROR.
-    cUser    = DYNAMIC-FUNCTION('getBenutzer')      NO-ERROR.
-    cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR.
-    lBatch   = DYNAMIC-FUNCTION('getBatch':U)       NO-ERROR.
-END.
-
-EMPTY TEMP-TABLE tDrucker.
-EMPTY TEMP-TABLE tSchrift.
-cPrinters = SESSION:GET-PRINTERS().
-DO ix = 1 TO NUM-ENTRIES(cPrinters, ','):
-    CREATE  tDrucker.
-    ASSIGN  
-        tDrucker.Drucker = ENTRY(ix, cPrinters, ',').
-END.
-    
-FIND bSteuer NO-LOCK
-    WHERE bSteuer.Firma = Firma.
-
-TABELLE:
-DO WHILE TRUE:
-
-    TABTRANS:
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-        FIND FIRST bTabel NO-LOCK
-            WHERE bTabel.Firma  = Firma
-            AND   bTabel.RecArt = 'wsLADEPAPIER'
-            AND   bTabel.CodeI  > iCodeI
-            AND   bTabel.Bez1   = ''
-            AND   bTabel.Int_2  = 3 NO-ERROR.
-        IF NOT AVAILABLE bTabel THEN LEAVE TABELLE.
-
-        tRecid    = RECID(bTabel).
-        iCodeI    = bTabel.CodeI.
-        iPlatz    = bTabel.Dec_1.
-        iAnzahl   = bTabel.Dec_2.
-        iRuestArt = bTabel.Int_3.
-        iAufnr    = bTabel.Int_1.
-        cRuester  = bTabel.Bez2.
-
-        FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR.
-        IF  NOT AVAILABLE bTabel AND
-            LOCKED bTabel        THEN 
-        DO:
-            RELEASE bTabel.
-            FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR.
-            IF NOT AVAILABLE Tabel THEN NEXT.
-            
-            cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5',
-                Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            RELEASE Tabel.
-            LEAVE TABTRANS.
-        END.
-        IF NOT AVAILABLE bTabel THEN LEAVE TABTRANS.
-        
-        bTabel.Bez1 = 'A'.
-            
-        FIND bAufko NO-LOCK
-            WHERE bAufko.Firma = bTabel.Firma
-            AND   bAufko.Aufnr = iAufnr NO-ERROR.
-                
-        IF NOT AVAILABLE bAufko THEN 
-        DO:
-            DELETE  bTabel.
-            RELEASE bTabel.
-            LEAVE TABTRANS.
-        END.
-                
-        kRecid    = RECID(bAufko).
-        cRetValue = ''.
-        dDatum    = bAufko.Lief_Datum.
-
-        DO WHILE TRUE:
-            RUN FUELLEN_tAufze.
-        
-            FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR.
-            IF NOT AVAILABLE tAufze THEN 
-            DO:
-                DELETE  bTabel.
-                RELEASE bTabel.
-                LEAVE TABTRANS.
-            END.
-                    
-            RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
-            cMessage = SUBSTITUTE('Ladeschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            
-            FIND bAufko NO-LOCK WHERE RECID(bAufko) = kRecid.
-            RUN LADESCHEIN.
-            
-            cRetValue = RETURN-VALUE.
-            cMessage  = SUBSTITUTE('Ladeschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-                    
-            LEAVE.
-        END.
-            
-        IF cRetValue <> '' THEN 
-        DO:
-            bTabel.Bez1 = 'F'.
-            RELEASE bTabel.
-            LEAVE TABTRANS.
-        END.
-    
-        IF AVAILABLE bTabel THEN 
-        DO:
-            FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR.
-            IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE.
-            RELEASE Aufko.
-            DELETE  bTabel.
-            RELEASE bTabel.
-        END.
-    
-        LEAVE.
-    END.
-    
-END.
-
-/* **********************  Internal Procedures  *********************** */
-
-PROCEDURE BAR-CODE-39 :
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT  PARAMETER ipWert     AS  CHARACTER    NO-UNDO.
-    DEFINE INPUT  PARAMETER ipCodeArt  AS  CHARACTER    NO-UNDO.
-    DEFINE OUTPUT PARAMETER opBarCode  AS  CHARACTER    NO-UNDO.
-
-    DEFINE VARIABLE clr  AS LOG       INIT TRUE NO-UNDO.
-    DEFINE VARIABLE wk   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE drw  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDir AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE k    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE att  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE kod  AS CHARACTER NO-UNDO 
-        INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%".
-
-    att =
-        "100100001001100001101100000000110001100110000001110000000100101100100100"
-        + "001100100000110100100001001001001001101001000000011001100011000001011000"
-        + "000001101100001100001001100000011100100000011001000011101000010000010011"
-        + "100010010001010010000000111100000110001000110000010110110000001011000001"
-        + "111000000010010001110010000011010000010000101110000100011000100010010100"
-        + "010101000010100010010001010000101010".
-
-    DEFINE VARIABLE i   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE j   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE l   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE brd AS INTEGER NO-UNDO.
-    DEFINE VARIABLE jst AS INTEGER NO-UNDO.
-
-    ASSIGN  
-        i         = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2)
-        opBarCode = "~E&f0S~E*c100G"
-        drw       = SUBSTRING("ab"     , i, 1) 
-                      + SUBSTRING(ipCodeArt, 6) 
-                      + SUBSTRING("ba"     , i, 1)
-                      + "P"
-        cDir      = SUBSTRING("XY", i, 1)
-        k         = "*" + ipWert + "*" .
-
-    DO i = 1 TO LENGTH(k):
-        ASSIGN  
-            j  = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8
-            wk = SUBSTRING (att, j, 9) + "0" .
-        DO l = 1 TO 10:
-            ASSIGN  
-                brd       = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4
-                opBarCode = opBarCode 
-                              + (IF clr THEN "~E*c"  + SUBSTRING (ipCodeArt, brd, 2) + drw
-                                        ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2)) 
-                              + jst) + cDir)
-                jst       = INTEGER (SUBSTRING (ipCodeArt, brd, 2))
-                clr       = NOT clr.
-        END. /* of looping 1 to 10 */
-    END. /* of going through string 'k' */
-
-    ASSIGN  
-        opBarCode = opBarCode + "~E&f1S" 
-        wk        = "".
-    
-END PROCEDURE.
-
-PROCEDURE DRUCKAUSGABE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAnzKopien AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE sRecid     AS RECID     NO-UNDO.
-    DEFINE VARIABLE iSize      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iSchacht   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER INIT '' NO-UNDO.
-
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
-    IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
-
-    sRecid     = tSchrift.iRecid.
-    iAnzKopien = tSchrift.Anzahl.
-    iSchacht   = tSchrift.Schacht.    
-    
-    RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR.
-    
-    IF iAnzKopien = 0 THEN iAnzKopien = 1.
-
-    DO iKopie = 1 TO iAnzKopien:
-        iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName        ,
-            sRecid            ,
-            tSchrift.Schacht  ,
-            240               ,    /* Blockgrösse      */
-            'ibm850'          ,
-            iAnzKopien        ).   /*  Anzahl Kopien   */
-        IF iSize = 0 THEN 
-        DO:
-            cString = 'Druckvorgang gescheitert !!! '.
-            RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR.
-            
-            IF lBatch THEN RETURN ERROR.
-            
-            RETURN cString.
-        END.
-        
-        IF iKopie < iAnzKopien THEN 
-        DO:
-            ETIME(TRUE).
-            DO WHILE ETIME(FALSE) < 200:
-            END.
-        END.
-    END.
-
-    OS-DELETE VALUE(cDateiName) NO-ERROR.
-
-END PROCEDURE.
-
-PROCEDURE FUELLEN_tAufze:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-
-    DEFINE VARIABLE minPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lArtikel AS LOG       NO-UNDO.
-
-    EMPTY TEMP-TABLE tAufze.
-    
-    FOR EACH Aufze NO-LOCK
-        WHERE Aufze.Firma = Firma
-        AND   Aufze.Aufnr = bAufko.Aufnr
-        AND   Aufze.Artnr > 0,
-        
-        FIRST RuestAuf NO-LOCK 
-        WHERE RuestAuf.Firma = Aufze.Firma
-        AND   RuestAuf.Aufnr = Aufze.Aufnr
-        AND   RuestAuf.Pos   = Aufze.Pos :
-        
-        CREATE  tAufze.
-        BUFFER-COPY Aufze TO tAufze
-            ASSIGN  
-            tAufze.Platz  = RuestAuf.Platz
-            tAufze.LagOrt = RuestAuf.Lagerort.
-            
-    END.
-    
-END PROCEDURE.
-
-PROCEDURE GET_DRUCKERDATEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipDrucker   AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipSchrift   AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE lJa    AS LOG INIT TRUE NO-UNDO.
-    DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO.
-
-    DO WHILE TRUE:
-        FIND FIRST tDrucker NO-LOCK
-            WHERE tDrucker.Drucker = ipDrucker NO-ERROR.
-        IF AVAILABLE tDrucker THEN LEAVE.
-        
-        cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker). 
-        RETURN cMessage.
-    END.
-    
-    RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR.
-    IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker).
-        
-    DO WHILE TRUE:
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = ipDrucker
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = SESSION:PRINTER-NAME
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-
-        cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'.
-        RETURN cMessage.
-    END.
-
-    CREATE  tSchrift.
-    BUFFER-COPY Schrift TO tSchrift 
-        ASSIGN  
-        tSchrift.iPlatz  = ipPlatz
-        tSchrift.SchName = SESSION:PRINTER-NAME
-        tSchrift.iRecid  = RECID(Schrift).
-    FIND bDrucker NO-LOCK
-        WHERE bDrucker.Drucker = tSchrift.SchDru.
-
-    RETURN ''.
-
-END PROCEDURE.
-
-PROCEDURE LIBILD:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokArt    AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-    
-    cProgName = bSteuer.Fwc10 + ":" + ipDokArt.
-    FormText  = "".
-    FOR EACH LiBild USE-INDEX LiBild-k1
-        WHERE LiBild.Sprcd = 1
-        AND   LiBild.Prog  = cProgName
-        AND   LiBild.Tenr  > 0  NO-LOCK  ix = 1 TO 40:
-                    
-        FormText[ix] = LiBild.Litext.
-    END.
-    
-END PROCEDURE.
-
-PROCEDURE NEUE_SEITE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-
-    IF iSeite > 0 THEN 
-    DO:
-        PUT STREAM out_Stream CONTROL CHR(12).
-    END.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    iSeite = iSeite + 1.
-
-END PROCEDURE.
-
-PROCEDURE LADESCHEIN:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDokArt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hbAufko    AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE htTabTexte AS HANDLE    NO-UNDO.
-    /*    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.*/
-    /*    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.*/
-    /*    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.*/
-    DEFINE VARIABLE xPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nTotale    AS DECIMAL   EXTENT 15 NO-UNDO.
-    DEFINE VARIABLE cRetVal    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iAnz       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iAnzPal    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cAufnr     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCodeArt   AS CHARACTER INIT 'P0205090' NO-UNDO.
-    
-    FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR.
-    IF NOT AVAILABLE tAufze THEN RETURN ''.
-
-    cRetVal  = DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tAufze.Firma, tAufze.Aufnr, OUTPUT nTotale)  NO-ERROR.
-    
-    cMessage = SUBSTITUTE('Ladeschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz).
-    RUN writeLogFile.p ( Progname, cLogName, cMessage) NO-ERROR.
-    
-    cDokArt  = 'LADEPAPIER'.
-    iSeite   = 0.
-    iZeile   = 0.
-    cDrucker = ''.
-    lOpen    = FALSE.
-    cZeile   = ''.
-
-    RUN LIBILD ( cDokArt ).
-
-    hbAufko    = BUFFER bAufko:HANDLE.
-    htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
-    RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ).
-
-    EMPTY TEMP-TABLE tSchrift.    
-    FOR EACH RuestDaten NO-LOCK
-        WHERE RuestDaten.Firma    = bAufko.Firma
-        AND   RuestDaten.RuestArt = iRuestArt
-        AND   RuestDaten.Platz    > 0
-        AND   Ruestdaten.LA_Doku  = TRUE:
-        xPlatz = RuestDaten.Platz.
-        RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.LA_Drucker, RuestDaten.LA_Schrift ).
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-        
-        FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz.
-        ASSIGN  
-            tSchrift.Schzztot = RuestDaten.LA_TotZZ
-            tSchrift.Schzzbeg = RuestDaten.LA_KopfZZ
-            tSchrift.Schzzend = RuestDaten.LA_FussZZ
-            tSchrift.Schacht  = RuestDaten.LA_Schacht
-            tSchrift.Anzahl   = RuestDaten.LA_Anzahl.
-    END.
-
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz  = iPlatz.
-    IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
-    IF tSchrift.Schzzend = 0 THEN tSchrift.Schzzend = 3.
-    IF tSchrift.Schzztot = 0 THEN tSchrift.Schzztot = 66.
-                    
-    FIND bDrucker NO-LOCK
-        WHERE bDrucker.Drucker = tSchrift.SchDru.
-                    
-    FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Knr NO-ERROR.
-            
-    FOR EACH tAufze NO-LOCK
-            
-        BREAK BY tAufze.Platz
-        BY tAufze.Lagort
-        BY tAufze.Pos  :
-
-        IF FIRST-OF ( tAufze.Platz ) THEN iAnz = 0.
-        IF tAufze.MGeli <> 0 THEN iAnz = iAnz + 1.
-        IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT.
-        
-        FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
-        IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
-        FIND bDrucker NO-LOCK
-            WHERE bDrucker.Drucker = tSchrift.SchDru.
-        
-        IF NOT lOpen THEN 
-        DO:
-            cDrucker   = tSchrift.Schname.
-            cDateiName = SESSION:TEMP-DIR
-                + 'LadePapier'
-                + STRING(TIME,'999999')
-                + STRING(RANDOM(1, 999999),'999999')
-                + '.txt'.
-            OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-            lOpen = TRUE.
-        END.
-        
-        IF iSeite = 0 THEN RUN LADESCHEIN_KOPF ( iPlatz ).
-
-        FIND FIRST RuestAuf NO-LOCK
-            WHERE RuestAuf.Firma = tAufze.Firma
-            AND   RuestAuf.Aufnr = tAufze.Aufnr
-            AND   RuestAuf.Platz = tAufze.Platz NO-ERROR.
-        IF NOT AVAILABLE RuestAuf THEN 
-        DO:
-            FIND FIRST RuestAuf NO-LOCK 
-                WHERE RuestAuf.Firma = tAufze.Firma
-                AND   RuestAuf.Aufnr = tAufze.Aufnr
-                AND   RuestAuf.Artnr = tAufze.Artnr NO-ERROR.
-        END.
-        iAnzPal = (IF AVAILABLE RuestAuf THEN RuestAuf.AnzPaletten ELSE 1). 
-        
-        cAufnr = STRING(bAufko.Aufnr,'9999999')
-            + '.'
-            + TRIM(STRING(tAufze.Platz,'>9'))
-            + ' - '
-            + (IF iAnz = 0 THEN 'KEINE LIEFERUNG' ELSE TRIM(STRING(iAnzPal,'->>>>>>>>>>9')))
-            + ' / '
-            + (IF AVAILABLE RuestAuf THEN RuestAuf.Ruester ELSE 'unbekannt').
-        SUBSTRING(cZeile,20) = bDrucker.Dru10cpi
-            + cAufnr
-            + bDrucker.Dru15cpi.
-        
-        DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-        IF iAnz > 0 THEN 
-        DO:
-            cAufnr = STRING(bAufko.Aufnr,'9999999')
-                + '.'
-                + TRIM(STRING(tAufze.Platz,'>9')).
-            RUN BAR-CODE-39 ( INPUT  cAufnr  ,
-                INPUT  cCodeArt,
-                OUTPUT oBarCode ).
-            SUBSTRING(cZeile,20) = oBarCode.
-            DYNAMIC-FUNCTION('putStream':U, 'N', 4, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        
-    END.
-    
-    IF lOpen THEN 
-    DO:
-        OUTPUT STREAM out_Stream CLOSE.
-        lOpen = FALSE.
-        RUN DRUCKAUSGABE NO-ERROR.
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-    END.
-
-    cMessage = SUBSTITUTE('Ladepapier &1 beendet', bAufko.Aufnr).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    RETURN ''.
-    
-END PROCEDURE.
-
-PROCEDURE LADESCHEIN_KOPF:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE cAufnr     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cFahrer    AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER btAufze FOR tAufze.
-    
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    /* P = Portrait     */
-    /* L = Landscape    */
-    DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210200' NO-UNDO.
-
-    RUN NEUE_SEITE.
-
-    PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi.
-    PUT STREAM out_Stream CONTROL CHR(27) '&k2G'.
-    
-    cAufnr = STRING(bAufko.Aufnr,'9999999').
-    RUN BAR-CODE-39 ( INPUT  cAufnr  ,
-        INPUT  cCodeArt,
-        OUTPUT oBarCode ).
-                      
-    oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode
-        + CHR(027) + "*p" + "405y" + "260X"
-        + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb
-        + cAufnr
-        + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette
-        + CHR(027) + "*p" + "0y" + "0X".
-    PUT STREAM out_Stream CONTROL oBarCode.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        DO ix = 1 TO 5:                     
-            SUBSTRING(cZeile,066) = bAufko.Adresse[ix].
-            IF ix = 5 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE           
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 12:
-            SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix].
-            IF ix = 11 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE            
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-    END.
-    DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF bAufko.Auf_Tot >= 0
-        THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20).
-    ELSE
-        SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20).
-    cZeile = bDrucker.Dru10cpi
-        + SUBSTRING(cZeile,001,30)
-        + bDrucker.Dru15cpi.
-    DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20))
-        + " "
-        + STRING(dDatum,"99.99.9999").
-    DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF iSeite = 1 THEN 
-    DO:
-        FIND FIRST tTabtexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3.
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20))
-            + STRING(bAufko.Gewicht,"zz,zz9.999-").
-        cZeile = TRIM(bDrucker.Drufettb)
-            + SUBSTRING(cZeile,001,65)
-            + TRIM(bDrucker.Drufette)
-            + SUBSTRING(cZeile,066).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20))
-            + " "
-            + STRING(bAufko.Auf_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20))
-            + STRING(bAufko.Knr,"z999999").
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20))
-            + " "
-            + bAdresse.Tel-1.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-                          
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20))
-            + " "
-            + STRING(bAufko.Lief_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20))
-            + " ".       /*  Lieferart   */
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20))
-            + " "
-            + STRING(bAufko.U_Ref,'x(20)').
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-
-    IF  iSeite = 1            AND
-        bAufko.Abh_Text <> '' THEN 
-    DO:
-        cString = bAufko.Abh_Text.
-        i2 = 0.
-        DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
-            SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)).
-            DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-            i2 = i2 + 1.
-        END.
-        IF i2 > 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-    END.
-                          
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    RUN FIND_FAHRER ( bAufko.Fahrer, OUTPUT cString ).
-    IF cString <> '' THEN cFahrer = ENTRY(2, cString, CHR(01)) + ' ' + ENTRY(3, cString, CHR(01)).
-    i1 = (80 - LENGTH(cFahrer)) / 2.
-    SUBSTRING(cZeile,i1) = CHR(27) + "(s6H"
-        + cFahrer
-        + bDrucker.Dru15cpi.
-    DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-
-END PROCEDURE.
-
-
-/* ************************  Function Implementations ***************** */
-
-FUNCTION getLogfileName RETURNS CHARACTER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cProg AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    
-    cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-    cProg = REPLACE(Progname, '\', '/').
-    ii    = R-INDEX(cProg, '/').
-    IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1).
-        
-    cPath = cPath
-        + cProg
-        + '_'
-        + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
-        + '.Log'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-FUNCTION putStream RETURNS LOGICAL 
-    ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*    Notes:                                                                    */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLF AS CHARACTER NO-UNDO.
-    
-    cLF = FILL(CHR(10), ipAnzZeilen).
-
-    CASE ipAttrib:
-        WHEN 'N' THEN 
-            PUT STREAM out_Stream CONTROL ipZeile.
-        WHEN 'F' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Drufettb  ipZeile bDrucker.Drufette.
-        WHEN 'U' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere.
-    END CASE.
-    
-    PUT STREAM out_Stream CONTROL cLF.
-    iZeile  = iZeile + ipAnzZeilen.
-    ipZeile = ''.
-
-    RETURN TRUE.
-
-END FUNCTION.
-

+ 0 - 2257
GUI/DruckProgramme/Huber/LieferFak.p

@@ -1,2257 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ incl/ttsendmail.i   }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-        /*         IF tParam.iVerband <> 999999 THEN DO: */
-        /*             FIND bDebst NO-LOCK */
-        /*                     WHERE bDebst.Firma = Aufko.Firma */
-        /*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-        /*             IF NOT AVAILABLE bDebst THEN NEXT. */
-        /*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-        /*         END. */
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                             sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 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() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        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.                                                                                    */
-
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    iVGroupPos = vpr_getGroupVPos('Gebindetabelle').
-    IF iVPagePos > (iVGroupPos - (i1 * 40)) THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '\b Rechnungsbetrag \b0 ' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', '\b ' + TRIM(STRING(nFakBetr,"->>>,>>9.99")) + '\b0' ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '\b Barzahlungsbetrag \b0' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', '\b ' + TRIM(STRING(Rundbetr,"->>>,>>9.99")) + '\b0').
-    END.
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  ------  RUECKSTAENDE  ----------------------------------------------------  */
-    
-    DO WHILE TRUE:
-        FIND FIRST tRueckst NO-ERROR.
-        IF NOT AVAILABLE tRueckst THEN LEAVE.
-        
-        iVPagePos = vpr_getPageVPos() + 150.
-        IF iVPagePos > iMaxPos THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        cText = 'Rückstände bitte neu bestellen'.        
-        iVPagePos = vpr_getPageVPos() + 50.
-        RUN vpr_setGroupVPos ('Rueckstand', iVPagePos ).
-        RUN vpr_setCellText  ('RueckTitel', 'Rueckstand', cText ).
-        RUN vpr_flushGroup   ('Rueckstand').
-
-        iArtZeile = 1.        
-        FOR EACH tRueckst:
-            RUN DRUCKEN_RUECKSTAND ( RECID(tRueckst) ).
-        END.
-        RUN AUSGABE_ARTIKELZEILE.
-        LEAVE.
-    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.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'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).
-        RUN vpr_resetDoc.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        RUN DRUCKEN_BESR ( 'BESR' ).
-     
-        LEAVE.
-    END.
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-        FILE-INFO:FILE-NAME = cPDFName.
-        opcResult = FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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.
-    
-    IF tParam.lSendMail THEN RUN SEND_MAIL ( cPDFName ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ('').
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ADRESSE'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                tDokument.cInhalt = bAufko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ADRESSE'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    PZBetrag   = '          04 '.
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    /*    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).*/
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    RUN vpr_EndDoc.
-    RUN vpr_printDoc (0, 0).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        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').
-    
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'WISO' NO-ERROR.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'WirteSo'
-            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.Fak_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(bAufko.Gewicht,'->>>,>>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-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tAufze
-                TO      tRueckst
-                ASSIGN  
-                tRueckst.Zeile = RECID(Aufze).
-        END.
-        
-        IF tAufze.Artnr > 0  AND
-            tAufze.MGeli = 0  THEN DELETE tAufze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    EMPTY TEMP-TABLE ttSendMail.
-    CREATE  ttSendMail.
-    ASSIGN  
-        ttSendMail.cFrom         = cMailFromFreigabe
-        ttSendMail.cTo           = cTo
-        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/
-        ttSendMail.cSubject      = cSubject
-        ttSendMail.cBody         = cBody
-        ttSendMail.cAttachedName = cNamen
-        ttSendMail.cAttachedFile = ipAttachment
-        ttSendMail.cMailServer   = cMailServer
-        ttSendMail.cMailPort     = cMailPort
-        ttSendMail.cMailKonto    = cMailKonto
-        ttSendMail.cMailPassw    = cMailPassw
-        ttSendMail.cDomaine      = cMailDomaine
-        ttsendmail.lAuth         = lMailAuth
-        ttSendMail.lSSLEnabled   = lSSLEnabled
-        .
-        
-    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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').
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetPrinterAttrib('copies=2').
-        END.
-        ELSE 
-        DO:
-            cString = SUBSTITUTE('copies=&1', tParam.Anzahl).
-            RUN vpr_SetPrinterAttrib(cString).
-        END.
-        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 = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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
-

+ 0 - 99
GUI/DruckProgramme/Huber/LieferPreis.p

@@ -1,99 +0,0 @@
-&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 cDruckProgramm  AS CHAR                     NO-UNDO.
-DEF VAR cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR cResult         AS CHAR                     NO-UNDO.
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ incl/ttsendmail.i   }
-
-/* _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).
-    
-    tParam.lPreis       = TRUE.
-    tParam.cDokument    = 'Lieferschein'.
-    cInstallation       = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-    cDruckProgramm      = SUBSTITUTE('DruckProgramme/&1/&2',
-                                     cInstallation,
-                                     'Lieferschein.p' ).
-    cDruckProgramm      = SEARCH(cDruckProgramm).
-    RUN VALUE(cDruckProgramm) (INPUT htParam, OUTPUT cResult ).
-    opcResult = cResult.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-

+ 0 - 1872
GUI/DruckProgramme/Huber/Lieferschein.p

@@ -1,1872 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttsendmail.i   }
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD lMail    AS LOGICAL
-    FIELD rAdresse AS RECID 
-    FIELD rDebst   AS RECID 
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-generateLSMail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD generateLSMail Procedure
-FUNCTION generateLSMail RETURNS LOGICAL 
-    (iprsAufko AS RECID) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN
-    ASSIGN
-        tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = tParam.lPreis.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN 'Kein Auftrag'.
-    
-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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-            
-            ASSIGN  
-                sAufko.lMail    = (IF lDebIncl THEN FALSE ELSE TRUE)
-                sAufko.rAdresse = RECID(bAdresse)
-                sAufko.rDebst   = RECID(LDebst).
-                
-            /*  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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                
-                IF sAufko.lMail THEN 
-                DO:
-                    DYNAMIC-FUNCTION ('generateLSMail':U, RECID(sAufko)) NO-ERROR.
-                END.
-                
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-GETMAILBODY) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GETMAILBODY Procedure
-PROCEDURE GETMAILBODY:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT  PARAMETER ipiSprcd   AS CHARACTER             NO-UNDO.
-    DEFINE OUTPUT PARAMETER opcBody    AS CHARACTER             NO-UNDO.
-
-    DEFINE VARIABLE cBodyDatei AS CHARACTER NO-UNDO INIT ?.
-    DEFINE VARIABLE cBody      AS CHARACTER NO-UNDO INIT ''.
-    DEFINE VARIABLE lBody      AS LONGCHAR  NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE cBodyDatei = ?:
-        cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Lieferschein-&2.html', tParam.cInstall, ipiSprcd).
-        cBodyDatei = SEARCH(cBodyDatei).
-        LEAVE.
-    END.
-
-    IF cBodydatei = ? THEN cBody = ''.
-    ELSE 
-    DO:
-        FILE-INFO:FILE-NAME = cBodyDatei.
-        cBodyDatei = FILE-INFO:FULL-PATHNAME.
-        COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
-        cBody = lBody.
-    END.
-
-    opcBody = cBody.
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-
-    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 = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = 0.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER 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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    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.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-    END.
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    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.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-    END.
-    RELEASE AufGKon.
-
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-    
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = BAufko.Firma
-            AND   AufGKon.Aufnr    = BAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-
-        IF lPreis        AND
-            iArtZeile > 0 THEN 
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-    /*  ------  RUECKSTAENDE  ----------------------------------------------------  */
-    
-    DO WHILE TRUE:
-        FIND FIRST tRueckst NO-ERROR.
-        IF NOT AVAILABLE tRueckst THEN LEAVE.
-        
-        iVPagePos = vpr_getPageVPos() + 150.
-        IF iVPagePos > iMaxPos THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        cText = 'Rückstände bitte neu bestellen'.        
-        iVPagePos = vpr_getPageVPos() + 50.
-        RUN vpr_setGroupVPos ('Rueckstand', iVPagePos ).
-        RUN vpr_setCellText  ('RueckTitel', 'Rueckstand', cText ).
-        RUN vpr_flushGroup   ('Rueckstand').
-
-        iArtZeile = 1.        
-        FOR EACH tRueckst:
-            RUN DRUCKEN_RUECKSTAND ( RECID(tRueckst) ).
-        END.
-        RUN AUSGABE_ARTIKELZEILE.
-        LEAVE.
-    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:
-/*        IF tParam.lBatch THEN RUN vpr_SetPrinterAttrib('copies=1').*/
-        RUN vpr_SetPrinterAttrib('copies=1').
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_printPDF (0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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.
-    
-    IF tParam.lSendMail THEN RUN SEND_MAIL ( cPDFName ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   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').
-    
-        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(bAufko.Gewicht,'->>>,>>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-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tAufze
-                TO      tRueckst
-                ASSIGN  
-                tRueckst.Zeile = RECID(Aufze).
-        END.
-        
-        IF  tAufze.Artnr > 0  AND
-            tAufze.MGeli = 0  THEN DELETE tAufze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject     = SUBSTITUTE('Lieferschein &1 vom &2', tParam.iAufnr, STRING(TODAY,'99.99.9999') ).
-    cBody        = SUBSTITUTE('Im Anhang den Lieferschein/die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung    = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    EMPTY TEMP-TABLE ttSendMail.
-    CREATE  ttSendMail.
-    ASSIGN  
-        ttSendMail.cFrom         = cMailFromFreigabe
-        ttSendMail.cTo           = cTo
-        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/
-        ttSendMail.cSubject      = cSubject
-        ttSendMail.cBody         = cBody
-        ttSendMail.cAttachedName = cNamen
-        ttSendMail.cAttachedFile = ipAttachment
-        ttSendMail.cMailServer   = cMailServer
-        ttSendMail.cMailPort     = cMailPort
-        ttSendMail.cMailKonto    = cMailKonto
-        ttSendMail.cMailPassw    = cMailPassw
-        ttSendMail.cDomaine      = cMailDomaine
-        ttsendmail.lAuth         = lMailAuth
-        ttSendMail.lSSLEnabled   = lSSLEnabled.
-        
-    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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). */
-/*        IF tParam.lBatch THEN RUN vpr_SetPrinterAttrib('copies=1').*/
-/*        ELSE                  RUN vpr_SetPrinterAttrib('copies=2').*/
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-generateLSMail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION generateLSMail Procedure
-FUNCTION generateLSMail RETURNS LOGICAL 
-    ( iprsAufko AS RECID  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE BUFFER bsAufko  FOR sAufko.
-    DEFINE BUFFER mAdresse FOR Adresse.
-    DEFINE BUFFER mDebst   FOR Debst.
-    
-    FIND bsAufko WHERE RECID(bsAufko) = iprsAufko.
-
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF

+ 0 - 43
GUI/DruckProgramme/Huber/Mail-Lieferschein-1.html

@@ -1,43 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Lieferschein</title>
-</head>
-
-<body>
-
-&1<br><br>
-<p>Anbei finden Sie den Lieferschein für die getätigte Bestellung.  Auslieferung erfolgt auf den gewünschten Liefertag. </p>
-<p>Dies ist eine Vorab Information, damit sie bereits jetzt schon  sehen, welche Produkte gegebenenfalls nicht mitgeliefert werden konnten.<br>
-Sprich auf Rückstand gingen, bitte Artikel NEU bestellen. </p>
-<p>Sämtliche weitere Informationen und Belege für Ihre Bestellungen  finden Sie in Ihrem Kundenkonto im E-Shop. </p>
-<p>Freundliche Grüsse<br>
-  Ihr Innendienst </p>
-<p>Huber Getränkehandlung AG </p><br>
-
--------------------------------------------------------------<br>
-Huber Getränkehandlung AG<br> 
-Rütihof 6
-<br>
-CH-8820 Wädenswil<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 44 485 45 00</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 44 480 04 72</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>bestellung@huber-getraenke.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 6
GUI/DruckProgramme/Huber/Mail-Protokoll-Tabelle.html

@@ -1,6 +0,0 @@
-    <tr>
-      <td>&1</td>
-      <td>&2</td>
-      <td>&3</td>
-      <td>&4</td>
-    </tr>

+ 0 - 21
GUI/DruckProgramme/Huber/Mail-Protokoll.html

@@ -1,21 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Mail Rechnungsversand</title>
-<body>
-Folgende Rechnungen wurden per Mail versandt<br><br>
-<table width="1000" border="1">
-  <tbody>
-    <tr>
-      <th style="width: 10%;">Knr</th>
-      <th style="width: 55%;">Kunde</th>
-      <th style="width: 25%;">Mailadresse</th>
-      <th style="width: 10%;">Faknr</th>
-    </tr>
-&1
-  </tbody>
-</table>
-<br><br>
-</body>
-</html>

+ 0 - 41
GUI/DruckProgramme/Huber/Mail-Rechnung-1.html

@@ -1,41 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-Im Anhang erhalten  Sie die Rechnung als PDF-Dokument.<br>
-<br>
-Bitte wenden Sie sich an die unten angegebene Stelle, falls Unklarheiten zu  dieser Rechnung bestehen.<br>
-<br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-Huber Getränkehandlung AG<br> 
-Rütihof 6
-<br>
-CH-8820 Wädenswil<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 44 485 45 00</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 44 480 04 72</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>bestellung@huber-getraenke.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 1309
GUI/DruckProgramme/Huber/Offerte.p

@@ -1,1309 +0,0 @@
-&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 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/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.
-            
-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.
-    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.
-            
-        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:  <none>
-      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 'D',
-            INPUT iZeile, INPUT Aufze.Bez1 ).
-        IF Aufze.Bez2 = '' THEN RETURN.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            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 'A',
-        INPUT iZeile, INPUT KGebinde.KBez ).
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>')
-            + 'x '
-            + STRING(VGebinde.KBez,'x(10)').
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
-            INPUT iZeile, INPUT cString ).
-    END.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-        INPUT iZeile, INPUT STRING(Aufze.MGeli,'->>>>>9') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT Aufze.Bez1 ).
-    IF Aufze.Jahr > 9 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-            INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
-    IF Aufze.Alk_Gehalt <> 0 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'F',
-            INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
-        INPUT iZeile, INPUT STRING(Aufze.Artnr,'999999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-        INPUT iZeile, INPUT STRING(Aufze.Preis,'>>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-        INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-        INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT Aufze.Bez2 ).
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT Aufze.Aktion_Text ).
-    END.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr AS INT NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-        /*         IF tParam.iVerband <> 999999 THEN DO: */
-        /*             FIND bDebst NO-LOCK */
-        /*                     WHERE bDebst.Firma = Aufko.Firma */
-        /*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-        /*             IF NOT AVAILABLE bDebst THEN NEXT. */
-        /*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-        /*         END. */
-            
-        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.
-    
-    /*  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:  <none>
-      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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 5.
-    
-    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.
-    
-    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   = bAdresse.Sprcd.
-
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        DO ii = 1 TO 5:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                INPUT iZeile,   INPUT bAufko.Adresse[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ii = 7 TO 11:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                INPUT iZeile,   INPUT bAdresse.Anschrift[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-
-    cDaten  = STRING(dFakDatum,'99.99.9999').
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-        INPUT iZeile, INPUT cDaten ).
-
-    iZeile = iZeile + 3.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-        INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-        INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    iZeile = 21.
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-        INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 1.    
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, TRIM(SUBSTRING(cFormText[15],21,20)) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-        INPUT iZeile, TRIM(STRING(nFakBetr,'->>>>>9.99')) ).
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, Kondi.Kotext ).
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cVorlage AS CHAR NO-UNDO.
-    DEF VAR lRetVal  AS LOG  NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-
-    cVorlage = tParam.Template + CHR(01) + tParam.Template.
-    RUN CREATEDATEI ( INPUT cVorlage ).
-
-    cVorlage = SESSION:TEMP-DIR + tParam.Template.
-    RUN OPENEXCEL ( INPUT hExcel,
-        INPUT cVorlage,
-        INPUT '',
-        OUTPUT lRetVal ).
-    IF NOT lRetVal THEN 
-    DO:
-        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:  <none>
-      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:  <none>
-      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.Gebuehr.
-        ELSE                         nBetrag = AufGKon.Gebuehr.
-        Rundbetr = i1 * nBetrag.
-        iMwstCd  = AufGKon.MWSt_Cd.
-        nZTot    = nZTot + Rundbetr.
-        cDaten   = GebKonto.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(iMwstCd,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-            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],41,20)).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT cDaten ).
-        cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            INPUT iZeile, INPUT cDaten ).
-        nFakBetr = nFakBetr + nZTot.
-    END.
-    RELEASE AufGKon.
-
-    lTotal = FALSE.
-    i2     = 0.
-    nZTot  = 0.
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = BAufko.Firma
-            AND   AufGKon.Aufnr    = BAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND   AufGKon.Betrag  <> 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.
-            ELSE                         nBetrag = AufGKon.Depot.
-            Rundbetr = i1 * nBetrag.
-            iMwstCd  = AufGKon.MWSt_Cd.
-            nZTot    = nZTot + Rundbetr.
-            cDaten   = GebKonto.Bez.
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(iMwstCd,"z9")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                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 'D',
-                INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(nZTot,"->>>>9.99")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                INPUT iZeile, INPUT cDaten ).
-            nFakBetr = nFakBetr + nZTot.
-        END.
-    END.
-    
-    iZeile = iZeile + 2.
-    cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-        INPUT iZeile, INPUT cDaten ).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = BAufko.Firma
-        AND   AufGKon.Aufnr    = BAufko.Aufnr
-        AND   AufGKon.Gebuehr  = 0
-        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:  <none>
-      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 = MWSTAns.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(ix,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-            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 'D',
-        INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-        INPUT iZeile, INPUT cDaten ).
-    
-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:  <none>
-      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 'D',
-            INPUT iZeile,    INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            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 'D',
-            INPUT iZeile, INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            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 'D',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            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 'D',
-            INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-            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 'D',                                  */
-/*            INPUT iZeile, INPUT cDaten ).                                            */
-/*                                                                                     */
-/*        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).                            */
-/*        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',                                  */
-/*            INPUT iZeile, INPUT cDaten ).                                            */
-/*                                                                                     */
-/*        cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).                           */
-/*        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',                                  */
-/*            INPUT iZeile, INPUT cDaten ).                                            */
-/*                                                                                     */
-/*        cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).                                */
-/*        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',                                  */
-/*            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 'D',                                  */
-/*            INPUT iZeile, INPUT cDaten ).                                            */
-/*        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).                                */
-/*        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',                                  */
-/*            INPUT iZeile, INPUT cDaten ).                                            */
-/*    END.                                                                             */
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 1160
GUI/DruckProgramme/Huber/Palettenschein.p

@@ -1,1160 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : Palettenschein.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : walter.riechsteiner
-    Created     : Mon May 31 14:11:18 CEST 2021
-    Notes       :
-  ----------------------------------------------------------------------*/
-/*          This .W file was created with the Progress AppBuilder.      */
-/*----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-
-BLOCK-LEVEL ON ERROR UNDO, THROW.
-
-DEFINE VARIABLE sAktiv         AS LOGICAL   NO-UNDO INIT FALSE.
-DEFINE VARIABLE AdFirma        AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Firma          AS CHARACTER NO-UNDO FORMAT "x(04)".
-DEFINE VARIABLE Progname       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogName       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lBatch         AS LOGICAL   NO-UNDO INIT TRUE.
-DEFINE VARIABLE cUser          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iRuestArt      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cRuester       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iPlatz         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAufnr         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzahl        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSeite         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZeile         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE dDatum         AS DATE      NO-UNDO.
-DEFINE VARIABLE lOpen          AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE cZeile         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cKopf          AS CHARACTER NO-UNDO EXTENT 50.
-DEFINE VARIABLE FormText       AS CHARACTER NO-UNDO EXTENT 30.
-DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cDateiName     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cDrucker       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cMessage       AS CHARACTER NO-UNDO.
-
-{ properties.i }
-
-{ incl/ttdruckparam.i  }
-
-DEFINE STREAM out_Stream.
-
-DEFINE BUFFER bAufko     FOR Aufko    .
-DEFINE BUFFER bAufze     FOR Aufze    .
-DEFINE BUFFER bTabel     FOR Tabel    .
-DEFINE BUFFER bArtst     FOR Artst    .
-DEFINE BUFFER bSchrift   FOR Schrift  .
-DEFINE BUFFER bDrucker   FOR Drucker  .
-DEFINE BUFFER bSteuer    FOR Steuer   .
-DEFINE BUFFER bDebst     FOR Debst    .
-DEFINE BUFFER bAdresse   FOR Adresse  .
-DEFINE BUFFER bLotLager  FOR LotLager .
-DEFINE BUFFER bHoReLager FOR HoReLager.
-
-DEFINE TEMP-TABLE tDrucker NO-UNDO
-    FIELD Drucker AS CHARACTER.
-    
-DEFINE TEMP-TABLE tSchrift NO-UNDO LIKE Schrift
-    FIELD iPlatz  AS INTEGER
-    FIELD Schacht AS INTEGER
-    FIELD Anzahl  AS INTEGER
-    FIELD iRecid  AS RECID
-    INDEX tSchrift-k1 IS PRIMARY
-    iPlatz
-    Schname
-    Schbild.
-
-DEFINE TEMP-TABLE tAufze NO-UNDO LIKE Aufze
-    FIELD Platz  AS INTEGER
-    FIELD Lagort AS CHARACTER
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Platz
-    Lagort
-    Artnr.
-
-DEFINE TEMP-TABLE zAufze LIKE tAufze.
-        
-DEFINE TEMP-TABLE tRueck NO-UNDO LIKE tAufze
-    
-    INDEX tRueck-k1 IS PRIMARY
-    Platz
-    Lagort
-    Artnr.
-
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    INDEX tTabTexte-k1 IS PRIMARY
-    cRecArt
-    iZeile.
-    
-/* ********************  Preprocessor Definitions  ******************** */
-
-/* ************************  Function Prototypes ********************** */
-
-
-FUNCTION getLogfileName RETURNS CHARACTER 
-    (  ) FORWARD.
-
-FUNCTION putStream RETURNS LOGICAL 
-    (ipAttrib AS CHARACTER,
-    ipAnzZeilen AS INTEGER,
-    INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD.
-
-
-/* ***************************  Main Block  *************************** */
-
-DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO.
-DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE kRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE tRecid    AS RECID     NO-UNDO.
-DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iCodeI    AS INTEGER   NO-UNDO INIT -1.
-    
-DEFINE BUFFER dTabel FOR Tabel.
-    
-SAktiv   = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
-IF SAktiv = ? THEN SAktiv = FALSE.
-
-IF SAktiv THEN 
-DO:
-    AdFirma  = DYNAMIC-FUNCTION('getAdMandant':U)   NO-ERROR.
-    Firma    = DYNAMIC-FUNCTION('getMandant':U)     NO-ERROR.
-    Progname = DYNAMIC-FUNCTION('makeProgname':U,   INPUT THIS-PROCEDURE ) NO-ERROR.
-    cUser    = DYNAMIC-FUNCTION('getBenutzer')      NO-ERROR.
-    cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR.
-    lBatch   = DYNAMIC-FUNCTION('getBatch':U)       NO-ERROR.
-END.
-
-EMPTY TEMP-TABLE tDrucker.
-EMPTY TEMP-TABLE tSchrift.
-cPrinters = SESSION:GET-PRINTERS().
-DO ix = 1 TO NUM-ENTRIES(cPrinters, ','):
-    CREATE  tDrucker.
-    ASSIGN  
-        tDrucker.Drucker = ENTRY(ix, cPrinters, ',').
-END.
-    
-FIND bSteuer NO-LOCK
-    WHERE bSteuer.Firma = Firma.
-
-TABELLE:
-DO WHILE TRUE:
-
-    TABTRANS:
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-        FIND FIRST bTabel NO-LOCK
-            WHERE bTabel.Firma  = Firma
-            AND   bTabel.RecArt = 'wsPALETT'
-            AND   bTabel.CodeI  > iCodeI
-            AND   bTabel.Bez1   = ''
-            AND   bTabel.Int_2  = 2 NO-ERROR.
-        IF NOT AVAILABLE bTabel THEN LEAVE TABELLE.
-
-        tRecid    = RECID(bTabel).
-        iCodeI    = bTabel.CodeI.
-        iPlatz    = bTabel.Dec_1.
-        iRuestArt = bTabel.Int_3.
-        iAufnr    = bTabel.Int_1.
-        cRuester  = bTabel.Bez2.
-
-        FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR.
-        IF  NOT AVAILABLE bTabel AND
-            LOCKED bTabel        THEN 
-        DO:
-            RELEASE bTabel.
-            FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR.
-            IF NOT AVAILABLE Tabel THEN NEXT.
-            
-            cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5',
-                Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            RELEASE Tabel.
-            LEAVE TABTRANS.
-        END.
-        IF NOT AVAILABLE bTabel THEN LEAVE TABTRANS.
-        
-        bTabel.Bez1 = 'A'.
-            
-        FIND bAufko NO-LOCK
-            WHERE bAufko.Firma = bTabel.Firma
-            AND   bAufko.Aufnr = iAufnr NO-ERROR.
-                
-        IF NOT AVAILABLE bAufko THEN 
-        DO:
-            DELETE  bTabel.
-            RELEASE bTabel.
-            LEAVE TABTRANS.
-        END.
-                
-        kRecid    = RECID(bAufko).
-        cRetValue = ''.
-
-        DO WHILE TRUE:
-            RUN FUELLEN_tAufze.
-        
-            FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR.
-            IF NOT AVAILABLE tAufze THEN 
-            DO:
-                DELETE  bTabel.
-                RELEASE bTabel.
-                LEAVE TABTRANS.
-            END.
-                    
-            RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
-            cMessage = SUBSTITUTE('Palettenschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-            
-            FIND bAufko NO-LOCK WHERE RECID(bAufko) = kRecid.
-            RUN PALETTENSCHEIN.
-            
-            cRetValue = RETURN-VALUE.
-            cMessage  = SUBSTITUTE('Palettenschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
-            RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-                    
-            LEAVE.
-        END.
-            
-        IF cRetValue <> '' THEN 
-        DO:
-            bTabel.Bez1 = 'F'.
-            RELEASE bTabel.
-            LEAVE TABTRANS.
-        END.
-    
-        IF AVAILABLE bTabel THEN 
-        DO:
-            FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR.
-            IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE.
-            RELEASE Aufko.
-            DELETE  bTabel.
-            RELEASE bTabel.
-        END.
-    
-        LEAVE.
-    END.
-    
-END.
-
-/* **********************  Internal Procedures  *********************** */
-
-PROCEDURE BAR-CODE-39 :
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT  PARAMETER ipWert     AS  CHARACTER    NO-UNDO.
-    DEFINE INPUT  PARAMETER ipCodeArt  AS  CHARACTER    NO-UNDO.
-    DEFINE OUTPUT PARAMETER opBarCode  AS  CHARACTER    NO-UNDO.
-
-    DEFINE VARIABLE clr  AS LOG       INIT TRUE NO-UNDO.
-    DEFINE VARIABLE wk   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE drw  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDir AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE k    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE att  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE kod  AS CHARACTER NO-UNDO 
-        INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%".
-
-    att =
-        "100100001001100001101100000000110001100110000001110000000100101100100100"
-        + "001100100000110100100001001001001001101001000000011001100011000001011000"
-        + "000001101100001100001001100000011100100000011001000011101000010000010011"
-        + "100010010001010010000000111100000110001000110000010110110000001011000001"
-        + "111000000010010001110010000011010000010000101110000100011000100010010100"
-        + "010101000010100010010001010000101010".
-
-    DEFINE VARIABLE i   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE j   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE l   AS INTEGER NO-UNDO.
-    DEFINE VARIABLE brd AS INTEGER NO-UNDO.
-    DEFINE VARIABLE jst AS INTEGER NO-UNDO.
-
-    ASSIGN  
-        i         = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2)
-        opBarCode = "~E&f0S~E*c100G"
-        drw       = SUBSTRING("ab"     , i, 1) 
-                      + SUBSTRING(ipCodeArt, 6) 
-                      + SUBSTRING("ba"     , i, 1)
-                      + "P"
-        cDir      = SUBSTRING("XY", i, 1)
-        k         = "*" + ipWert + "*" .
-
-    DO i = 1 TO LENGTH(k):
-        ASSIGN  
-            j  = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8
-            wk = SUBSTRING (att, j, 9) + "0" .
-        DO l = 1 TO 10:
-            ASSIGN  
-                brd       = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4
-                opBarCode = opBarCode 
-                              + (IF clr THEN "~E*c"  + SUBSTRING (ipCodeArt, brd, 2) + drw
-                                        ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2)) 
-                              + jst) + cDir)
-                jst       = INTEGER (SUBSTRING (ipCodeArt, brd, 2))
-                clr       = NOT clr.
-        END. /* of looping 1 to 10 */
-    END. /* of going through string 'k' */
-
-    ASSIGN  
-        opBarCode = opBarCode + "~E&f1S" 
-        wk        = "".
-    
-END PROCEDURE.
-
-PROCEDURE DRUCKAUSGABE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAnzKopien AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE sRecid     AS RECID     NO-UNDO.
-    DEFINE VARIABLE iSize      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iSchacht   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER INIT '' NO-UNDO.
-
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
-    IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
-
-    sRecid     = tSchrift.iRecid.
-    iAnzKopien = tSchrift.Anzahl.
-    iSchacht   = tSchrift.Schacht.    
-    
-    RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR.
-    
-    IF iAnzKopien = 0 THEN iAnzKopien = 1.
-
-    DO iKopie = 1 TO iAnzKopien:
-        iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName        ,
-            sRecid            ,
-            tSchrift.Schacht  ,
-            240               ,    /* Blockgrösse      */
-            'ibm850'          ,
-            iAnzKopien        ).   /*  Anzahl Kopien   */
-        IF iSize = 0 THEN 
-        DO:
-            cString = 'Druckvorgang gescheitert !!! '.
-            RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR.
-            
-            IF lBatch THEN RETURN ERROR.
-            
-            RETURN cString.
-        END.
-        
-        IF iKopie < iAnzKopien THEN 
-        DO:
-            ETIME(TRUE).
-            DO WHILE ETIME(FALSE) < 200:
-            END.
-        END.
-    END.
-
-    OS-DELETE VALUE(cDateiName) NO-ERROR.
-
-END PROCEDURE.
-
-PROCEDURE FUELLEN_tAufze:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-
-    DEFINE VARIABLE minPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lArtikel AS LOG       NO-UNDO.
-
-    EMPTY TEMP-TABLE tAufze.
-    EMPTY TEMP-TABLE tRueck.
-    
-    ASSIGN  
-        minPos = 0
-        maxPos = 9999.
-
-    /*  --------------------------------------  */
-    /*  Kommentar zu Beginn eines Auftrages     */
-    /*  --------------------------------------  */
-    lArtikel = FALSE.
-    FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k1
-        WHERE Aufze.Firma = Firma
-        AND   Aufze.Aufnr = bAufko.Aufnr
-        AND   Aufze.Pos   > minPos:
-            
-        IF Aufze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Aufze.Pos.
-        CREATE  tAufze.
-        BUFFER-COPY Aufze TO tAufze
-            ASSIGN  
-            tAufze.Platz  = iPlatz
-            tAufze.LagOrt = ''.
-    END.
-    
-    /*  ----------------------------------------------  */
-    /*  Kommentar am Ende eines Auftrages               */
-    /*  ebenfalls an den Anfang des Auftrages schieben  */
-    /*  ----------------------------------------------  */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Aufze NO-LOCK
-            WHERE Aufze.Firma = Firma
-            AND   Aufze.Aufnr = bAufko.Aufnr
-            
-            BY Aufze.Pos DESCENDING:
-                
-            IF Aufze.Artnr > 0 THEN LEAVE.
-            maxPos = Aufze.Pos.
-            CREATE  tAufze.
-            BUFFER-COPY Aufze TO tAufze
-                ASSIGN  
-                tAufze.Platz  = iPlatz
-                tAufze.LagOrt = 'zz'.
-        END.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Artikelzeilen dem Ruestsektor und Lagerplatz zuteilen   */
-    /*  ------------------------------------------------------  */
-    FOR EACH Aufze NO-LOCK
-        WHERE Aufze.Firma = Firma
-        AND   Aufze.Aufnr = bAufko.Aufnr
-        AND   Aufze.Pos   > minPos
-        AND   Aufze.Pos   < MaxPos:
-        
-        IF Aufze.Artnr > 0 THEN 
-        DO:
-            FIND FIRST RuestAuf NO-LOCK 
-                WHERE RuestAuf.Firma = Aufze.Firma
-                AND   RuestAuf.Aufnr = Aufze.Aufnr
-                AND   RuestAuf.Pos   = Aufze.Pos NO-ERROR.
-            IF NOT AVAILABLE RuestAuf   THEN NEXT.
-            IF RuestAuf.Platz <> iPlatz THEN NEXT.          
-        END.
-        
-        CREATE  tAufze.
-        BUFFER-COPY Aufze TO tAufze
-            ASSIGN  
-            tAufze.Platz  = RuestAuf.Platz
-            tAufze.LagOrt = RuestAuf.Lagerort.
-            
-        IF tAufze.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueck.
-            BUFFER-COPY tAufze TO tRueck.
-        END.
-    END.
-    
-END PROCEDURE.
-
-PROCEDURE GET_DRUCKERDATEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipDrucker   AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipSchrift   AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE lJa    AS LOG INIT TRUE NO-UNDO.
-    DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO.
-
-    DO WHILE TRUE:
-        FIND FIRST tDrucker NO-LOCK
-            WHERE tDrucker.Drucker = ipDrucker NO-ERROR.
-        IF AVAILABLE tDrucker THEN LEAVE.
-        
-        cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker). 
-        RETURN cMessage.
-    END.
-    
-    RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR.
-    IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker).
-        
-    DO WHILE TRUE:
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = ipDrucker
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-        FIND FIRST Schrift NO-LOCK
-            WHERE Schrift.SchName = SESSION:PRINTER-NAME
-            AND   Schrift.SchBild = ipSchrift NO-ERROR.
-        IF AVAILABLE Schrift THEN LEAVE.
-
-        cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'.
-        RETURN cMessage.
-    END.
-
-    CREATE  tSchrift.
-    BUFFER-COPY Schrift TO tSchrift 
-        ASSIGN  
-        tSchrift.iPlatz  = ipPlatz
-        tSchrift.SchName = SESSION:PRINTER-NAME
-        tSchrift.iRecid  = RECID(Schrift).
-    FIND bDrucker NO-LOCK
-        WHERE bDrucker.Drucker = tSchrift.SchDru.
-
-    RETURN ''.
-
-END PROCEDURE.
-
-PROCEDURE LIBILD:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokArt    AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-    
-    cProgName = bSteuer.Fwc10 + ":" + ipDokArt.
-    FormText  = "".
-    FOR EACH LiBild USE-INDEX LiBild-k1
-        WHERE LiBild.Sprcd = 1
-        AND   LiBild.Prog  = cProgName
-        AND   LiBild.Tenr  > 0  NO-LOCK  ix = 1 TO 40:
-                    
-        FormText[ix] = LiBild.Litext.
-    END.
-    
-END PROCEDURE.
-
-PROCEDURE NEUE_SEITE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-
-    IF iSeite > 0 THEN 
-    DO:
-        PUT STREAM out_Stream CONTROL CHR(12).
-    END.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    iSeite = iSeite + 1.
-
-END PROCEDURE.
-
-PROCEDURE PALETTENSCHEIN:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDokArt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hbAufko    AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE htTabTexte AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE nFakBetr   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE xPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nTotale    AS DECIMAL   EXTENT 15 NO-UNDO.
-    DEFINE VARIABLE cRetVal    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR.
-    IF NOT AVAILABLE tAufze THEN RETURN ''.
-
-    cRetVal  = DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tAufze.Firma, tAufze.Aufnr, OUTPUT nTotale)  NO-ERROR.
-    
-    cMessage = SUBSTITUTE('Palettenschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz).
-    RUN writeLogFile.p ( Progname, cLogName, cMessage) NO-ERROR.
-    
-    cDokArt  = 'PALETTEN'.
-    iSeite   = 0.
-    iZeile   = 0.
-    cDrucker = ''.
-    lOpen    = FALSE.
-    cZeile   = ''.
-    dDatum   = bAufko.Lief_Datum.
-
-    RUN LIBILD ( cDokArt ).
-
-    hbAufko    = BUFFER bAufko:HANDLE.
-    htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
-    RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ).
-
-    EMPTY TEMP-TABLE tSchrift.    
-    FOR EACH RuestDaten NO-LOCK
-        WHERE RuestDaten.Firma    = bAufko.Firma
-        AND   RuestDaten.RuestArt = iRuestArt
-        AND   RuestDaten.Platz    > 0
-        AND   Ruestdaten.PA_Doku  = TRUE:
-        xPlatz = RuestDaten.Platz.
-        RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.PA_Drucker, RuestDaten.PA_Schrift ).
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-        
-        FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz.
-        ASSIGN  
-            tSchrift.Schzztot = RuestDaten.PA_TotZZ
-            tSchrift.Schzzbeg = RuestDaten.PA_KopfZZ
-            tSchrift.Schzzend = RuestDaten.PA_FussZZ
-            tSchrift.Schacht  = RuestDaten.PA_Schacht
-            tSchrift.Anzahl   = iAnzahl.
-    END.
-
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz  = iPlatz.
-    IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
-    IF tSchrift.Schzzend = 0 THEN tSchrift.Schzzend = 3.
-    IF tSchrift.Schzztot = 0 THEN tSchrift.Schzztot = 66.
-                    
-    FIND bDrucker NO-LOCK
-        WHERE bDrucker.Drucker = tSchrift.SchDru.
-                    
-    FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Knr NO-ERROR.
-            
-    EMPTY TEMP-TABLE zAufze.
-    
-    CREATE  zAufze.
-    FOR EACH tAufze NO-LOCK
-        WHERE tAufze.Platz = iPlatz
-
-        BREAK BY tAufze.Platz
-        BY tAufze.Lagort
-        BY tAufze.Pos  :
-
-        DO WHILE TRUE:
-            IF NOT FIRST-OF ( tAufze.Platz ) THEN LEAVE.
-            
-            cDrucker   = tSchrift.Schname.
-            cDateiName = SESSION:TEMP-DIR
-                + 'PalettPapier'
-                + STRING(TIME,'999999')
-                + STRING(RANDOM(1, 999999),'999999')
-                + '.txt'.
-            OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-            lOpen = TRUE.
-            
-            LEAVE.
-        END.
-        
-        IF iSeite = 0 THEN RUN PALETTENSCHEIN_KOPF ( iPlatz ).
-    
-        IF (tSchrift.Schzztot - iZeile - 2) <= tSchrift.Schzzend THEN 
-        DO:
-            RUN PALETTENSCHEIN_KOPF ( iPlatz ).
-        END.
-        
-        IF tAufze.MGeli <> 0 THEN 
-        DO:    
-            FIND FIRST zAufze.
-            BUFFER-COPY tAufze TO zAufze.
-            RUN PALETTENSCHEIN_ARTIKELZEILE.
-        END.
-        
-        IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT.
-
-        cZeile = FILL('=', 100).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-    END.
-    
-    DO WHILE TRUE:
-        FIND FIRST tRueck NO-LOCK
-            WHERE tRueck.Platz = iPlatz NO-ERROR.
-        IF NOT AVAILABLE tRueck THEN LEAVE.
-        
-        IF NOT lOpen THEN 
-        DO:
-            cDrucker   = tSchrift.Schname.
-            cDateiName = SESSION:TEMP-DIR
-                + 'PalettPapier'
-                + STRING(TIME,'999999')
-                + STRING(RANDOM(1, 999999),'999999')
-                + '.txt'.
-            OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
-            lOpen = TRUE.
-            RUN PALETTENSCHEIN_KOPF ( iPlatz ).
-        END.
-        ELSE 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        
-        FOR EACH tRueck NO-LOCK
-            WHERE tRueck.Platz = iPlatz
-                
-            BREAK BY tRueck.Platz
-            BY tRueck.Lagort
-            BY tRueck.Pos  :
-    
-            IF (tSchrift.Schzztot - iZeile - 6) <= tSchrift.Schzzend THEN 
-            DO:
-                RUN PALETTENSCHEIN_KOPF ( iPlatz ).
-            END.
-            IF FIRST-OF ( tRueck.Platz ) THEN 
-            DO:
-                cZeile = FILL('=', 100).
-                SUBSTRING(cZeile,30) = ' Rückstände/Teillieferungen '.
-                DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-            END.
-            RUN PALETTENSCHEIN_RUECKSTAND ( RECID(tRueck) ).
-        END.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-        LEAVE.
-    END.
-    
-    IF lOpen THEN 
-    DO:
-        SUBSTRING(cZeile,008) = 'Gerüstet durch : ' + cRuester.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 3, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-
-    DO WHILE TRUE:
-        IF NOT lOpen THEN LEAVE.
-        
-        FIND FIRST RuestAuf NO-LOCK
-            WHERE RuestAuf.Firma    = Firma
-            AND   RuestAuf.Aufnr    = bAufko.Aufnr
-            AND   RuestAuf.Platz   <> iPlatz NO-ERROR.
-        IF NOT AVAILABLE RuestAuf THEN LEAVE.
-     
-        SUBSTRING(cZeile,10) = 'Weitere Rüstplätze'.
-        DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        FOR EACH RuestAuf NO-LOCK
-            WHERE RuestAuf.Firma    = Firma
-            AND   RuestAuf.Aufnr    = bAufko.Aufnr
-            AND   RuestAuf.Platz   <> iPlatz
-                
-            BREAK BY RuestAuf.Platz:
-                
-            IF NOT FIRST-OF ( RuestAuf.Platz ) THEN NEXT.
-            FIND RuestPlatz NO-LOCK
-                WHERE RuestPlatz.Firma    = RuestAuf.Firma
-                AND   RuestPlatz.RuestArt = iRuestArt
-                AND   RuestPlatz.Platz    = RuestAuf.Platz NO-ERROR.
-            IF NOT AVAILABLE RuestPlatz THEN NEXT.
-            SUBSTRING(cZeile,12) = '- ' + RuestPlatz.Bezeichnung.
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        LEAVE.
-    END.
-    
-    IF lOpen THEN 
-    DO:
-        OUTPUT STREAM out_Stream CLOSE.
-        lOpen = FALSE.
-        RUN DRUCKAUSGABE NO-ERROR.
-        IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
-    END.
-    
-    FIND FIRST tAufze NO-LOCK NO-ERROR.
-    cMessage = SUBSTITUTE('Palettenschein &1 Platz &2 beendet', tAufze.Aufnr, iPlatz).
-    RUN writeLogFile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
-    
-    RETURN ''.
-    
-END PROCEDURE.
-
-PROCEDURE PALETTENSCHEIN_ARTIKELZEILE:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO.
-
-    FIND FIRST zAufze NO-LOCK.
-    
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
-    DO WHILE zAufze.Artnr = 0:
-        SUBSTRING(cZeile,036) = STRING(zAufze.Bez1,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        IF zAufze.Bez2 <> '' THEN 
-        DO:
-            SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)").
-            DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        RETURN.
-    END.
-    
-    FIND Artst NO-LOCK OF zAufze.
-            
-    FIND VGebinde
-        WHERE VGebinde.Firma  = zAufze.Firma
-        AND   VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR.
-    FIND KGebinde
-        WHERE KGebinde.Firma  = zAufze.Firma
-        AND   KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR.
-              
-    SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)").
-    IF zAufze.VGeb_Me <> 0 THEN 
-    DO:
-        SUBSTRING(cZeile,012) = STRING(zAufze.VGeb_Me,'->>>')
-            + 'x '
-            + VGebinde.KBez.
-    END.
-    SUBSTRING(cZeile,028) = STRING(zAufze.MGeli  ,"->>>>9").
-    SUBSTRING(cZeile,036) = STRING(zAufze.Bez1   ,"x(30)").
-    IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(zAufze.Alk_Gehalt,"zz9.9%").
-    IF zAufze.Jahr        > 9 THEN SUBSTRING(cZeile,075) = STRING(zAufze.Jahr,"9999").
-    SUBSTRING(cZeile,081) = STRING(zAufze.Artnr ,"999999").
-    SUBSTRING(cZeile,089) = STRING(zAufze.LagOrt,'x(08)').
-    cZeile = bDrucker.Drufettb
-        + SUBSTRING(cZeile,001,027)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,028,061)
-        + bDrucker.Drufettb
-        + SUBSTRING(cZeile,089,008)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,097).
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF zAufze.Bez2 <> '' THEN 
-    DO:
-        SUBSTRING(cZeile,036)  = STRING(zAufze.Bez2,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-
-END PROCEDURE.
-
-PROCEDURE PALETTENSCHEIN_KOPF:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipPlatz     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE cAufnr     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cFahrer    AS CHARACTER NO-UNDO.
-    
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    /* P = Portrait     */
-    /* L = Landscape    */
-    DEFINE VARIABLE cCodeArt   AS CHARACTER INIT 'P0210200' NO-UNDO.
-
-    RUN NEUE_SEITE.
-
-    PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi.
-    PUT STREAM out_Stream CONTROL CHR(27) '&k2G'.
-    
-    cAufnr = STRING(bAufko.Aufnr,'9999999')
-        + '.'
-        + TRIM(STRING(ipPlatz,'>9')).
-    RUN BAR-CODE-39 ( INPUT  cAufnr  ,
-        INPUT  cCodeArt,
-        OUTPUT oBarCode ).
-                      
-    oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode
-        + CHR(027) + "*p" + "405y" + "260X"
-        + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb
-        + cAufnr
-        + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette
-        + CHR(027) + "*p" + "0y" + "0X".
-    PUT STREAM out_Stream CONTROL oBarCode.
-    
-    FIND FIRST tSchrift NO-LOCK
-        WHERE tSchrift.iPlatz = iPlatz.
-    IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
-    cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
-    IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
-    iZeile = tSchrift.Schzzbeg.
-    
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        DO ix = 1 TO 5:                     
-            SUBSTRING(cZeile,066) = bAufko.Adresse[ix].
-            IF ix = 5 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE           
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 12:
-            SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix].
-            IF ix = 11 THEN 
-            DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-            ELSE            
-            DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. 
-            END.
-        END.
-    END.
-    
-    IF bAufko.Auf_Tot >= 0
-        THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20).
-    ELSE
-        SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20).
-        
-    cZeile =
-        bDrucker.Dru10cpi
-        + SUBSTRING(cZeile,001,30)
-        + bDrucker.Dru15cpi.
-    DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20))
-        + " "
-        + STRING(dDatum,"99.99.9999").
-    DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF iSeite = 1 THEN 
-    DO:
-        FIND FIRST tTabtexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3.
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20))
-            + STRING(bAufko.Gewicht,"zz,zz9.999-").
-        cZeile = TRIM(bDrucker.Drufettb)
-            + SUBSTRING(cZeile,001,65)
-            + TRIM(bDrucker.Drufette)
-            + SUBSTRING(cZeile,066).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20))
-            + " "
-            + STRING(bAufko.Auf_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20))
-            + STRING(bAufko.Knr,"z999999").
-        SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20))
-            + " "
-            + bAdresse.Tel-1.
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-                          
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20))
-            + " "
-            + STRING(bAufko.Lief_Datum,"99.99.9999").
-        SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20))
-            + " ".       /*  Lieferart   */
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        
-        SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20))
-            + " "
-            + STRING(bAufko.U_Ref,'x(20)').
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-
-    SUBSTRING(cZeile,001) = TRIM(SUBSTRING(FormText[03],01,70)).
-    SUBSTRING(cZeile,071) = TRIM(SUBSTRING(FormText[04],01,70)).
-    DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF  iSeite = 1            AND
-        bAufko.Abh_Text <> '' THEN 
-    DO:
-        cString = bAufko.Abh_Text.
-        i2 = 0.
-        DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
-            SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)).
-            DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-            i2 = i2 + 1.
-        END.
-        IF i2 > 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-    END.
-    IF iSeite = 1 THEN 
-    DO:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        RUN FIND_FAHRER ( bAufko.Fahrer, OUTPUT cString ).
-        IF cString <> '' THEN cFahrer = ENTRY(2, cString, CHR(01)) + ' ' + ENTRY(3, cString, CHR(01)).
-        i1 = (80 - LENGTH(cFahrer)) / 2.
-        SUBSTRING(cZeile,i1) = CHR(27) + "(s6H"
-            + cFahrer
-            + bDrucker.Dru15cpi.
-        DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-
-        FIND FIRST RuestPlatz NO-LOCK
-            WHERE RuestPlatz.Firma    = bAufko.Firma
-            AND   RuestPlatz.RuestArt = iRuestArt
-            AND   RuestPlatz.Platz    = ipPlatz.
-        i1     = (98 - LENGTH(RuestPlatz.Bezeichnung)) / 2.
-        cZeile = FILL('=', i1) + ' ' + RuestPlatz.Bezeichnung + ' ' + FILL('=', i1).
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-                          
-    DO WHILE iSeite > 1:
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        LEAVE.
-    END.
-
-END PROCEDURE.
-
-PROCEDURE PALETTENSCHEIN_RUECKSTAND:
-    /*------------------------------------------------------------------------------*/
-    /* Purpose:                                                                     */
-    /* Notes:                                                                       */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-
-    DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
-    /*
-    DEF VAR cCodeArt    AS CHAR INIT 'P0205075'     NO-UNDO.
-    */
-    DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO.
-
-    FIND tRueck WHERE RECID(tRueck) = ipRecid  NO-LOCK.
-    
-    PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
-    DO WHILE tRueck.Artnr = 0:
-        SUBSTRING(cZeile,036) = STRING(tRueck.Bez1,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        IF tRueck.Bez2 <> '' THEN 
-        DO:
-            SUBSTRING(cZeile,036) = STRING(tRueck.Bez2,"x(30)").
-            DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-        END.
-        RETURN.
-    END.
-    
-    FIND Artst NO-LOCK OF tRueck.
-            
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = tRueck.Firma
-        AND   VGebinde.Geb_Cd = tRueck.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = tRueck.Firma
-        AND   KGebinde.Geb_Cd = tRueck.KGeb_Cd NO-ERROR.
-              
-    SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)").
-    IF tRueck.VGeb_Ru <> 0              AND
-        tRueck.VGeb_Me <> tRueck.VGeb_Be THEN 
-    DO:
-        SUBSTRING(cZeile,012) = STRING(tRueck.VGeb_Ru,'->>>')
-            + 'x '
-            + VGebinde.KBez.
-    END.
-    SUBSTRING(cZeile,028) = STRING(tRueck.MRuek ,"->>>>9").
-    SUBSTRING(cZeile,036) = STRING(tRueck.Bez1  ,"x(30)").
-    IF tRueck.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(tRueck.Alk_Gehalt,"zz9.9%").
-    IF tRueck.Jahr        > 9 THEN SUBSTRING(cZeile,075) = STRING(tRueck.Jahr,"9999").
-    SUBSTRING(cZeile,081) = STRING(tRueck.Artnr ,"999999").
-    SUBSTRING(cZeile,089) = STRING(tRueck.LagOrt,'x(08)').
-    cZeile = bDrucker.Drufettb
-        + SUBSTRING(cZeile,001,027)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,028,061)
-        + bDrucker.Drufettb
-        + SUBSTRING(cZeile,089,008)
-        + bDrucker.Drufette
-        + SUBSTRING(cZeile,097).
-    DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
-    
-    IF tRueck.Bez2 <> '' THEN 
-    DO:
-        SUBSTRING(cZeile,036)  = STRING(tRueck.Bez2,"x(30)").
-        DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
-    END.
-    
-END PROCEDURE.
-
-
-/* ************************  Function Implementations ***************** */
-
-FUNCTION getLogfileName RETURNS CHARACTER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cProg AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    
-    cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-    cProg = REPLACE(Progname, '\', '/').
-    ii    = R-INDEX(cProg, '/').
-    IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1).
-        
-    cPath = cPath
-        + cProg
-        + '_'
-        + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
-        + '.Log'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-FUNCTION putStream RETURNS LOGICAL 
-    ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*    Notes:                                                                    */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLF AS CHARACTER NO-UNDO.
-    
-    cLF = FILL(CHR(10), ipAnzZeilen).
-
-    CASE ipAttrib:
-        WHEN 'N' THEN 
-            PUT STREAM out_Stream CONTROL ipZeile.
-        WHEN 'F' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Drufettb  ipZeile bDrucker.Drufette.
-        WHEN 'U' THEN 
-            PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere.
-    END CASE.
-    
-    PUT STREAM out_Stream CONTROL cLF.
-    iZeile  = iZeile + ipAnzZeilen.
-    ipZeile = ''.
-
-    RETURN TRUE.
-
-END FUNCTION.
-

+ 0 - 1565
GUI/DruckProgramme/Huber/Ruecknahme.p

@@ -1,1565 +0,0 @@
-&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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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
-

+ 0 - 2327
GUI/DruckProgramme/Huber/SammelRechnung.p

@@ -1,2327 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast           AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis          AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext       AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl        AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode        AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cFaktext        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iStart          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iEnde           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iZusSpace       AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   INIT 2750 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-
-DEFINE TEMP-TABLE tSeiten
-    FIELD iExemplar AS INTEGER 
-    FIELD iStart    AS INTEGER
-    FIELD iEnde     AS INTEGER
-    FIELD iAnzahl   AS INTEGER  
-    FIELD lLogo     AS LOGICAL
-    FIELD lBesr     AS LOGICAL
-    . 
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD iFak_Art AS INTEGER
-    FIELD iAuf_Sta AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    INDEX tTabTexte-k1 IS PRIMARY
-    cRecArt
-    iZeile.
-
-DEFINE TEMP-TABLE tRabSumTot
-    FIELD Aufnr     AS INTEGER
-    FIELD Grp       AS INTEGER
-    FIELD AufRabatt AS DECIMAL
-    FIELD AbhRabatt AS DECIMAL
-    .
-
-/* _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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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.
-            
-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.
-    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.
-        
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = sAufko.cFirma
-        AND   bDebst.Knr   = sAufko.iFak_Knr.
-    iDokumentStatus = bDebst.DokumentStatus.
-    RELEASE bDebst.
-        
-    EMPTY TEMP-TABLE tSeiten.
-        
-    { vpr.i INIT  }
-    { vpr.i START }
-        
-    FIND FIRST tParam.
-    iAnzDok = tParam.Anzahl.
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            IF  iDokumentStatus = 2 AND
-                iLauf > 1           AND
-                iLauf < iAnzDok     THEN LEAVE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-        FIND FIRST tRabSumTot
-            WHERE tRabSumTot.Aufnr = Aufze.Aufnr
-            AND   tRabSumTot.Grp   = Aufze.Rab_Su_Grp NO-ERROR.
-        IF NOT AVAILABLE tRabSumTot THEN 
-        DO:
-            CREATE  tRabSumTot.
-            ASSIGN  
-                tRabSumTot.Aufnr = Aufze.Aufnr
-                tRabSumTot.Grp   = Aufze.Rab_Su_Grp.
-        END.
-        ASSIGN  
-            tRabSumTot.AufRabatt = tRabSumTot.AufRabatt + Aufze.Auf_Rab
-            tRabSumTot.AbhRabatt = tRabSumTot.AbhRabatt + Aufze.Abh_Rab.
-
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
-
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko     .
-    EMPTY TEMP-TABLE tRabSumTot .
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    cFakText = ''.
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF cFakText = ''        AND
-            Aufko.Auf_Text <> '' THEN cFakText = cFakText
-                + (IF cFakText = '' THEN '' ELSE CHR(10))
-                + Aufko.Auf_Text.
-           
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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
-            sAufko.iFak_Art = Aufko.Fak_Art
-            sAufko.iAuf_Sta = Aufko.Auf_Sta.
-    END.
-    
-    /*  Alle Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                    
-                IF Aufko.Fak_Art = sAufko.iFak_Art AND
-                    Aufko.Auf_Sta = sAufko.iAuf_Sta THEN 
-                DO:
-                    IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                        Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                END.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum
-                AND   Aufko.Fak_Art     = sAufko.iFak_Art
-                AND   Aufko.Auf_Sta     = sAufko.iAuf_Sta:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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
-            AND   bAufko.Fak_Art     = sAufko.iFak_Art
-            AND   bAufko.Auf_Sta     = sAufko.iAuf_Sta:
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        
-        iPos = vpr_getPageVPos().
-        iPos = iPos + vpr_GetGroupHeight('Artikelzeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            iZusSpace = iMaxPos.
-            RUN VIPER_NEUE_SEITE.
-            RUN vpr_setGroupVPos ('ArtikelZeile1', vpr_getPageVPos() ).
-        END.
-        
-        RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGroup  AS INTEGER   NO-UNDO.
-    
-    iSpace    = vpr_getPageVPos() + iZusSpace.
-    iGroup    = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-    iSpace    = iSpace + iGroup.
-    iZusSpace = 0.
-    
-    IF ipGruppe = 'FetteZeile' THEN 
-    DO:
-        FOR EACH tDokument NO-LOCK
-            WHERE tDokument.cGruppe = ipGruppe
-            AND   tDokument.cFeld BEGINS 'Bez_':
-            tDokument.cInhalt = vpr_toRTF(tDokument.cInhalt, "").
-        END.
-    END.
-
-    IF iSpace > iMaxPos THEN 
-    DO:
-        iZusSpace = iMaxPos.
-        RUN VIPER_NEUE_SEITE.
-    END.
-    
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = vpr_getPageVPos() + 20.
-/*                RUN vpr_setPageVPos  ( iVPagePos ).*/
-                RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', vpr_getPageVPos() ).
-                RUN vpr_FlushGroup   ( 'GebindeabrechnungTitel').
-            END.
-        OTHERWISE 
-        DO:
-        END.
-    END CASE.
-    
-    iVPagePos = vpr_getPageVPos().
-
-    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:
-                RUN vpr_setGroupVPos ( ipGruppe, vpr_getPageVPos() ).
-                iVPagePos = vpr_getPageVPos().
-            END.
-        END.
- 
-        IF FIRST-OF ( tDokument.iZeile ) THEN
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01))
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',')
-                + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lFound    AS LOGICAL   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF  iSeite = 0 AND
-        iLauf  = 1 THEN 
-    DO:
-        RUN VIPER_INIT.
-        RUN DRUCKEN_KOPF.
-    END.
-    IF  iSeite = 0 AND
-        iLauf  > 1 THEN 
-    DO:
-        RUN DRUCKEN_KOPF.
-/*        RUN DRUCKEN_ADRESSE.*/
-    END.
-
-    iArtZeile = 1.
-    lFound    = FALSE.
-    iMaxPos   = 2750.
-    IF cFakText <> '' THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', cFakText ).
-        cFakText = ''.
-        lFound   = TRUE.
-    END.
-    
-    IF lFound THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', ' ' ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[18],01,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[17],21,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', ' ' ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        
-        /*  Passanten-Lieferadresse */
-        cLAdresse = ''.
-        IF  bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        
-        /*  Lieferadresse aus Adresse   */
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    END.
-    iZusSpace = (IF iSeite = 1 THEN 0 ELSE 100).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    
-    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')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    IF iArtZeile > 0 THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(AufGKon.MWSt_Cd,'z9') ).
-
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    END.
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN
-    DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon USE-INDEX AufGKon-k1
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0) NO-LOCK:
-
-            iMwstCd = AufGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1001
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN
-            DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN
-                    tUmsGrp.Ums_Grp = 1001
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.999")) ).
-        END.
-        IF iArtZeile > 0 THEN
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nZeiTot,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN DO:
-            iZusSpace = 30.
-            RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-        END.
-    END.
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    
-    RUN vpr_FlushGroup   ('Fusstext').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos(iVPagePos).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    /*    RUN vpr_SelectPrinter   (bViperDoc.Drucker).*/
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-
-/*    FIND Adresse NO-LOCK USE-INDEX Adresse-k1                         */
-/*        WHERE Adresse.Firma = AdFirma                                 */
-/*        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.                */
-/*                                                                      */
-/*    iKopfZeile = 1.                                                   */
-/*    cBesrKopf  = ''.                                                  */
-/*    IF bAufko.Adresse[05] <> '' THEN                                  */
-/*    DO:                                                               */
-/*        i1 = 6.                                                       */
-/*        DO ix = 1 TO 5:                                               */
-/*            CREATE  tDokument.                                        */
-/*            ASSIGN                                                    */
-/*                tDokument.cGruppe = 'ADRESSE'                         */
-/*                tDokument.iZeile  = 1                                 */
-/*                tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')*/
-/*                tDokument.cInhalt = bAufko.Adresse[ix].               */
-/*            i1 = i1 + 1.                                              */
-/*            cBesrKopf[i1] = bAufko.Adresse[ix].                       */
-/*        END.                                                          */
-/*    END.                                                              */
-/*    ELSE                                                              */
-/*    DO:                                                               */
-/*        DO ix = 6 TO 11:                                              */
-/*            CREATE  tDokument.                                        */
-/*            ASSIGN                                                    */
-/*                tDokument.cGruppe = 'ADRESSE'                         */
-/*                tDokument.iZeile  = 1                                 */
-/*                tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')      */
-/*                tDokument.cInhalt = Adresse.Anschrift[ix].            */
-/*            cBesrKopf[ix] = Adresse.Anschrift[ix].                    */
-/*        END.                                                          */
-/*    END.                                                              */
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    CREATE  tSeiten.
-    ASSIGN  
-        tSeiten.iExemplar = 99
-        tSeiten.iAnzahl   = 1
-        tSeiten.lBesr     = TRUE 
-        tSeiten.lLogo     = FALSE.
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-    RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace    AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPageBesr AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iMaxPos = 2650.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-
-    iZusSpace = 40.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  Rekap nach Umsatzgruppen  ----------------------------------------  */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', ' ' ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', ' ' ).
-    iArtZeile = iArtZeile + 1.
-    cString = vpr_toRTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold').
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Zusatztext_T', cString ).
-    iArtZeile = 1.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1'  , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Alk%'  , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Preis' , TRIM(STRING(TUmsGrp.Ums_Betr,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Betrag', TRIM(STRING(TUmsGrp.Ansatz  ,">9.99%")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'MC'    , TRIM(STRING(TUmsGrp.Mwst    ,"z9"))          ).
-    END.
-    IF iArtzeile > 1 THEN DO:
-        iZusSpace = 80.
-        RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-        RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-    END.
-    
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 AND
-        nFakBetr > 0          THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN DO:
-        RUN vpr_NewPage.
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-
-    cvpr_Dokument = SUBSTITUTE('Rechnungen\&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-
-    IF Rundbetr >= 0 THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-    RUN vpr_EndDoc.
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-        
-    RUN vpr_printOptions ('ShowPrintStatus', 'ON', '', '', '').
-
-    IF tParam.lDokDruck THEN 
-    DO:
-        IF iDokumentStatus < 2 THEN 
-        DO:
-            iStart = 9999.
-            iEnde  = 0.
-            FOR EACH tSeiten:
-                IF tSeiten.iStart < iStart THEN iStart = tSeiten.iStart.
-                IF tSeiten.iEnde  > iEnde  THEN iEnde  = tSeiten.iEnde.
-            END.        
-            IF iStart < 9999 THEN RUN vpr_printDoc ( iStart, iEnde ).
-        END.
-        ELSE 
-        DO:
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 1 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-                RUN vpr_printDoc ( iStart, iEnde ).
-            END.
-        END.
-    END.
-    IF  tParam.lCreatePDF   OR
-        iDokumentStatus > 0 THEN 
-    DO:
-        FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-        IF AVAILABLE tSeiten THEN 
-        DO:
-            iStart = tSeiten.iStart.
-            iEnde  = tSeiten.iEnde.
-        END.
-       
-        IF iDokumentStatus > 0 THEN 
-        DO:
-            FIND LAST tSeiten WHERE tSeiten.iExemplar < 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN 
-            DO:
-                iStart = tSeiten.iStart.
-                iEnde  = tSeiten.iEnde.
-            END.
-        END.
-        
-        IF iDokumentStatus = 2 THEN 
-        DO:       
-            FIND FIRST tSeiten WHERE tSeiten.iExemplar = 99 NO-ERROR.
-            IF AVAILABLE tSeiten THEN iEnde  = tSeiten.iEnde.
-        END.
-        
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_printPDF (iStart, iEnde, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF  iSeite = 1 /* AND
-        iLauf  = 1 */ THEN 
-    DO:
-        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(dFakDatum,"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(bAufko.Faknr,'z999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-        IF  iDokumentStatus > 0 AND
-            iLauf < iAnzDok     THEN 
-        DO:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'PDF'
-                tDokument.cInhalt = 'PDF-RECHNUNG'.
-        END.
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   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_ResetDoc.
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-        RUN vpr_SetPreviewMode  ('Direct').
-        RUN vpr_setDocTitle     (tParam.cDokument).
-        RUN vpr_SetDelimiter    (CHR(01)).
-    END.
-    ELSE 
-    DO:
-        RUN vpr_NewPage.
-    END.
-    
-    RUN vpr_InitGroups("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie    > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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.
-            CREATE  tSeiten.
-            ASSIGN  
-                tSeiten.iExemplar = iLauf
-                tSeiten.iAnzahl   = iSeite
-                tSeiten.lBesr     = FALSE 
-                tSeiten.lLogo     = (IF iLauf = iAnzDok THEN TRUE ELSE FALSE ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iStart ).
-            RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + iZusSpace) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        
-        iSeite    = iSeite + 1.
-        iZusSpace = 0.
-        RUN DRUCKEN_ADRESSE.
-        FIND FIRST tSeiten
-            WHERE tSeiten.iExemplar = iLauf.
-        ASSIGN  
-            tSeiten.iAnzahl = iSeite.
-        RUN vpr_FetchPageNo ( OUTPUT tSeiten.iEnde  ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure
-FUNCTION calcBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO INIT 0.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-    
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile:
-
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-
-        cWerte  = cWerte
-                + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + (IF cZellen = '' THEN '' ELSE ',') 
-                + tDokument.cFeld.
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-
-        RUN vpr_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2082
GUI/DruckProgramme/Huber/Sav_Faktura.p

@@ -1,2082 +0,0 @@
-&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 hSavko          AS HANDLE                   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 bSavko       FOR Savko   .
-DEF BUFFER bSavze       FOR Savze   .
-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 sSavko
-    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
-    FIELD dFakDat       AS DATE
-    .
-DEF TEMP-TABLE tSavko       LIKE Savko
-    FIELD iRecid        AS RECID
-    .
-DEF TEMP-TABLE tSavze
-    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 tSavze-k1 IS PRIMARY
-          Aufnr
-          Sort1
-          Sort2
-          Sort3
-    .
-DEF TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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             = 33.67
-         WIDTH              = 88.8.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-    DEF VAR cPDFName        AS CHAR                     NO-UNDO.
-    DEF VAR cVPRName        AS CHAR                     NO-UNDO.
-    DEF VAR lVPRDatei       AS LOG                      NO-UNDO.
-
-    opcResult = ''.
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl
-            lPreis   = TRUE.
-            
-    FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-    AdFirma = bSteuer.AdFirma.
-
-    RUN AUFTRAG_ERMITTELN.
-    IF opcResult <> '' THEN RETURN.
-    
-    FOR EACH sSavko
-            BY sSavko.iFak_Knr:
-            
-        cPDFName = DYNAMIC-FUNCTION('getPDFDocument':U, sSavko.iAufnr ) NO-ERROR.
-        cVPRName = DYNAMIC-FUNCTION('getVPRDocument':U, sSavko.iAufnr ) NO-ERROR.
-        IF cPDFName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cPDFName.
-            IF FILE-INFO:FILE-SIZE > 9000 THEN DO:
-                RUN OPEN_PDF ( cPDFName ).
-                LEAVE.
-            END.
-            OS-DELETE VALUE(cPDFName) NO-ERROR.
-        END.
-        IF cVPRName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cVPRName NO-ERROR.
-            IF FILE-INFO:FULL-PATHNAME <> ?  AND
-               FILE-INFO:FULL-PATHNAME <> '' THEN DO:
-                lVPRDatei = TRUE.
-            END.
-        END.
-
-        FIND bAdresse NO-LOCK
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = sSavko.iFak_Knr.
-        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 }
-        
-        IF lVPRDatei THEN DO:
-            cPDFName = REPLACE(cVPRName, '.vpr', '.pdf').
-            RUN vpr_openDoc  ( cVPRName ).
-            RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-            
-            { vpr.i STOP }
-            
-            RUN OPEN_PDF ( cPDFName ).
-            LEAVE.
-        END.        
-                
-        DO iLauf = 1 TO iAnzDok:
-        
-            dFakDatum = sSavko.dFakDat.
-            iSeite    = 0.
-            iFaknr    = sSavko.iFaknr.
-            lFirst    = TRUE.
-            lLast     = FALSE.
-                    
-            EMPTY TEMP-TABLE tUmsGrp    .
-            EMPTY TEMP-TABLE tTotale    .
-            
-            CREATE  tTotale.
-            
-            FOR EACH bSavko NO-LOCK
-                    WHERE bSavko.Firma      = sSavko.cFirma
-                    AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-                    BREAK BY bSavko.Firma
-                          BY bSavko.Aufnr :
-
-                EMPTY TEMP-TABLE tSavze     .
-                EMPTY TEMP-TABLE tGebKto    .
-                EMPTY TEMP-TABLE tRabSumm   .
-                EMPTY TEMP-TABLE tSpeRab    .
-                EMPTY TEMP-TABLE tTabTexte  .
-                EMPTY TEMP-TABLE tRueckst   .
-                
-                FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                        WHERE bAdresse.Firma = AdFirma
-                        AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-                FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE LDebst.Firma   = cFirma
-                        AND   LDebst.Knr     = bSavko.Knr NO-ERROR.
-                FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE FDebst.Firma   = cFirma
-                        AND   FDebst.Knr     = bSavko.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.
-        
-                hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-                RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-                FOR EACH tSavze
-                        WHERE tSavze.Artnr > 0:
-                
-                    FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                    /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                    IF bSavze.Auf_Sp_Grp > 0 THEN DO:
-                        FIND FIRST tSpeRab
-                                WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                        IF NOT AVAILABLE tSpeRab THEN DO:
-                            CREATE  tSpeRab.
-                            ASSIGN  tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                        END.
-                        tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                    END.
-                    
-                    /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                    DO WHILE bSavze.Rab_Su_Grp > 0:
-                        FIND FIRST tRabSumm
-                                WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE tRabSumm THEN DO:
-                            FIND FIRST RabSumm NO-LOCK
-                                    WHERE RabSumm.Firma    = bSavze.Firma
-                                    AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                            IF NOT AVAILABLE RabSumm THEN LEAVE.
-                            CREATE  tRabSumm.
-                            ASSIGN  tRabSumm.Rab_Summ  = bSavze.Rab_Su_Grp
-                                    tRabSumm.Bez       = RabSumm.Bez
-                                    tRabSumm.Auf_Rab   = 0
-                                    tRabSumm.Abh_Rab   = 0.
-                        END.
-                        LEAVE.
-                    END.
-                END.
-                
-                IF LAST-OF ( bSavko.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:  <none>
-  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 tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-            WHERE GGebinde.Firma  = cFirma
-            AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Savze.VGeb_Me,'->>>>')
-                + 'x '
-                + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-           Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-           Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-/*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-/*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                       AND   TUmsGrp.MWst    = Savze.WuCd
-                       AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma  = cFirma
-                AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                TUmsGrp.Mwst    = Savze.WuCd
-                TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-                     + Savze.Net_Betr
-                     - Savze.Auf_Rab
-                     - Savze.Abh_Rab.
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-            WHERE Savko.Firma       = tParam.cFirma
-            AND   Savko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Savko.Faknr.
-        CREATE  sSavko.
-        ASSIGN  sSavko.cFirma   = Savko.Firma
-                sSavko.iAufnr   = Savko.Aufnr
-                sSavko.iFak_Knr = Savko.Fak_Knr
-                sSavko.iKnr     = Savko.Knr
-                sSavko.iSamm_Nr = 0
-                sSavko.iRecid   = RECID(Savko)
-                sSavko.iFaknr   = iFaknr
-                sSavko.dFakDat  = Savko.Fak_Datum.
-    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:  <none>
-  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:  <none>
-  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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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.
-    DEF VAR nPfli       AS DEC  EXTENT 12       NO-UNDO.
-    DEF VAR nMwst       AS DEC  EXTENT 12       NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-             BY tSavze.Aufnr
-             BY tSavze.Sort1
-             BY tSavze.LagOrt
-             BY tSavze.Sort2
-             BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Auf_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Auf_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[11],01,20))
-                  + " "
-                  + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-/*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Abh_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Abh_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[15],01,20))
-                  + " "
-                  + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Gebuehr <> 0
-            AND   SavGKon.Betrag  <> 0 :
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND   SavGKon.Betrag  <> 0 :
-
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN DO:
-                FIND GebKonto NO-LOCK
-                        WHERE GebKonto.Firma  = SavGKon.Firma
-                        AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-                CREATE  tGebKto.
-                ASSIGN  tGebKto.Sort_Cd  = GebKonto.Sort_Cd
-                        tGebKto.Geb_Cd   = GebKonto.Geb_Cd
-                        tGebKto.Bez      = GebKonto.Bez
-                        tGebKto.Preis    = SavGKon.Depot
-                        tGebKto.MWST_Cd  = SavGKon.MWSt_Cd.
-            END.
-            tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-            tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-            tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-            tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-        END.
-        RELEASE SavGKon.
-        
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND  (SavGKon.Eingang <> 0  OR
-                      SavGKon.Ausgang <> 0)
-                      
-                BREAK BY SavGKon.Firma
-                      BY SavGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE SavGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-           iArtZeile > 0 THEN 
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-/*  Auftragstext  ------------------------------------------------------    */
-
-    cText = bSavko.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.
-
-/*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-                          WHERE MWSTAns.MWST_Cd = ii
-                          AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-/*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-/*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-            WHERE Kondi.Kond  = bSavko.Kond
-            AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN DO:
-            Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    nFakBetr = nFakBetr - bSavko.Bar_Betr - bSavko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-       Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'9999999'),
-                                tParam.cDokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        RUN DRUCKEN_BESR ( 'BESR' ).
-     
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN DO:
-        RUN OPEN_PDF ( cPDFName ).
-    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:  <none>
-  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_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDokument  AS CHAR         NO-UNDO.
-
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR iKopfZeile  AS INT                      NO-UNDO.
-    
-    DEF VAR PZBetrag    AS CHAR                     NO-UNDO.
-    DEF VAR PZReferenz  AS CHAR                     NO-UNDO.
-    DEF VAR PZTNNummer  AS CHAR                     NO-UNDO.
-    DEF VAR cReferenz   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bViperDoc    FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ( "PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-            WHERE Adresse.Firma = AdFirma
-            AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                    tDokument.cInhalt = bSavko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                    tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    IF Rundbetr < 0.00 THEN DO:
-        cFeld = 'X X X X X X X X X X'.
-    END.
-    IF Rundbetr = 0.00 THEN DO:
-        cFeld = '       .  '.
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0.00 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                    PZBetrag   = '          04 '.
-    PZReferenz = '80401100000'
-               + STRING(bSavko.Fak_Knr,'999999')
-               + STRING(bSavko.Faknr  ,'9999999')
-               + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    RUN vpr_EndDoc.
-    RUN vpr_printDoc (0, 0).
-
- 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:  <none>
-  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.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN DO:
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(tParam.dFakdatum,"99.99.9999").
-
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'T_Dokument'
-                tDokument.cInhalt = (IF bSavko.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').
-    
-        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 ' ').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Auf_Datum'
-                tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Lief_Datum'
-                tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'U_Ref'
-                tDokument.cInhalt = bSavko.U_Ref.
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Knr'
-                tDokument.cInhalt = STRING(bSavko.Fak_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(bSavko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = bSavko.Abh_Text
-          + (IF bSavko.Abh_Text <> '' THEN CHR(10) + CHR(10) ELSE '')
-          + bSavko.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_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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 tSavze.
-    
-    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 Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                tSavze.Sort2  = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN DO:
-        FOR EACH Savze NO-LOCK
-                WHERE Savze.Firma = cFirma
-                AND   Savze.Aufnr = ipAufnr
-                BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                    tSavze.Artnr    = Savze.Artnr
-                    tSavze.Inhalt   = Savze.Inhalt
-                    tSavze.Jahr     = Savze.Jahr
-                    tSavze.Pos      = Savze.Pos
-                    tSavze.Zeile    = RECID(Savze)
-                    tSavze.Aktion   = Savze.Aktion
-                    tSavze.Preis    = Savze.Preis
-                    tSavze.MGeli    = Savze.MGeli
-                    tSavze.MRuek    = Savze.MRuek.
-                    
-            ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                    tSavze.Sort2  = ''
-                    tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-                    tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Ruestplatz und Ort   */
-    cLagOrt = ''.
-    FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos
-            AND   Savze.Pos   < MaxPos
-            BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN DO:
-            FIND ArtLager NO-LOCK
-                    WHERE ArtLager.Firma  = Savze.Firma
-                    AND   ArtLager.Artnr  = Savze.Artnr
-                    AND   ArtLager.Inhalt = Savze.Inhalt
-                    AND   ArtLager.Jahr   = Savze.Jahr
-                    AND   ArtLager.Lager  = Savze.Lager.
-            cLagOrt = ArtLager.Ort.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2
-                WHERE RuestPlatz.Firma     = Savze.Firma
-                AND   RuestPlatz.RuestArt  = iRuestArt
-                AND   RuestPlatz.abLagOrt <= cLagOrt NO-ERROR.
-        IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90.
-        ELSE                             jPlatz = RuestPlatz.Platz.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(jPlatz,'99')
-                tSavze.Sort2  = cLagOrt
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = cLagort.
-                
-        IF tSavze.MRuek > 0 THEN DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tSavze TO tRueckst.
-        END.
-        
-        IF tSavze.Artnr > 0  AND
-           tSavze.MGeli = 0  THEN DELETE tSavze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-OPEN_PDF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPEN_PDF Procedure 
-PROCEDURE OPEN_PDF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDocument  AS CHAR             NO-UNDO.
-
-    DEF VAR o-i AS i NO-UNDO.
-    
-    FILE-INFO:FILE-NAME = ipDocument.
-    ipDocument = FILE-INFO:FULL-PATHNAME.
-    RUN ShellExecuteA (0,
-                       "open",
-                       ipDocument,
-                       "",
-                       "",
-                       0,
-                       OUTPUT o-i).
-                       
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-/* ------------------------------------------------------------------------- */
-/*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-/* ------------------------------------------------------------------------- */
-/*                                                                           */
-/*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-/*                       2.  String Referenz            (27-stellig)         */
-/*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-/*                                                                           */
-/*  Erstellung der VESR-Codierzeile                                          */
-/*                                                                           */
-/*---------------------------------------------------------------------------*/
-
-    DEF INPUT-OUTPUT PARAMETER PZBetrag     AS CHAR FORMAT "x(13)".
-    DEF INPUT-OUTPUT PARAMETER PZReferenz   AS CHAR FORMAT "x(27)".
-    DEF INPUT-OUTPUT PARAMETER PZTNummer    AS CHAR FORMAT "x(09)".
-    DEF OUTPUT       PARAMETER VSZeile      AS CHAR FORMAT "x(58)".
-    
-    DEF VAR l1          AS INT.
-    DEF VAR l2          AS INT.
-    DEF VAR l3          AS INT.
-    DEF VAR PZ          AS INT.
-    DEF VAR x1          AS INT.
-    DEF VAR x2          AS INT.
-    DEF VAR x3          AS INT.
-    DEF VAR VMOD10      AS CHAR FORMAT "x(11)"  EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    /*
-    SUBSTRING(VSZeile,58) = "H".
-    */
-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:  <none>
-  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:  <none>
-  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 = 2600.
-    
-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:  <none>
-  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
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2179
GUI/DruckProgramme/Huber/Sav_FestSammelRechnung.p

@@ -1,2179 +0,0 @@
-&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 hSavko          AS HANDLE                   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 bSavko       FOR Savko   .
-DEF BUFFER bSavze       FOR Savze   .
-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 sSavko
-    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 tSavko       LIKE Savko
-    FIELD iRecid        AS RECID
-    .
-DEF TEMP-TABLE tSavze
-    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 tSavze-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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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  *************************** */
-
-    DEF VAR cPDFName        AS CHAR                     NO-UNDO.
-    DEF VAR cVPRName        AS CHAR                     NO-UNDO.
-    DEF VAR lVPRDatei       AS LOG                      NO-UNDO.
-
-    opcResult = ''.
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl.
-            
-    FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-    AdFirma = bSteuer.AdFirma.
-
-    RUN AUFTRAG_ERMITTELN.
-    IF opcResult <> '' THEN RETURN.
-    
-    FOR EACH sSavko
-            BY sSavko.iFak_Knr:
-
-        cPDFName = DYNAMIC-FUNCTION('getPDFDocument':U, sSavko.iAufnr ) NO-ERROR.
-        cVPRName = DYNAMIC-FUNCTION('getVPRDocument':U, sSavko.iAufnr ) NO-ERROR.
-        IF cPDFName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cPDFName.
-            IF FILE-INFO:FILE-SIZE > 9000 THEN DO:
-                RUN OPEN_PDF ( cPDFName ).
-                LEAVE.
-            END.
-            OS-DELETE VALUE(cPDFName) NO-ERROR.
-        END.
-        IF cVPRName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cVPRName NO-ERROR.
-            IF FILE-INFO:FULL-PATHNAME <> ?  AND
-               FILE-INFO:FULL-PATHNAME <> '' THEN DO:
-                lVPRDatei = TRUE.
-            END.
-        END.
-
-        FIND bAdresse NO-LOCK
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = sSavko.iFak_Knr.
-        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 }
-                
-        IF lVPRDatei THEN DO:
-            cPDFName = REPLACE(cVPRName, '.vpr', '.pdf').
-            RUN vpr_openDoc  ( cVPRName ).
-            RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-            
-            { vpr.i STOP }
-            
-            RUN OPEN_PDF ( cPDFName ).
-            LEAVE.
-        END.        
-
-        DO iLauf = 1 TO iAnzDok:
-        
-            dFakDatum = tParam.dFakDatum.
-            iSeite    = 0.
-            iFaknr    = sSavko.iFaknr.
-            lFirst    = TRUE.
-            lPreis    = TRUE.
-            lLast     = FALSE.
-                    
-            EMPTY TEMP-TABLE tUmsGrp    .
-            EMPTY TEMP-TABLE tTotale    .
-            EMPTY TEMP-TABLE tDokument  .
-            
-            CREATE  tTotale.
-            
-            FOR EACH bSavko NO-LOCK
-                    WHERE bSavko.Firma      = sSavko.cFirma
-                    AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-                    AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-                    AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-                    BREAK BY bSavko.Fak_Knr
-                          BY bSavko.Samm_Nr
-                          BY bSavko.Knr
-                          BY bSavko.Aufnr :
-
-                EMPTY TEMP-TABLE tSavze     .
-                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   = bSavko.Fak_Knr NO-ERROR.
-                FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE LDebst.Firma  = cFirma
-                        AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-                FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE FDebst.Firma  = cFirma
-                        AND   FDebst.Knr    = bSavko.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.
-        
-                hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-                RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-                FOR EACH tSavze
-                        WHERE tSavze.Artnr > 0:
-                
-                    FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                    /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                    IF bSavze.Auf_Sp_Grp > 0 THEN DO:
-                        FIND FIRST tSpeRab
-                                WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                        IF NOT AVAILABLE tSpeRab THEN DO:
-                            CREATE  tSpeRab.
-                            ASSIGN  tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                        END.
-                        tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                    END.
-                    
-                    /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                    DO WHILE bSavze.Rab_Su_Grp > 0:
-                        FIND FIRST tRabSumm
-                                WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE tRabSumm THEN DO:
-                            FIND FIRST RabSumm NO-LOCK
-                                    WHERE RabSumm.Firma    = bSavze.Firma
-                                    AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                            IF NOT AVAILABLE RabSumm THEN LEAVE.
-                            CREATE  tRabSumm.
-                            ASSIGN  tRabSumm.Rab_Summ  = bSavze.Rab_Su_Grp
-                                    tRabSumm.Bez       = RabSumm.Bez
-                                    tRabSumm.Auf_Rab   = 0
-                                    tRabSumm.Abh_Rab   = 0.
-                        END.
-                        LEAVE.
-                    END.
-                END.
-                
-                IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-                iArtZeile = 0.
-                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:  <none>
-  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 tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-            WHERE GGebinde.Firma  = cFirma
-            AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Savze.VGeb_Me,'->>>>')
-                + 'x '
-                + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-           Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-           Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-/*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-/*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                       AND   TUmsGrp.MWst    = Savze.WuCd
-                       AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma  = cFirma
-                AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                TUmsGrp.Mwst    = Savze.WuCd
-                TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-                     + Savze.Net_Betr
-                     - Savze.Auf_Rab
-                     - Savze.Abh_Rab.
-
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-    
-    DEF BUFFER bDebst       FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-            WHERE Savko.Firma       = tParam.cFirma
-            AND   Savko.Faknr       = tParam.iFaknr
-            
-            BREAK BY Savko.Fak_Knr
-                  BY Savko.Samm_Nr
-                  BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Samm_Nr ) THEN NEXT.
-
-        IF tParam.iVerband <> 999999 THEN DO:
-            FIND bDebst NO-LOCK
-                    WHERE bDebst.Firma = Savko.Firma
-                    AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        CREATE  sSavko.
-        ASSIGN  sSavko.cFirma   = Savko.Firma
-                sSavko.iAufnr   = Savko.Aufnr
-                sSavko.iFak_Knr = Savko.Fak_Knr
-                sSavko.iKnr     = Savko.Knr
-                sSavko.iSamm_Nr = Savko.Samm_Nr
-                sSavko.iRecid   = RECID(Savko)
-                sSavko.iFaknr   = Savko.Faknr.
-    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:  <none>
-  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 LENGTH(cWerte) > 31000 THEN MESSAGE 'Ausgabe Artikelzeile/ Länge cWerte = ' LENGTH(cWerte)
-                                       VIEW-AS ALERT-BOX.
-IF LENGTH(cZellen) > 31000 THEN MESSAGE 'Ausgabe Artikelzeile/ Länge cZellen = ' LENGTH(cWerte)
-                                       VIEW-AS ALERT-BOX.
-        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:  <none>
-  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.
-    
-    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 LENGTH(cWerte) > 31000 THEN MESSAGE 'Ausgabe Gruppe/ Länge cWerte = ' LENGTH(cWerte)
-                                       VIEW-AS ALERT-BOX.
-IF LENGTH(cZellen) > 31000 THEN MESSAGE 'Ausgabe Gruppe/ Länge cZellen = ' LENGTH(cWerte)
-                                       VIEW-AS ALERT-BOX.
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR xString     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 nRabWert    AS DEC                  NO-UNDO.
-    DEF VAR iMwstCd     AS INT                  NO-UNDO.
-    DEF VAR nZeiTot     AS DEC  DECIMALS 4      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[18],01,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[17],21,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bSavko.Knr = bSavko.Fak_Knr AND
-           NOT FDebst.Passant          THEN LEAVE.
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-                WHERE LAdresse.Firma = AdFirma
-                AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-             BY tSavze.Aufnr
-             BY tSavze.Sort1
-             BY tSavze.LagOrt
-             BY tSavze.Sort2
-             BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    
-    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')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Auf_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-                WHERE SavRabSu.Firma    = bSavko.Firma
-                AND   SavRabSu.Aufnr    = bSavko.Aufnr
-                AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-/*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-                      BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-                WHERE SavRabSu.Firma    = bSavko.Firma
-                AND   SavRabSu.Aufnr    = bSavko.Aufnr
-                AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-/*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-                     BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-                   WHERE Tabel.Firma  = cFirma
-                   AND   Tabel.RecArt = 'ARABGRP'
-                   AND   Tabel.CodeC  = ''
-                   AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-                   AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-                WHERE SavSpRab.Firma    = bSavko.Firma
-                AND   SavSpRab.Aufnr    = bSavko.Aufnr
-                AND   SavSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Gebuehr <> 0
-            AND   SavGKon.Betrag  <> 0 NO-LOCK:
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1000
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  tUmsGrp.Ums_Grp = 1000
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-/*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon USE-INDEX SavGKon-k1
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND  (SavGKon.Eingang <> 0  OR
-                      SavGKon.Ausgang <> 0) NO-LOCK:
-                
-            iMwstCd = SavGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                    WHERE MwstAns.Mwst_Cd = iMwstCd
-                    AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                    WHERE tUmsGrp.Ums_Grp = 1001
-                    AND   tUmsGrp.Mwst    = iMwstCd
-                    AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                        WHERE WarenGrp.Firma = cFirma
-                        AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  tUmsGrp.Ums_Grp = 1001
-                        tUmsGrp.Mwst    = iMwstCd
-                        tUmsGrp.Ansatz  = MwstAns.Ansatz
-                        tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-            
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.999")) ).
-        END.
-        IF iArtZeile > 0 THEN DO:
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nZeiTot,"->>>,>>9.999")) ).
-             iArtZeile = iArtZeile + 1.
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.    
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.999")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-  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').
-    
-    RUN vpr_FlushGroup ('Fusstext').
-    RUN vpr_FlushGroup ('Ueberschrift').
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDokument  AS CHAR         NO-UNDO.
-
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR iKopfZeile  AS INT                      NO-UNDO.
-    
-    DEF VAR PZBetrag    AS CHAR                     NO-UNDO.
-    DEF VAR PZReferenz  AS CHAR                     NO-UNDO.
-    DEF VAR PZTNNummer  AS CHAR                     NO-UNDO.
-    DEF VAR cReferenz   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bViperDoc    FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    IF Rundbetr < 0 THEN RETURN.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-            WHERE Adresse.Firma = AdFirma
-            AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                    tDokument.cInhalt = bSavko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                    tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-               + STRING(bSavko.Fak_Knr,'999999')
-               + STRING(bSavko.Faknr  ,'9999999')
-               + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-    RUN vpr_EndDoc.
-    RUN vpr_printDoc (0, 0).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cPDFName    AS CHAR INIT ''             NO-UNDO.
-    DEF VAR iSpace      AS INT  INIT 0              NO-UNDO.
-    DEF VAR iPos        AS INT                      NO-UNDO.
-    DEF VAR iKopie      AS INT                      NO-UNDO.
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR lJa         AS LOG                      NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-                WHERE MWSTAns.MWST_Cd = ix
-                AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN DO:
-        RUN vpr_NewPage.
-        RUN vpr_InitGroups('').
-        IF iAnzDok = iLauf THEN RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1' , TRIM(SUBSTRING(cFormText[15],41,20)) ).
-    FOR EACH TUmsGrp NO-LOCK
-             BY TUmsGrp.Ums_Grp
-             BY TUmsGrp.Mwst :
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1'  , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Alk%'  , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Preis' , TRIM(STRING(TUmsGrp.Ums_Betr,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Betrag', TRIM(STRING(TUmsGrp.Ansatz  ,">9.99%")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'MC'    , TRIM(STRING(TUmsGrp.Mwst    ,"z9"))          ).
-    END.
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-/*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-            WHERE Kondi.Kond  = bSavko.Kond
-            AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-       Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-/*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('Rechnungen\&1-&2_&3_Kopie.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'9999999'),
-                                tParam.cDokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        RUN DRUCKEN_BESR ( 'BESR' ).
-     
-        LEAVE.
-    END.
-    IF tParam.lCreatePDF THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR iOldSeite   AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1         /* OR
-       iSeite > iOldSeite */ THEN DO:
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'T_Dokument'
-                tDokument.cInhalt = (IF bSavko.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(bSavko.Faknr,'z999999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Knr'
-                tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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 tSavze.
-    
-    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 Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                tSavze.Sort2  = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN DO:
-        FOR EACH Savze NO-LOCK
-                WHERE Savze.Firma = cFirma
-                AND   Savze.Aufnr = ipAufnr
-                BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                    tSavze.Artnr    = Savze.Artnr
-                    tSavze.Inhalt   = Savze.Inhalt
-                    tSavze.Jahr     = Savze.Jahr
-                    tSavze.Pos      = Savze.Pos
-                    tSavze.Zeile    = RECID(Savze)
-                    tSavze.Aktion   = Savze.Aktion
-                    tSavze.Preis    = Savze.Preis
-                    tSavze.MGeli    = Savze.MGeli
-                    tSavze.MRuek    = Savze.MRuek.
-                    
-            ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                    tSavze.Sort2  = ''
-                    tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-                    tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Ruestplatz und Ort   */
-    cLagOrt = ''.
-    FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos
-            AND   Savze.Pos   < MaxPos
-            BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN DO:
-            FIND ArtLager NO-LOCK
-                    WHERE ArtLager.Firma  = Savze.Firma
-                    AND   ArtLager.Artnr  = Savze.Artnr
-                    AND   ArtLager.Inhalt = Savze.Inhalt
-                    AND   ArtLager.Jahr   = Savze.Jahr
-                    AND   ArtLager.Lager  = Savze.Lager.
-            cLagOrt = ArtLager.Ort.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2
-                WHERE RuestPlatz.Firma     = Savze.Firma
-                AND   RuestPlatz.RuestArt  = iRuestArt
-                AND   RuestPlatz.abLagOrt <= cLagOrt NO-ERROR.
-        IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90.
-        ELSE                             jPlatz = RuestPlatz.Platz.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(jPlatz,'99')
-                tSavze.Sort2  = cLagOrt
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = cLagort.
-                
-        IF tSavze.Artnr > 0  AND
-           tSavze.MGeli = 0  THEN DELETE tSavze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-OPEN_PDF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPEN_PDF Procedure 
-PROCEDURE OPEN_PDF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDocument  AS CHAR             NO-UNDO.
-
-    DEF VAR o-i AS i NO-UNDO.
-    
-    FILE-INFO:FILE-NAME = ipDocument.
-    ipDocument = FILE-INFO:FULL-PATHNAME.
-    RUN ShellExecuteA (0,
-                       "open",
-                       ipDocument,
-                       "",
-                       "",
-                       0,
-                       OUTPUT o-i).
-                       
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-/* ------------------------------------------------------------------------- */
-/*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-/* ------------------------------------------------------------------------- */
-/*                                                                           */
-/*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-/*                       2.  String Referenz            (27-stellig)         */
-/*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-/*                                                                           */
-/*  Erstellung der VESR-Codierzeile                                          */
-/*                                                                           */
-/*---------------------------------------------------------------------------*/
-
-    DEF INPUT-OUTPUT PARAMETER PZBetrag     AS CHAR FORMAT "x(13)".
-    DEF INPUT-OUTPUT PARAMETER PZReferenz   AS CHAR FORMAT "x(27)".
-    DEF INPUT-OUTPUT PARAMETER PZTNummer    AS CHAR FORMAT "x(09)".
-    DEF OUTPUT       PARAMETER VSZeile      AS CHAR FORMAT "x(58)".
-    
-    DEF VAR l1          AS INT.
-    DEF VAR l2          AS INT.
-    DEF VAR l3          AS INT.
-    DEF VAR PZ          AS INT.
-    DEF VAR x1          AS INT.
-    DEF VAR x2          AS INT.
-    DEF VAR x3          AS INT.
-    DEF VAR VMOD10      AS CHAR FORMAT "x(11)"  EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    /*
-    SUBSTRING(VSZeile,58) = "H".
-    */
-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:  <none>
-  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN DO:
-        cTemplate = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cTemplate).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-  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.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2176
GUI/DruckProgramme/Huber/Sav_LieferFak.p

@@ -1,2176 +0,0 @@
-&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 hSavko          AS HANDLE                   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 bSavko       FOR Savko   .
-DEF BUFFER bSavze       FOR Savze   .
-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 sSavko
-    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
-    FIELD dFakDat       AS DATE
-    .
-DEF TEMP-TABLE tSavko       LIKE Savko
-    FIELD iRecid        AS RECID
-    .
-DEF TEMP-TABLE tSavze
-    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 tSavze-k1 IS PRIMARY
-          Aufnr
-          Sort1
-          Sort2
-          Sort3
-    .
-DEF TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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  *************************** */
-
-    DEF VAR cPDFName        AS CHAR                     NO-UNDO.
-    DEF VAR cVPRName        AS CHAR                     NO-UNDO.
-    DEF VAR lVPRDatei       AS LOG                      NO-UNDO.
-
-    opcResult = ''.
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl
-            lPreis   = TRUE.
-            
-    FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-    AdFirma = bSteuer.AdFirma.
-
-    RUN AUFTRAG_ERMITTELN.
-    IF opcResult <> '' THEN RETURN.
-    
-    FOR EACH sSavko
-            BY sSavko.iFak_Knr:
-
-        cPDFName = DYNAMIC-FUNCTION('getPDFDocument':U, sSavko.iAufnr ) NO-ERROR.
-        cVPRName = DYNAMIC-FUNCTION('getVPRDocument':U, sSavko.iAufnr ) NO-ERROR.
-        IF cPDFName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cPDFName.
-            IF FILE-INFO:FILE-SIZE > 9000 THEN DO:
-                RUN OPEN_PDF ( cPDFName ).
-                LEAVE.
-            END.
-            OS-DELETE VALUE(cPDFName) NO-ERROR.
-        END.
-        IF cVPRName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cVPRName NO-ERROR.
-            IF FILE-INFO:FULL-PATHNAME <> ?  AND
-               FILE-INFO:FULL-PATHNAME <> '' THEN DO:
-                lVPRDatei = TRUE.
-            END.
-        END.
-
-        FIND bAdresse NO-LOCK
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = sSavko.iFak_Knr.
-        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 }
-                
-        IF lVPRDatei THEN DO:
-            cPDFName = REPLACE(cVPRName, '.vpr', '.pdf').
-            RUN vpr_openDoc  ( cVPRName ).
-            RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-            
-            { vpr.i STOP }
-            
-            RUN OPEN_PDF ( cPDFName ).
-            LEAVE.
-        END.
-        
-        DO iLauf = 1 TO iAnzDok:
-        
-            dFakDatum = sSavko.dFakdat.
-            iSeite    = 0.
-            iFaknr    = sSavko.iFaknr.
-            lFirst    = TRUE.
-            lLast     = FALSE.
-                    
-            EMPTY TEMP-TABLE tUmsGrp    .
-            EMPTY TEMP-TABLE tTotale    .
-            
-            CREATE  tTotale.
-            
-            FOR EACH bSavko NO-LOCK
-                    WHERE bSavko.Firma      = sSavko.cFirma
-                    AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-                    BREAK BY bSavko.Firma
-                          BY bSavko.Aufnr :
-
-                EMPTY TEMP-TABLE tSavze     .
-                EMPTY TEMP-TABLE tGebKto    .
-                EMPTY TEMP-TABLE tRabSumm   .
-                EMPTY TEMP-TABLE tSpeRab    .
-                EMPTY TEMP-TABLE tTabTexte  .
-                EMPTY TEMP-TABLE tRueckst   .
-                
-                FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                        WHERE bAdresse.Firma = AdFirma
-                        AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-                FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE LDebst.Firma  = cFirma
-                        AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-                FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE FDebst.Firma  = cFirma
-                        AND   FDebst.Knr    = bSavko.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.
-        
-                hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-                RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-                FOR EACH tSavze
-                        WHERE tSavze.Artnr > 0:
-                
-                    FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                    /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                    IF bSavze.Auf_Sp_Grp > 0 THEN DO:
-                        FIND FIRST tSpeRab
-                                WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                        IF NOT AVAILABLE tSpeRab THEN DO:
-                            CREATE  tSpeRab.
-                            ASSIGN  tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                        END.
-                        tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                    END.
-                    
-                    /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                    DO WHILE bSavze.Rab_Su_Grp > 0:
-                        FIND FIRST tRabSumm
-                                WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE tRabSumm THEN DO:
-                            FIND FIRST RabSumm NO-LOCK
-                                    WHERE RabSumm.Firma    = bSavze.Firma
-                                    AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                            IF NOT AVAILABLE RabSumm THEN LEAVE.
-                            CREATE  tRabSumm.
-                            ASSIGN  tRabSumm.Rab_Summ  = bSavze.Rab_Su_Grp
-                                    tRabSumm.Bez       = RabSumm.Bez
-                                    tRabSumm.Auf_Rab   = 0
-                                    tRabSumm.Abh_Rab   = 0.
-                        END.
-                        LEAVE.
-                    END.
-                END.
-                
-                IF LAST-OF ( bSavko.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:  <none>
-  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 tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-            WHERE GGebinde.Firma  = cFirma
-            AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Savze.VGeb_Me,'->>>>')
-                + 'x '
-                + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-           Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-           Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-/*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-/*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                       AND   TUmsGrp.MWst    = Savze.WuCd
-                       AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma  = cFirma
-                AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                TUmsGrp.Mwst    = Savze.WuCd
-                TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-                     + Savze.Net_Betr
-                     - Savze.Auf_Rab
-                     - Savze.Abh_Rab.
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-            WHERE Savko.Firma       = tParam.cFirma
-            AND   Savko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Savko.Faknr.
-        CREATE  sSavko.
-        ASSIGN  sSavko.cFirma   = Savko.Firma
-                sSavko.iAufnr   = Savko.Aufnr
-                sSavko.iFak_Knr = Savko.Fak_Knr
-                sSavko.iKnr     = Savko.Knr
-                sSavko.iSamm_Nr = 0
-                sSavko.iRecid   = RECID(Savko)
-                sSavko.iFaknr   = iFaknr.
-        IF Savko.Fak_Datum = ?      OR
-           Savko.Fak_Datum < TODAY  THEN sSavko.dFakDat = TODAY.
-        ELSE                             sSavko.dFakDat = Savko.Fak_Datum.
-        RELEASE Savko.
-        RELEASE bSavko.
-    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:  <none>
-  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:  <none>
-  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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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.
-    DEF VAR nPfli       AS DEC  EXTENT 12       NO-UNDO.
-    DEF VAR nMwst       AS DEC  EXTENT 12       NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-             BY tSavze.Aufnr
-             BY tSavze.Sort1
-             BY tSavze.LagOrt
-             BY tSavze.Sort2
-             BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Auf_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Auf_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[11],01,20))
-                  + " "
-                  + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-/*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Abh_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Abh_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[15],01,20))
-                  + " "
-                  + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Gebuehr <> 0
-            AND   SavGKon.Betrag  <> 0 :
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND   SavGKon.Betrag  <> 0 :
-
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN DO:
-                FIND GebKonto NO-LOCK
-                        WHERE GebKonto.Firma  = SavGKon.Firma
-                        AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-                CREATE  tGebKto.
-                ASSIGN  tGebKto.Sort_Cd  = GebKonto.Sort_Cd
-                        tGebKto.Geb_Cd   = GebKonto.Geb_Cd
-                        tGebKto.Bez      = GebKonto.Bez
-                        tGebKto.Preis    = SavGKon.Depot
-                        tGebKto.MWST_Cd  = SavGKon.MWSt_Cd.
-            END.
-            tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-            tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-            tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-            tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-        END.
-        RELEASE SavGKon.
-        
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND  (SavGKon.Eingang <> 0  OR
-                      SavGKon.Ausgang <> 0)
-                      
-                BREAK BY SavGKon.Firma
-                      BY SavGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE SavGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-           iArtZeile > 0 THEN 
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-/*  Auftragstext  ------------------------------------------------------    */
-
-    cText = bSavko.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.
-
-/*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    iVGroupPos = vpr_getGroupVPos('Gebindetabelle').
-    IF iVPagePos > (iVGroupPos - (i1 * 40)) THEN DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-                          WHERE MWSTAns.MWST_Cd = ii
-                          AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-/*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-/*  ------  RUECKSTAENDE  ----------------------------------------------------  */
-    
-    DO WHILE TRUE:
-        FIND FIRST tRueckst NO-ERROR.
-        IF NOT AVAILABLE tRueckst THEN LEAVE.
-        
-        iVPagePos = vpr_getPageVPos() + 150.
-        IF iVPagePos > iMaxPos THEN DO:
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        cText = 'Rückstände bitte neu bestellen'.        
-        iVPagePos = vpr_getPageVPos() + 50.
-        RUN vpr_setGroupVPos ('Rueckstand', iVPagePos ).
-        RUN vpr_setCellText  ('RueckTitel', 'Rueckstand', cText ).
-        RUN vpr_flushGroup   ('Rueckstand').
-
-        iArtZeile = 1.        
-        FOR EACH tRueckst:
-            RUN DRUCKEN_RUECKSTAND ( RECID(tRueckst) ).
-        END.
-        RUN AUSGABE_ARTIKELZEILE.
-        LEAVE.
-    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.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'9999999'),
-                                tParam.cDokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        RUN DRUCKEN_BESR ( 'BESR' ).
-     
-        LEAVE.
-    END.
-    IF tParam.lCreatePDF THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN DO:
-        RUN OPEN_PDF ( cPDFName ).
-    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:  <none>
-  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_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDokument  AS CHAR         NO-UNDO.
-
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR iKopfZeile  AS INT                      NO-UNDO.
-    
-    DEF VAR PZBetrag    AS CHAR                     NO-UNDO.
-    DEF VAR PZReferenz  AS CHAR                     NO-UNDO.
-    DEF VAR PZTNNummer  AS CHAR                     NO-UNDO.
-    DEF VAR cReferenz   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bViperDoc    FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ( "PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-    
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-            WHERE Adresse.Firma = AdFirma
-            AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                    tDokument.cInhalt = bSavko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                    tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    PZBetrag   = '          04 '.
-    PZReferenz = '80401100000'
-               + STRING(bSavko.Fak_Knr,'999999')
-               + STRING(bSavko.Faknr  ,'9999999')
-               + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    RUN vpr_EndDoc.
-    RUN vpr_printDoc (0, 0).
-
- 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:  <none>
-  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.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN DO:
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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 bSavko.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').
-    
-        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(bSavko.Auf_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Lief_Datum'
-                tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'U_Ref'
-                tDokument.cInhalt = bSavko.U_Ref.
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Knr'
-                tDokument.cInhalt = STRING(bSavko.Fak_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(bSavko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite = 1            AND
-       bSavko.Abh_Text <> '' THEN DO:
-       cText = bSavko.Abh_Text.
-        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.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Savze    WHERE RECID(Savze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Savze.Bez1.
-                
-        IF Savze.Bez2 <> '' THEN DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                    tDokument.iZeile  = iArtZeile
-                    tDokument.cFeld   = 'Bez1'
-                    tDokument.cInhalt = Savze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Ru <> 0 THEN DO:
-        cString = STRING(Savze.VGeb_Ru,'->>>>')
-                + 'x '
-                + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MRuek,'->>,>>9') ).
-
-
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN cString = cString
-                                     + (IF cString = '' THEN '' ELSE CHR(10))
-                                     + Savze.Bez2.
-    IF Savze.Aktion     THEN cString = cString
-                                     + (IF cString = '' THEN '' ELSE CHR(10))
-                                     + Savze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Savze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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 tSavze.
-    
-    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 Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                tSavze.Sort2  = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN DO:
-        FOR EACH Savze NO-LOCK
-                WHERE Savze.Firma = cFirma
-                AND   Savze.Aufnr = ipAufnr
-                BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                    tSavze.Artnr    = Savze.Artnr
-                    tSavze.Inhalt   = Savze.Inhalt
-                    tSavze.Jahr     = Savze.Jahr
-                    tSavze.Pos      = Savze.Pos
-                    tSavze.Zeile    = RECID(Savze)
-                    tSavze.Aktion   = Savze.Aktion
-                    tSavze.Preis    = Savze.Preis
-                    tSavze.MGeli    = Savze.MGeli
-                    tSavze.MRuek    = Savze.MRuek.
-                    
-            ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                    tSavze.Sort2  = ''
-                    tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-                    tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Ruestplatz und Ort   */
-    cLagOrt = ''.
-    FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos
-            AND   Savze.Pos   < MaxPos
-            BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN DO:
-            FIND ArtLager NO-LOCK
-                    WHERE ArtLager.Firma  = Savze.Firma
-                    AND   ArtLager.Artnr  = Savze.Artnr
-                    AND   ArtLager.Inhalt = Savze.Inhalt
-                    AND   ArtLager.Jahr   = Savze.Jahr
-                    AND   ArtLager.Lager  = Savze.Lager.
-            cLagOrt = ArtLager.Ort.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2
-                WHERE RuestPlatz.Firma     = Savze.Firma
-                AND   RuestPlatz.RuestArt  = iRuestArt
-                AND   RuestPlatz.abLagOrt <= cLagOrt NO-ERROR.
-        IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90.
-        ELSE                             jPlatz = RuestPlatz.Platz.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(jPlatz,'99')
-                tSavze.Sort2  = cLagOrt
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = cLagort.
-                
-        IF tSavze.MRuek > 0 THEN DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tSavze TO tRueckst.
-        END.
-        
-        IF tSavze.Artnr > 0  AND
-           tSavze.MGeli = 0  THEN DELETE tSavze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-OPEN_PDF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPEN_PDF Procedure 
-PROCEDURE OPEN_PDF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDocument  AS CHAR             NO-UNDO.
-
-    DEF VAR o-i AS i NO-UNDO.
-    
-    FILE-INFO:FILE-NAME = ipDocument.
-    ipDocument = FILE-INFO:FULL-PATHNAME.
-    RUN ShellExecuteA (0,
-                       "open",
-                       ipDocument,
-                       "",
-                       "",
-                       0,
-                       OUTPUT o-i).
-                       
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-/* ------------------------------------------------------------------------- */
-/*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-/* ------------------------------------------------------------------------- */
-/*                                                                           */
-/*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-/*                       2.  String Referenz            (27-stellig)         */
-/*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-/*                                                                           */
-/*  Erstellung der VESR-Codierzeile                                          */
-/*                                                                           */
-/*---------------------------------------------------------------------------*/
-
-    DEF INPUT-OUTPUT PARAMETER PZBetrag     AS CHAR FORMAT "x(13)".
-    DEF INPUT-OUTPUT PARAMETER PZReferenz   AS CHAR FORMAT "x(27)".
-    DEF INPUT-OUTPUT PARAMETER PZTNummer    AS CHAR FORMAT "x(09)".
-    DEF OUTPUT       PARAMETER VSZeile      AS CHAR FORMAT "x(58)".
-    
-    DEF VAR l1          AS INT.
-    DEF VAR l2          AS INT.
-    DEF VAR l3          AS INT.
-    DEF VAR PZ          AS INT.
-    DEF VAR x1          AS INT.
-    DEF VAR x2          AS INT.
-    DEF VAR x3          AS INT.
-    DEF VAR VMOD10      AS CHAR FORMAT "x(11)"  EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    /*
-    SUBSTRING(VSZeile,58) = "H".
-    */
-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:  <none>
-  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:  <none>
-  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 = 2600.
-    
-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:  <none>
-  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
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = Firma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF bSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF bSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Knr  ,'999999'),
-                                STRING(bSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2245
GUI/DruckProgramme/Huber/Sav_SammelRechnung.p

@@ -1,2245 +0,0 @@
-&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 hSavko          AS HANDLE                   NO-UNDO.
-DEF VAR cFaktext        AS CHAR                     NO-UNDO.
-DEF VAR iDokumentStatus AS INT                      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 bSavko       FOR Savko   .
-DEF BUFFER bSavze       FOR Savze   .
-DEF BUFFER bDebst       FOR Debst   .       /*  Fakturaadresse  */
-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 sSavko
-    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
-    FIELD iFak_Art      AS INT
-    FIELD iAuf_Sta      AS INT
-    .
-DEF TEMP-TABLE tSavko       LIKE Savko
-    FIELD iRecid        AS RECID
-    .
-DEF TEMP-TABLE tSavze
-    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 tSavze-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 tRabSumTot
-    FIELD Aufnr         AS INT
-    FIELD Grp           AS INT
-    FIELD AufRabatt     AS DEC
-    FIELD AbhRabatt     AS DEC
-    .
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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  *************************** */
-
-    DEF VAR cPDFName        AS CHAR                     NO-UNDO.
-    DEF VAR cVPRName        AS CHAR                     NO-UNDO.
-    DEF VAR lVPRDatei       AS LOG                      NO-UNDO.
-
-    opcResult = ''.
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl.
-            
-    FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-    AdFirma = bSteuer.AdFirma.
-
-    RUN AUFTRAG_ERMITTELN.
-    IF opcResult <> '' THEN RETURN.
-    
-    FOR EACH sSavko
-            BY sSavko.iFak_Knr:
-
-        cPDFName = DYNAMIC-FUNCTION('getPDFDocument':U, sSavko.iAufnr ) NO-ERROR.
-        cVPRName = DYNAMIC-FUNCTION('getVPRDocument':U, sSavko.iAufnr ) NO-ERROR.
-        IF cPDFName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cPDFName.
-            IF FILE-INFO:FILE-SIZE > 9000 THEN DO:
-                RUN OPEN_PDF ( cPDFName ).
-                LEAVE.
-            END.
-            OS-DELETE VALUE(cPDFName) NO-ERROR.
-        END.
-        IF cVPRName <> '' THEN DO:
-            FILE-INFO:FILE-NAME = cVPRName NO-ERROR.
-            IF FILE-INFO:FULL-PATHNAME <> ?  AND
-               FILE-INFO:FULL-PATHNAME <> '' THEN DO:
-                lVPRDatei = TRUE.
-            END.
-        END.
-
-        FIND bAdresse NO-LOCK
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = sSavko.iFak_Knr.
-        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.
-        
-        FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = sSavko.cFirma
-                AND   bDebst.Knr   = sSavko.iFak_Knr.
-        iDokumentStatus = bDebst.DokumentStatus.
-        RELEASE bDebst.
-        
-        FIND FIRST tParam.
-        iAnzDok = tParam.Anzahl.
-        
-        { vpr.i INIT  }
-        { vpr.i START }
-                
-        IF lVPRDatei THEN DO:
-            cPDFName = REPLACE(cVPRName, '.vpr', '.pdf').
-            RUN vpr_openDoc  ( cVPRName ).
-            RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-            
-            { vpr.i STOP }
-            
-            RUN OPEN_PDF ( cPDFName ).
-            LEAVE.
-        END.        
-                
-        DO iLauf = 1 TO iAnzDok:
-        
-            dFakDatum = tParam.dFakDatum.
-            iSeite    = 0.
-            iFaknr    = sSavko.iFaknr.
-            lFirst    = TRUE.
-            lPreis    = TRUE.
-            lLast     = FALSE.
-                    
-            EMPTY TEMP-TABLE tUmsGrp    .
-            EMPTY TEMP-TABLE tTotale    .
-            EMPTY TEMP-TABLE tDokument  .
-            
-            CREATE  tTotale.
-            
-            FOR EACH bSavko NO-LOCK
-                    WHERE bSavko.Firma      = sSavko.cFirma
-                    AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-                    AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-                    AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-                    BREAK BY bSavko.Fak_Knr
-                          BY bSavko.Samm_Nr
-                          BY bSavko.Knr
-                          BY bSavko.Aufnr :
-
-                EMPTY TEMP-TABLE tSavze     .
-                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   = bSavko.Fak_Knr NO-ERROR.
-                FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE LDebst.Firma  = cFirma
-                        AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-                FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE FDebst.Firma  = cFirma
-                        AND   FDebst.Knr    = bSavko.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.
-        
-                hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-                RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-                FOR EACH tSavze
-                        WHERE tSavze.Artnr > 0:
-                
-                    FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                    /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                    IF bSavze.Auf_Sp_Grp > 0 THEN DO:
-                        FIND FIRST tSpeRab
-                                WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                        IF NOT AVAILABLE tSpeRab THEN DO:
-                            CREATE  tSpeRab.
-                            ASSIGN  tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                        END.
-                        tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                    END.
-                    
-                    /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                    DO WHILE bSavze.Rab_Su_Grp > 0:
-                        FIND FIRST tRabSumm
-                                WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE tRabSumm THEN DO:
-                            FIND FIRST RabSumm NO-LOCK
-                                    WHERE RabSumm.Firma    = bSavze.Firma
-                                    AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                            IF NOT AVAILABLE RabSumm THEN LEAVE.
-                            CREATE  tRabSumm.
-                            ASSIGN  tRabSumm.Rab_Summ  = bSavze.Rab_Su_Grp
-                                    tRabSumm.Bez       = RabSumm.Bez
-                                    tRabSumm.Auf_Rab   = 0
-                                    tRabSumm.Abh_Rab   = 0.
-                        END.
-                        LEAVE.
-                    END.
-                END.
-                
-                IF LAST-OF ( bSavko.Samm_Nr ) 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:  <none>
-  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 tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-            WHERE GGebinde.Firma  = cFirma
-            AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Savze.VGeb_Me,'->>>>')
-                + 'x '
-                + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-           Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-           Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-/*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Savze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-        FIND FIRST tRabSumTot
-                WHERE tRabSumTot.Aufnr = Savze.Aufnr
-                AND   tRabSumTot.Grp   = Savze.Rab_Su_Grp NO-ERROR.
-        IF NOT AVAILABLE tRabSumTot THEN DO:
-            CREATE  tRabSumTot.
-            ASSIGN  tRabSumTot.Aufnr = Savze.Aufnr
-                    tRabSumTot.Grp   = Savze.Rab_Su_Grp.
-        END.
-        ASSIGN  tRabSumTot.AufRabatt = tRabSumTot.AufRabatt + Savze.Auf_Rab
-                tRabSumTot.AbhRabatt = tRabSumTot.AbhRabatt + Savze.Abh_Rab.
-
-    END.
-            
-/*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                       AND   TUmsGrp.MWst    = Savze.WuCd
-                       AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma  = cFirma
-                AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                TUmsGrp.Mwst    = Savze.WuCd
-                TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-                     + Savze.Net_Betr
-                     - Savze.Auf_Rab
-                     - Savze.Abh_Rab.
-
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-    DEF VAR iFaknr      AS INT                      NO-UNDO.
-
-    DEF BUFFER bDebst       FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko     .
-    EMPTY TEMP-TABLE tRabSumTot .
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    cFakText = ''.
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k9
-            WHERE Savko.Firma       = tParam.cFirma
-            AND   Savko.Faknr       = tParam.iFaknr
-            
-            BREAK BY Savko.Fak_Knr
-                  BY Savko.Samm_Nr
-                  BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Samm_Nr ) THEN NEXT.
-        CREATE  sSavko.
-        ASSIGN  sSavko.cFirma   = Savko.Firma
-                sSavko.iAufnr   = Savko.Aufnr
-                sSavko.iFak_Knr = Savko.Fak_Knr
-                sSavko.iSamm_Nr = Savko.Samm_Nr
-                sSavko.iRecid   = RECID(Savko)
-                sSavko.iFaknr   = Savko.Faknr.
-                
-        IF cFakText = ''        AND
-           Savko.Auf_Text <> '' THEN cFakText = Savko.Auf_Text.
-    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:  <none>
-  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:  <none>
-  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.
-    
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR xString     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 nRabWert    AS DEC                  NO-UNDO.
-    DEF VAR iMwstCd     AS INT                  NO-UNDO.
-    DEF VAR nZeiTot     AS DEC  DECIMALS 4      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ).
-
-    iArtZeile = 1.
-    IF cFakText <> '' THEN DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', cFakText ).
-        cFakText = ''.
-    END.
-    
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[18],01,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', TRIM(SUBSTRING(cFormText[17],21,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_2_Fett', TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bSavko.Knr = bSavko.Fak_Knr AND
-           NOT FDebst.Passant          THEN LEAVE.
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-                WHERE LAdresse.Firma = AdFirma
-                AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-             BY tSavze.Aufnr
-             BY tSavze.Sort1
-             BY tSavze.LagOrt
-             BY tSavze.Sort2
-             BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    
-    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')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Auf_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
-                WHERE AufRabSu.Firma    = bSavko.Firma
-                AND   AufRabSu.Aufnr    = bSavko.Aufnr
-                AND   AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-/*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-                      BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
-                WHERE AufRabSu.Firma    = bSavko.Firma
-                AND   AufRabSu.Aufnr    = bSavko.Aufnr
-                AND   AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-/*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-                     BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-                   WHERE Tabel.Firma  = cFirma
-                   AND   Tabel.RecArt = 'ARABGRP'
-                   AND   Tabel.CodeC  = ''
-                   AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-                   AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-                WHERE AufSpRab.Firma    = bSavko.Firma
-                AND   AufSpRab.Aufnr    = bSavko.Aufnr
-                AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Gebuehr <> 0
-            AND   SavGKon.Betrag  <> 0 NO-LOCK:
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1000
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  tUmsGrp.Ums_Grp = 1000
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-/*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon USE-INDEX SavGKon-k1
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND  (SavGKon.Eingang <> 0  OR
-                      SavGKon.Ausgang <> 0) NO-LOCK:
-                
-            iMwstCd = SavGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                    WHERE MwstAns.Mwst_Cd = iMwstCd
-                    AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                    WHERE tUmsGrp.Ums_Grp = 1001
-                    AND   tUmsGrp.Mwst    = iMwstCd
-                    AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                        WHERE WarenGrp.Firma = cFirma
-                        AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  tUmsGrp.Ums_Grp = 1001
-                        tUmsGrp.Mwst    = iMwstCd
-                        tUmsGrp.Ansatz  = MwstAns.Ansatz
-                        tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-            
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.999")) ).
-        END.
-        IF iArtZeile > 0 THEN DO:
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nZeiTot,"->>>,>>9.999")) ).
-             iArtZeile = iArtZeile + 1.
-             RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.    
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-  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').
-    
-    RUN vpr_FlushGroup ('Fusstext').
-    RUN vpr_FlushGroup ('Ueberschrift').
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDokument  AS CHAR         NO-UNDO.
-
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR iKopfZeile  AS INT                      NO-UNDO.
-    
-    DEF VAR PZBetrag    AS CHAR                     NO-UNDO.
-    DEF VAR PZReferenz  AS CHAR                     NO-UNDO.
-    DEF VAR PZTNNummer  AS CHAR                     NO-UNDO.
-    DEF VAR cReferenz   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bViperDoc    FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-            WHERE Adresse.Firma = AdFirma
-            AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                    tDokument.cInhalt = bSavko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'ADRESSE'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                    tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = '       .  '.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '80401100000'
-               + STRING(bSavko.Fak_Knr,'999999')
-               + STRING(bSavko.Faknr  ,'9999999')
-               + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cPDFName    AS CHAR INIT ''             NO-UNDO.
-    DEF VAR iSpace      AS INT  INIT 0              NO-UNDO.
-    DEF VAR iPos        AS INT                      NO-UNDO.
-    DEF VAR iKopie      AS INT                      NO-UNDO.
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR iPageBesr   AS INT                      NO-UNDO.
-    DEF VAR lJa         AS LOG                      NO-UNDO.
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-                WHERE MWSTAns.MWST_Cd = ix
-                AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN DO:
-        RUN vpr_NewPage.
-        RUN vpr_InitGroups('').
-        IF iAnzDok = iLauf THEN RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-/*  Rekap nach Umsatzgruppen  ----------------------------------------  */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1' , TRIM(SUBSTRING(cFormText[15],41,20)) ).
-    FOR EACH TUmsGrp NO-LOCK
-             BY TUmsGrp.Ums_Grp
-             BY TUmsGrp.Mwst :
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Bez1'  , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Alk%'  , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Preis' , TRIM(STRING(TUmsGrp.Ums_Betr,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'Betrag', TRIM(STRING(TUmsGrp.Ansatz  ,">9.99%")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile,  'MC'    , TRIM(STRING(TUmsGrp.Mwst    ,"z9"))          ).
-    END.
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-/*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-            WHERE Kondi.Kond  = bSavko.Kond
-            AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-       Kondi.Skonto[01] <> 0 AND
-       nFakBetr > 0          THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok     /* AND
-       iDokumentStatus < 2 */ THEN DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-    
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    cvpr_Dokument = SUBSTITUTE('Rechnungen\&1-&2_&3_Kopie.vpr',
-                                STRING(bSavko.Fak_Knr,'999999'),
-                                STRING(bSavko.Faknr  ,'9999999'),
-                                tParam.cDokument).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        IF iDokumentStatus < 2 THEN DO:
-            RUN vpr_printDoc (0, 0).
-        END.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        IF Rundbetr >= 0 THEN DO:
-            RUN vpr_NewPage.
-            RUN DRUCKEN_BESR ( 'BESR' ).
-        END.
-
-        RUN vpr_FetchPageNo ( OUTPUT iPageBesr ).
-        RUN vpr_EndDoc.
-        RUN vpr_SaveDoc ( cvpr_Dokument ).
-        IF iDokumentStatus < 2 AND
-           Rundbetr >= 0       THEN RUN vpr_printDoc (iPageBesr, iPageBesr).
-
-        LEAVE.
-    END.
-    DO WHILE NOT tParam.lDokDruck:
-        IF Rundbetr >= 0 THEN DO:
-            RUN vpr_NewPage.
-            RUN DRUCKEN_BESR ( 'BESR' ).
-        END.
-        
-        RUN vpr_EndDoc.
-        RUN vpr_SaveDoc ( cvpr_Dokument ).
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF   OR
-       iDokumentStatus > 0 THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR iOldSeite   AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1         /* OR
-       iSeite > iOldSeite */ THEN DO:
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'T_Dokument'
-                tDokument.cInhalt = (IF bSavko.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(bSavko.Faknr,'z999999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Knr'
-                tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-        IF iDokumentStatus > 0 AND
-           iLauf < iAnzDok     THEN DO:
-            CREATE  tDokument.
-            ASSIGN  tDokument.cGruppe = 'KOPF'
-                    tDokument.iZeile  = 1
-                    tDokument.cFeld   = 'PDF'
-                    tDokument.cInhalt = 'PDF-RECHNUNG'.
-        END.
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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 tSavze.
-    
-    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 Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                tSavze.Sort2  = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN DO:
-        FOR EACH Savze NO-LOCK
-                WHERE Savze.Firma = cFirma
-                AND   Savze.Aufnr = ipAufnr
-                BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                    tSavze.Artnr    = Savze.Artnr
-                    tSavze.Inhalt   = Savze.Inhalt
-                    tSavze.Jahr     = Savze.Jahr
-                    tSavze.Pos      = Savze.Pos
-                    tSavze.Zeile    = RECID(Savze)
-                    tSavze.Aktion   = Savze.Aktion
-                    tSavze.Preis    = Savze.Preis
-                    tSavze.MGeli    = Savze.MGeli
-                    tSavze.MRuek    = Savze.MRuek.
-                    
-            ASSIGN  tSavze.Sort1  = STRING(0,'99')
-                    tSavze.Sort2  = ''
-                    tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-                    tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Ruestplatz und Ort   */
-    cLagOrt = ''.
-    FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos
-            AND   Savze.Pos   < MaxPos
-            BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN DO:
-            FIND ArtLager NO-LOCK
-                    WHERE ArtLager.Firma  = Savze.Firma
-                    AND   ArtLager.Artnr  = Savze.Artnr
-                    AND   ArtLager.Inhalt = Savze.Inhalt
-                    AND   ArtLager.Jahr   = Savze.Jahr
-                    AND   ArtLager.Lager  = Savze.Lager.
-            cLagOrt = ArtLager.Ort.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2
-                WHERE RuestPlatz.Firma     = Savze.Firma
-                AND   RuestPlatz.RuestArt  = iRuestArt
-                AND   RuestPlatz.abLagOrt <= cLagOrt NO-ERROR.
-        IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90.
-        ELSE                             jPlatz = RuestPlatz.Platz.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = STRING(jPlatz,'99')
-                tSavze.Sort2  = cLagOrt
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = cLagort.
-                
-        IF tSavze.Artnr > 0  AND
-           tSavze.MGeli = 0  THEN DELETE tSavze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-OPEN_PDF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPEN_PDF Procedure 
-PROCEDURE OPEN_PDF :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDocument  AS CHAR             NO-UNDO.
-
-    DEF VAR o-i AS i NO-UNDO.
-    
-    FILE-INFO:FILE-NAME = ipDocument.
-    ipDocument = FILE-INFO:FULL-PATHNAME.
-    RUN ShellExecuteA (0,
-                       "open",
-                       ipDocument,
-                       "",
-                       "",
-                       0,
-                       OUTPUT o-i).
-                       
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-/* ------------------------------------------------------------------------- */
-/*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-/* ------------------------------------------------------------------------- */
-/*                                                                           */
-/*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-/*                       2.  String Referenz            (27-stellig)         */
-/*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-/*                                                                           */
-/*  Erstellung der VESR-Codierzeile                                          */
-/*                                                                           */
-/*---------------------------------------------------------------------------*/
-
-    DEF INPUT-OUTPUT PARAMETER PZBetrag     AS CHAR FORMAT "x(13)".
-    DEF INPUT-OUTPUT PARAMETER PZReferenz   AS CHAR FORMAT "x(27)".
-    DEF INPUT-OUTPUT PARAMETER PZTNummer    AS CHAR FORMAT "x(09)".
-    DEF OUTPUT       PARAMETER VSZeile      AS CHAR FORMAT "x(58)".
-    
-    DEF VAR l1          AS INT.
-    DEF VAR l2          AS INT.
-    DEF VAR l3          AS INT.
-    DEF VAR PZ          AS INT.
-    DEF VAR x1          AS INT.
-    DEF VAR x2          AS INT.
-    DEF VAR x3          AS INT.
-    DEF VAR VMOD10      AS CHAR FORMAT "x(11)"  EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,11    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    /*
-    SUBSTRING(VSZeile,58) = "H".
-    */
-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:  <none>
-  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:  <none>
-  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 lInit       AS LOG INIT TRUE            NO-UNDO.
-    
-    FIND FIRST tParam.
-
-/*     IF iLauf > 1           THEN lInit = FALSE. */
-/*     IF iDokumentStatus > 1 THEN lInit = TRUE.  */
-    
-    IF lInit THEN DO:
-        IF iLauf = 1 THEN DO:
-            cTemplate = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-            RUN vpr_LoadVFR         (cTemplate).
-            RUN vpr_ActivateReport  (tParam.cDokument).
-        END.
-        RUN vpr_ResetDoc.
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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("").
-    IF iLauf = iAnzDok THEN RUN vpr_InitGraphObj.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-  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.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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    ).
-        IF iLauf = iAnzDok THEN RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER xSavko   FOR Savko.
-    
-    FIND xSavko NO-LOCK
-            WHERE xSavko.Firma = Firma
-            AND   xSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE xSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                            STRING(xSavko.Knr  ,'999999'),
-                            STRING(xSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                            STRING(xSavko.Fak_Knr,'999999'),
-                            STRING(xSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                            STRING(xSavko.Knr  ,'999999'),
-                            STRING(xSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                            STRING(xSavko.Fak_Knr,'999999'),
-                            STRING(xSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF xSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                                STRING(xSavko.Knr  ,'999999'),
-                                STRING(xSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                                STRING(xSavko.Fak_Knr,'999999'),
-                                STRING(xSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF xSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                                STRING(xSavko.Knr  ,'999999'),
-                                STRING(xSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.pdf',
-                                STRING(xSavko.Fak_Knr,'999999'),
-                                STRING(xSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getVPRDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getVPRDocument Procedure 
-FUNCTION getVPRDocument RETURNS CHARACTER
-  ( ipAufnr AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER xSavko   FOR Savko.
-    
-    FIND xSavko NO-LOCK
-            WHERE xSavko.Firma = Firma
-            AND   xSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE xSavko THEN RETURN ''.
-    
-    FIND FIRST tParam.
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                            STRING(xSavko.Knr  ,'999999'),
-                            STRING(xSavko.Faknr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                            STRING(xSavko.Fak_Knr,'999999'),
-                            STRING(xSavko.Faknr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                            STRING(xSavko.Knr  ,'999999'),
-                            STRING(xSavko.Aufnr,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                            STRING(xSavko.Fak_Knr,'999999'),
-                            STRING(xSavko.Aufnr  ,'9999999'),
-                            tParam.cDokument).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    IF xSavko.Faknr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(xSavko.Knr  ,'999999'),
-                                STRING(xSavko.Faknr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(xSavko.Fak_Knr,'999999'),
-                                STRING(xSavko.Faknr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF xSavko.Aufnr < 1000000 THEN DO:
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(xSavko.Knr  ,'999999'),
-                                STRING(xSavko.Aufnr,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-        cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3_Kopie.vpr',
-                                STRING(xSavko.Fak_Knr,'999999'),
-                                STRING(xSavko.Aufnr  ,'999999'),
-                                tParam.cDokument).
-        FILE-INFO:FILE-NAME = cDokument.
-        IF FILE-INFO:FULL-PATHNAME <> ?  AND
-           FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-    END.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2525
GUI/DruckProgramme/LaTorre/Faktura.p

@@ -1,2525 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE            NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER         NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast           AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis          AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext       AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl        AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode        AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cBenutzer       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE kRecid          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE hdruckok        AS HANDLE    NO-UNDO.   
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i           }
-{ incl/ttdruckparam.i         }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-opcResult = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-cBenutzer     = DYNAMIC-FUNCTION('getBenutzer':U) NO-ERROR.
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-    RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-            
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF RETURN-VALUE = 'NOK' THEN LEAVE.
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/latorre/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99<') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-        
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-AUFTRAGSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSTEXT Procedure 
-PROCEDURE AUFTRAGSTEXT :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    IF bAufko.Auf_Text = '' THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ? THEN sAufko.dFakDat = TODAY.
-        ELSE                        sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtnr  AS LOG       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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN 
-                lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 20.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = iVPagePos + 20.
-                RUN vpr_setPageVPos  ( iVPagePos ).
-                RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ).
-                RUN vpr_FlushGroup   ( 'GebindeTitel' ).
-                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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-    
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufGKon.Firma
-            BY AufGKon.Aufnr:
-    
-            iMwstCd = AufGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1001
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN 
-            DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  
-                    tUmsGrp.Ums_Grp = 1001
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.lInkl   = lDebIncl
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-            
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-    
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40) + 120) > iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', TRIM(cFormText[16]) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag'        , TRIM(STRING(nFakBetr,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    iArtZeile = 3.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', cFormText[27] ).
-    iArtZeile = 4.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-    
-    RUN SCHLUSSTEXT.
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bAufko.Bar_Betr <> 0.00 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag_T', TRIM(ENTRY(4, cFormText[26], ';'))              ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto_T'   , TRIM(ENTRY(5, cFormText[26], ';'))              ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag'  , TRIM(STRING(bAufko.Bar_Betr  ,"->>>,>>9.99"))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'     , TRIM(STRING(bAufko.Bar_Skonto,"->>>,>>9.99"))   ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    RUN vpr_FlushGroup ( 'Fusstext' ).
-
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        IF iDokumentStatus = 0 THEN RETURN ''.
-        RUN vpr_EndDoc.
-        RUN vpr_ResetDoc.
-        RETURN ''.
-    END.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF Bankst.QR-IBAN <> '' THEN 
-    DO:
-        IF bAufko.Auf_Tot > 0 THEN 
-        DO:
-            RUN vpr_newPage.
-            RUN DRUCKEN_QRCODE.
-        END.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-
-    /*     IF cBenutzer <> 'ivana' THEN DO:     */
-    IF cBenutzer <> '' THEN 
-    DO:    
-        RUN vpr_SetWindowPos ( 20, 20, 725, 1000 ).
-        RUN vpr_SetPreviewMode('preview').
-        RUN vpr_ShowPreView.
-        
-        lJa = ?.
-        DYNAMIC-FUNCTION ('setFlagOK':U, lJa) NO-ERROR.
-        RUN 'w-druckok.w' PERSISTENT SET hDruckok.
-        RUN initializeObject IN hDruckok.
-        
-        WAIT-FOR CLOSE OF hDruckok.
-        lJa = DYNAMIC-FUNCTION ('getFlagOK':U) NO-ERROR.
-        
-        RUN vpr_HidePreView.
-        
-        IF  lJa = ? OR 
-            NOT lJa THEN RETURN 'NOK'.
-    END.
-    
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBESRBank  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER BESRTabel FOR Tabel.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1,copies=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    FIND Kondi NO-LOCK
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = Adresse.Sprcd NO-ERROR.
-    IF NOT AVAILABLE Kondi THEN 
-    DO:
-        FIND FIRST Kondi NO-LOCK
-            WHERE Kondi.Kond  = bAufko.Kond NO-ERROR.
-    END.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        IF Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-    END.
-    FOR EACH BESRTabel USE-INDEX Tabel-k1
-        WHERE BESRTabel.Firma  = tParam.cFirma
-        AND   BESRTabel.RecArt = 'EZ'
-        AND   BESRTabel.CodeC  = STRING(iBesrArt,'999999')
-        AND   BESRTabel.Sprcd  = 1 NO-LOCK:
-
-        CASE BESRTabel.CodeI:
-            WHEN 0 THEN 
-                DO:
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_L', BESRTabel.Bez1 ).
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_R', BESRTabel.Bez2 ).
-                    cBESRBank  = STRING(BESRTabel.Dec_1,'99999999999999').
-                    PZTNNummer = BESRTabel.BezL.
-                END.
-            OTHERWISE 
-            DO:
-                cFeld = SUBSTITUTE('Firma_Adr_&1_L', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez1 ).
-                cFeld = SUBSTITUTE('Firma_Adr_&1_R', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez2 ).
-            END.
-        END CASE.
-    END.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'XXXXXXXX  XX').
-    END.
-    IF Rundbetr < 0.00 THEN cFeld = '**********'.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = SUBSTRING(cBESRBank,01,12) 
-        + STRING(bAufko.Fak_Knr,"999999")
-        + "0"
-        + STRING(bAufko.Faknr,"9999999")
-        + " ".
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', bSteuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        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')
-                                  + ' / '
-                                  + TRIM(STRING(bAufko.Aufnr,'zzzzzz9')).
-    
-        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(bAufko.Gewicht,'->>>,>>9.999')).
-
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'I_Best'
-            tDokument.cInhalt = TRIM(bAufko.I_Best).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bAufko.Abh_Text <> '' THEN 
-    DO:
-        cText = bAufko.Abh_Text.
-    END.
-    IF bAufko.Auf_Text <> '' THEN 
-    DO:
-        cText = cText
-            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-            + bAufko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 30.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE   ( '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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = 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 = 'ZZZ'
-                tAufze.Sort2 = ''
-                tAufze.Sort3 = STRING(iPlusMinus  ,'9')
-                                  + STRING(tAufze.Pos  ,'99999').
-            tAufze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = STRING(iPlusMinus   ,'9')
-                              + STRING(tAufze.Pos  ,'99999').
-        tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SCHLUSSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHLUSSTEXT Procedure 
-PROCEDURE SCHLUSSTEXT :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    
-    IF NOT AVAILABLE TabTexte THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', TabTexte.Inhalt ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-UMSATZVERTEILUNG) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMSATZVERTEILUNG Procedure 
-PROCEDURE UMSATZVERTEILUNG :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe', cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'         , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'       , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'        , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'          , ' '   ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1,copies=1').
-        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:
-        IF iDokumentstatus = 0         THEN RUN vpr_NewPage.
-        IF tParam.Schacht_Kopie    > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    RUN vpr_initGroups ('').
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        /*         iPos = vpr_getPageVPos(). */
-        /*         IF (iPos + 160) < iMaxPos THEN DO: */
-        /*             iPos = iPos + 20. */
-        /*             RUN vpr_setPageVPos  ( iPos ). */
-        /*             RETURN. */
-        /*         END. */
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1           THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                        RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        IF iDokumentStatus > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Knr_T'         , ENTRY( 1, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Bestellt_T'    , ENTRY( 2, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Geliefert_T'   , ENTRY( 3, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'URef_T'        , ENTRY( 1, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Telefon_T'     , ENTRY( 2, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Gewicht_T'     , ENTRY( 3, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'IBest_T'       , ENTRY( 4, cFormText[19], ';') ).
-    
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-    
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Kondition_T'   , ENTRY( 1, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Faellig_T'     , ENTRY( 2, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Total_T'       , ENTRY( 3, cFormText[26], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2296
GUI/DruckProgramme/LaTorre/LieferFak.p

@@ -1,2296 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i         }
-{ incl/properties.i           }
-{ incl/ttsendmail.i           }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/latorre/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-        /*         IF tParam.iVerband <> 999999 THEN DO: */
-        /*             FIND bDebst NO-LOCK */
-        /*                     WHERE bDebst.Firma = Aufko.Firma */
-        /*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-        /*             IF NOT AVAILABLE bDebst THEN NEXT. */
-        /*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-        /*         END. */
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                             sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    iBesrArt = FDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    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')) ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Auf_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[11],01,20))
-            + " "
-            + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr  = tRabSumm.Abh_Rab.
-        nFakBetr  = nFakBetr - Rundbetr.
-        
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[15],01,20))
-            + " "
-            + TRabSumm.Bez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.999')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        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.                                                                                    */
-
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    iVGroupPos = vpr_getGroupVPos('Gebindetabelle').
-    IF iVPagePos > (iVGroupPos - (i1 * 40)) THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '\b Rechnungsbetrag \b0 ' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', '\b ' + TRIM(STRING(nFakBetr,"->>>,>>9.99")) + '\b0' ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '\b Barzahlungsbetrag \b0' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', '\b ' + TRIM(STRING(Rundbetr,"->>>,>>9.99")) + '\b0').
-    END.
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  ------  RUECKSTAENDE  ----------------------------------------------------  */
-    
-    DO WHILE TRUE:
-        FIND FIRST tRueckst NO-ERROR.
-        IF NOT AVAILABLE tRueckst THEN LEAVE.
-        
-        iVPagePos = vpr_getPageVPos() + 150.
-        IF iVPagePos > iMaxPos THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        cText = 'Rückstände bitte neu bestellen'.        
-        iVPagePos = vpr_getPageVPos() + 50.
-        RUN vpr_setGroupVPos ('Rueckstand', iVPagePos ).
-        RUN vpr_setCellText  ('RueckTitel', 'Rueckstand', cText ).
-        RUN vpr_flushGroup   ('Rueckstand').
-
-        iArtZeile = 1.        
-        FOR EACH tRueckst:
-            RUN DRUCKEN_RUECKSTAND ( RECID(tRueckst) ).
-        END.
-        RUN AUSGABE_ARTIKELZEILE.
-        LEAVE.
-    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.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('Rechnungen/&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'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).
-        RUN vpr_resetDoc.
-        
-        /*  BESR DRUCKEN  ----------------------------  */
-
-        FIND Bankst NO-LOCK 
-            WHERE Bankst.Bank = iBESRArt NO-ERROR.
-        IF Bankst.QR-IBAN <> '' THEN 
-        DO:
-            IF bAufko.Auf_Tot > 0 THEN 
-            DO:
-                RUN vpr_newPage.
-                RUN DRUCKEN_QRCODE.
-            END.
-        END.
-        ELSE 
-        DO:
-            RUN DRUCKEN_BESR ( 'BESR' ).
-        END.
-     
-        LEAVE.
-    END.
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-        FILE-INFO:FILE-NAME = cPDFName.
-        opcResult = FILE-INFO:FULL-PATHNAME.
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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.
-    
-    IF tParam.lSendMail THEN RUN SEND_MAIL ( cPDFName ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_SelectPrinter   (bViperDoc.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_InitGroups      ('').
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ADRESSE'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99')
-                tDokument.cInhalt = bAufko.Adresse[ix].
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ADRESSE'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_' + STRING(ix,'99')
-                tDokument.cInhalt = Adresse.Anschrift[ix].
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    PZBetrag   = '          04 '.
-    PZReferenz = '80401100000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01007648'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-    RUN vpr_EndDoc.
-    RUN vpr_printDoc (0, 0).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        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').
-    
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'WISO' NO-ERROR.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'WirteSo'
-            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.Fak_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(bAufko.Gewicht,'->>>,>>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-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tAufze TO tRueckst.
-        END.
-        
-        IF tAufze.Artnr > 0  AND
-            tAufze.MGeli = 0  THEN DELETE tAufze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    EMPTY TEMP-TABLE ttSendMail.
-    CREATE  ttSendMail.
-    ASSIGN  
-        ttSendMail.cFrom         = cMailFromFreigabe
-        ttSendMail.cTo           = cTo
-        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/
-        ttSendMail.cSubject      = cSubject
-        ttSendMail.cBody         = cBody
-        ttSendMail.cAttachedName = cNamen
-        ttSendMail.cAttachedFile = ipAttachment
-        ttSendMail.cMailServer   = cMailServer
-        ttSendMail.cMailPort     = cMailPort
-        ttSendMail.cMailKonto    = cMailKonto
-        ttSendMail.cMailPassw    = cMailPassw
-        ttSendMail.cDomaine      = cMailDomaine
-        ttSendMail.lAuth         = lMailAuth.
-        
-    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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').
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetPrinterAttrib('copies=2').
-        END.
-        ELSE 
-        DO:
-            cString = SUBSTITUTE('copies=&1', tParam.Anzahl).
-            RUN vpr_SetPrinterAttrib(cString).
-        END.
-        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 = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER 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
-

+ 0 - 99
GUI/DruckProgramme/LaTorre/LieferPreis.p

@@ -1,99 +0,0 @@
-&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 cDruckProgramm  AS CHAR                     NO-UNDO.
-DEF VAR cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR cResult         AS CHAR                     NO-UNDO.
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ incl/ttsendmail.i   }
-
-/* _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).
-    
-    tParam.lPreis       = TRUE.
-    tParam.cDokument    = 'Lieferschein'.
-    cInstallation       = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-    cDruckProgramm      = SUBSTITUTE('DruckProgramme/&1/&2',
-                                     cInstallation,
-                                     'Lieferschein.p' ).
-    cDruckProgramm      = SEARCH(cDruckProgramm).
-    RUN VALUE(cDruckProgramm) (INPUT htParam, OUTPUT cResult ).
-    opcResult = cResult.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-

+ 0 - 1706
GUI/DruckProgramme/LaTorre/Lieferschein.p

@@ -1,1706 +0,0 @@
-&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 cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR iBesrArt        AS INT                      NO-UNDO.
-DEF VAR cBenutzer       AS CHAR                     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/properties.i   }
-{ 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
-    FIELD dFakDat       AS DATE
-    .
-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 tRueckst LIKE tAufze
-    .
-
-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 lInkl         AS LOG
-    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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-  (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-    opcResult = ''.
-    cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-    cBenutzer     = DYNAMIC-FUNCTION('getBenutzer':U) NO-ERROR.
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl
-            lPreis   = TRUE.
-            
-    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.iKnr.
-        iSprcd = bAdresse.Sprcd.
-
-        RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sAufko.dFakDat.
-            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 tAufze     .
-                EMPTY TEMP-TABLE tGebKto    .
-                EMPTY TEMP-TABLE tRabSumm   .
-                EMPTY TEMP-TABLE tSpeRab    .
-                EMPTY TEMP-TABLE tTabTexte  .
-                EMPTY TEMP-TABLE tRueckst   .
-                
-                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.
-        
-                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, TOUR1  */
-                
-                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.
-                
-                IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-                RUN DRUCKEN.
-
-                /*  Auftragskopf mutieren       */
-
-                REPEAT TRANSACTION:
-                    IF RETURN-VALUE = 'NOK' THEN LEAVE.
-                    IF iLauf < iAnzDok THEN LEAVE.
-                    FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                    ASSIGN  Aufko.Fak_Datum = dFakDat
-                            Aufko.Gedruckt  = TRUE.
-                    RELEASE Aufko.
-                    RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                    LEAVE.
-                END.
-            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:  <none>
-  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.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    IF NOT tParam.lPreis THEN RETURN.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99<') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-    IF Aufze.Rab_Betr <> 0 THEN DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-AUFTRAGSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSTEXT Procedure 
-PROCEDURE AUFTRAGSTEXT :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    IF bAufko.Auf_Text = '' THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-    
-    DEF BUFFER bDebst       FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-            WHERE Aufko.Firma       = tParam.cFirma
-            AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Knr NO-ERROR.
-        IF NOT AVAILABLE bDebst THEN NEXT.
-
-        iFaknr = Aufko.Aufnr.
-
-        CREATE  sAufko.
-        ASSIGN  sAufko.cFirma   = Aufko.Firma
-                sAufko.iAufnr   = Aufko.Aufnr
-                sAufko.iFak_Knr = Aufko.Fak_Knr
-                sAufko.iKnr     = Aufko.Knr
-                sAufko.iSamm_Nr = 0
-                sAufko.iRecid   = RECID(Aufko)
-                sAufko.iFaknr   = iFaknr.
-        IF Aufko.Lief_Datum = ? THEN sAufko.dFakDat = TODAY.
-        ELSE                         sAufko.dFakDat = Aufko.Lief_Datum.
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR                     NO-UNDO.
-    DEF VAR cWerte  AS CHAR                     NO-UNDO.
-    DEF VAR iPos    AS INT                      NO-UNDO.
-    DEF VAR lArtnr  AS LOG                      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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 20.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-  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.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN DO:
-            iVPagePos = iVPagePos + 20.
-            RUN vpr_setPageVPos  ( iVPagePos ).
-/*             RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ). */
-/*             RUN vpr_FlushGroup   ( 'GebindeTitel' ).            */
-            iVPagePos = vpr_getPageVPos().
-        END.
-        WHEN 'GebindeRuecknahme' THEN DO:
-            iVPagePos = iVPagePos + 50.
-            RUN vpr_setPageVPos  ( iVPagePos ).
-/*             RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ). */
-/*             RUN vpr_FlushGroup   ( 'GebindeTitel' ).            */
-            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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cText       AS CHAR                 NO-UNDO.
-    DEF VAR xString     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 nRabWert    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.
-    DEF VAR nPfli       AS DEC  EXTENT 12       NO-UNDO.
-    DEF VAR nMwst       AS DEC  EXTENT 12       NO-UNDO.
-    
-    DEF BUFFER bDebst       FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-            WHERE bDebst.Firma = bAufko.Firma
-            AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    
-    IF tParam.lPreis THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Gebindelieferung  --------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        ii = 0.
-        FOR EACH AufGKon NO-LOCK
-                WHERE AufGKon.Firma    = bAufko.Firma
-                AND   AufGKon.Aufnr    = bAufko.Aufnr
-                AND   AufGKon.Ausgang <> 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.
-            ii = ii + 1.
-        END.
-        RELEASE AufGKon.
-        
-    /*  Gebindelieferungen  ------------------------------------------------    */
-    
-        nBetrag   = 0.
-        iArtZeile = 0.
-        IF ii > 0 THEN DO:
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , ' ' ).
-            iArtZeile = iArtZeile + 1.
-            RUN vpr_Asc2RTF(ENTRY(1, cFormText[25], ';'), 'bold', OUTPUT xString ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , xString ).
-            RUN vpr_Asc2RTF(ENTRY(2, cFormText[25], ';'), 'bold', OUTPUT xString ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , xString ).
-        END.
-        FOR EACH AufGKon NO-LOCK
-                WHERE AufGKon.Firma    = bAufko.Firma
-                AND   AufGKon.Aufnr    = bAufko.Aufnr
-                AND   AufGKon.Gebueh   = 0
-                AND   AufGKon.Ausgang <> 0 
-                      
-                BREAK BY AufGKon.Firma
-                      BY AufGKon.Aufnr:
-
-            iMwstCd = AufGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                    WHERE MwstAns.Mwst_Cd = iMwstCd
-                    AND   MwstAns.Datum  <= bAufko.Lief_Datum NO-ERROR.
-            
-            FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    END.
-    
-    /*  Gebindelrücknahmetablle  -------------------------------------------    */
-        
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-                WHERE TabTexte.Firma   = bAufko.Firma
-                AND   TabTexte.TextArt = xString
-                AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-                WHERE TabTexte.Firma   = bAufko.Firma
-                AND   TabTexte.TextArt = xString
-                AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-                WHERE TabTexte.Firma   = bAufko.Firma
-                AND   TabTexte.TextArt = xString
-                AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN DO:
-        cText = REPLACE(cText, CHR(10), '\par ').
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        RUN AUSGABE_GRUPPE ('GebindeRuecknahme').
-    END.
-    
-/*     IF NOT FDebst.Geb_Rg THEN RUN SCHLUSSTEXT. */
-    
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-
-/*     IF cBenutzer <> 'ivana' THEN DO:     */
-    IF cBenutzer <> '' THEN DO:    
-        RUN vpr_SetWindowPos ( 20, 20, 725, 1000 ).
-        RUN vpr_SetPreviewMode('preview').
-        RUN vpr_ShowPreView.
-        
-        MESSAGE 'Alles richtig und drucken? ' VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO
-            UPDATE  lJa.
-        
-        RUN vpr_HidePreView.
-        
-        IF NOT lJa THEN RETURN 'NOK'.
-    END.
-    
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Aufnr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Lieferscheine', cvpr_Dokument).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        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:  <none>
-  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   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cText       AS CHAR                     NO-UNDO.
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Aufnr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN DO:
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', bSteuer.Mwst_Nr ).
-        
-        IF bAufko.Adresse[05] <> '' THEN DO:
-            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].
-            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].
-            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").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-                + '  '
-                + TRIM(STRING(iFaknr,'>>>>>>9'))
-                + ' /'
-                + STRING(bAufko.Vertr,'zz9').
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'T_Dokument'
-                tDokument.cInhalt = cString.
-    
-        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.
-
-        cString = ''.
-        FIND FIRST tTabTexte NO-LOCK
-                WHERE tTabTexte.cRecArt = 'TOUR1' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN cString = tTabTexte.cFeld1.
-        FIND FIRST tTabTexte NO-LOCK
-                WHERE tTabTexte.cRecArt = 'FAHRER' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN cString = cString
-                                            + (IF cString = '' THEN '' ELSE ' / ')
-                                            + tTabTexte.cFeld1.
-        
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Versand'
-                tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Gewicht'
-                tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'I_Best'
-                tDokument.cInhalt = TRIM(bAufko.I_Best).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bAufko.Abh_Text <> '' THEN DO:
-        cText = bAufko.Abh_Text.
-    END.
-    IF bAufko.Auf_Text <> '' THEN DO:
-        cText = cText
-              + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-              + bAufko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  tDokument.cGruppe = 'ZusatzText'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bemerkung_1'
-            tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 30.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE   ( '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:  <none>
-  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.
-    DEF VAR cSort       AS CHAR                     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  = ''
-                tAufze.Sort2  = ''
-                tAufze.Sort3  = 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  = 'ZZZ'
-                    tAufze.Sort2  = ''
-                    tAufze.Sort3  = STRING(iPlusMinus  ,'9')
-                                  + STRING(tAufze.Pos  ,'99999').
-                    tAufze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                    WHERE Artst.Firma  = Aufze.Firma
-                    AND   Artst.Artnr  = Aufze.Artnr
-                    AND   Artst.Inhalt = Aufze.Inhalt
-                    AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cSort
-                tAufze.Sort2  = ''
-                tAufze.Sort3  = STRING(iPlusMinus   ,'9')
-                              + STRING(tAufze.Pos  ,'99999').
-                tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SCHLUSSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHLUSSTEXT Procedure 
-PROCEDURE SCHLUSSTEXT :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-                WHERE TabTexte.Firma   = bAufko.Firma
-                AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-                AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    
-    IF NOT AVAILABLE TabTexte THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', TabTexte.Inhalt ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-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:  <none>
-  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:  <none>
-  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:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1,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_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.
-    
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iPos    AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-                     WHERE AufGKon.Firma    = BAufko.Firma
-                     AND   AufGKon.Aufnr    = BAufko.Aufnr NO-LOCK:
-        IF AufGKon.Eingang = 0  AND
-           AufGKon.Ausgang = 0  THEN NEXT.
-
-        FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = AufGKon.Geb_Cd NO-ERROR.
-        IF NOT AVAILABLE tGebKto THEN DO:
-            FIND GebKonto USE-INDEX GebKonto-k1
-                          WHERE GebKonto.Firma  = AufGKon.Firma
-                          AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd NO-LOCK.
-            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
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR):
-
-    DEF VAR cZellen AS CHAR                     NO-UNDO.
-    DEF VAR cWerte  AS CHAR                     NO-UNDO.
-    DEF VAR iSpace  AS INT                      NO-UNDO.
-    DEF VAR iGrpHo  AS INT                      NO-UNDO.
-
-    FOR EACH tDokument
-            WHERE tDokument.cGruppe = ipGruppe
-            BREAK BY tDokument.cGruppe
-                  BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-  (  ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Knr_T'         , ENTRY( 1, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Bestellt_T'    , ENTRY( 2, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Geliefert_T'   , ENTRY( 3, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Versand_T'     , ENTRY( 4, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'URef_T'        , ENTRY( 1, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Telefon_T'     , ENTRY( 2, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Gewicht_T'     , ENTRY( 3, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'IBest_T'       , ENTRY( 4, cFormText[19], ';') ).
-    
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 6
GUI/DruckProgramme/LaTorre/Mail-Protokoll-Tabelle.html

@@ -1,6 +0,0 @@
-    <tr>
-      <td>&1</td>
-      <td>&2</td>
-      <td>&3</td>
-      <td>&4</td>
-    </tr>

+ 0 - 21
GUI/DruckProgramme/LaTorre/Mail-Protokoll.html

@@ -1,21 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Mail Rechnungsversand</title>
-<body>
-Folgende Rechnungen wurden per Mail versandt<br><br>
-<table width="600" border="1">
-  <tbody>
-    <tr>
-      <th>Knr</th>
-      <th>Kunde</th>
-      <th>Mailadresse</th>
-      <th>Faknr</th>
-    </tr>
-&1
-  </tbody>
-</table>
-<br><br>
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-1.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-2.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-per la vostra documentazione troverete allegata la fattura &2 in formato PDF.<br>
-Per poterlo visualizzare e, se necessario, stamparlo, è necessario un visualizzatore PDF
-come Adobe Acrobat Reader. L'ultima versione può essere installata gratuitamente da Internet.<br><br><br>
-Sinceramente tuo<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-3.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-4.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-5.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 39
GUI/DruckProgramme/LaTorre/Mail-Rechnung-6.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-La Torre SA<br>
-Vial di Curtin 28<br>
-7742 Poschiavo CH<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>+41 81 844 34 34</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>+41 81 844 34 33</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>info@la-torre.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 1273
GUI/DruckProgramme/LaTorre/Offerte.p

@@ -1,1273 +0,0 @@
-&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 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/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.
-            
-    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.
-        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.
-            
-            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:  <none>
-  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 'D',
-                           INPUT iZeile, INPUT Aufze.Bez1 ).
-        IF Aufze.Bez2 = '' THEN RETURN.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           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 'A',
-                       INPUT iZeile, INPUT KGebinde.KBez ).
-    IF Aufze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>')
-                + 'x '
-                + STRING(VGebinde.KBez,'x(10)').
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
-                           INPUT iZeile, INPUT cString ).
-    END.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(Aufze.MGeli,'->>>>>9') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT Aufze.Bez1 ).
-    IF Aufze.Jahr > 9 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                           INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
-    IF Aufze.Alk_Gehalt <> 0 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'F',
-                           INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
-                       INPUT iZeile, INPUT STRING(Aufze.Artnr,'999999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                       INPUT iZeile, INPUT STRING(Aufze.Preis,'>>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                       INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    IF Aufze.Bez2 <> '' THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Bez2 ).
-    END.
-    IF Aufze.Aktion THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Aktion_Text ).
-    END.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-            WHERE Aufko.Firma       = tParam.cFirma
-            AND   Aufko.Aufnr       = tParam.iAufnr :
-/*         IF tParam.iVerband <> 999999 THEN DO: */
-/*             FIND bDebst NO-LOCK */
-/*                     WHERE bDebst.Firma = Aufko.Firma */
-/*                     AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR. */
-/*             IF NOT AVAILABLE bDebst THEN NEXT. */
-/*             IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT. */
-/*         END. */
-            
-        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.
-    
-    /*  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 5.
-    
-    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.
-    
-    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   = bAdresse.Sprcd.
-
-    IF bAufko.Adresse[05] <> '' THEN DO:
-        DO ii = 1 TO 5:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAufko.Adresse[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-    ELSE DO:
-        DO ii = 7 TO 11:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAdresse.Anschrift[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-
-    cDaten  = STRING(dFakDatum,'99.99.9999').
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT cDaten ).
-
-    iZeile = iZeile + 3.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    iZeile = 21.
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 1.    
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, TRIM(SUBSTRING(cFormText[15],21,20)) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,'->>>>>9.99')) ).
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-               WHERE Kondi.Kond  = bAufko.Kond
-               AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, Kondi.Kotext ).
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR lRetVal     AS LOG                      NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-
-    cVorlage = tParam.Template + CHR(01) + tParam.Template.
-    RUN CREATEDATEI ( INPUT cVorlage ).
-
-    cVorlage = SESSION:TEMP-DIR + tParam.Template.
-    RUN OPENEXCEL ( INPUT hExcel,
-                    INPUT cVorlage,
-                    INPUT '',
-                    OUTPUT lRetVal ).
-    IF NOT lRetVal THEN DO:
-        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:  <none>
-  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:  <none>
-  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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(iMwstCd,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        nFakBetr = nFakBetr + nZTot.
-    END.
-    RELEASE AufGKon.
-
-    IF FDebst.Geb_Rg THEN DO:
-        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 'D',
-                               INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                               INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                               INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                               INPUT iZeile, INPUT cDaten ).
-            cDaten = TRIM(STRING(iMwstCd,"z9")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                               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 'D',
-                               INPUT iZeile, INPUT cDaten ).
-            cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                               INPUT iZeile, INPUT cDaten ).
-            nFakBetr = nFakBetr + nZTot.
-        END.
-    END.
-    
-    iZeile = iZeile + 2.
-    cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-
-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:  <none>
-  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:  <none>
-  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 = MWSTAns.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(ix,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-    
-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:  <none>
-  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 'D',
-                           INPUT iZeile,    INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2478
GUI/DruckProgramme/LaTorre/SammelRechnung.p

@@ -1,2478 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf           AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst          AS LOGICAL   INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast           AS LOGICAL   INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis          AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE lGoodPrint      AS LOGICAL   NO-UNDO.
-
-DEFINE VARIABLE cFirma          AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr        AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum       AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale         AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext       AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf       AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl        AS LOGICAL   NO-UNDO.
-DEFINE VARIABLE Rundbetr        AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode        AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte      AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko          AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cBenutzer       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE hdruckok        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE iDokumentStatus AS INTEGER   NO-UNDO.   
-
-DEFINE VARIABLE iMaxPos         AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos      AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i           }
-{ incl/ttdruckparam.i         }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tqAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
-htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-cBenutzer     = DYNAMIC-FUNCTION('getBenutzer':U) NO-ERROR.
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-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.
-    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.
-        
-    FIND Aufko NO-LOCK 
-        WHERE Aufko.Firma = sAufko.cFirma
-        AND   Aufko.Aufnr = sAufko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqAufko     .
-    CREATE  tqAufko.
-    BUFFER-COPY Aufko TO tqAufko
-        ASSIGN  
-        tqAufko.iRecid  = RECID(Aufko)
-        tqAufko.lBetrag = TRUE.
-    RELEASE Aufko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            EMPTY TEMP-TABLE tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-            iDokumentStatus = FDebst.DokumentStatus.
-            iBESRArt        = FDebst.BESR_Art.
-            
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile  = 0.
-            lGoodPrint = TRUE.
-            RUN DRUCKEN.
-            IF RETURN-VALUE <> '' THEN 
-            DO:
-                lGoodPrint = FALSE.
-                LEAVE.
-            END.
-                
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-        
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/latorre/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tqAufko.
-    tqAufko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(tqAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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 Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                    Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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-AUSGABE_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure 
-PROCEDURE AUSGABE_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtnr  AS LOGICAL   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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN 
-                lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 20.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-        
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = iVPagePos + 20.
-                RUN vpr_setPageVPos  ( iVPagePos ).
-                RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ).
-                RUN vpr_FlushGroup   ( 'GebindeTitel' ).
-                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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[20],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[20],21,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH AufGKon USE-INDEX AufGKon-k1
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0) NO-LOCK:
-                
-            iMwstCd = AufGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1001
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN 
-            DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  
-                    tUmsGrp.Ums_Grp = 1001
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.lInkl   = lDebIncl
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-            
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        END.
-        IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN 
-        DO:
-            RUN AUSGABE_GRUPPE ('GebindeTitel').
-            RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-        END.
-    END.
-    
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN 
-    DO:
-        RUN DRUCKEN_ENDE.
-        RETURN RETURN-VALUE.
-    END.
-    ELSE 
-    DO:
-        RETURN ''.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBESRBank  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER BESRTabel FOR Tabel.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    FIND Kondi NO-LOCK
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = Adresse.Sprcd NO-ERROR.
-    IF NOT AVAILABLE Kondi THEN 
-    DO:
-        FIND FIRST Kondi NO-LOCK
-            WHERE Kondi.Kond  = bAufko.Kond NO-ERROR.
-    END.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        IF Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-    END.
-    FOR EACH BESRTabel USE-INDEX Tabel-k1
-        WHERE BESRTabel.Firma  = tParam.cFirma
-        AND   BESRTabel.RecArt = 'EZ'
-        AND   BESRTabel.CodeC  = STRING(iBesrArt,'999999')
-        AND   BESRTabel.Sprcd  = 1 NO-LOCK:
-
-        CASE BESRTabel.CodeI:
-            WHEN 0 THEN 
-                DO:
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_L', BESRTabel.Bez1 ).
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_R', BESRTabel.Bez2 ).
-                    cBESRBank  = STRING(BESRTabel.Dec_1,'99999999999999').
-                    PZTNNummer = BESRTabel.BezL.
-                END.
-            OTHERWISE 
-            DO:
-                cFeld = SUBSTITUTE('Firma_Adr_&1_L', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez1 ).
-                cFeld = SUBSTITUTE('Firma_Adr_&1_R', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez2 ).
-            END.
-        END CASE.
-    END.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'XXXXXXXX  XX').
-    END.
-    IF Rundbetr < 0.00 THEN cFeld = '**********'.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = SUBSTRING(cBESRBank,01,12) 
-        + STRING(bAufko.Fak_Knr,"999999")
-        + "0"
-        + STRING(bAufko.Faknr,"9999999")
-        + " ".
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOGICAL   NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 200) >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    FIND FIRST tTotale.
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', TRIM(cFormText[16]) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag'        , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    iArtZeile = 3.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', cFormText[27] ).
-    iArtZeile = 4.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe', cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'         , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'       , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'        , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'          , ' '   ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-    /*         IF Kondi.Skonto[01] <> 0 THEN DO: */
-    /*             Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100. */
-    /*             Rundcode = 1. */
-    /*             RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ). */
-    /*             RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ). */
-    /*         END. */
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    RUN vpr_FlushGroup ( 'Fusstext' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        IF iDokumentStatus = 0 THEN RETURN ''.
-        RUN vpr_EndDoc.
-        RUN vpr_ResetDoc.
-        RETURN ''.
-    END.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF Bankst.QR-IBAN <> '' THEN 
-    DO:
-        IF nFakBetr > 0 THEN 
-        DO:
-            RUN vpr_newPage.
-            RUN DRUCKEN_QRCODE.
-        END.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    
-    IF cBenutzer <> 'ivana' THEN 
-    DO:
-        RUN vpr_SetWindowPos ( 20, 20, 725, 1000 ).
-        RUN vpr_SetPreviewMode('preview').
-        RUN vpr_ShowPreView.
-        
-        lJa = ?.
-        DYNAMIC-FUNCTION ('setFlagOK':U, lJa) NO-ERROR.
-        RUN 'w-druckok.w' PERSISTENT SET hDruckok.
-        RUN initializeObject IN hDruckok.
-        
-        WAIT-FOR CLOSE OF hDruckok.
-        lJa = DYNAMIC-FUNCTION ('getFlagOK':U) NO-ERROR.
-        
-        IF  lJa = ? OR 
-            NOT lJa THEN RETURN 'NOK'.
-    END.
-    
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Fak_Knr,'999999'),
-        STRING(bAufko.Faknr  ,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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.
-    
-    RETURN ''.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOGICAL   NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = 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 = 'ZZZ'
-                tAufze.Sort2 = ''
-                tAufze.Sort3 = STRING(iPlusMinus  ,'9')
-                                  + STRING(tAufze.Pos  ,'99999').
-            tAufze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = STRING(iPlusMinus  ,'9')
-                              + STRING(tAufze.Pos  ,'99999').
-        tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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:
-        IF iDokumentstatus = 0      THEN RUN vpr_NewPage.
-        IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-
-    RUN vpr_initGroups ('').
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1           THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                        RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        IF iDokumentStatus > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Knr_T'         , ENTRY( 1, cFormText[24], ';') ).
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-    
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Kondition_T'   , ENTRY( 1, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Faellig_T'     , ENTRY( 2, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Total_T'       , ENTRY( 3, cFormText[26], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2317
GUI/DruckProgramme/LaTorre/Sav_Faktura.p

@@ -1,2317 +0,0 @@
-&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 hSavko          AS HANDLE                   NO-UNDO.
-DEF VAR cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR iBesrArt        AS INT                      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 bSavko       FOR Savko   .
-DEF BUFFER bSavze       FOR Savze   .
-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/properties.i           }
-{ incl/ttdruckparam.i         }
-{ swissqr/propertiesSwissQR.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 sSavko
-    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
-    FIELD dFakDat       AS DATE
-    .
-DEF TEMP-TABLE tSavko       LIKE Savko
-    FIELD iRecid        AS RECID
-    FIELD lBetrag       AS LOGICAL
-    .
-DEF TEMP-TABLE tAufko       LIKE Savko
-    FIELD iRecid        AS RECID
-    FIELD lBetrag       AS LOGICAL
-    .
-DEF TEMP-TABLE tSavze
-    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 tSavze-k1 IS PRIMARY
-          Aufnr
-          Sort1
-          Sort2
-          Sort3
-    .
-DEF TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-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 lInkl         AS LOG
-    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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-  (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-    opcResult = ''.
-    cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-    CREATE tParam.
-    htParam:BUFFER-COPY(iphParam).
-    ASSIGN  cFirma   = tParam.cFirma
-            iAnzDok  = tParam.Anzahl
-            lPreis   = TRUE.
-            
-    FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-    AdFirma = bSteuer.AdFirma.
-
-    RUN AUFTRAG_ERMITTELN.
-    IF opcResult <> '' THEN RETURN.
-
-    FOR EACH sSavko
-            BY sSavko.iFak_Knr:
-
-        FIND bAdresse NO-LOCK
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = sSavko.iFak_Knr.
-        iSprcd = bAdresse.Sprcd.
-        RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sSavko.dFakDat.
-            iSeite    = 0.
-            iFaknr    = sSavko.iFaknr.
-            lFirst    = TRUE.
-            lLast     = FALSE.
-                    
-            EMPTY TEMP-TABLE tUmsGrp    .
-            EMPTY TEMP-TABLE tTotale    .
-            
-            CREATE  tTotale.
-            
-            FOR EACH bSavko NO-LOCK
-                    WHERE bSavko.Firma      = sSavko.cFirma
-                    AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-                    BREAK BY bSavko.Firma
-                          BY bSavko.Aufnr :
-
-                EMPTY TEMP-TABLE tSavze     .
-                EMPTY TEMP-TABLE tGebKto    .
-                EMPTY TEMP-TABLE tRabSumm   .
-                EMPTY TEMP-TABLE tSpeRab    .
-                EMPTY TEMP-TABLE tTabTexte  .
-                EMPTY TEMP-TABLE tRueckst   .
-                EMPTY TEMP-TABLE tAufko     .
-                
-                CREATE  tAufko.
-                BUFFER-COPY bSavko TO tAufko
-                    ASSIGN  tAufko.lBetrag = TRUE.
-                
-                FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                        WHERE bAdresse.Firma = AdFirma
-                        AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-                FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE LDebst.Firma  = cFirma
-                        AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-                FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                        WHERE FDebst.Firma  = cFirma
-                        AND   FDebst.Knr    = bSavko.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.
-                iBesrArt  = FDebst.Besr_Art.
-                IF AVAILABLE bWust THEN lDebIncl = bWust.Incl.
-        
-                hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-                RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-                FOR EACH tSavze
-                        WHERE tSavze.Artnr > 0:
-                
-                    FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                    /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                    IF bSavze.Auf_Sp_Grp > 0 THEN DO:
-                        FIND FIRST tSpeRab
-                                WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                        IF NOT AVAILABLE tSpeRab THEN DO:
-                            CREATE  tSpeRab.
-                            ASSIGN  tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                        END.
-                        tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                    END.
-                    
-                    /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                    DO WHILE bSavze.Rab_Su_Grp > 0:
-                        FIND FIRST tRabSumm
-                                WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE tRabSumm THEN DO:
-                            FIND FIRST RabSumm NO-LOCK
-                                    WHERE RabSumm.Firma    = bSavze.Firma
-                                    AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                            IF NOT AVAILABLE RabSumm THEN LEAVE.
-                            CREATE  tRabSumm.
-                            ASSIGN  tRabSumm.Rab_Summ  = bSavze.Rab_Su_Grp
-                                    tRabSumm.Bez       = RabSumm.Bez
-                                    tRabSumm.Auf_Rab   = 0
-                                    tRabSumm.Abh_Rab   = 0.
-                        END.
-                        LEAVE.
-                    END.
-                END.
-                
-                IF LAST-OF ( bSavko.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
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/latorre/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hSavko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(tAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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 tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN DO:
-            cString = cString
-                    + (IF cString = '' THEN '' ELSE CHR(10))
-                    + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-            WHERE GGebinde.Firma  = cFirma
-            AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-            WHERE VGebinde.Firma  = cFirma
-            AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-            WHERE KGebinde.Firma  = cFirma
-            AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Savze.MGeli,'->>,>>9')) ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN DO:
-        cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-        
-    IF Savze.Rab_Betr <> 0 THEN DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-           Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-           Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-/*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-/*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                       AND   TUmsGrp.MWst    = Savze.WuCd
-                       AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma  = cFirma
-                AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  TUmsGrp.Ums_Grp = Artst.Wg_Grp
-                TUmsGrp.Mwst    = Savze.WuCd
-                tUmsGrp.lInkl   = Savze.Mwst_Inkl
-                TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-                     + Savze.Net_Betr
-                     - Savze.Auf_Rab
-                     - Savze.Abh_Rab.
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-    
-    DEF BUFFER bDebst       FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-            WHERE Savko.Firma       = tParam.cFirma
-            AND   Savko.Aufnr       = tParam.iAufnr :
-
-        IF tParam.iVerband <> 999999 THEN DO:
-            FIND bDebst NO-LOCK
-                    WHERE bDebst.Firma = Savko.Firma
-                    AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Savko.Faknr.
-        CREATE  sSavko.
-        ASSIGN  sSavko.cFirma   = Savko.Firma
-                sSavko.iAufnr   = Savko.Aufnr
-                sSavko.iFak_Knr = Savko.Fak_Knr
-                sSavko.iKnr     = Savko.Knr
-                sSavko.iSamm_Nr = 0
-                sSavko.iRecid   = RECID(Savko)
-                sSavko.iFaknr   = iFaknr.
-        IF Savko.Fak_Datum = ? THEN sSavko.dFakDat = TODAY.
-        ELSE                        sSavko.dFakDat = Savko.Fak_Datum.
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR                     NO-UNDO.
-    DEF VAR cWerte  AS CHAR                     NO-UNDO.
-    DEF VAR iPos    AS INT                      NO-UNDO.
-    DEF VAR lArtnr  AS LOG                      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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-                + tDokument.cInhalt.
-        cZellen = cZellen
-                + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 20.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-  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.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN DO:
-            iVPagePos = iVPagePos + 20.
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ).
-            RUN vpr_FlushGroup   ( 'GebindeTitel' ).
-            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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cText       AS CHAR                 NO-UNDO.
-    DEF VAR xString     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 nRabWert    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.
-    DEF VAR nPfli       AS DEC  EXTENT 12       NO-UNDO.
-    DEF VAR nMwst       AS DEC  EXTENT 12       NO-UNDO.
-    
-    DEF BUFFER bDebst       FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-            WHERE bDebst.Firma = bSavko.Firma
-            AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    FOR EACH tSavze NO-LOCK
-             BY tSavze.Aufnr
-             BY tSavze.Sort1
-             BY tSavze.LagOrt
-             BY tSavze.Sort2
-             BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-/*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-            WHERE tRabSumm.Auf_Rab <> 0
-            BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-/*         IF Rundbetr < 0 THEN RText = cZusText. */
-/*         ELSE                 RText = cRabText. */
-        xString = RText
-                + " "
-                + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-                WHERE SavRabSu.Firma    = bSavko.Firma
-                AND   SavRabSu.Aufnr    = bSavko.Aufnr
-                AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-/*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-                      BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-/*         IF Rundbetr < 0 THEN RText = cZusText. */
-/*         ELSE                 RText = cRabText. */
-        xString   = RText
-                  + " "
-                  + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-                WHERE SavRabSu.Firma    = bSavko.Firma
-                AND   SavRabSu.Aufnr    = bSavko.Aufnr
-                AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-/*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-                     BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-                   WHERE Tabel.Firma  = cFirma
-                   AND   Tabel.RecArt = 'ARABGRP'
-                   AND   Tabel.CodeC  = ''
-                   AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-                   AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-                  + " "
-                  + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-                WHERE SavSpRab.Firma    = bSavko.Firma
-                AND   SavSpRab.Aufnr    = bSavko.Aufnr
-                AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-                  + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-/*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Gebuehr <> 0
-            AND   SavGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1000
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  tUmsGrp.Ums_Grp = 1000
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.lInkl   = lDebIncl
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-/*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN DO:
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND   SavGKon.Betrag  <> 0 :
-    
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN DO:
-                FIND GebKonto NO-LOCK
-                        WHERE GebKonto.Firma  = SavGKon.Firma
-                        AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-                CREATE  tGebKto.
-                ASSIGN  tGebKto.Sort_Cd  = GebKonto.Sort_Cd
-                        tGebKto.Geb_Cd   = GebKonto.Geb_Cd
-                        tGebKto.Bez      = GebKonto.Bez
-                        tGebKto.Preis    = SavGKon.Depot
-                        tGebKto.MWST_Cd  = SavGKon.MWSt_Cd.
-            END.
-            tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-            tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-            tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-            tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-        END.
-        RELEASE SavGKon.
-        
-    /*  Gebindelieferungen  ------------------------------------------------    */
-    
-        nBetrag   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon NO-LOCK
-                WHERE SavGKon.Firma    = bSavko.Firma
-                AND   SavGKon.Aufnr    = bSavko.Aufnr
-                AND   SavGKon.Depot   <> 0
-                AND  (SavGKon.Eingang <> 0  OR
-                      SavGKon.Ausgang <> 0)
-                      
-                BREAK BY SavGKon.Firma
-                      BY SavGKon.Aufnr:
-    
-            iMwstCd = SavGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                    WHERE MwstAns.Mwst_Cd = iMwstCd
-                    AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                    WHERE tUmsGrp.Ums_Grp = 1001
-                    AND   tUmsGrp.Mwst    = iMwstCd
-                    AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                        WHERE WarenGrp.Firma = cFirma
-                        AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  tUmsGrp.Ums_Grp = 1001
-                        tUmsGrp.Mwst    = iMwstCd
-                        tUmsGrp.Ansatz  = MwstAns.Ansatz
-                        tUmsGrp.lInkl   = lDebIncl
-                        tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-            
-            FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(SavGKon.MWSt_Cd,"z9")) ).
-        END.
-        RELEASE SavGKon.
-        RELEASE GebKonto.
-        
-        IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-    
-        nFakBetr = nFakBetr + nBetrag.
-        IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    END.
-
-/*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40) + 120) > iMaxPos THEN DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-                          WHERE MWSTAns.MWST_Cd = ii
-                          AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-/*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', TRIM(cFormText[16]) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag'        , TRIM(STRING(nFakBetr,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    iArtZeile = 3.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', cFormText[27] ).
-    iArtZeile = 4.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-    
-    RUN SCHLUSSTEXT.
-    RUN UMSATZVERTEILUNG.
-
-/*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-            WHERE Kondi.Kond  = bSavko.Kond
-            AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN DO:
-            Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bSavko.Bar_Betr <> 0.00 THEN DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag_T', TRIM(ENTRY(4, cFormText[26], ';'))            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto_T'   , TRIM(ENTRY(5, cFormText[26], ';'))            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag'  , TRIM(STRING(bSavko.Bar_Betr  ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'     , TRIM(STRING(bSavko.Bar_Skonto,"->>>,>>9.99")) ).
-    END.
-    nFakBetr = nFakBetr - bSavko.Bar_Betr - bSavko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    RUN vpr_FlushGroup ( 'Fusstext' ).
-
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-       Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF Bankst.QR-IBAN <> '' THEN 
-    DO:
-        IF bSavko.Auf_Tot > 0 THEN 
-        DO:
-            RUN vpr_newPage.
-            RUN DRUCKEN_QRCODE.
-        END.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-/*  ------------------------------------------------------  */
-/*  Druckausgabe                                            */    
-/*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3_Kopie.vpr',
-        STRING(bSavko.Fak_Knr,'999999'),
-        STRING(bSavko.Aufnr  ,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        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:  <none>
-  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   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF INPUT PARAMETER ipDokument  AS CHAR         NO-UNDO.
-
-    DEF VAR ix          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR iKopfZeile  AS INT                      NO-UNDO.
-    
-    DEF VAR PZBetrag    AS CHAR                     NO-UNDO.
-    DEF VAR PZReferenz  AS CHAR                     NO-UNDO.
-    DEF VAR PZTNNummer  AS CHAR                     NO-UNDO.
-    DEF VAR cReferenz   AS CHAR                     NO-UNDO.
-    DEF VAR cBESRBank   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER BESRTabel    FOR Tabel.
-    
-    FIND FIRST tParam.
-    
-/*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-            WHERE Adresse.Firma = AdFirma
-            AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    FIND Kondi NO-LOCK
-               WHERE Kondi.Kond  = bSavko.Kond
-               AND   Kondi.Sprcd = Adresse.Sprcd NO-ERROR.
-    IF NOT AVAILABLE Kondi THEN DO:
-        FIND FIRST Kondi NO-LOCK
-                   WHERE Kondi.Kond  = bSavko.Kond NO-ERROR.
-    END.
-    IF AVAILABLE Kondi THEN DO:
-        IF Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-    END.
-    FOR EACH BESRTabel USE-INDEX Tabel-k1
-            WHERE BESRTabel.Firma  = tParam.cFirma
-            AND   BESRTabel.RecArt = 'EZ'
-            AND   BESRTabel.CodeC  = STRING(iBesrArt,'999999')
-            AND   BESRTabel.Sprcd  = 1 NO-LOCK:
-
-        CASE BESRTabel.CodeI:
-            WHEN 0 THEN DO:
-                RUN vpr_setGroupText ( 'BESR', 'Konto_L', BESRTabel.Bez1 ).
-                RUN vpr_setGroupText ( 'BESR', 'Konto_R', BESRTabel.Bez2 ).
-                cBESRBank  = STRING(BESRTabel.Dec_1,'99999999999999').
-                PZTNNummer = BESRTabel.BezL.
-            END.
-            OTHERWISE DO:
-                cFeld = SUBSTITUTE('Firma_Adr_&1_L', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez1 ).
-                cFeld = SUBSTITUTE('Firma_Adr_&1_R', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez2 ).
-            END.
-        END CASE.
-    END.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-/*             CREATE  tDokument. */
-/*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-/*                     tDokument.iZeile  = 1 */
-/*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-/*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE DO:
-        DO ix = 6 TO 11:
-/*             CREATE  tDokument. */
-/*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-/*                     tDokument.iZeile  = 1 */
-/*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-/*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'BESR'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-                tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'XXXXXXXX  XX').
-    END.
-    IF Rundbetr < 0.00 THEN cFeld = '**********'.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = SUBSTRING(cBESRBank,01,12) 
-               + STRING(bSavko.Fak_Knr,"999999")
-               + "0"
-               + STRING(bSavko.Faknr,"9999999")
-               + " ".
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cText       AS CHAR                     NO-UNDO.
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN DO:
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-                + '  '
-                + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPF'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'T_Dokument'
-                tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Auf_Datum'
-                tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Lief_Datum'
-                tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999')
-                                  + ' / '
-                                  + TRIM(STRING(bSavko.Aufnr,'zzzzzz9')).
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'U_Ref'
-                tDokument.cInhalt = bSavko.U_Ref.
-    
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Knr'
-                tDokument.cInhalt = STRING(bSavko.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(bSavko.Gewicht,'->>>,>>9.999')).
-
-        CREATE  tDokument.
-        ASSIGN  tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'I_Best'
-                tDokument.cInhalt = TRIM(bSavko.I_Best).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bSavko.Abh_Text <> '' THEN DO:
-        cText = bSavko.Abh_Text.
-    END.
-    IF bSavko.Auf_Text <> '' THEN DO:
-        cText = cText
-              + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-              + bSavko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  tDokument.cGruppe = 'ZusatzText'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bemerkung_1'
-            tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 30.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE   ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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.
-    DEF VAR cSort       AS CHAR                     NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = ''
-                tSavze.Sort2  = ''
-                tSavze.Sort3  = STRING(iPlusMinus  ,'9')
-                              + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN DO:
-        FOR EACH Savze NO-LOCK
-                WHERE Savze.Firma = cFirma
-                AND   Savze.Aufnr = ipAufnr
-                BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                    tSavze.Artnr    = Savze.Artnr
-                    tSavze.Inhalt   = Savze.Inhalt
-                    tSavze.Jahr     = Savze.Jahr
-                    tSavze.Pos      = Savze.Pos
-                    tSavze.Zeile    = RECID(Savze)
-                    tSavze.Aktion   = Savze.Aktion
-                    tSavze.Preis    = Savze.Preis
-                    tSavze.MGeli    = Savze.MGeli
-                    tSavze.MRuek    = Savze.MRuek.
-                    
-            ASSIGN  tSavze.Sort1  = 'ZZZ'
-                    tSavze.Sort2  = ''
-                    tSavze.Sort3  = STRING(iPlusMinus  ,'9')
-                                  + STRING(tSavze.Pos  ,'9999').
-                    tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            AND   Savze.Pos   > minPos
-            AND   Savze.Pos   < MaxPos
-            
-            BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN DO:
-            FIND Artst NO-LOCK
-                    WHERE Artst.Firma  = Savze.Firma
-                    AND   Artst.Artnr  = Savze.Artnr
-                    AND   Artst.Inhalt = Savze.Inhalt
-                    AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  tSavze.Aufnr    = Savze.Aufnr
-                tSavze.Artnr    = Savze.Artnr
-                tSavze.Inhalt   = Savze.Inhalt
-                tSavze.Jahr     = Savze.Jahr
-                tSavze.Pos      = Savze.Pos
-                tSavze.Zeile    = RECID(Savze)
-                tSavze.Aktion   = Savze.Aktion
-                tSavze.Preis    = Savze.Preis
-                tSavze.MGeli    = Savze.MGeli
-                tSavze.MRuek    = Savze.MRuek.
-                
-        ASSIGN  tSavze.Sort1  = cSort
-                tSavze.Sort2  = ''
-                tSavze.Sort3  = STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos  ,'9999').
-                tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-/* ------------------------------------------------------------------------- */
-/*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-/* ------------------------------------------------------------------------- */
-/*                                                                           */
-/*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-/*                       2.  String Referenz            (27-stellig)         */
-/*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-/*                                                                           */
-/*  Erstellung der VESR-Codierzeile                                          */
-/*                                                                           */
-/*---------------------------------------------------------------------------*/
-
-    DEF INPUT-OUTPUT PARAMETER PZBetrag     AS CHAR FORMAT "x(13)".
-    DEF INPUT-OUTPUT PARAMETER PZReferenz   AS CHAR FORMAT "x(27)".
-    DEF INPUT-OUTPUT PARAMETER PZTNummer    AS CHAR FORMAT "x(09)".
-    DEF OUTPUT       PARAMETER VSZeile      AS CHAR FORMAT "x(58)".
-    
-    DEF VAR l1          AS INT.
-    DEF VAR l2          AS INT.
-    DEF VAR l3          AS INT.
-    DEF VAR PZ          AS INT.
-    DEF VAR x1          AS INT.
-    DEF VAR x2          AS INT.
-    DEF VAR x3          AS INT.
-    DEF VAR VMOD10      AS CHAR FORMAT "x(11)"  EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    /*
-    SUBSTRING(VSZeile,58) = "H".
-    */
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SCHLUSSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHLUSSTEXT Procedure 
-PROCEDURE SCHLUSSTEXT :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bSavko.Firma
-            AND   TabTexte.TextArt = 'DOK' + STRING(bSavko.Fak_Art,'99')
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-                WHERE TabTexte.Firma   = bSavko.Firma
-                AND   TabTexte.TextArt = 'DOK' + STRING(bSavko.Fak_Art,'99')
-                AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    
-    IF NOT AVAILABLE TabTexte THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', TabTexte.Inhalt ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-UMSATZVERTEILUNG) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMSATZVERTEILUNG Procedure 
-PROCEDURE UMSATZVERTEILUNG :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR nNetto      AS DEC                      NO-UNDO.
-    DEF VAR nMwst       AS DEC                      NO-UNDO.
-    DEF VAR nBrutto     AS DEC                      NO-UNDO.
-    DEF VAR nTNetto     AS DEC                      NO-UNDO.
-    DEF VAR nTMwst      AS DEC                      NO-UNDO.
-    DEF VAR nTBrutto    AS DEC                      NO-UNDO.
-    DEF VAR cText       AS CHAR                     NO-UNDO.
-    DEF VAR ix          AS INT                      NO-UNDO.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe', cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'         , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'       , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'        , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'          , ' '   ).
-    ASSIGN  nTNetto  = 0
-            nTMwst   = 0
-            nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-             BY TUmsGrp.Ums_Grp
-             BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  nTNetto  = nTNetto  + nNetto
-                nTMwst   = nTMwst   + nMwst
-                nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-       + 30
-       + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-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:  <none>
-  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:  <none>
-  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:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.
-    
-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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iPos    AS INT                      NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-/*         iPos = vpr_getPageVPos(). */
-/*         IF (iPos + 160) < iMaxPos THEN DO: */
-/*             iPos = iPos + 20. */
-/*             RUN vpr_setPageVPos  ( iPos ). */
-/*             RETURN. */
-/*         END. */
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR):
-
-    DEF VAR cZellen AS CHAR                     NO-UNDO.
-    DEF VAR cWerte  AS CHAR                     NO-UNDO.
-    DEF VAR iSpace  AS INT                      NO-UNDO.
-    DEF VAR iGrpHo  AS INT                      NO-UNDO.
-
-    FOR EACH tDokument
-            WHERE tDokument.cGruppe = ipGruppe
-            BREAK BY tDokument.cGruppe
-                  BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-  (  ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen     AS CHAR                     NO-UNDO.
-    DEF VAR cWerte      AS CHAR                     NO-UNDO.
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Knr_T'         , ENTRY( 1, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Bestellt_T'    , ENTRY( 2, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Geliefert_T'   , ENTRY( 3, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'URef_T'        , ENTRY( 1, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Telefon_T'     , ENTRY( 2, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Gewicht_T'     , ENTRY( 3, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'IBest_T'       , ENTRY( 4, cFormText[19], ';') ).
-    
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-    
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Kondition_T'   , ENTRY( 1, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Faellig_T'     , ENTRY( 2, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Total_T'       , ENTRY( 3, cFormText[26], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2354
GUI/DruckProgramme/LaTorre/Sav_SammelRechnung.p

@@ -1,2354 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lGoodPrint    AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i           }
-{ incl/ttdruckparam.i         }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tAufko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tqAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
-htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-    
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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.
-        
-    FIND Savko NO-LOCK 
-        WHERE Savko.Firma = sSavko.cFirma
-        AND   Savko.Aufnr = sSavko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqAufko     .
-    CREATE  tqAufko.
-    BUFFER-COPY Savko TO tqAufko
-        ASSIGN  
-        tqAufko.iRecid  = RECID(Savko)
-        tqAufko.lBetrag = TRUE.
-    RELEASE Savko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-            AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-            AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-            BREAK BY bSavko.Fak_Knr
-            BY bSavko.Samm_Nr
-            BY bSavko.Knr
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tAufko     .
-            
-            CREATE  tAufko.
-            BUFFER-COPY bSavko TO tAufko
-                ASSIGN  tAufko.lBetrag = TRUE.
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-            iBesrArt = FDebst.Besr_Art.
-            IF AVAILABLE bWust THEN lDebIncl = bWust.Incl.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            lGoodPrint = TRUE.
-            IF RETURN-VALUE <> '' THEN 
-            DO:
-                lGoodPrint = FALSE.
-                LEAVE.
-            END.
-        END.
-    END.
-        
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/latorre/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tqAufko.
-    tqAufko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(tqAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.lInkl   = Savze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Fak_Art     = tParam.iFakArt
-        AND   Savko.Auf_Sta     = tParam.iAufSta
-        AND   Savko.Faknr       = tParam.iFaknr
-            
-        BREAK BY Savko.Fak_Knr
-        BY Savko.Samm_Nr
-        BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Savko.Firma
-                AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = Savko.Samm_Nr
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = Savko.Faknr.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtnr  AS LOG       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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN 
-                lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 20.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'Gebindeabrechnung' THEN 
-            DO:
-                iVPagePos = iVPagePos + 20.
-                RUN vpr_setPageVPos  ( iVPagePos ).
-                RUN vpr_setGroupVPos ( 'GebindeTitel', iVPagePos ).
-                RUN vpr_FlushGroup   ( 'GebindeTitel' ).
-                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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[20],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[20],21,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bSavko.Knr = bSavko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bSavko.Firma
-        AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        /*         IF Rundbetr < 0 THEN RText = cZusText. */
-        /*         ELSE                 RText = cRabText. */
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        xString = TRIM(xString).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        nZeiTot   = 0.
-        iArtZeile = 0.
-        FOR EACH SavGKon USE-INDEX SavGKon-k1
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Depot   <> 0
-            AND  (SavGKon.Eingang <> 0  OR
-            SavGKon.Ausgang <> 0) NO-LOCK:
-            
-            iMwstCd = SavGKon.MWSt_Cd.
-            FIND LAST MwstAns NO-LOCK
-                WHERE MwstAns.Mwst_Cd = iMwstCd
-                AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-            FIND FIRST tUmsGrp
-                WHERE tUmsGrp.Ums_Grp = 1001
-                AND   tUmsGrp.Mwst    = iMwstCd
-                AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-            IF NOT AVAILABLE tUmsGrp THEN 
-            DO:
-                FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                    WHERE WarenGrp.Firma = cFirma
-                    AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-                CREATE  tUmsGrp.
-                ASSIGN  
-                    tUmsGrp.Ums_Grp = 1001
-                    tUmsGrp.Mwst    = iMwstCd
-                    tUmsGrp.Ansatz  = MwstAns.Ansatz
-                    tUmsGrp.lInkl   = lDebIncl
-                    tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-            END.
-            tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-            FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            nZeiTot   = nZeiTot   + Rundbetr.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        END.
-        IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-        nFakBetr = nFakBetr + nZeiTot.
-        IF iArtZeile > 0 THEN 
-        DO:
-            RUN AUSGABE_GRUPPE ('GebindeTitel').
-            RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-        END.
-    END.
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN 
-    DO:
-        RUN DRUCKEN_ENDE.
-        RETURN RETURN-VALUE.
-    END.
-    ELSE 
-    DO:
-        RETURN ''.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBESRBank  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER BESRTabel FOR Tabel.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    FIND Kondi NO-LOCK
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = Adresse.Sprcd NO-ERROR.
-    IF NOT AVAILABLE Kondi THEN 
-    DO:
-        FIND FIRST Kondi NO-LOCK
-            WHERE Kondi.Kond  = bSavko.Kond NO-ERROR.
-    END.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        IF Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-    END.
-    FOR EACH BESRTabel USE-INDEX Tabel-k1
-        WHERE BESRTabel.Firma  = tParam.cFirma
-        AND   BESRTabel.RecArt = 'EZ'
-        AND   BESRTabel.CodeC  = STRING(iBesrArt,'999999')
-        AND   BESRTabel.Sprcd  = 1 NO-LOCK:
-
-        CASE BESRTabel.CodeI:
-            WHEN 0 THEN 
-                DO:
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_L', BESRTabel.Bez1 ).
-                    RUN vpr_setGroupText ( 'BESR', 'Konto_R', BESRTabel.Bez2 ).
-                    cBESRBank  = STRING(BESRTabel.Dec_1,'99999999999999').
-                    PZTNNummer = BESRTabel.BezL.
-                END.
-            OTHERWISE 
-            DO:
-                cFeld = SUBSTITUTE('Firma_Adr_&1_L', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez1 ).
-                cFeld = SUBSTITUTE('Firma_Adr_&1_R', STRING(BESRTabel.CodeI,'99')).
-                RUN vpr_setGroupText ( 'BESR', cFeld, BESRTabel.Bez2 ).
-            END.
-        END CASE.
-    END.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'XXXXXXXX  XX').
-    END.
-    IF Rundbetr < 0.00 THEN cFeld = '**********'.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = SUBSTRING(cBESRBank,01,12) 
-        + STRING(bSavko.Fak_Knr,"999999")
-        + "0"
-        + STRING(bSavko.Faknr,"9999999")
-        + " ".
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 200) >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', TRIM(cFormText[16]) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag'        , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    iArtZeile = 3.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'Rechnungsbetrag_T', cFormText[27] ).
-    iArtZeile = 4.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe', cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'         , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'       , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'        , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'      , ' '   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'          , ' '   ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-    /*         IF Kondi.Skonto[01] <> 0 THEN DO: */
-    /*             Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100. */
-    /*             Rundcode = 1. */
-    /*             RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ). */
-    /*             RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ). */
-    /*         END. */
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    RUN vpr_FlushGroup ( 'Fusstext' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN RETURN ''.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF Bankst.QR-IBAN <> '' THEN 
-    DO:
-        IF nFakBetr > 0 THEN 
-        DO:
-            RUN vpr_newPage.
-            RUN DRUCKEN_QRCODE.
-        END.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3_Kopie.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Aufnr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    cvpr_Dokument = SUBSTITUTE('ERP_Dokumente\&1\Rechnungen\&2-&3_&4_Kopie.vpr',
-        cInstallation,
-        STRING(bSavko.Fak_Knr,'999999'),
-        STRING(bSavko.Faknr  ,'9999999'),
-        tParam.cDokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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.
-    
-    RETURN ''.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bSavko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = ''
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(iPlusMinus  ,'9')
-                              + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = 'ZZZ'
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(iPlusMinus  ,'9')
-                                  + STRING(tSavze.Pos  ,'9999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = cSort
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(iPlusMinus  ,'9')
-                              + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Knr_T'         , ENTRY( 1, cFormText[24], ';') ).
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-    
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Kondition_T'   , ENTRY( 1, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Faellig_T'     , ENTRY( 2, cFormText[26], ';') ).
-    RUN vpr_SetGroupText ( 'Kondition'   , 'Total_T'       , ENTRY( 3, cFormText[26], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2200
GUI/DruckProgramme/california/Faktura.p

@@ -1,2200 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Bank/Verband    */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* 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        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  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.
-    
-    RUN GET_FORMTEXT ( 'OSWALD' , 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 = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Aufze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-        
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      /* OR
-           Aufko.Fak_Datum < TODAY  */ THEN sAufko.dFakDat = TODAY.
-        ELSE                                sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    /*     iVPagePos = vpr_getPageVPos(). */
-    /*     RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ). */
-    /*    */
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    IF bAufko.Auf_Text <> '' THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        RUN AUSGABE_GRUPPE ( 'Zusatztext' ).
-    END.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    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.
-    RELEASE AufGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufGKon.Firma
-        BY AufGKon.Aufnr:
-
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bAufko.Bar_Betr <> 0.00 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag', TRIM(STRING(bAufko.Bar_Betr  ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'   , TRIM(STRING(bAufko.Bar_Skonto,"->>>,>>9.99")) ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF bAufko.Firma = '2000' THEN RUN vpr_flushGroup ('Fusszeile').
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-        
-    IF bAufko.Firma = '2000' THEN 
-    DO:
-        RUN vpr_flushGroup('Fusstext').
-    END.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN FIND FIRST Bankst NO-ERROR.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation   ,
-        'Rechnungen'    ,
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-    ELSE 
-    DO:
-        iVPagePos = 930.
-        RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos).
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-
-    RUN vpr_NewPage.
-   
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bAufko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN vpr_flushGroup ( 'Adresse' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-/*     RUN vpr_EndDoc. */
-/*     RUN vpr_printDoc (0, 0). */
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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 ' '). */
-        /*    */
-        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(bAufko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    /*    IF bAufko.Abh_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = bAufko.Abh_Text.                             */
-    /*    END.                                                     */
-    /*    IF bAufko.Auf_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = cText                                        */
-    /*            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')*/
-    /*            + bAufko.Auf_Text.                               */
-    /*    END.                                                     */
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/california/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            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 = 'ZZZ'
-                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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            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 = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND ViperDoc NO-LOCK WHERE RECID(ViperDoc) = tParam.iVDRecid.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            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
-

+ 0 - 2165
GUI/DruckProgramme/california/Sav_Faktura.p

@@ -1,2165 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO. 
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  BesrArt/Verband */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* 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        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  NO-ERROR.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    iSprcd = bAdresse.Sprcd.
-    RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sSavko.dFakDat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-                ASSIGN  
-                    Savko.Fak_Datum = dFakDat
-                    Savko.Gedruckt  = TRUE.
-                RELEASE Savko.
-                RUN AUFTRAG_GEDRUCKT ( bSavko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST Debop NO-LOCK 
-        WHERE Debop.Firma = tSavko.Firma
-        AND   Debop.Knr   = tSavko.Fak_Knr
-        AND   Debop.Faknr = tSavko.Faknr NO-ERROR.
-    tSavko.Auf_Tot = Debop.Fakbetr.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Savze.MGeli,'->>,>>9')) ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Savze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-        
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Savze.WuCd
-        AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Savze.WuCd
-            TUmsGrp.Ansatz  = Savze.MWST%
-            tUmsGrp.lInkl   = Savze.MWSt_Inkl.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Faknr       = tParam.iFaknr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Savko.Firma
-                AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Savko.Faknr.
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr
-            sSavko.dFakDat  = Savko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nZNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nZMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nZBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto  AS DECIMAL   NO-UNDO.
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bSavko.Firma
-        AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 :
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND   SavGKon.Betrag  <> 0 :
-
-        FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-        IF NOT AVAILABLE tGebKto THEN 
-        DO:
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = SavGKon.Firma
-                AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            CREATE  tGebKto.
-            ASSIGN  
-                tGebKto.Sort_Cd = GebKonto.Sort_Cd
-                tGebKto.Geb_Cd  = GebKonto.Geb_Cd
-                tGebKto.Bez     = GebKonto.Bez
-                tGebKto.Preis   = SavGKon.Depot
-                tGebKto.MWST_Cd = SavGKon.MWSt_Cd.
-        END.
-        tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-        tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-        tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-        tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-    END.
-    RELEASE SavGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0)
-                  
-        BREAK BY SavGKon.Firma
-        BY SavGKon.Aufnr:
-
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(SavGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE SavGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', ' ' ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bSavko.Bar_Betr <> 0.00 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag', TRIM(STRING(bSavko.Bar_Betr  ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'   , TRIM(STRING(bSavko.Bar_Skonto,"->>>,>>9.99")) ).
-    END.
-    nFakBetr = nFakBetr - bSavko.Bar_Betr - bSavko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN 
-    DO:
-        FIND FIRST Bankst NO-ERROR.
-    END.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        EMPTY TEMP-TABLE tSavko.
-        CREATE tSavko.
-        FIND FIRST Debop NO-LOCK 
-            WHERE Debop.Firma = bSavko.Firma
-            AND   Debop.Knr   = bSavko.Fak_Knr
-            AND   Debop.Faknr = bSavKo.Faknr NO-ERROR.
-        BUFFER-COPY bSavko TO tSavko
-            ASSIGN  
-            tSavko.Auf_Tot = (IF AVAILABLE Debop THEN Debop.Fakbetr ELSE Rundbetr)
-            tSavko.lBetrag = TRUE.
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation,
-        'Rechnungen',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    iVPagePos = vpr_getPageVPos().
-
-    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').
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-    ELSE 
-    DO:
-        iVPagePos = 930.
-        RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos).
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bSavko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-/*     RUN vpr_EndDoc. */
-/*     RUN vpr_printDoc (0, 0). */
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bSavko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bSavko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-            Savko.Faknr = iFaknr.
-            RELEASE Savko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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 ' '). */
-        /*    */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'U_Ref'
-            tDokument.cInhalt = bSavko.U_Ref.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.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(bSavko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bSavko.Abh_Text <> '' THEN 
-    DO:
-        cText = bSavko.Abh_Text.
-    END.
-    IF bSavko.Auf_Text <> '' THEN 
-    DO:
-        cText = cText
-            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-            + bSavko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    FIND Steuer NO-LOCK
-        WHERE Steuer.Firma = cFirma NO-ERROR.
-    IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt.
-    
-    ASSIGN  
-        minPos     = 0
-        maxPos     = 9999
-        iPlusMinus = 0
-        jPlatz     = 0.
-            
-    /*  Kommentar zu Beginn eines Auftrages     */
-    lArtikel = FALSE.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = ''
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = 'ZZZ'
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = cSort
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = cLagort.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            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
-

+ 0 - 2199
GUI/DruckProgramme/oswald/Faktura.p

@@ -1,2199 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Bank/Verband    */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* 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        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  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.
-    RUN GET_FORMTEXT ( 'OSWALD', 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 = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Aufze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-        
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      /* OR
-           Aufko.Fak_Datum < TODAY  */ THEN sAufko.dFakDat = TODAY.
-        ELSE                                sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    /*     iVPagePos = vpr_getPageVPos(). */
-    /*     RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ). */
-    /*    */
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    IF bAufko.Auf_Text <> '' THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        RUN AUSGABE_GRUPPE ( 'Zusatztext' ).
-    END.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    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.
-    RELEASE AufGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufGKon.Firma
-        BY AufGKon.Aufnr:
-
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bAufko.Bar_Betr <> 0.00 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag', TRIM(STRING(bAufko.Bar_Betr  ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'   , TRIM(STRING(bAufko.Bar_Skonto,"->>>,>>9.99")) ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF bAufko.Firma = '2000' THEN RUN vpr_flushGroup ('Fusszeile').
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-        
-    IF bAufko.Firma = '2000' THEN 
-    DO:
-        RUN vpr_flushGroup('Fusstext').
-    END.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN FIND FIRST Bankst NO-ERROR.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation   ,
-        'Rechnungen'    ,
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-    ELSE 
-    DO:
-        iVPagePos = 930.
-        RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos).
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-
-    RUN vpr_NewPage.
-   
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bAufko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN vpr_flushGroup ( 'Adresse' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-/*     RUN vpr_EndDoc. */
-/*     RUN vpr_printDoc (0, 0). */
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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 ' '). */
-        /*    */
-        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(bAufko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    /*    IF bAufko.Abh_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = bAufko.Abh_Text.                             */
-    /*    END.                                                     */
-    /*    IF bAufko.Auf_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = cText                                        */
-    /*            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')*/
-    /*            + bAufko.Auf_Text.                               */
-    /*    END.                                                     */
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            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 = 'ZZZ'
-                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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            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 = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND ViperDoc NO-LOCK WHERE RECID(ViperDoc) = tParam.iVDRecid.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            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
-

+ 0 - 2197
GUI/DruckProgramme/oswald/LieferFak.p

@@ -1,2197 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Bank/Verband    */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* 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        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE').
-
-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.
-    CASE tParam.cFirma:
-        WHEN '1000' THEN RUN GET_FORMTEXT ( cInstallation, tParam.Template , iSprcd, OUTPUT cFormText ) NO-ERROR.
-        WHEN '2000' THEN RUN GET_FORMTEXT ( 'OSWALD'     , tParam.cDokument, iSprcd, OUTPUT cFormText ) NO-ERROR.
-    END CASE. 
-    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 = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Aufze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-        
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ?      /* OR
-           Aufko.Fak_Datum < TODAY  */ THEN sAufko.dFakDat = TODAY.
-        ELSE                                sAufko.dFakDat = Aufko.Fak_Datum.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-
-    RUN DRUCKEN_KOPF.
-
-    /*     iVPagePos = vpr_getPageVPos(). */
-    /*     RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ). */
-    /*    */
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-
-    IF bAufko.Auf_Text <> '' THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', ' ' ).
-        RUN AUSGABE_GRUPPE ( 'Zusatztext' ).
-    END.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    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.
-    RELEASE AufGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufGKon.Firma
-        BY AufGKon.Aufnr:
-
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Bez1', ' ').
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Bez1'  , TRIM(SUBSTRING(cFormText[18],21,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Betrag', FILL('_', 20)).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Bez1', ' ').
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Bez1'  , TRIM(SUBSTRING(cFormText[18],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Betrag', FILL('_', 20)).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Artikelzeile1', iArtZeile, 'Bez1', ' ').
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Gebindelrücknahmetablle  -------------------------------------------    */
-
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        cText = REPLACE(cText, CHR(10), '\par ').
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        RUN AUSGABE_GRUPPE ('GebindeRuecknahme').
-    END.
-    
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation       ,
-        'Rechnungen'        ,
-        STRING(bAufko.Knr   ,'999999'),
-        STRING(bAufko.Faknr ,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_SetPrinterAttrib('copies=1').
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-    ELSE 
-    DO:
-        iVPagePos = 930.
-        RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos).
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-
-    RUN vpr_NewPage.
-   
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bAufko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bAufko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN vpr_flushGroup ( 'Adresse' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-/*     RUN vpr_EndDoc. */
-/*     RUN vpr_printDoc (0, 0). */
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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 ' '). */
-        /*    */
-        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(bAufko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    /*    IF bAufko.Abh_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = bAufko.Abh_Text.                             */
-    /*    END.                                                     */
-    /*    IF bAufko.Auf_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = cText                                        */
-    /*            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')*/
-    /*            + bAufko.Auf_Text.                               */
-    /*    END.                                                     */
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            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 = 'ZZZ'
-                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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            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 = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND ViperDoc NO-LOCK WHERE RECID(ViperDoc) = tParam.iVDRecid.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        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 = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            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
-

+ 0 - 101
GUI/DruckProgramme/oswald/LieferPreis.p

@@ -1,101 +0,0 @@
-&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 cDruckProgramm  AS CHAR                     NO-UNDO.
-DEF VAR cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR cResult         AS CHAR                     NO-UNDO.
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ incl/ttsendmail.i   }
-
-/* _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).
-
-
-    tParam.lPreis       = TRUE.
-    tParam.cDokument    = 'Lieferschein'.
-    cInstallation       = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-    cDruckProgramm      = SUBSTITUTE('DruckProgramme/&1/&2',
-                                     cInstallation,
-                                     'Lieferschein.p' ).
-
-    cDruckProgramm      = DYNAMIC-FUNCTION ('getSearch':U, cDruckprogramm, '').
-    RUN VALUE(cDruckProgramm) (INPUT htParam, OUTPUT cResult ).
-    opcResult = cResult.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-

+ 0 - 1836
GUI/DruckProgramme/oswald/Lieferschein.p

@@ -1,1836 +0,0 @@
-&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 cInstallation AS CHAR   NO-UNDO.
-DEF VAR iBesrArt      AS INT    NO-UNDO.
-DEF VAR cBenutzer     AS CHAR   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/properties.i   }
-{ 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
-    FIELD dFakDat  AS DATE
-    .
-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 tRueckst LIKE tAufze
-    .
-
-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 lInkl    AS LOG
-    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.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-opcResult = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-cBenutzer     = DYNAMIC-FUNCTION('getBenutzer':U) NO-ERROR.
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.iKnr.
-    iSprcd = bAdresse.Sprcd.
-
-    RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sAufko.dFakDat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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, TOUR1  */
-
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF RETURN-VALUE = 'NOK' THEN LEAVE.
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        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:  <none>
-      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.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MGeli,'->>,>>9')) ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    IF NOT tParam.lPreis THEN RETURN.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99<') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-AUFTRAGSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSTEXT Procedure 
-PROCEDURE AUFTRAGSTEXT :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    IF bAufko.Auf_Text = '' THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', bAufko.Auf_Text ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr AS INT NO-UNDO.
-    
-    DEF BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-
-        FIND bDebst NO-LOCK
-            WHERE bDebst.Firma = Aufko.Firma
-            AND   bDebst.Knr   = Aufko.Knr NO-ERROR.
-        IF NOT AVAILABLE bDebst THEN NEXT.
-
-        iFaknr = Aufko.Aufnr.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Lief_Datum = ? THEN sAufko.dFakDat = TODAY.
-        ELSE                         sAufko.dFakDat = Aufko.Lief_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iPos    AS INT  NO-UNDO.
-    DEF VAR lArtnr  AS LOG  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  = ''.
-            lArtnr  = FALSE.
-        END.
-        cWerte  = cWerte 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + tDokument.cFeld.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1'  THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-            WHEN 'Artnr' THEN 
-                lArtnr = TRUE.
-        END CASE.
-
-        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().
-        IF lArtnr THEN iVPagePos = iVPagePos + 8.
-        iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
-        IF iPos > iMaxPos THEN 
-        DO:
-            RUN vpr_setPageVPos ( iMaxPos ).
-            RUN VIPER_NEUE_SEITE.
-            RUN DRUCKEN_ADRESSE.
-        END.
-
-        RUN vpr_setGroupVPos ('ArtikelZeile1', iVPagePos).
-        RUN vpr_FlushGroup   ('ArtikelZeile1').
-    END.
-    
-    iVPagePos = vpr_getPageVPos() + 10.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    
-    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:  <none>
-      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.
-    
-    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_setPageVPos  ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iVPagePos = vpr_getPageVPos().
-    CASE ipGruppe:
-        WHEN 'GebindeLieferung' THEN 
-            DO:
-                iSpace = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-                iSpace = iSpace + iVPagePos + 30.                
-                IF iSpace > iMaxPos THEN
-                DO:
-                    RUN vpr_setPageVPos  ( iMaxPos ).
-                    RUN VIPER_NEUE_SEITE.
-                    RUN DRUCKEN_ADRESSE.
-                END.
-                iVPagePos = vpr_getPageVPos().
-                iVPagePos = iVPagePos + 20.
-                RUN vpr_setPageVPos  ( iVPagePos ).
-                RUN vpr_setGroupVPos ('GebindeLieferungTitel', iVPagePos ).
-                RUN vpr_FlushGroup   ('GebindeLieferungTitel').
-                iVPagePos = vpr_getPageVPos().
-/*                RUN vpr_setGroupVPos ('GebindeLieferung',      iVPagePos ).*/
-            END.
-        WHEN 'GebindeRuecknahme' THEN
-            DO:
-                iSpace = DYNAMIC-FUNCTION ('calcBlock':U, ipGruppe) NO-ERROR.
-                iSpace = iSpace + iVPagePos + 50.                
-                IF iSpace > iMaxPos THEN 
-                DO:
-                    RUN vpr_setPageVPos  ( iMaxPos ).
-                    RUN VIPER_NEUE_SEITE.
-                    RUN DRUCKEN_ADRESSE.
-                END.
-                iVPagePos = vpr_getPageVPos().
-                iVPagePos = iVPagePos + 50.
-                RUN vpr_setPageVPos  ( iVPagePos ).
-/*                RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).*/
-/*                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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cText     AS CHAR NO-UNDO.
-    DEF VAR xString   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 nRabWert  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.
-    DEF VAR nPfli     AS DEC  EXTENT 12 NO-UNDO.
-    DEF VAR nMwst     AS DEC  EXTENT 12 NO-UNDO.
-    
-    DEF BUFFER bDebst FOR Debst.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    
-    IF tParam.lPreis THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Gebindelieferung  --------------------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        ii = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Ausgang <> 0
-            AND   AufGKon.Depot   <> 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.
-            ii = ii + 1.
-        END.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-    
-        IF ii > 0 THEN 
-        DO:    
-            nBetrag   = 0.
-            iArtZeile = 0.
-            ii        = 0.
-            FOR EACH AufGKon NO-LOCK
-                WHERE AufGKon.Firma    = bAufko.Firma
-                AND   AufGKon.Aufnr    = bAufko.Aufnr
-                AND   AufGKon.Ausgang <> 0 
-                AND   AufGKon.Depot   <> 0 
-                      
-                BREAK BY AufGKon.Firma
-                BY AufGKon.Aufnr:
-
-                iMwstCd = AufGKon.MWSt_Cd.
-                FIND LAST MwstAns NO-LOCK
-                    WHERE MwstAns.Mwst_Cd = iMwstCd
-                    AND   MwstAns.Datum  <= bAufko.Lief_Datum NO-ERROR.
-            
-                FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = cFirma
-                    AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-                ii = ii + 1.
-                IF ii MOD 2 = 1 THEN 
-                DO:
-                    iArtZeile = iArtZeile + 1.
-                    RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile,  'Gebindetext_L' , GebKonto.Bez ).
-                    RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile,  'GebindeGel_L'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-                END.
-                ELSE 
-                DO:
-                    RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile,  'Gebindetext_R' , GebKonto.Bez ).
-                    RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile,  'GebindeGel_R'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-                END.
-            END.
-            RELEASE AufGKon.
-            RELEASE GebKonto.
-        END.
-        
-        IF iArtZeile > 0 THEN 
-        DO:
-            RUN AUSGABE_GRUPPE ('GebindeLieferung').
-        END.
-    END.
-    
-    /*  Gebindelrücknahmetablle  -------------------------------------------    */
-        
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        cText = REPLACE(cText, CHR(10), '\par ').
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        RUN AUSGABE_GRUPPE ('GebindeRuecknahme').
-    END.
-    
-    /*     IF NOT FDebst.Geb_Rg THEN RUN SCHLUSSTEXT. */
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-
-    /*     IF cBenutzer <> 'ivana' THEN DO:     */
-    /*    IF cBenutzer <> '' THEN                                                            */
-    /*    DO:                                                                                */
-    /*        RUN vpr_SetWindowPos ( 20, 20, 725, 1000 ).                                    */
-    /*        RUN vpr_SetPreviewMode('preview').                                             */
-    /*        RUN vpr_ShowPreView.                                                           */
-    /*                                                                                       */
-    /*        MESSAGE 'Alles richtig und drucken? ' VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO*/
-    /*            UPDATE  lJa.                                                               */
-    /*                                                                                       */
-    /*        RUN vpr_HidePreView.                                                           */
-    /*                                                                                       */
-    /*        IF NOT lJa THEN RETURN 'NOK'.                                                  */
-    /*    END.                                                                               */
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation   ,
-        'Lieferscheine' ,
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Aufnr,'9999999'),
-        tParam.cDokument ).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Lieferscheine', cvpr_Dokument).
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    
-    FIND FIRST tParam.
-    iVPagePos = 1.
-
-    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_setGroupVPos ('Kopf', iVPagePos).*/
-    RUN vpr_FlushGroup   ('Kopf').
-
-    iVPagePos = iVPagePos + vpr_getGroupVPos('Kopf') + vpr_getGroupHeight ( 'Kopf' ) + 20.
-    
-    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_setGroupVPos ('Kopf', iVPagePos).
-        RUN vpr_FlushGroup   ('KopfDetail').
-        iVPagePos = vpr_getPageVPos() + 20.    
-    END.
-    ELSE iVPagePos = 930. 
-    
-    RUN vpr_setPageVPos  ( iVPagePos).
-    RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cText   AS CHAR NO-UNDO.
-    DEF VAR cString AS CHAR NO-UNDO.
-    DEF VAR ii      AS INT  NO-UNDO.
-    DEF VAR i1      AS INT  NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Aufnr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', bSteuer.Mwst_Nr ).
-        
-        IF bAufko.Adresse[05] <> '' THEN 
-        DO:
-            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].
-            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].
-            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").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9'))
-            + ' /'
-            + STRING(bAufko.Vertr,'zz9').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        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.
-
-        cString = ''.
-        FIND FIRST tTabTexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'TOUR1' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN cString = tTabTexte.cFeld1.
-        FIND FIRST tTabTexte NO-LOCK
-            WHERE tTabTexte.cRecArt = 'FAHRER' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN cString = cString
-                + (IF cString = '' THEN '' ELSE ' / ')
-                + tTabTexte.cFeld1.
-        
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Versand'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-        RUN vpr_Asc2RTF(tDokument.cInhalt, 'bold', OUTPUT tDokument.cInhalt ).
-        
-
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'I_Best'
-            tDokument.cInhalt = TRIM(bAufko.I_Best).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bAufko.Abh_Text <> '' THEN 
-    DO:
-        cText = bAufko.Abh_Text.
-    END.
-    IF bAufko.Auf_Text <> '' THEN 
-    DO:
-        cText = cText
-            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-            + bAufko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 30.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE   ( '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:  <none>
-      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.
-    DEF VAR cSort      AS CHAR 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 = ''
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = 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 = 'ZZZ'
-                tAufze.Sort2 = ''
-                tAufze.Sort3 = STRING(iPlusMinus  ,'9')
-                                  + STRING(tAufze.Pos  ,'99999').
-            tAufze.LagOrt = ''.
-        END.
-    END.
-    
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = 'Artikel'.
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            tAufze.Sort2 = ''
-            tAufze.Sort3 = STRING(iPlusMinus   ,'9')
-                              + STRING(tAufze.Pos  ,'99999').
-        tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SCHLUSSTEXT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHLUSSTEXT Procedure 
-PROCEDURE SCHLUSSTEXT :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = 'DOK' + STRING(bAufko.Fak_Art,'99')
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    
-    IF NOT AVAILABLE TabTexte THEN RETURN.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1', TabTexte.Inhalt ).
-    RUN AUSGABE_GRUPPE  ( 'Zusatztext' ).
-    
-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:  <none>
-      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:  <none>
-      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:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.Template + '.vfr'.
-
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1,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_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2780.
-    
-/*    DYNAMIC-FUNCTION('fillFormular':U) NO-ERROR.*/
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR iPos AS INT NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    RUN vpr_initGraphObj.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = BAufko.Firma
-        AND   AufGKon.Aufnr    = BAufko.Aufnr NO-LOCK:
-        IF AufGKon.Eingang = 0  AND
-            AufGKon.Ausgang = 0  THEN NEXT.
-
-        FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = AufGKon.Geb_Cd NO-ERROR.
-        IF NOT AVAILABLE tGebKto THEN 
-        DO:
-            FIND GebKonto USE-INDEX GebKonto-k1
-                WHERE GebKonto.Firma  = AufGKon.Firma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd NO-LOCK.
-            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
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHAR):
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RUN vpr_InitGroups(ipGruppe).
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-fillFormular) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fillFormular Procedure 
-FUNCTION fillFormular RETURNS LOGICAL
-    (  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Artnr_T'       , ENTRY( 1, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_Menge_T'  , ENTRY( 2, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'VGeb_T'        , ENTRY( 3, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_Menge_T'  , ENTRY( 4, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'KGeb_T'        , ENTRY( 5, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Bez_T'         , ENTRY( 6, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Alk%_T'        , ENTRY( 7, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'JG_T'          , ENTRY( 8, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Preis_T'       , ENTRY( 9, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'Betrag_T'      , ENTRY(10, cFormText[23], ';') ).
-    RUN vpr_SetGroupText ( 'Ueberschrift', 'MC_T'          , ENTRY(11, cFormText[23], ';') ).
-
-    RUN vpr_SetGroupText ( 'Kopf'        , 'Seite_T'       , ENTRY( 2, cFormText[24], ';') ).
-
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Knr_T'         , ENTRY( 1, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Bestellt_T'    , ENTRY( 2, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Geliefert_T'   , ENTRY( 3, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Versand_T'     , ENTRY( 4, cFormText[20], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'URef_T'        , ENTRY( 1, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Telefon_T'     , ENTRY( 2, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'Gewicht_T'     , ENTRY( 3, cFormText[19], ';') ).
-    RUN vpr_SetGroupText ( 'KopfDetail'  , 'IBest_T'       , ENTRY( 4, cFormText[19], ';') ).
-    
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeText_T' , ENTRY( 1, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeGel_T'  , ENTRY( 2, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeRet_T'  , ENTRY( 3, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeSaldo_T', ENTRY( 4, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeBetr_T' , ENTRY( 5, cFormText[25], ';') ).
-    RUN vpr_SetGroupText ( 'GebindeTitel', 'GebindeTot_T'  , ENTRY( 6, cFormText[25], ';') ).
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 39
GUI/DruckProgramme/oswald/Mail-Rechnung-1.html

@@ -1,39 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="iso8859-1">
-<title>Rechnung</title>
-</head>
-
-<body>
-
-&1,<br><br>
-für Ihre Unterlagen erhalten Sie anbei die Rechnung &2 im PDF-Format.<br>
-Um diese betrachten und ggf. ausdrucken zu können, ist ein PDF-Viewer wie der Adobe Acrobat Reader erforderlich. 
-Diesen können Sie sich kostenlos in der aktuellen Version aus dem Internet installieren.<br><br><br>
-Mit freundlichen Grüssen<br><br>
-
--------------------------------------------------------------<br>
-Oswald Getränke AG<br>
-California<br>
-CH-7130 Ilanz<br><br>
-
-<table width="400" border="0" cellspacing="0" cellpadding="0">
-  <tbody>
-    <tr>
-      <td>Tel.:</td>
-      <td>081 925.61.61</td>
-    </tr>
-    <tr>
-      <td>Fax:</td>
-      <td>081 925.61.64</td>
-    </tr>
-    <tr>
-      <td>Mail:</td>
-      <td>bestellung@oswaldag.ch</td>
-    </tr>
-  </tbody>
-</table>
-
-</body>
-</html>

+ 0 - 1211
GUI/DruckProgramme/oswald/Offerte.p

@@ -1,1211 +0,0 @@
-&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 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/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.
-            
-    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.
-        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.
-            
-            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:  <none>
-  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 'D',
-                           INPUT iZeile, INPUT Aufze.Bez1 ).
-        IF Aufze.Bez2 = '' THEN RETURN.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           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 'A',
-                       INPUT iZeile, INPUT KGebinde.KBez ).
-    IF Aufze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>')
-                + 'x '
-                + STRING(VGebinde.KBez,'x(10)').
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
-                           INPUT iZeile, INPUT cString ).
-    END.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(Aufze.MGeli,'->>>>>9') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT Aufze.Bez1 ).
-    IF Aufze.Jahr > 9 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                           INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
-    IF Aufze.Alk_Gehalt <> 0 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'F',
-                           INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
-                       INPUT iZeile, INPUT STRING(Aufze.Artnr,'999999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                       INPUT iZeile, INPUT STRING(Aufze.Preis,'>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                       INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    IF Aufze.Bez2 <> '' THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Bez2 ).
-    END.
-    IF Aufze.Aktion THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Aktion_Text ).
-    END.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    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.
-    
-    /*  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 5.
-    
-    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.
-    
-    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   = bAdresse.Sprcd.
-
-    IF bAufko.Adresse[05] <> '' THEN DO:
-        DO ii = 1 TO 5:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAufko.Adresse[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-    ELSE DO:
-        DO ii = 7 TO 11:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAdresse.Anschrift[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-
-    cDaten  = STRING(dFakDatum,'99.99.9999').
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT cDaten ).
-
-    iZeile = iZeile + 3.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    iZeile = 21.
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 1.    
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, TRIM(SUBSTRING(cFormText[15],21,20)) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,'->>>>>9.99')) ).
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-               WHERE Kondi.Kond  = bAufko.Kond
-               AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, Kondi.Kotext ).
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR lRetVal     AS LOG                      NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-
-    cVorlage = tParam.Template + CHR(01) + tParam.Template.
-    RUN CREATEDATEI ( INPUT cVorlage ).
-
-    cVorlage = SESSION:TEMP-DIR + tParam.Template.
-    RUN OPENEXCEL ( INPUT hExcel,
-                    INPUT cVorlage,
-                    INPUT '',
-                    OUTPUT lRetVal ).
-    IF NOT lRetVal THEN DO:
-        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:  <none>
-  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:  <none>
-  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.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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(iMwstCd,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        nFakBetr = nFakBetr + nZTot.
-    END.
-    
-    iZeile = iZeile + 2.
-    cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-
-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:  <none>
-  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:  <none>
-  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 = MWSTAns.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(ix,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-    
-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:  <none>
-  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 'D',
-                           INPUT iZeile,    INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2212
GUI/DruckProgramme/oswald/SammelRechnung.p

@@ -1,2212 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Besrart/Verband */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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       = tParam.Anzahl
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  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.
-    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 = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Aufze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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 Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                    Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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-AUSGABE_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure 
-PROCEDURE AUSGABE_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER 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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:     Super Override                                                 */
-    /*  Parameters:                                                                 */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    Rundcode = (IF bAufko.Frw = 'CHF' THEN 1 ELSE 0). 
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.    
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bAufko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN vpr_flushGroup ( 'Adresse' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN vpr_InitGroups('').
-        /*        IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile,  'Bez_LSText' , TRIM(SUBSTRING(cFormText[15],41,20)) ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , 'Total' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        IF tTotale.nSammTot > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-            IF Kondi.Skonto[01] <> 0 THEN 
-            DO:
-                Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-                RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-                RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-            END.
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF Bankst.QR-IBAN <> '' THEN 
-    DO:
-        FIND FIRST tAufko NO-ERROR.
-        IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-        BUFFER-COPY bAufko TO tAufko.
-        ASSIGN
-            tAufko.lBetrag = (IF nFakBetr > 0 THEN TRUE ELSE FALSE)
-            tAufko.Auf_Tot = nFakBetr.
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation,
-        'Rechnungen',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1         /* OR
-       iSeite > iOldSeite */ THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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(bAufko.Faknr,'z999999'). */
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            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 = 'ZZZ'
-                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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            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 = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.cDokument).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            RUN vpr_initGraphObj.
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            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
-

+ 0 - 2165
GUI/DruckProgramme/oswald/Sav_Faktura.p

@@ -1,2165 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO. 
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  BesrArt/Verband */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* 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        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  NO-ERROR.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    iSprcd = bAdresse.Sprcd.
-    RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, 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 = sSavko.dFakDat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-                ASSIGN  
-                    Savko.Fak_Datum = dFakDat
-                    Savko.Gedruckt  = TRUE.
-                RELEASE Savko.
-                RUN AUFTRAG_GEDRUCKT ( bSavko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST Debop NO-LOCK 
-        WHERE Debop.Firma = tSavko.Firma
-        AND   Debop.Knr   = tSavko.Fak_Knr
-        AND   Debop.Faknr = tSavko.Faknr NO-ERROR.
-    tSavko.Auf_Tot = Debop.Fakbetr.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Savze.MGeli,'->>,>>9')) ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Savze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-        
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Savze.WuCd
-        AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Savze.WuCd
-            TUmsGrp.Ansatz  = Savze.MWST%
-            tUmsGrp.lInkl   = Savze.MWSt_Inkl.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Faknr       = tParam.iFaknr :
-
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Savko.Firma
-                AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-
-        iFaknr = Savko.Faknr.
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr
-            sSavko.dFakDat  = Savko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nZNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nZMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nZBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto  AS DECIMAL   NO-UNDO.
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bSavko.Firma
-        AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 :
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND   SavGKon.Betrag  <> 0 :
-
-        FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-        IF NOT AVAILABLE tGebKto THEN 
-        DO:
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = SavGKon.Firma
-                AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            CREATE  tGebKto.
-            ASSIGN  
-                tGebKto.Sort_Cd = GebKonto.Sort_Cd
-                tGebKto.Geb_Cd  = GebKonto.Geb_Cd
-                tGebKto.Bez     = GebKonto.Bez
-                tGebKto.Preis   = SavGKon.Depot
-                tGebKto.MWST_Cd = SavGKon.MWSt_Cd.
-        END.
-        tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-        tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-        tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-        tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-    END.
-    RELEASE SavGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0)
-                  
-        BREAK BY SavGKon.Firma
-        BY SavGKon.Aufnr:
-
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(SavGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE SavGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1        = i1        + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', ' ' ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    IF bSavko.Bar_Betr <> 0.00 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Barbetrag', TRIM(STRING(bSavko.Bar_Betr  ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto'   , TRIM(STRING(bSavko.Bar_Skonto,"->>>,>>9.99")) ).
-    END.
-    nFakBetr = nFakBetr - bSavko.Bar_Betr - bSavko.Bar_Skonto.
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN 
-    DO:
-        FIND FIRST Bankst NO-ERROR.
-    END.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        EMPTY TEMP-TABLE tSavko.
-        CREATE tSavko.
-        FIND FIRST Debop NO-LOCK 
-            WHERE Debop.Firma = bSavko.Firma
-            AND   Debop.Knr   = bSavko.Fak_Knr
-            AND   Debop.Faknr = bSavKo.Faknr NO-ERROR.
-        BUFFER-COPY bSavko TO tSavko
-            ASSIGN  
-            tSavko.Auf_Tot = (IF AVAILABLE Debop THEN Debop.Fakbetr ELSE Rundbetr)
-            tSavko.lBetrag = TRUE.
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation,
-        'Rechnungen',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    iVPagePos = vpr_getPageVPos().
-
-    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').
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-    ELSE 
-    DO:
-        iVPagePos = 930.
-        RUN vpr_setGroupVPos ('Ueberschrift', iVPagePos).
-        RUN vpr_FlushGroup   ('Ueberschrift').
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER bViperDoc FOR ViperDoc.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    FIND bViperDoc NO-LOCK
-        WHERE bViperDoc.Firma    = bSavko.Firma
-        AND   bViperDoc.Benutzer = ''
-        AND   bViperDoc.Formular = ipDokument
-        AND   bViperDoc.DokArt   = 0 NO-ERROR.
-    
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF bViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", bViperDoc.Schacht_Besr ).
-    
-    RELEASE bViperDoc.
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    cFeld = ''.
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bSavko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-    
-/*     RUN vpr_EndDoc. */
-/*     RUN vpr_printDoc (0, 0). */
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bSavko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bSavko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-            Savko.Faknr = iFaknr.
-            RELEASE Savko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(iFaknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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 ' '). */
-        /*    */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'U_Ref'
-            tDokument.cInhalt = bSavko.U_Ref.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.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(bSavko.Gewicht,'->>>,>>9.999')).
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    IF bSavko.Abh_Text <> '' THEN 
-    DO:
-        cText = bSavko.Abh_Text.
-    END.
-    IF bSavko.Auf_Text <> '' THEN 
-    DO:
-        cText = cText
-            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')
-            + bSavko.Auf_Text.
-    END.
-    IF cText = '' THEN RETURN.
-    
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'ZusatzText'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bemerkung_1'
-        tDokument.cInhalt = cText.
-    
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).
-    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    FIND Steuer NO-LOCK
-        WHERE Steuer.Firma = cFirma NO-ERROR.
-    IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt.
-    
-    ASSIGN  
-        minPos     = 0
-        maxPos     = 9999
-        iPlusMinus = 0
-        jPlatz     = 0.
-            
-    /*  Kommentar zu Beginn eines Auftrages     */
-    lArtikel = FALSE.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = ''
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = 'ZZZ'
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = cSort
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = cLagort.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.Template).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            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
-

+ 0 - 2131
GUI/DruckProgramme/oswald/Sav_SammelRechnung.p

@@ -1,2131 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO. 
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  BesrArt/Verband */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 41.05
-         WIDTH              = 100.4.
-/* 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
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U)
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_ERPDOKUMENTE')
-    cPathQRCodes  = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.cFirma, 'GEMIS_QRCODE'      )  NO-ERROR.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-    
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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 = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-            AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-            AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-            BREAK BY bSavko.Fak_Knr
-            BY bSavko.Samm_Nr
-            BY bSavko.Knr
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            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   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-                Savko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Savko.Fak_Art THEN Savko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Savko.Auf_Sta THEN Savko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Savko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/oswald/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST Debop NO-LOCK 
-        WHERE Debop.Firma = tSavko.Firma
-        AND   Debop.Knr   = tSavko.Fak_Knr
-        AND   Debop.Faknr = tSavko.Faknr NO-ERROR.
-    tSavko.Auf_Tot = Debop.Fakbetr.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Savze.MGeli,'->>,>>9')) ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Savze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Savze.WuCd
-        AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Savze.WuCd
-            TUmsGrp.Ansatz  = Savze.MWST%
-            tUmsGrp.lInkl   = Savze.MWSt_Inkl.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Faknr       = tParam.iFaknr 
-            
-        BREAK BY Savko.Fak_Knr
-        BY Savko.Samm_Nr
-        BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Savko.Firma
-                AND   bDebst.Knr   = Savko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma    = Savko.Firma
-            sSavko.iAufnr    = Savko.Aufnr
-            sSavko.iFak_Knr  = Savko.Fak_Knr
-            sSavko.iKnr      = Savko.Knr
-            sSavko.iSamm_Nr  = Savko.Samm_Nr
-            sSavko.iRecid    = RECID(Savko)
-            sSavko.iFaknr    = Savko.Faknr
-                
-            tParam.dFakDatum = Savko.Fak_Datum.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Bez1' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bSavko.Firma
-        AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-                
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],21,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[19],01,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bSavko.Knr = bSavko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[10],41,20)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 NO-LOCK:
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(SavGKon.MWSt_Cd,"z9")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.    
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[15],21,20))   ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[14],01,20))   ).
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    /*    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-    RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '996665000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + '0'
-        + STRING(bSavko.Faknr  ,'9999999')
-        + ' '.
-    PZTNNummer = '01000530'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_NewPage.
-        RUN vpr_InitGroups('').
-        /*        IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile,  'Bez_LSText' , TRIM(SUBSTRING(cFormText[15],41,20)) ).
-    RUN AUSGABE_GRUPPE  ( 'FetteZeile' ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , 'Total' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN 
-    DO:
-        FIND FIRST Bankst NO-ERROR.
-    END.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        FIND FIRST Debop NO-LOCK 
-            WHERE Debop.Firma = bSavko.Firma
-            AND   Debop.Knr   = bSavko.Fak_Knr
-            AND   Debop.Faknr = bSavKo.Faknr NO-ERROR.
-        FIND FIRST tSavko NO-ERROR.
-        IF NOT AVAILABLE tSavko THEN CREATE tSavko.
-        BUFFER-COPY bSavko TO tSavko
-            ASSIGN  
-            tSavko.Auf_Tot = (IF AVAILABLE Debop THEN Debop.Fakbetr ELSE Rundbetr)
-            tSavko.lBetrag = TRUE.
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cInstallation,
-        'Rechnungen',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1         /* OR
-       iSeite > iOldSeite */ THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        RUN VIPER_CREATE_DOKUMENT ( 'Kopf', 1, 'MWST_T', Steuer.Mwst_Nr ).
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bSavko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = ''
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = 'ZZZ'
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos  ,'9999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = cSort
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos  ,'9999').
-        tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.lCreatePDF THEN cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_logo.vfr'.
-        ELSE                      cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.cDokument).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            /*            IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-            RUN vpr_initGraphObj.
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            LEAVE.
-        END.
-        
-        RUN vpr_NewPage.
-        RUN vpr_InitGroups('').
-        IF tParam.Schacht_Original > 0 AND
-            iLauf = 1                   THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        IF tParam.Schacht_Kopie    > 0 AND
-            iLauf > 1                   THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        RUN vpr_initGraphObj.
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 1568
GUI/DruckProgramme/realwines/Faktura.p

@@ -1,1568 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast          AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis         AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr       AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum      AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale        AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext      AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf      AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl       AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr       AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode       AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte     AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko         AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cExcelDocument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cVPRDocument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cPDFDocument   AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cInstallation  AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cFileName      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lJa            AS LOGICAL   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-DEFINE VARIABLE hExcel AS COMPONENT-HANDLE NO-UNDO.
-DEFINE VARIABLE cZelle AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE iZeile AS INTEGER          NO-UNDO.
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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 = ''.
-cInstallation = DYNAMIC-FUNCTION ('getInstallation':U) NO-ERROR.
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma        = tParam.cFirma
-    iAnzDok       = 1
-    cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, cFirma, 'GEMIS_QRCODE' ) NO-ERROR.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-    
-FIND FIRST tParam.
-    
-FOR EACH sAufko
-    BY sAufko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sAufko.iFak_Knr.
-    iSprcd = (IF bAdresse.Sprcd = 1 THEN 1 ELSE 4).
-
-    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 = sAufko.dFakDat.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        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    = FDebst.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.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER 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.Preis,'>>>>>9.99')) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-        INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
-        INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    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.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-            INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF  Aufze.Rab_Art = 2    OR
-            Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-            INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-            INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-            INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        
-        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   = iFaknr.
-        IF Aufko.Fak_Datum = ? THEN 
-        DO:
-            sAufko.dFakDat = TODAY.
-            REPEAT TRANSACTION:
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Fak_Datum = sAufko.dFakDat.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        ELSE sAufko.dFakDat = Aufko.Fak_Datum.
-    END.
-    
-    /*  Alle Auftragstotale aller Lieferscheine neu rechnen     */
-    
-    FOR EACH sAufko:
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma       = sAufko.cFirma
-            AND   bAufko.Faknr       = sAufko.iFaknr
-            AND   bAufko.Fak_Knr     = sAufko.iFak_Knr:
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE cDaten    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lInkl     AS LOGICAL   NO-UNDO.
-    DEFINE VARIABLE cTel      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetVal   AS LOGICAL   NO-UNDO.
-    DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDrucker  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDevices  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 10.
-    
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Fak_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).
-
-    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.
-
-    iZeile = 22.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT STRING(dFakDatum,'99.99.9999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
-        INPUT iZeile, INPUT STRING(TODAY,'99.99.9999') ).
-
-    iZeile = 18.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = 20.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT TRIM(STRING(bAufko.Aufnr,'>>>>>>>9')) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-        INPUT iZeile, INPUT bAufko.I_Best ).
-
-    iZeile = 21.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-        INPUT iZeile, INPUT TRIM(STRING(bAufko.Fak_Knr,'>>>>>>9')) ).
-    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.
-
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-        INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-        INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = bAdresse.Sprcd NO-LOCK NO-ERROR.
-    IF NOT AVAILABLE KOndi THEN 
-    DO:
-        FIND Kondi USE-INDEX Kondi-k1
-            WHERE Kondi.Kond  = bAufko.Kond
-            AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    END.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-            INPUT iZeile, Kondi.Kotext ).
-    END.
-    
-    hExcel:ActiveWorkbook:SAVE( ).
-    
-    /*     hExcel:ActiveWorkbook:CLOSE( TRUE ). */
-    
-    DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT hExcel ).
-
-    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.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko.
-    tAufko.lBetrag = (IF tAufko.Auf_Tot > 0 THEN TRUE ELSE FALSE).
-    RUN DRUCKEN_QRCODE.
-    cRetValue = RETURN-VALUE.
-    
-    RUN vpr_EndDoc.
-    
-    IF cRetValue <> '' THEN RETURN.
-    
-    cFileName = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument ).
-    cVPRDocument = SUBSTITUTE(cERPDokumente,
-        cFileName ) .
-    RUN vpr_saveDoc ( cVPRDocument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFDocument = REPLACE(cVPRDocument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cVPRDocument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFDocument ).
-    END.
-    
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE o-i AS i NO-UNDO.
-        FILE-INFO:FILE-NAME = cPDFDocument.
-        cPDFDocument = FILE-INFO:FULL-PATHNAME.
-        RUN ShellExecuteA (0,
-            "open",
-            cPDFDocument,
-            "",
-            "",
-            0,
-            OUTPUT o-i).
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/realwines/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    IF tAufko.Auf_Tot <= 0 THEN RETURN 'NULL'.
-    
-    FIND FIRST tParam.
-    cPathQRCodes = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_QRCODE')   NO-ERROR.
-    cWerbung     = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'WERBUNG_QRCODE') NO-ERROR.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN 'NULL'.
-    
-    RUN vpr_ResetDoc.
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_setDocTitle     ( SUBSTITUTE('QRCODE_Knr-&1_Faknr-&2.pdf':U, STRING(tAufko.Knr,'999999'), STRING(tAufko.Faknr,'9999999')) ).
-    RUN vpr_SetDelimiter    (CHR(01)).
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-    
-    RETURN ''.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cVorlage  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cPfad     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetVal   AS LOG       NO-UNDO.
-    DEFINE VARIABLE xTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xSprcd    AS INTEGER   NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-    
-    xSprcd = (IF iSprcd <> 1 THEN 2 ELSE 1).
-    
-    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(xSprcd,'99'), bAufko.Frw ).
-    xDokument = SUBSTITUTE(tParam.Template, STRING(bAufko.Faknr ,'999999'), STRING(bAufko.Knr,'999999'), bAufko.Frw ).
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDaten  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lTotal  AS LOG       NO-UNDO.
-    DEFINE VARIABLE nBetrag AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i2      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iMwstCd AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZTot   AS DECIMAL   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],41,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:  <none>
-      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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cDaten   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cMwst    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nTotMwst AS DECIMAL   NO-UNDO.
-    
-    iZeile   = iZeile + 1.
-    nTotMwst = 0.
-    DO ix = 1 TO 11:
-        IF bAufko.Wpfl[ix] = 0 THEN NEXT.
-        FIND LAST MWSTAns NO-LOCK USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= BAUfko.Kond_Datum .
-        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 ).
-        nMwst = (IF bAufko.Wust[ix] <> 0 THEN bAufko.Wust[ix]
-        ELSE bAufko.Wpfl[ix] / (100 + MWSTAns.Ansatz) * MWSTAns.Ansatz).
-        cDaten = TRIM(STRING(nMwst,"->>,>>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].
-        nTotMwst = nTotMwst + bAufko.Wust[ix].
-        IF ix < 8 THEN nTotMwst = nTotMwst + 1.
-    END.
-    
-    Rundbetr  = nFakBetr.
-    Rundcode  = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr  = Rundbetr.
-
-    iZeile = iZeile + 2.
-    cDaten = (IF nTotMwst = 0 THEN TRIM(SUBSTRING(cFormText[16],41)) ELSE TRIM(SUBSTRING(cFormText[16],01,40)) ).
-    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-SUMMENRABATTE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SUMMENRABATTE Procedure 
-PROCEDURE SUMMENRABATTE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE RText    AS CHARACTER FORMAT "x(20)" NO-UNDO.
-    DEFINE VARIABLE WText    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDaten   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lTotal   AS LOG       NO-UNDO.
-    DEFINE VARIABLE lRabatt  AS LOG       NO-UNDO.
-    DEFINE VARIABLE iPlus    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd  AS INTEGER   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
-

+ 0 - 2102
GUI/DruckProgramme/realwines/Faktura_pdf.p

@@ -1,2102 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE dMwstDatum    AS DATE      NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Bank/Verband    */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-opcResult = ''.
-
-EMPTY TEMP-TABLE tParam.
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-ASSIGN  
-    cFirma        = tParam.cFirma
-    iAnzDok       = tParam.Anzahl
-    lPreis        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U) 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 FIRST tParam.
-
-    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.Template, iSprcd,
-        OUTPUT cFormText ) NO-ERROR.
-    cRabText =   TRIM(SUBSTRING(cFormText[04],01,20)).
-    cZusText =   TRIM(SUBSTRING(cFormText[04],21,20)).
-    cEpzText =   TRIM(SUBSTRING(cFormText[04],41,20)).
-        
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = sAufko.dFakDat.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tAufko     .
-                
-            CREATE tAufko.
-            BUFFER-COPY bAufko TO tAufko
-                ASSIGN  
-                tAufko.lBetrag = TRUE.
-                
-            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.
-        
-            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.
-                
-            RUN FUELLEN_tAufze ( bAufko.Aufnr ) NO-ERROR.
-            
-            dMwstDatum = (IF bAufko.Lief_Datum <> ? THEN bAufko.Lief_Datum ELSE bAufko.Kond_Datum).
-            IF dMwstDatum = ? THEN dMwstDatum = bAufko.Fak_Datum.
-            IF dMwstDatum = ? THEN dMwstDatum = TODAY. 
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-
-            /*  Auftragskopf mutieren       */
-
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Beschreibung'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr,"999999") ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Aufze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = TRIM(STRING(Aufze.VGeb_Me,'->>>')
-            + 'x '
-            + STRING(VGebinde.KBez,'x(10)')).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGeb_Menge', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Aufze.MBest,'->>,>>9')) ).
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGeb_Bez', KGebinde.Kbez ).
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis'   , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'  , STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'      , STRING(Aufze.WuCd    ,'z9') ).
-    
-        
-    /*    IF Aufze.Rab_Betr <> 0 THEN                                                                                          */
-    /*    DO:                                                                                                                  */
-    /*        iArtZeile = iArtZeile + 1.                                                                                       */
-    /*        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).                                                                            */
-    /*        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.                                                                   */
-    /*        ELSE                                                                                                             */
-    /*        DO:                                                                                                              */
-    /*            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.                                                              */
-    /*            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.                                                              */
-    /*        END.                                                                                                             */
-    /*        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', TRIM(xRabText) ).                        */
-    /*                                                                                                                         */
-    /*        IF  Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").                                               */
-    /*        IF  Aufze.Rab_Art = 2    OR                                                                                      */
-    /*            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).*/
-    /*    END.                                                                                                                 */
-    
-    /*    DO WHILE TRUE:                                                                                                       */
-    /*        IF Aufze.Zus_Betr = 0 THEN LEAVE.                                                                                */
-    /*                                                                                                                         */
-    /*        iArtZeile = iArtZeile + 1.                                                                                       */
-    /*        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).                                                                           */
-    /*        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.                                                                   */
-    /*        ELSE                                                                                                             */
-    /*        DO:                                                                                                              */
-    /*            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.                                                              */
-    /*            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.                                                              */
-    /*        END.                                                                                                             */
-    /*        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', TRIM(xRabText) ).                        */
-    /*                                                                                                                         */
-    /*        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").                                                */
-    /*        IF Aufze.Zus_Art = 2    OR                                                                                       */
-    /*            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).*/
-    /*        LEAVE.                                                                                                           */
-    /*    END.                                                                                                                 */
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-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:     Super Override                                                 */
-    /*  Parameters:                                                                 */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iBisKnr     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iAufnr      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE dLief_Datum AS DATE      NO-UNDO.
-
-    DEFINE VARIABLE cWhere      AS CHARACTER NO-UNDO.    
-    DEFINE VARIABLE hQuery      AS HANDLE    NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    CREATE QUERY hQuery.
-    hQuery:SET-BUFFERS (BUFFER Aufko:HANDLE).
-    
-    IF tParam.iVerband > 0 THEN 
-    DO:
-        FIND Aufko NO-LOCK 
-            WHERE Aufko.Firma = tParam.cFirma
-            AND   Aufko.Aufnr = tParam.iAufnr.
-        IF tParam.iVonKnr > 0 THEN 
-        DO:
-            cWhere = 'FOR EACH Aufko NO-LOCK '
-                + 'WHERE Aufko.Firma      = &1 '
-                + 'AND   Aufko.Fak_Art    = &2 '
-                + 'AND   Aufko.Ku_Grp     = &3 '
-                + 'AND   Aufko.Lief_Datum = &4 '.
-            cWhere = SUBSTITUTE(cWhere,
-                QUOTER(Aufko.Firma), Aufko.Fak_Art, Aufko.Ku_Grp, Aufko.Lief_Datum).
-        END.
-        ELSE 
-        DO:
-            cWhere = 'FOR EACH Aufko NO-LOCK '
-                + 'WHERE Aufko.Firma      = &1 '
-                + 'AND   Aufko.Aufnr      = &2 '.
-            cWhere = SUBSTITUTE(cWhere,
-                QUOTER(Aufko.Firma), Aufko.Aufnr).
-        END.
-    END.
-
-    hQuery:QUERY-PREPARE (cWhere).
-    hQuery:QUERY-OPEN () NO-ERROR.
-    hQuery:GET-FIRST  () NO-ERROR.
- 
-    DO WHILE NOT hQuery:QUERY-OFF-END:
-        
-        /*        IF iSprcd > 0 THEN                          */
-        /*        DO:                                         */
-        /*            FIND Adresse NO-LOCK                    */
-        /*                WHERE Adresse.Firma = AdFirma       */
-        /*                AND   Adresse.Knr   = Aufko.Fak_Knr.*/
-        /*            IF Adresse.Sprcd <> iSprcd THEN         */
-        /*            DO:                                     */
-        /*                hQuery:GET-NEXT () NO-ERROR.        */
-        /*                NEXT.                               */
-        /*            END.                                    */
-        /*        END.                                        */
-        
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ) NO-ERROR.
-                IF  iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE
-                        'Es konnten keine Rechnungsnummern gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                IF bAufko.Fak_Datum = ? THEN bAufko.Fak_Datum = TODAY.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF Aufko.Fak_Datum = ? THEN sAufko.dFakDat = TODAY.
-        ELSE                        sAufko.dFakDat = Aufko.Fak_Datum.
-        
-        hQuery:GET-NEXT () NO-ERROR.
-    END.
-
-    hQuery:QUERY-CLOSE ().
-    DELETE OBJECT hQuery NO-ERROR.
-    /*  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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Beschreibung' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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 <> '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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:     Super Override                                                 */
-    /*  Parameters:                                                                 */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    IF tParam.iVerband = 3 THEN cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_MNC_PDF'      ) NO-ERROR.
-    ELSE                        cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_RECHNUNG_PDF' ) NO-ERROR.
-
-    nFakBetr = 0.
-    iSeite   = 0.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bAufko.Firma
-        AND   bDebst.Knr   = bAufko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-    
-    FIND bAdresse NO-LOCK 
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-    iSprcd = bAdresse.Sprcd.
-    IF  iSprcd <> 1 AND
-        iSprcd <> 4 THEN iSprcd = 1.
-
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    RUN DRUCKEN_KOPF.
-    
-    IF  bAufko.Knr <> bAufko.Fak_Knr AND
-        bAufko.Fak_Knr > 0           THEN
-    DO:
-        iVPagePos = vpr_getPageVPos().
-        RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ).
-
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , cFormText[23] ).
-        RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-        
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAUfko.Knr.
-        
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1'  , LAdresse.Anzeig_Br ).
-/*        DO i1 = 1 TO 12:                                                                                   */
-/*            IF LAdresse.Anschrift[i1] = '' THEN NEXT.                                                      */
-/*            iArtZeile = iArtZeile + 1.                                                                     */
-/*            RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1'  , LAdresse.Anschrift[i1] ).*/
-/*        END.                                                                                               */
-        RUN AUSGABE_GRUPPE ( 'Zusatztext' ).
-    END.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos + 50 ).
-    
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[03],01,40)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[05],01,40)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[06],01,40)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= dMwstDatum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'      , TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'          , STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[06],01,40)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'      , TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    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.
-    RELEASE AufGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0 OR AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufGKon.Firma
-        BY AufGKon.Aufnr:
-
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= dMwstDatum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr  = nFakBetr + nMwst[ii].
-        i1        = i1       + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= dMwstDatum NO-LOCK.
-        IF nMwst[ii] = 0 THEN nMwst[ii] = nPfli[ii] * MWSTAns.Ansatz / (100 + MWSTAns.Ansatz).
-        cText = SUBSTITUTE(cFormtext[10 + ii], TRIM(STRING(MWSTAns.Ansatz,'>>9.9'))).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-    END.
-    nFakBetr = nFakBetr - bAufko.Bar_Betr - bAufko.Bar_Skonto.
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    iArtZeile = 1.        
-    RUN vpr_setCellText('Danke', 'Fusstext', cFormtext[07] ).
-    RUN vpr_flushGroup ('Fusstext').
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    CASE bAufko.Frw:
-        WHEN 'CHF' THEN 
-            iBESRArt = 1.
-        WHEN 'EUR' THEN 
-            iBESRArt = 2.
-    END CASE.
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN FIND FIRST Bankst NO-ERROR.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cFileName = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument ).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cFileName ) .
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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   ('Ueberschrift').
-    
-    iVPagePos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos  ( iVPagePos ).
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bAufko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bAufko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bAufko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-            Aufko.Faknr = iFaknr.
-            RELEASE Aufko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        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].
-            END.
-        END.
-        
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[01],01,40))
-            ELSE TRIM(SUBSTRING(cFormText[01],41,40))).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Faknr'
-            tDokument.cInhalt = TRIM(STRING(iFaknr,'>>>>>>9')).
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Aufnr'
-            tDokument.cInhalt = STRING(bAufko.Aufnr,'999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Fak_Knr,'zzzzz9')).
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Fak_Datum'
-            tDokument.cInhalt = STRING(bAufko.Fak_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Ort_Datum'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[02],01,40))
-                              + ' '
-                              + STRING(TODAY,'99.99.9999').
-
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    /*    IF bAufko.Abh_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = bAufko.Abh_Text.                             */
-    /*    END.                                                     */
-    /*    IF bAufko.Auf_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = cText                                        */
-    /*            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')*/
-    /*            + bAufko.Auf_Text.                               */
-    /*    END.                                                     */
-    IF cText = '' THEN RETURN.
-    
-/*    CREATE  tDokument.                                */
-/*    ASSIGN                                            */
-/*        tDokument.cGruppe = 'ZusatzText'              */
-/*        tDokument.iZeile  = 1                         */
-/*        tDokument.cFeld   = 'Bemerkung_1'             */
-/*        tDokument.cInhalt = cText.                    */
-/*                                                      */
-/*    iVPagePos = vpr_getPageVPos() + 100.              */
-/*    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).*/
-/*    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).              */
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/realwines/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    cPathQRCodes = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_QRCODE')   NO-ERROR.
-    cWerbung     = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'WERBUNG_QRCODE') NO-ERROR.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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 = ''
-            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 = 'ZZZ'
-                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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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 = cSort
-            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 = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        cDokument = 'viper/' + tParam.cInstall  + '/' + SUBSTITUTE(tParam.cDokument + '_&1_&2_&3', STRING(tParam.iVerband,'99'), STRING(iSprcd,'99'), bAufko.Frw)  + '.vfr'.
-
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.cDokument).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 ("KopfDetail"  , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Ueberschrift", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext"    , "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            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

+ 0 - 1425
GUI/DruckProgramme/realwines/Lieferschein.p

@@ -1,1425 +0,0 @@
-&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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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:  <none>
-      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
-

+ 0 - 1296
GUI/DruckProgramme/realwines/Offerte.p

@@ -1,1296 +0,0 @@
-&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/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.
-            
-    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 = (IF bAdresse.Sprcd = 1 THEN 1 ELSE 4).
-        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.
-            
-            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:  <none>
-  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.Preis,'>>>>>9.99')) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-                       INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
-                       INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    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.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    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.
-    
-    /*  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 10.
-    
-    FIND bAdresse NO-LOCK
-            WHERE bAdresse.Firma = AdFirma
-            AND   bAdresse.Knr   = bAufko.Fak_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).
-
-    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 'N',
-                       INPUT iZeile, INPUT cDaten ).
-
-    iZeile = 18.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = 20.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT TRIM(STRING(bAufko.Fak_Knr,'>>>>>>>9')) ).
-
-    iZeile = 21.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-               WHERE Kondi.Kond  = bAufko.Kond
-               AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, Kondi.Kotext ).
-    END.
-    
-    hExcel:ActiveWorkbook:SAVE( ).
-    
-    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:  <none>
-  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(xSprcd,'99'), bAufko.Frw ).
-    xDokument = SUBSTITUTE(tParam.Template, STRING(bAufko.Faknr ,'999999'), STRING(bAufko.Knr,'999999'), bAufko.Frw ).
-    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:  <none>
-  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:  <none>
-  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:  <none>
-  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:  <none>
-  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-SUMMENRABATTE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SUMMENRABATTE Procedure 
-PROCEDURE SUMMENRABATTE :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  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
-

+ 0 - 2046
GUI/DruckProgramme/realwines/Sav_Faktura_pdf.p

@@ -1,2046 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iBesrArt      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE dMwstDatum    AS DATE      NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER bDebst   FOR Debst   .       /*  Bank/Verband    */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i }
-{ incl/ttdruckparam.i }
-{ swissqr/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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             = 18.62
-         WIDTH              = 59.4.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-opcResult = ''.
-
-EMPTY TEMP-TABLE tParam.
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-ASSIGN  
-    cFirma        = tParam.cFirma
-    iAnzDok       = tParam.Anzahl
-    lPreis        = TRUE
-    cInstallation = DYNAMIC-FUNCTION ('getInstallation':U) NO-ERROR.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-        
-    FIND FIRST tParam.
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    iSprcd = bAdresse.Sprcd.
-    IF  iSprcd <> 1 AND
-        iSprcd <> 3 AND
-        iSprcd <> 4 THEN iSprcd = 1.
-    RUN GET_FORMTEXT ( tParam.cInstall, tParam.Template, iSprcd,
-        OUTPUT cFormText ) NO-ERROR.
-    cRabText =   TRIM(SUBSTRING(cFormText[04],01,20)).
-    cZusText =   TRIM(SUBSTRING(cFormText[04],21,20)).
-    cEpzText =   TRIM(SUBSTRING(cFormText[04],41,20)).
-        
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = sSavko.dFakDat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK
-            BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-            EMPTY TEMP-TABLE tSavko     .
-                
-            CREATE tSavko.
-            BUFFER-COPY bSavko TO tSavko
-                ASSIGN  
-                tSavko.lBetrag = TRUE.
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-            
-            dMwstDatum = (IF bSavko.Lief_Datum <> ? THEN bSavko.Lief_Datum ELSE bSavko.Kond_Datum).
-            IF dMwstDatum = ? THEN dMwstDatum = bSavko.Fak_Datum.
-            IF dMwstDatum = ? THEN dMwstDatum = TODAY. 
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.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 CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Beschreibung'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr,"999999") ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + '\b ' + Savze.Aktion_Text + ' \b0'.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        cString = TRIM(STRING(Savze.VGeb_Me,'->>>')
-            + 'x '
-            + STRING(VGebinde.KBez,'x(10)')).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGeb_Menge', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , TRIM(STRING(Savze.MBest,'->>,>>9')) ).
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGeb_Bez', KGebinde.Kbez ).
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis'   , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'  , STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'      , STRING(Savze.WuCd    ,'z9') ).
-    
-        
-    /*    IF Savze.Rab_Betr <> 0 THEN                                                                                          */
-    /*    DO:                                                                                                                  */
-    /*        iArtZeile = iArtZeile + 1.                                                                                       */
-    /*        nRabWert  = ABSOLUTE(Savze.Rab_Wert).                                                                            */
-    /*        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.                                                                   */
-    /*        ELSE                                                                                                             */
-    /*        DO:                                                                                                              */
-    /*            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.                                                              */
-    /*            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.                                                              */
-    /*        END.                                                                                                             */
-    /*        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', TRIM(xRabText) ).                        */
-    /*                                                                                                                         */
-    /*        IF  Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").                                               */
-    /*        IF  Savze.Rab_Art = 2    OR                                                                                      */
-    /*            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).*/
-    /*    END.                                                                                                                 */
-    
-    /*    DO WHILE TRUE:                                                                                                       */
-    /*        IF Savze.Zus_Betr = 0 THEN LEAVE.                                                                                */
-    /*                                                                                                                         */
-    /*        iArtZeile = iArtZeile + 1.                                                                                       */
-    /*        nRabWert   = ABSOLUTE(Savze.Zus_Wert).                                                                           */
-    /*        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.                                                                   */
-    /*        ELSE                                                                                                             */
-    /*        DO:                                                                                                              */
-    /*            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.                                                              */
-    /*            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.                                                              */
-    /*        END.                                                                                                             */
-    /*        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', TRIM(xRabText) ).                        */
-    /*                                                                                                                         */
-    /*        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").                                                */
-    /*        IF Savze.Zus_Art = 2    OR                                                                                       */
-    /*            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).*/
-    /*        LEAVE.                                                                                                           */
-    /*    END.                                                                                                                 */
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Savze.WuCd
-        AND   TUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.lInkl   = Savze.Mwst_Inkl
-            TUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-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:     Super Override                                                 */
-    /*  Parameters:                                                                 */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iBisKnr     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iAufnr      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE dLief_Datum AS DATE      NO-UNDO.
-
-    DEFINE VARIABLE cWhere      AS CHARACTER NO-UNDO.    
-    DEFINE VARIABLE hQuery      AS HANDLE    NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge  */
-    
-    CREATE QUERY hQuery.
-    hQuery:SET-BUFFERS (BUFFER Savko:HANDLE).
-    
-    IF tParam.iVerband > 0 THEN 
-    DO:
-        FIND Savko NO-LOCK 
-            WHERE Savko.Firma = tParam.cFirma
-            AND   Savko.Aufnr = tParam.iAufnr.
-        IF tParam.iVonKnr > 0 THEN 
-        DO:
-            cWhere = 'FOR EACH Savko NO-LOCK '
-                + 'WHERE Savko.Firma      = &1 '
-                + 'AND   Savko.Fak_Art    = &2 '
-                + 'AND   Savko.Ku_Grp     = &3 '
-                + 'AND   Savko.Lief_Datum = &4 '.
-            cWhere = SUBSTITUTE(cWhere,
-                QUOTER(Savko.Firma), Savko.Fak_Art, Savko.Ku_Grp, Savko.Lief_Datum).
-        END.
-        ELSE 
-        DO:
-            cWhere =
-                'FOR EACH Savko NO-LOCK '
-                + 'WHERE Savko.Firma      = &1 '
-                + 'AND   Savko.Aufnr      = &2 '.
-            cWhere = SUBSTITUTE(cWhere,
-                QUOTER(Savko.Firma), Savko.Aufnr).
-        END.
-    END.
-
-    hQuery:QUERY-PREPARE (cWhere).
-    hQuery:QUERY-OPEN () NO-ERROR.
-    hQuery:GET-FIRST  () NO-ERROR.
- 
-    DO WHILE NOT hQuery:QUERY-OFF-END:
-        
-        iFaknr = Savko.Faknr.
-
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr.
-        IF Savko.Fak_Datum = ? THEN sSavko.dFakDat = TODAY.
-        ELSE                        sSavko.dFakDat = Savko.Fak_Datum.
-        
-        hQuery:GET-NEXT () NO-ERROR.
-    END.
-
-    hQuery:QUERY-CLOSE ().
-    DELETE OBJECT hQuery NO-ERROR.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        IF tDokument.cFeld = 'Beschreibung' THEN 
-        DO:
-            tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), ' \par ') NO-ERROR.                        
-        END.
-
-        cWerte  = cWerte
-            + (IF cWerte = '' THEN '' ELSE CHR(01)) 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + (IF cZellen = '' THEN '' ELSE ',') 
-            + tDokument.cFeld.
-
-        IF NOT LAST-OF ( tDokument.iZeile ) THEN NEXT.
-        
-        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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 tParam.lCreatePDF THEN RUN vpr_initGraphObj.*/
-        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 <> '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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:     Super Override                                                 */
-    /*  Parameters:                                                                 */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    IF tParam.iVerband = 3 THEN cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_MNC_PDF'      ) NO-ERROR.
-    ELSE                        cERPDokumente = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_RECHNUNG_PDF' ) NO-ERROR.
-
-    nFakBetr = 0.
-    iSeite   = 0.
-
-    FIND bDebst NO-LOCK
-        WHERE bDebst.Firma = bSavko.Firma
-        AND   bDebst.Knr   = bSavko.Fak_Knr.
-    iBesrArt = bDebst.BESR_Art.
-    
-    FIND bAdresse NO-LOCK 
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-    iSprcd = bAdresse.Sprcd.
-    IF  iSprcd <> 1 AND
-        iSprcd <> 4 THEN iSprcd = 1.
-
-    IF iSeite = 0 THEN 
-    DO:
-        RUN VIPER_INIT.
-        SESSION:PRINTER-NAME = tParam.Drucker.
-    END.
-
-    RUN DRUCKEN_KOPF.
-    
-    IF  bSavko.Knr <> bSavko.Fak_Knr AND
-        bSavko.Fak_Knr > 0           THEN
-    DO:
-        iVPagePos = vpr_getPageVPos().
-        RUN vpr_setGroupVPos ( 'FetteZeile', iVPagePos ).
-
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , cFormText[23] ).
-        RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-        
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr.
-        RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1'  , LAdresse.Anzeig_br ).
-/*        DO i1 = 1 TO 12:                                                                                   */
-/*            IF LAdresse.Anschrift[i1] = '' THEN NEXT.                                                      */
-/*            iArtZeile = iArtZeile + 1.                                                                     */
-/*            RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile, 'Bemerkung_1'  , LAdresse.Anschrift[i1] ).*/
-/*        END.                                                                                               */
-        RUN AUSGABE_GRUPPE ( 'Zusatztext' ).
-    END.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos().
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos + 50 ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett' , TRIM(SUBSTRING(cFormText[03],01,40)) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Betrag_Fett', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_1_Fett'  , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
-            WHERE AufRabSu.Firma    = bSavko.Firma
-            AND   AufRabSu.Aufnr    = bSavko.Aufnr
-            AND   AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
-            WHERE AufRabSu.Firma    = bSavko.Firma
-            AND   AufRabSu.Aufnr    = bSavko.Aufnr
-            AND   AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bSavko.Firma
-            AND   AufSpRab.Aufnr    = bSavko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        xString   = TRIM(SUBSTRING(cFormText[05],01,40)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bSavko.Firma
-        AND   AufGKon.Aufnr    = bSavko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[06],01,40)).
-        ELSE                           xString = GebKonto.Bez.
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= dMwstDatum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'      , TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'          , STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[06],01,40)).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag'      , TRIM(STRING(nFakBetr,'->>>,>>9.99')) ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Beschreibung', '' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bSavko.Firma
-        AND   AufGKon.Aufnr    = bSavko.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.
-    RELEASE AufGKon.
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nBetrag   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bSavko.Firma
-        AND   AufGKon.Aufnr    = bSavko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0 OR AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufGKon.Firma
-        BY AufGKon.Aufnr:
-
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= dMwstDatum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'MC'          , TRIM(STRING(AufGKon.MWSt_Cd,"z9")) ).
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot', TRIM(STRING(nBetrag,"->>>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nBetrag.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-    
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr  = nFakBetr + nMwst[ii].
-        i1        = i1       + 1.
-    END.
-    
-    iVPagePos  = vpr_getPageVPos().
-    IF (iVPagePos + (i1 * 40)) > iMaxPos THEN 
-    DO:
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= dMwstDatum NO-LOCK.
-        IF nMwst[ii] = 0 THEN nMwst[ii] = nPfli[ii] * MWSTAns.Ansatz / (100 + MWSTAns.Ansatz).
-        cText = SUBSTITUTE(cFormtext[10 + ii], TRIM(STRING(MWSTAns.Ansatz,'>>9.9'))).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', ' ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-    END.
-    nFakBetr = nFakBetr - bSavko.Bar_Betr - bSavko.Bar_Skonto.
-    
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    iArtZeile = 1.        
-    RUN vpr_setCellText('Danke', 'Fusstext', cFormtext[07] ).
-    RUN vpr_flushGroup ('Fusstext').
-
-    IF iLauf < iAnzDok THEN RETURN.
-    
-    /*  BESR DRUCKEN  ----------------------------  */
-
-    CASE bSavko.Frw:
-        WHEN 'CHF' THEN 
-            iBESRArt = 1.
-        WHEN 'EUR' THEN 
-            iBESRArt = 2.
-    END CASE.
-    FIND Bankst NO-LOCK 
-        WHERE Bankst.Bank = iBESRArt NO-ERROR.
-    IF NOT AVAILABLE Bankst THEN FIND FIRST Bankst NO-ERROR.
-    IF  AVAILABLE Bankst     AND 
-        Bankst.QR-IBAN <> '' THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-    ELSE 
-    DO:
-        RUN DRUCKEN_BESR ( 'BESR' ).
-    END.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cFileName = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument ).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        cFileName ) .
-    RUN vpr_saveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        END.
-        RUN vpr_printDoc (0, 0).
-        RUN vpr_resetDoc.
-        
-        LEAVE.
-    END.
-    
-    IF tParam.lCreatePDF THEN 
-    DO:
-        cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
-        RUN vpr_openDoc  ( cvpr_Dokument ).
-        RUN vpr_printPDF ( 0, 0, INPUT-OUTPUT cPDFName ).
-    END.
-
-    IF tParam.lOpenPDF THEN 
-    DO:    
-        DEFINE VARIABLE 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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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   ('Ueberschrift').
-    
-    iVPagePos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos  ( iVPagePos ).
-
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1      AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    iFaknr = bSavko.Faknr.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        REPEAT WHILE bSavko.Faknr = 0 TRANSACTION:
-            iFaknr = DYNAMIC-FUNCTION('createFaknr', bSavko.Firma ) NO-ERROR.
-            IF RETURN-VALUE <> '' THEN NEXT.
-            FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-            Savko.Faknr = iFaknr.
-            RELEASE Savko.
-            LEAVE.
-        END.
-        
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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].
-            END.
-        END.
-        
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[01],01,40))
-            ELSE TRIM(SUBSTRING(cFormText[01],41,40))).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Faknr'
-            tDokument.cInhalt = TRIM(STRING(iFaknr,'>>>>>>9')).
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Aufnr'
-            tDokument.cInhalt = STRING(bSavko.Aufnr,'999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = TRIM(STRING(bSavko.Fak_Knr,'zzzzz9')).
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Fak_Datum'
-            tDokument.cInhalt = STRING(bSavko.Fak_Datum,'99.99.9999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Knr,'999999').
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KopfDetail'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Ort_Datum'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[02],01,40))
-                              + ' '
-                              + STRING(bSavko.Fak_Datum,'99.99.9999').
-
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-    IF iSeite <> 1 THEN RETURN.
-    
-    cText = ''.
-    /*    IF bSavko.Abh_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = bSavko.Abh_Text.                             */
-    /*    END.                                                     */
-    /*    IF bSavko.Auf_Text <> '' THEN                            */
-    /*    DO:                                                      */
-    /*        cText = cText                                        */
-    /*            + (IF cText <> '' THEN CHR(10) + CHR(10) ELSE '')*/
-    /*            + bSavko.Auf_Text.                               */
-    /*    END.                                                     */
-    IF cText = '' THEN RETURN.
-    
-/*    CREATE  tDokument.                                */
-/*    ASSIGN                                            */
-/*        tDokument.cGruppe = 'ZusatzText'              */
-/*        tDokument.iZeile  = 1                         */
-/*        tDokument.cFeld   = 'Bemerkung_1'             */
-/*        tDokument.cInhalt = cText.                    */
-/*                                                      */
-/*    iVPagePos = vpr_getPageVPos() + 100.              */
-/*    RUN vpr_setGroupVPos ( 'ZusatzText' , iVPagePos ).*/
-/*    RUN AUSGABE_GRUPPE ( 'ZusatzText' ).              */
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/realwines/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    cPathQRCodes = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'GEMIS_QRCODE')   NO-ERROR.
-    cWerbung     = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'WERBUNG_QRCODE') NO-ERROR.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-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_tSavze :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = ''
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos   ,'99999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = 'ZZZ'
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos   ,'99999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-            IF AVAILABLE Artst THEN cSort = STRING(Artst.Wg_Grp  ,'9999')
-                    + STRING(Artst.Prod_Grp,'9999')
-                    + STRING(Artst.Art_Grp ,'9999').
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = cSort
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos   ,'99999').
-        tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-          Purpose:     
-          Parameters:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF iLauf = 1 THEN 
-    DO:
-        cDokument = 'viper/' + tParam.cInstall  + '/' + SUBSTITUTE(tParam.cDokument + '_&1_&2_&3', STRING(tParam.iVerband,'99'), STRING(iSprcd,'99'), bSavko.Frw)  + '.vfr'.
-
-        RUN vpr_ResetDoc.
-        RUN vpr_LoadVFR         (cDokument).
-        RUN vpr_ActivateReport  (tParam.cDokument).
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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 ("KopfDetail"  , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Ueberschrift", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext"    , "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-          Notes:       
-        ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            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

+ 0 - 2525
GUI/DruckProgramme/sanmartino/Faktura.p

@@ -1,2525 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE iZeile        AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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     = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF  iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF  Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                              sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        /*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = TRUE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-    
-    FIND FIRST tUmsGrp NO-LOCK NO-ERROR.
-    IF AVAILABLE tUmsGrp THEN 
-    DO:
-        iZeile = 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'UMSATZTITEL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Umsatz_Titel_T'
-            tDokument.cInhalt = '  '.
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'UMSATZTITEL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Umsatz_Titel_T'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[15],41,20)).
-        FOR EACH tUmsGrp NO-LOCK:
-            iZeile = iZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Grp'
-                tDokument.cInhalt = tUmsGrp.Bez.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Frw'
-                tDokument.cInhalt = bAufko.Frw.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Betrag'
-                tDokument.cInhalt = TRIM(STRING(tUmsGrp.Ums_Betr,'->,>>>,>>>9.99')).
-        END.
-
-        RUN AUSGABE_GRUPPE ( 'UmsatzTitel' ).
-        RUN AUSGABE_GRUPPE ( 'Umsatz' ).
-    
-    END.
-
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    IF bAufko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/sanmartino/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2-&3_&4', cPathQRCodes, cInstallation, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    FIND bAdresse NO-LOCK 
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-    FIND LAdresse NO-LOCK 
-        WHERE LAdresse.Firma = AdFirma
-        AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        iZeile = 2.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Ort_Datum'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[07],01,20))
-                                  + " "
-                                  + STRING(TODAY,"99.99.9999").
-
-        /*  MwstNr              */
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Mwst_Nr'
-            tDokument.cInhalt = bSteuer.Mwst_Nr.
-            
-        /*  Kundennummer        */
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Lieferscheinnummer  */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Lief_Nr'
-            tDokument.cInhalt = SUBSTRING(cFormText[17], 21,20).
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Auf_Nr'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Aufnr,'z999999')).
-    
-        /*  Ihre Referenz       */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'IBest_T'
-            tDokument.cInhalt = TRIM(ENTRY(4, cFormText[19], ';')).
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'IBest'
-            tDokument.cInhalt = bAufko.I_Best.
-    
-        /*  Gewicht             */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999').
-            
-        /*  Telefon         */
-        iZeile + 1.
-        cText = ''.
-        cText = (IF LAdresse.Tel-1 <> '' THEN LAdresse.Tel-1 ELSE LAdresse.Tel-2).
-        IF LAdresse.Natel <> '' THEN 
-        DO:
-            cText = cText
-                + (IF cText = '' THEN '' ELSE ' / ')
-                + LAdresse.Natel.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Telefon_T'    
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[08],41,20)).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Telefon'
-            tDokument.cInhalt = cText.
-            
-        /*  Abladevorschrift    */
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            iZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Versand_T'
-                tDokument.cInhalt = TRIM(SUBSTRING(cFormText[09],01,20)).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Versand'
-                tDokument.cInhalt = tTabTexte.cFeld3.
-        END.
-
-        /*  Auftragstext, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            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  = 'ZZZ'
-                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 Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cLagOrt
-            tAufze.Sort2  = cSort
-            tAufze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    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').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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 ("Fusszeilen", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            RUN vpr_InitGraphObj.
-            RUN vpr_FlushGroup('Logo').
-            RUN vpr_FlushGroup('Fusszeilen').
-            LEAVE.
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            RUN vpr_InitGraphObj.
-            RUN vpr_FlushGroup('Logo').
-            RUN vpr_FlushGroup('Fusszeilen').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        
-        LEAVE.
-    END.
-    
-    iMaxPos = 2600.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 1211
GUI/DruckProgramme/sanmartino/Offerte.p

@@ -1,1211 +0,0 @@
-&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 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/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.
-            
-    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.
-        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.
-            
-            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:  <none>
-  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 'D',
-                           INPUT iZeile, INPUT Aufze.Bez1 ).
-        IF Aufze.Bez2 = '' THEN RETURN.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           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 'A',
-                       INPUT iZeile, INPUT KGebinde.KBez ).
-    IF Aufze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>')
-                + 'x '
-                + STRING(VGebinde.KBez,'x(10)').
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
-                           INPUT iZeile, INPUT cString ).
-    END.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(Aufze.MGeli,'->>>>>9') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT Aufze.Bez1 ).
-    IF Aufze.Jahr > 9 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                           INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
-    IF Aufze.Alk_Gehalt <> 0 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'F',
-                           INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
-                       INPUT iZeile, INPUT STRING(Aufze.Artnr,'999999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                       INPUT iZeile, INPUT STRING(Aufze.Preis,'>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                       INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    IF Aufze.Bez2 <> '' THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Bez2 ).
-    END.
-    IF Aufze.Aktion THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Aktion_Text ).
-    END.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    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.
-    
-    /*  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 5.
-    
-    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.
-    
-    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   = bAdresse.Sprcd.
-
-    IF bAufko.Adresse[05] <> '' THEN DO:
-        DO ii = 1 TO 5:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAufko.Adresse[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-    ELSE DO:
-        DO ii = 7 TO 11:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAdresse.Anschrift[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-
-    cDaten  = STRING(dFakDatum,'99.99.9999').
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT cDaten ).
-
-    iZeile = iZeile + 3.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    iZeile = 21.
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 1.    
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, TRIM(SUBSTRING(cFormText[15],21,20)) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,'->>>>>9.99')) ).
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-               WHERE Kondi.Kond  = bAufko.Kond
-               AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, Kondi.Kotext ).
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR lRetVal     AS LOG                      NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-
-    cVorlage = tParam.Template + CHR(01) + tParam.Template.
-    RUN CREATEDATEI ( INPUT cVorlage ).
-
-    cVorlage = SESSION:TEMP-DIR + tParam.Template.
-    RUN OPENEXCEL ( INPUT hExcel,
-                    INPUT cVorlage,
-                    INPUT '',
-                    OUTPUT lRetVal ).
-    IF NOT lRetVal THEN DO:
-        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:  <none>
-  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:  <none>
-  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.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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(iMwstCd,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        nFakBetr = nFakBetr + nZTot.
-    END.
-    
-    iZeile = iZeile + 2.
-    cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-
-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:  <none>
-  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:  <none>
-  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 = MWSTAns.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(ix,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-    
-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:  <none>
-  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 'D',
-                           INPUT iZeile,    INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2314
GUI/DruckProgramme/sanmartino/SammelRechnung.p

@@ -1,2314 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
-htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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     = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-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.
-    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.
-
-    FIND Aufko NO-LOCK 
-        WHERE Aufko.Firma = sAufko.cFirma
-        AND   Aufko.Aufnr = sAufko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqAufko     .
-    CREATE  tqAufko.
-    BUFFER-COPY Aufko TO tqAufko
-        ASSIGN  
-        tqAufko.iRecid  = RECID(Aufko)
-        tqAufko.lBetrag = TRUE.
-    RELEASE Aufko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-        
-            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.
-                
-            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.
-
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/sanmartino/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqAufko.
-    tqAufko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2&3_&4', cPathQRCodes, cInstallation, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab
-        - Aufze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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 Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                    Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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-AUSGABE_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure 
-PROCEDURE AUSGABE_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        /*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF  bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            tAufze.Sort2  = 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  = 'ZZZ'
-                tAufze.Sort2  = 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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cSort
-            tAufze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    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').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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 ("Fusszeilen", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-
-    RUN vpr_InitGroups("").
-    RUN vpr_InitGraphObj.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"      , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusszeilen", "Fixed=true").
-    
-    RUN vpr_flushGroup('Logo').
-    RUN vpr_flushGroup('Fusszeilen').
-    
-    iMaxPos = 2600.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2398
GUI/DruckProgramme/sanmartino/Sav_Faktura.p

@@ -1,2398 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE iZeile        AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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     = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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 = sSavko.dFakdat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-                ASSIGN  
-                    Savko.Fak_Datum = dFakDat
-                    Savko.Gedruckt  = TRUE.
-                RELEASE Savko.
-                RUN AUFTRAG_GEDRUCKT ( bSavko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Savze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr        = Savko.Faknr.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr.
-        IF  Savko.Fak_Datum = ?      OR
-            Savko.Fak_Datum < TODAY  THEN sSavko.dFakDat = TODAY.
-        ELSE                              sSavko.dFakDat = Savko.Fak_Datum.
-        RELEASE Savko.
-        RELEASE bSavko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        /*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tSavko NO-ERROR.
-    IF NOT AVAILABLE tSavko THEN CREATE tSavko.
-    BUFFER-COPY bSavko TO tSavko
-        ASSIGN  
-        tSavko.iRecid  = RECID(bSavko)
-        tSavko.lBetrag = TRUE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bSavko.Firma
-        AND   AufGKon.Aufnr    = bSavko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bSavko.Firma
-            AND   AufGKon.Aufnr    = bSavko.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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bSavko.Firma
-            AND   AufGKon.Aufnr    = bSavko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bSavko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-    
-    FIND FIRST tUmsGrp NO-LOCK NO-ERROR.
-    IF AVAILABLE tUmsGrp THEN 
-    DO:
-        iZeile = 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'UMSATZTITEL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Umsatz_Titel_T'
-            tDokument.cInhalt = '  '.
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'UMSATZTITEL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Umsatz_Titel_T'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[15],41,20)).
-        FOR EACH tUmsGrp NO-LOCK:
-            iZeile = iZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Grp'
-                tDokument.cInhalt = tUmsGrp.Bez.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Frw'
-                tDokument.cInhalt = bSavko.Frw.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'UMSATZ'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Umsatz_Betrag'
-                tDokument.cInhalt = TRIM(STRING(tUmsGrp.Ums_Betr,'->,>>>,>>>9.99')).
-        END.
-
-        RUN AUSGABE_GRUPPE ( 'UmsatzTitel' ).
-        RUN AUSGABE_GRUPPE ( 'Umsatz' ).
-    
-    END.
-
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    IF bSavko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/sanmartino/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2-&3_&4', cPathQRCodes, cInstallation, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    FIND bAdresse NO-LOCK 
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-    FIND LAdresse NO-LOCK 
-        WHERE LAdresse.Firma = AdFirma
-        AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bSavko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        iZeile = 2.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Ort_Datum'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[07],01,20))
-                                  + " "
-                                  + STRING(TODAY,"99.99.9999").
-
-        /*  MwstNr              */
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Mwst_Nr'
-            tDokument.cInhalt = bSteuer.Mwst_Nr.
-            
-        /*  Kundennummer        */
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        iZeile = iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Knr,'999999').
-    
-        /*  Lieferscheinnummer  */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Lief_Nr'
-            tDokument.cInhalt = SUBSTRING(cFormText[17], 21,20).
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Auf_Nr'
-            tDokument.cInhalt = TRIM(STRING(bSavko.Aufnr,'z999999')).
-    
-        /*  Ihre Referenz       */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'IBest_T'
-            tDokument.cInhalt = TRIM(ENTRY(4, cFormText[19], ';')).
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'IBest'
-            tDokument.cInhalt = bSavko.I_Best.
-    
-        /*  Gewicht             */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bSavko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        iZeile + 1.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-            
-        /*  Telefon         */
-        iZeile + 1.
-        cText = ''.
-        cText = (IF LAdresse.Tel-1 <> '' THEN LAdresse.Tel-1 ELSE LAdresse.Tel-2).
-        IF LAdresse.Natel <> '' THEN 
-        DO:
-            cText = cText
-                + (IF cText = '' THEN '' ELSE ' / ')
-                + LAdresse.Natel.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Telefon_T'    
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[08],41,20)).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = iZeile
-            tDokument.cFeld   = 'Telefon'
-            tDokument.cInhalt = cText.
-            
-        /*  Abladevorschrift    */
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            iZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Versand_T'
-                tDokument.cInhalt = TRIM(SUBSTRING(cFormText[09],01,20)).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = iZeile
-                tDokument.cFeld   = 'Versand'
-                tDokument.cInhalt = tTabTexte.cFeld3.
-        END.
-
-        /*  Auftragstext, Abholtext   */
-        cText = ''.
-        IF bSavko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bSavko.Auf_Text.
-                                            
-        IF bSavko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bSavko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-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_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = ''
-            tSavze.Sort2  = ''
-            tSavze.Sort3  = STRING(tSavze.Artnr ,'999999')
-                          + STRING(tSavze.Inhalt,'9999')
-                          + STRING(tSavze.Jahr  ,'9999')
-                          + STRING(iPlusMinus   ,'9')
-                          + STRING(tSavze.Pos   ,'99999')
-            tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-                
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1  = 'ZZZ'
-                tSavze.Sort2  = ''
-                tSavze.Sort3  = STRING(tSavze.Artnr ,'999999')
-                              + STRING(tSavze.Inhalt,'9999')
-                              + STRING(tSavze.Jahr  ,'9999')
-                              + STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos   ,'99999')
-                tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-                
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = cLagOrt
-            tSavze.Sort2  = cSort
-            tSavze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tSavze.Pos,'99999')
-            tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    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').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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 ("Fusszeilen", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            RUN vpr_InitGraphObj.
-            RUN vpr_FlushGroup('Logo').
-            RUN vpr_FlushGroup('Fusszeilen').
-            LEAVE.
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            RUN vpr_InitGraphObj.
-            RUN vpr_FlushGroup('Logo').
-            RUN vpr_FlushGroup('Fusszeilen').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        
-        LEAVE.
-    END.
-    
-    iMaxPos = 2600.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2224
GUI/DruckProgramme/sanmartino/Sav_SammelRechnung.p

@@ -1,2224 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqSavko AS HANDLE NO-UNDO.
-htqSavko = TEMP-TABLE tqSavko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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     = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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.
-
-    FIND Savko NO-LOCK 
-        WHERE Savko.Firma = sSavko.cFirma
-        AND   Savko.Aufnr = sSavko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqSavko     .
-    CREATE  tqSavko.
-    BUFFER-COPY Savko TO tqSavko
-        ASSIGN  
-        tqSavko.iRecid  = RECID(Savko)
-        tqSavko.lBetrag = TRUE.
-    RELEASE Savko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-            AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-            AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-            BREAK BY bSavko.Fak_Knr
-            BY bSavko.Samm_Nr
-            BY bSavko.Knr
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            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   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-
-            IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Savko WHERE RECID(Savko) = RECID(bSavko).
-                Savko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Savko.Fak_Art THEN Savko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Savko.Auf_Sta THEN Savko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Savko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/sanmartino/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqSavko.
-    tqSavko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2&3_&4', cPathQRCodes, cInstallation, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.lInkl   = Savze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab
-        - Savze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Faknr         */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma   = tParam.cFirma
-        AND   Savko.Fak_Knr = tParam.iKnr
-        AND   Savko.Faknr   = tParam.iFaknr
-            
-        BREAK BY Savko.Fak_Knr
-        BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Faknr ) THEN NEXT.
-        
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = Savko.Samm_Nr
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = Savko.Faknr.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-        /*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF  bSavko.Knr = bSavko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + STRING(bSavko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bSavko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = ''
-            tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                          + STRING(tSavze.Inhalt,'9999')
-                          + STRING(tSavze.Jahr  ,'9999')
-                          + STRING(iPlusMinus   ,'9')
-                          + STRING(tSavze.Pos   ,'99999')
-            tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1  = 'ZZZ'
-                tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                              + STRING(tSavze.Inhalt,'9999')
-                              + STRING(tSavze.Jahr  ,'9999')
-                              + STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos   ,'99999')
-                tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-                
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = cSort
-            tSavze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tSavze.Pos,'99999')
-            tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    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').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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 ("Fusszeilen", "Fixed=true").
-    
-    iMaxPos = 2600.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-
-    RUN vpr_InitGroups("").
-    RUN vpr_InitGraphObj.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"      , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusszeilen", "Fixed=true").
-    
-    RUN vpr_flushGroup('Logo').
-    RUN vpr_flushGroup('Fusszeilen').
-    
-    iMaxPos = 2600.
-    
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2394
GUI/DruckProgramme/wiederkehr/Faktura.p

@@ -1,2394 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure 
-FUNCTION calculateBlock RETURNS INTEGER
-    ( ipGruppe AS CHARACTER  ) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF  iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF  Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                              sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-/*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = TRUE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    IF bAufko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-/*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    /*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-/*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            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  = 'ZZZ'
-                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 Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cLagOrt
-            tAufze.Sort2  = cSort
-            tAufze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure 
-PROCEDURE FUELLEN_UEBERSCHRIFT :
-/*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-/*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-/*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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").
-    
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        /*        IF tParam.lDokDruck THEN                                                      */
-        /*        DO:                                                                           */
-        /*            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).*/
-        /*            RUN vpr_printdoc ( iSeite, iSeite ).                                      */
-        /*            PAUSE 0.2 NO-MESSAGE.                                                     */
-        /*            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).*/
-        /*            RUN vpr_printdoc ( iSeite, iSeite ).                                      */
-        /*        END.                                                                          */
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure 
-FUNCTION calculateBlock RETURNS INTEGER
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2338
GUI/DruckProgramme/wiederkehr/FestRechnung.p

@@ -1,2338 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
-htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-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.
-    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.
-        
-    FIND Aufko NO-LOCK 
-        WHERE Aufko.Firma = sAufko.cFirma
-        AND   Aufko.Aufnr = sAufko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqAufko     .
-    CREATE  tqAufko.
-    BUFFER-COPY Aufko TO tqAufko
-        ASSIGN  
-        tqAufko.iRecid  = RECID(Aufko)
-        tqAufko.lBetrag = TRUE.
-    RELEASE Aufko.
-
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqAufko.
-    tqAufko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    /*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-    RUN vpr_ActivateReport  (tParam.cDokument).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp
-        WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab
-        - Aufze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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 Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                    Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine (nicht alle) Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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-AUSGABE_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure 
-PROCEDURE AUSGABE_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-    
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         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(bAufko.Faknr,'z999999'). */
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            tAufze.Sort2  = 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  = 'ZZZ'
-                tAufze.Sort2  = 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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cSort
-            tAufze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_ResetDoc.
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2750.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    IF tParam.lCreatePDF THEN 
-    DO:
-        RUN vpr_initGraphObj.
-        RUN vpr_FlushGroup  ('Fusstext').
-    END.
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2461
GUI/DruckProgramme/wiederkehr/Kasse.p

@@ -1,2461 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF  iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF  Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                              sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = FALSE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Gebinderücknahmetabelle  -------------------------------------------    */
-
-    DEFINE VARIABLE xString AS CHARACTER NO-UNDO.
-
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        RUN vpr_asc2rtf ( cText, '', OUTPUT cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'GebindeRuecknahme') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 150.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            iVPagePos = vpr_getPageVPos() + 75.
-        END.
-        ELSE iVPagePos = vpr_getPageVPos() + 150.
-
-        RUN vpr_setPageVPos  ( iVPagePos ).
-        RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).
-        RUN AUSGABE_GRUPPE   ( 'GebindeRuecknahme' ).
-    END.
-    
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    IF bAufko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    tAufko.lBetrag = FALSE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).
-
-    RUN vpr_ActivateReport  (tParam.cDokument).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = 'ZZZ'
-                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 Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cLagOrt
-            tAufze.Sort2  = cSort
-            tAufze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    /*    EMPTY TEMP-TABLE ttSendMail.                                          */
-    /*    CREATE  ttSendMail.                                                   */
-    /*    ASSIGN                                                                */
-    /*        ttSendMail.cFrom         = cMailFromFreigabe                      */
-    /*        ttSendMail.cTo           = cTo                                    */
-    /*        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/               */
-    /*        ttSendMail.cSubject      = cSubject                               */
-    /*        ttSendMail.cBody         = cBody                                  */
-    /*        ttSendMail.cAttachedName = cNamen                                 */
-    /*        ttSendMail.cAttachedFile = ipAttachment                           */
-    /*        ttSendMail.cMailServer   = cMailServer                            */
-    /*        ttSendMail.cMailPort     = cMailPort                              */
-    /*        ttSendMail.cMailKonto    = cMailKonto                             */
-    /*        ttSendMail.cMailPassw    = cMailPassw                             */
-    /*        ttSendMail.cDomaine      = cMailDomaine                           */
-    /*        ttSendMail.lAuth         = cMailAuth.                             */
-    /*                                                                          */
-    /*    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).*/
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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").
-    
-    iMaxPos = 2800.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-            PAUSE 0.2 NO-MESSAGE.
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2478
GUI/DruckProgramme/wiederkehr/LieferFak.p

@@ -1,2478 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN
-    ASSIGN
-        tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-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.
-
-    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 = sAufko.dFakdat.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-        
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-                
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                ASSIGN  
-                    Aufko.Fak_Datum = dFakDat
-                    Aufko.Gedruckt  = TRUE.
-                RELEASE Aufko.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr = Aufko.Faknr.
-        IF iFaknr = 0 THEN 
-        DO:
-            REPEAT TRANSACTION:
-                iFaknr = DYNAMIC-FUNCTION('createFaknr':U, Aufko.Firma ).
-                IF  iFaknr = ? OR
-                    iFaknr = 0 THEN 
-                DO:
-                    MESSAGE 'Es konnte keine Rechnungsnummer gelöst werden'   SKIP
-                        'Ein Benutzer blockiert die Steuerdatei'
-                        VIEW-AS ALERT-BOX ERROR.
-                    NEXT.
-                END.
-                FIND bAufko WHERE RECID(bAufko) = RECID(Aufko).
-                bAufko.Faknr = iFaknr.
-                RELEASE bAufko.
-                LEAVE.
-            END.
-        END.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sAufko.
-        ASSIGN  
-            sAufko.cFirma   = Aufko.Firma
-            sAufko.iAufnr   = Aufko.Aufnr
-            sAufko.iFak_Knr = Aufko.Fak_Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iKnr     = Aufko.Knr
-            sAufko.iSamm_Nr = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = iFaknr.
-        IF  Aufko.Fak_Datum = ?      OR
-            Aufko.Fak_Datum < TODAY  THEN sAufko.dFakDat = TODAY.
-        ELSE                              sAufko.dFakDat = Aufko.Fak_Datum.
-        RELEASE Aufko.
-        RELEASE bAufko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-        /*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = FALSE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = AufGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + AufGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE AufGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        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.
-        RELEASE AufGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH AufGKon NO-LOCK
-            WHERE AufGKon.Firma    = bAufko.Firma
-            AND   AufGKon.Aufnr    = bAufko.Aufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0  OR
-            AufGKon.Ausgang <> 0)
-                      
-            BREAK BY AufgKon.Firma
-            BY AufGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-            i1        = AufGKon.Ausgang - AufGKon.Eingang.
-            Rundbetr  = AufGKon.Betrag.
-            iMwstCd   = AufGKon.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(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE AufGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bAufko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bAufko.Wpfl[ii].
-        nMwst[ii] = bAufko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bAufko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bAufko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    /*  Gebinderücknahmetabelle  -------------------------------------------    */
-
-    DEFINE VARIABLE xString AS CHARACTER NO-UNDO.
-
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        RUN vpr_asc2rtf ( cText, '', OUTPUT cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'GebindeRuecknahme') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 150.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            iVPagePos = vpr_getPageVPos() + 75.
-        END.
-        ELSE iVPagePos = vpr_getPageVPos() + 150.
-
-        RUN vpr_setPageVPos  ( iVPagePos ).
-        RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).
-        RUN AUSGABE_GRUPPE   ( 'GebindeRuecknahme' ).
-    END.
-    
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-/*        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).*/
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    IF bAufko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-/*    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).*/
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    tAufko.lBetrag = FALSE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = 'ZZZ'
-                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 Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cLagOrt
-            tAufze.Sort2  = cSort
-            tAufze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    /*    EMPTY TEMP-TABLE ttSendMail.                                          */
-    /*    CREATE  ttSendMail.                                                   */
-    /*    ASSIGN                                                                */
-    /*        ttSendMail.cFrom         = cMailFromFreigabe                      */
-    /*        ttSendMail.cTo           = cTo                                    */
-    /*        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/               */
-    /*        ttSendMail.cSubject      = cSubject                               */
-    /*        ttSendMail.cBody         = cBody                                  */
-    /*        ttSendMail.cAttachedName = cNamen                                 */
-    /*        ttSendMail.cAttachedFile = ipAttachment                           */
-    /*        ttSendMail.cMailServer   = cMailServer                            */
-    /*        ttSendMail.cMailPort     = cMailPort                              */
-    /*        ttSendMail.cMailKonto    = cMailKonto                             */
-    /*        ttSendMail.cMailPassw    = cMailPassw                             */
-    /*        ttSendMail.cDomaine      = cMailDomaine                           */
-    /*        ttsendmail.lAuth         = lMailAuth                              */
-    /*        ttSendMail.lSSLEnabled   = lSSLEnabled.                           */
-    /*                                                                          */
-    /*    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).*/
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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").
-    
-    iMaxPos = 2800.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-            PAUSE 0.2 NO-MESSAGE.
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 97
GUI/DruckProgramme/wiederkehr/LieferPreis.p

@@ -1,97 +0,0 @@
-&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 cDruckProgramm  AS CHAR                     NO-UNDO.
-DEF VAR cInstallation   AS CHAR                     NO-UNDO.
-DEF VAR cResult         AS CHAR                     NO-UNDO.
-
-{ incl/ttdruckparam.i }
-
-/* _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).
-    
-    tParam.lPreis       = TRUE.
-    tParam.cDokument    = 'Lieferschein'.
-    cInstallation       = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
-    cDruckProgramm      = SUBSTITUTE('DruckProgramme/&1/&2',
-                                     cInstallation,
-                                     'Lieferschein.p' ).
-    cDruckProgramm      = SEARCH(cDruckProgramm).
-    RUN VALUE(cDruckProgramm) (INPUT htParam, OUTPUT cResult ).
-    opcResult = cResult.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-

+ 0 - 2041
GUI/DruckProgramme/wiederkehr/Lieferschein.p

@@ -1,2041 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOGICAL   NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-{ properties.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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  = 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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure
-PROCEDURE PRUEFZIFFER:
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-    
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tAufko.
-    hAufko = TEMP-TABLE tAufko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).
-
-    RUN vpr_ActivateReport  (tParam.cDokument).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-        
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST TUmsGrp WHERE TUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   TUmsGrp.MWst    = Aufze.WuCd
-        AND   TUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE TUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  TUmsGrp.
-        ASSIGN  
-            TUmsGrp.Ums_Grp = Artst.Wg_Grp
-            TUmsGrp.Mwst    = Aufze.WuCd
-            TUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN TUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       TUmsGrp.Bez = "??????????".
-    END.
-            
-    TUmsGrp.Ums_Betr = TUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab
-        - Aufze.Auf_Sp_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    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 = 0
-            sAufko.iRecid   = RECID(Aufko)
-            sAufko.iFaknr   = 0.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-        iVPagePos = vpr_getPageVPos() + 20.
-        RUN vpr_setPageVPos ( iVPagePos ).
-    END.
-    
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = TRUE.
-
-    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  :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    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.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Bemerkung_1' , 'Liefergebinde:' ).
-    nBetrag   = 0.
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH AufGKon NO-LOCK
-        WHERE AufGKon.Firma    = BAufko.Firma
-        AND   AufGKon.Aufnr    = BAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0)
-                  
-        BREAK BY AufgKon.Firma
-        BY AufGKon.Aufnr:
-
-        FIND GebKonto NO-LOCK
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        iMwstCd   = AufGKon.MWSt_Cd.
-        nBetrag   = nBetrag   + Rundbetr.
-        ii = ii + 1.
-        IF ii MOD 2 > 0 THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_1' , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_1', GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_1'          , 'à'          ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_1', TRIM(STRING(GebKonto.Depot ,'->>>9.99')) ).
-        END.
-        ELSE 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_2' , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_2', GebKonto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_2'          , 'à'          ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_2', TRIM(STRING(GebKonto.Depot ,'->>>9.99')) ).
-        END.
-    END.
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        RUN AUSGABE_GRUPPE ('ZusatzText').
-        RUN AUSGABE_GRUPPE ('GebindeLieferung').
-    END.
-    
-    /*  Gebindelrücknahmetablle  -------------------------------------------    */
-        
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        RUN vpr_asc2rtf ( cText, '', OUTPUT cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'GebindeRuecknahme') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 150.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            iVPagePos = vpr_getPageVPos() + 75.
-        END.
-        ELSE iVPagePos = vpr_getPageVPos() + 150.
-
-        RUN vpr_setPageVPos  ( iVPagePos ).
-        RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).
-        RUN AUSGABE_GRUPPE   ( 'GebindeRuecknahme' ).
-    END.
-    
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    RUN vpr_EndDoc.
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Lieferscheine',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Aufnr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bAufko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bAufko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bAufko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Aufze    WHERE RECID(Aufze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Aufze.Bez1.
-                
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Aufze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Aufze NO-LOCK.
-            
-    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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Aufze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Aufze.MRuek,'->>,>>9') ).
-
-
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    IF Aufze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Aufze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            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  = 'ZZZ'
-                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 Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cLagOrt
-            tAufze.Sort2  = cSort
-            tAufze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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=1').
-        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").
-    
-    iMaxPos = 2800.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-            PAUSE 0.2 NO-MESSAGE.
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 1211
GUI/DruckProgramme/wiederkehr/Offerte.p

@@ -1,1211 +0,0 @@
-&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 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/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.
-            
-    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.
-        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.
-            
-            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:  <none>
-  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 'D',
-                           INPUT iZeile, INPUT Aufze.Bez1 ).
-        IF Aufze.Bez2 = '' THEN RETURN.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           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 'A',
-                       INPUT iZeile, INPUT KGebinde.KBez ).
-    IF Aufze.VGeb_Me <> 0 THEN DO:
-        cString = STRING(Aufze.VGeb_Me,'->>>')
-                + 'x '
-                + STRING(VGebinde.KBez,'x(10)').
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
-                           INPUT iZeile, INPUT cString ).
-    END.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(Aufze.MGeli,'->>>>>9') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT Aufze.Bez1 ).
-    IF Aufze.Jahr > 9 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                           INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
-    IF Aufze.Alk_Gehalt <> 0 THEN
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'F',
-                           INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
-                       INPUT iZeile, INPUT STRING(Aufze.Artnr,'999999') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                       INPUT iZeile, INPUT STRING(Aufze.Preis,'>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                       INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
-    
-    IF Aufze.Bez2 <> '' THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Bez2 ).
-    END.
-    IF Aufze.Aktion THEN DO:
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT Aufze.Aktion_Text ).
-    END.
-    
-    DO WHILE TRUE:
-        IF Aufze.Rab_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Rab_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Rab_Art = 2    OR
-           Aufze.Rab_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        nRabWert = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        iZeile = iZeile + 1.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT TRIM(xRabText) ).
-        IF Aufze.Zus_Art = 1
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
-            
-        IF Aufze.Zus_Art = 2    OR
-           Aufze.Zus_Art = 3
-            THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                                    INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
-            
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT TRIM(STRING(- Aufze.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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iAufnr      AS INT                      NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    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.
-    
-    /*  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:  <none>
-  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.
-    
-    FIND FIRST tParam.
-
-    nFakBetr = 0.
-    iZeile   = 5.
-    
-    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.
-    
-    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   = bAdresse.Sprcd.
-
-    IF bAufko.Adresse[05] <> '' THEN DO:
-        DO ii = 1 TO 5:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAufko.Adresse[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-    ELSE DO:
-        DO ii = 7 TO 11:
-            RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'E',
-                               INPUT iZeile,   INPUT bAdresse.Anschrift[ii] ).
-            iZeile = iZeile + 1.
-        END.
-    END.
-
-    cDaten  = STRING(dFakDatum,'99.99.9999').
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT cDaten ).
-
-    iZeile = iZeile + 3.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
-
-    iZeile = iZeile + 2.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                       INPUT iZeile, INPUT bAufko.U_Ref ).
-
-    iZeile = 21.
-    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.
-    
-    iZeile = iZeile + 1.
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cFormText[13] ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
-                       
-    RUN SUMMENRABATTE.
-    RUN GEBINDE_SALDO.
-    RUN GEBINDE_ABRECHNUNG.
-    RUN MEHRWERTSTEUER.
-
-    iZeile = iZeile + 1.    
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, TRIM(SUBSTRING(cFormText[15],21,20)) ).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, TRIM(STRING(nFakBetr,'->>>>>9.99')) ).
-
-    iZeile = iZeile + 2.    
-    FIND Kondi USE-INDEX Kondi-k1
-               WHERE Kondi.Kond  = bAufko.Kond
-               AND   Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
-    IF AVAILABLE Kondi THEN DO:
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, Kondi.Kotext ).
-    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:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cVorlage    AS CHAR                     NO-UNDO.
-    DEF VAR lRetVal     AS LOG                      NO-UNDO.
-
-    FIND FIRST tParam.
-
-    hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
-    IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
-
-    cVorlage = tParam.Template + CHR(01) + tParam.Template.
-    RUN CREATEDATEI ( INPUT cVorlage ).
-
-    cVorlage = SESSION:TEMP-DIR + tParam.Template.
-    RUN OPENEXCEL ( INPUT hExcel,
-                    INPUT cVorlage,
-                    INPUT '',
-                    OUTPUT lRetVal ).
-    IF NOT lRetVal THEN DO:
-        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:  <none>
-  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:  <none>
-  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.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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(iMwstCd,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        nFakBetr = nFakBetr + nZTot.
-    END.
-    
-    iZeile = iZeile + 2.
-    cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                       INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-
-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:  <none>
-  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:  <none>
-  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 = MWSTAns.Bez.
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = TRIM(STRING(ix,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-    cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
-    RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                       INPUT iZeile, INPUT cDaten ).
-    
-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:  <none>
-  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 'D',
-                           INPUT iZeile,    INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-               
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten = STRING(- Rundbetr,"->>>>9.99").
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-        
-        cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
-                           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 'D',
-                           INPUT iZeile, INPUT cDaten ).
-        cDaten  = TRIM(STRING(nFakBetr,"->>>>9.99")).
-        RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
-                           INPUT iZeile, INPUT cDaten ).
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 1589
GUI/DruckProgramme/wiederkehr/Ruecknahme.p

@@ -1,1589 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast          AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis         AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde          AS LOGICAL   NO-UNDO.
-
-DEFINE VARIABLE cFirma         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr       AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum      AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale        AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext      AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf      AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl       AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr       AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode       AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte     AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko         AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cLieferscheine AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iMaxPos        AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument  AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr         AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr          AS INTEGER   INIT 0 NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ properties.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma      AS CHARACTER
-    FIELD iAufnr      AS INTEGER
-    FIELD iFak_Knr    AS INTEGER
-    FIELD iKnr        AS INTEGER
-    FIELD iSamm_Nr    AS INTEGER
-    FIELD iRecid      AS RECID
-    FIELD iFaknr      AS INTEGER
-    FIELD dLief_Datum AS DATE
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr   AS INTEGER
-    FIELD Sort1   AS CHARACTER
-    FIELD Sort2   AS CHARACTER
-    FIELD Sort3   AS CHARACTER
-    FIELD Artnr   AS INTEGER
-    FIELD Inhalt  AS INTEGER
-    FIELD Jahr    AS INTEGER
-    FIELD Pos     AS INTEGER
-    FIELD Zeile   AS RECID
-    FIELD Preis   AS DECIMAL   DECIMALS 4
-    FIELD Aktion  AS LOG
-    FIELD LagOrt  AS CHARACTER
-    FIELD MGeli   AS DECIMAL
-    FIELD MRuek   AS DECIMAL
-    FIELD GGeb_Me AS DECIMAL 
-    FIELD VGeb_Me AS DECIMAL 
-    FIELD KGeb_Me AS DECIMAL 
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tAufze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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  = tParam.lPreis.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-    
-FOR FIRST sAufko:
-
-    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.iSamm_Nr.
-        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 tAufze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            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.
-                
-            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.
-                
-            IF LAST-OF ( bAufko.Aufnr ) THEN lLast = TRUE.
-
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                RUN AUFTRAG_GEDRUCKT ( bAufko.Aufnr ).
-                LEAVE.
-            END.
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-GEBINDE_SALDO) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_SALDO Procedure
-PROCEDURE GEBINDE_SALDO:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE tGebKto.
-
-    FOR EACH sAufko:
-        FOR EACH AufGKon USE-INDEX AufGKon-k1
-            WHERE AufGKon.Firma    = sAufko.cFirma
-            AND   AufGKon.Aufnr    = sAufko.iAufnr
-            AND   AufGKon.Depot   <> 0
-            AND  (AufGKon.Eingang <> 0 OR
-            AufGKon.Ausgang <> 0) NO-LOCK:
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = AufGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN 
-            DO:
-                FIND GebKonto USE-INDEX GebKonto-k1
-                    WHERE GebKonto.Firma  = AufGKon.Firma
-                    AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd NO-LOCK.
-                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.
-    
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGebinde'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGebinde'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Aufze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr  AS INTEGER NO-UNDO.
-    DEFINE VARIABLE iSammNr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    FIND FIRST Aufko NO-LOCK
-        WHERE Aufko.Firma   = tParam.cFirma
-        AND   Aufko.Fak_Art = tParam.iFakArt
-        AND   Aufko.Fak_Knr = tParam.iFak_Knr
-        AND   Aufko.Aufnr   = tParam.iAufnr NO-ERROR.
-    IF NOT AVAILABLE Aufko THEN RETURN.
-    iSammNr = Aufko.Samm_Nr. 
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Samm_Nr     = iSammNr:
-
-        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
-            sAufko.dLief_Dat = Aufko.Lief_Dat.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-        iVPagePos = vpr_getPageVPos() + 20.
-        RUN vpr_setPageVPos ( iVPagePos ).
-    END.
-    
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tAufko NO-ERROR.
-    IF NOT AVAILABLE tAufko THEN CREATE tAufko.
-    BUFFER-COPY bAufko TO tAufko
-        ASSIGN  
-        tAufko.iRecid  = RECID(bAufko)
-        tAufko.lBetrag = TRUE.
-
-    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.Sort2 :
-             
-        FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tAufze) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-
-    RUN AUSGABE_ARTIKELZEILE.
-
-    iVPagePos = vpr_getPageVPos() + 100.
-    RUN vpr_setPageVPos  ( iVPagePos ).
-    
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    RUN VIPER_CREATE_DOKUMENT ( 'Zusatztext', iArtZeile,  'Bemerkung_1' , 'Liefergebinde:' ).
-    nBetrag   = 0.
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH TGebKto BY TGebKto.Sort_Cd
-        BY TGebKto.Geb_Cd :
-        ii = ii + 1.
-        IF ii MOD 2 > 0 THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_1' , TRIM(STRING(tGebKto.A_Anz,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_1', tGebKto.Bez ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_1'          , 'à'          ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_1', TRIM(STRING(tGebKto.Preis,'->>>9.99')) ).
-        END.
-        ELSE 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_2' , TRIM(STRING(tGebKto.A_Anz,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_2', tGebKto.Bez  ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_2'          , 'à'          ).
-            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_2', TRIM(STRING(tGebKto.Preis,'->>>9.99')) ).
-        END.
-    END.
-    /*    FOR EACH AufGKon NO-LOCK                                                                                                       */
-    /*        WHERE AufGKon.Firma    = BAufko.Firma                                                                                      */
-    /*        AND   AufGKon.Aufnr    = iFaknr                                                                                            */
-    /*        AND   AufGKon.Depot   <> 0                                                                                                 */
-    /*        AND  (AufGKon.Eingang <> 0  OR                                                                                             */
-    /*        AufGKon.Ausgang <> 0)                                                                                                      */
-    /*                                                                                                                                   */
-    /*        BREAK BY AufgKon.Firma                                                                                                     */
-    /*        BY AufGKon.Aufnr:                                                                                                          */
-    /*                                                                                                                                   */
-    /*        FIND GebKonto NO-LOCK                                                                                                      */
-    /*            WHERE GebKonto.Firma  = cFirma                                                                                         */
-    /*            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.                                                                                */
-    /*        i1        = AufGKon.Ausgang - AufGKon.Eingang.                                                                             */
-    /*        Rundbetr  = AufGKon.Betrag.                                                                                                */
-    /*        iMwstCd   = AufGKon.MWSt_Cd.                                                                                               */
-    /*        nBetrag   = nBetrag   + Rundbetr.                                                                                          */
-    /*        ii = ii + 1.                                                                                                               */
-    /*        IF ii MOD 2 > 0 THEN                                                                                                       */
-    /*        DO:                                                                                                                        */
-    /*            iArtZeile = iArtZeile + 1.                                                                                             */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_1' , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ). */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_1', GebKonto.Bez ).                            */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_1'          , 'à'          ).                            */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_1', TRIM(STRING(GebKonto.Depot ,'->>>9.99')) ).*/
-    /*        END.                                                                                                                       */
-    /*        ELSE                                                                                                                       */
-    /*        DO:                                                                                                                        */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeGel_2' , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ). */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'Gebindetext_2', GebKonto.Bez ).                            */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'a_2'          , 'à'          ).                            */
-    /*            RUN VIPER_CREATE_DOKUMENT ( 'GebindeLieferung', iArtZeile, 'GebindeBetr_2', TRIM(STRING(GebKonto.Depot ,'->>>9.99')) ).*/
-    /*        END.                                                                                                                       */
-    /*    END.                                                                                                                           */
-    RELEASE AufGKon.
-    RELEASE GebKonto.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        RUN AUSGABE_GRUPPE ('ZusatzText').
-        RUN AUSGABE_GRUPPE ('GebindeLieferung').
-    END.
-    
-    /*  Gebindelrücknahmetablle  -------------------------------------------    */
-        
-    iArtZeile = 0.
-    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bAufko.Fak_Art,'99')).
-    cText     = ''.
-
-    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-        WHERE TabTexte.Firma   = bAufko.Firma
-        AND   TabTexte.TextArt = xString
-        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        xString = 'GEBINDERETOUR'.
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.
-    END.
-    IF NOT AVAILABLE TabTexte THEN 
-    DO:
-        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1
-            WHERE TabTexte.Firma   = bAufko.Firma
-            AND   TabTexte.TextArt = xString
-            AND   TabTexte.Sprcd   = 1 NO-ERROR.
-    END.
-    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.
-
-    IF cText <> '' THEN 
-    DO:
-        RUN vpr_asc2rtf ( cText, '', OUTPUT cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'GebindeRuecknahme') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 150.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-            iVPagePos = vpr_getPageVPos() + 75.
-        END.
-        ELSE iVPagePos = vpr_getPageVPos() + 150.
-
-        RUN vpr_setPageVPos  ( iVPagePos ).
-        RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).
-        RUN AUSGABE_GRUPPE   ( 'GebindeRuecknahme' ).
-    END.
-    
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    RUN vpr_EndDoc.
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Lieferscheine',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Aufnr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        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   = 'T_Dokument'
-            tDokument.cInhalt = TRIM(SUBSTRING(cFormText[02],01,20)).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Knr,'999999').
-    
-        /*  Lieferscheine   */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lieferscheine_T'
-            tDokument.cInhalt = ENTRY(5, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lieferscheine'
-            tDokument.cInhalt = cLieferscheine.
-    
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bAufko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bAufko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bAufko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bAufko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seite           */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSort   AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tAufze.
-    
-    cLieferscheine = ''.
-    FOR EACH sAufko:     
-        cLieferscheine = cLieferscheine
-            + (IF cLieferscheine = '' THEN '' ELSE ', ')
-            + STRING(sAufko.iAufnr,'z999999')
-            + '/'
-            + STRING(sAufko.dLief_Datum,'99.99.9999').
-        cLagOrt = ''.
-        
-        FOR EACH Aufze NO-LOCK
-            WHERE Aufze.Firma = sAufko.cFirma
-            AND   Aufze.Aufnr = sAufko.iAufnr
-            AND   Aufze.Artnr > 0,
-        
-            FIRST Artst NO-LOCK
-            WHERE Artst.Firma  = Aufze.Firma
-            AND   Artst.Artnr  = Aufze.Artnr
-            AND   Artst.Inhalt = Aufze.Inhalt
-            AND   Artst.Jahr   = Aufze.Jahr :
-
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagort = ArtLager.Ort.
-            
-            cSort = STRING(Artst.Wg_Grp,'9999')
-                + STRING(Artst.Prod_Grp,'9999')
-                + STRING(Artst.Art_Grp ,'9999')
-                + STRING(Aufze.Pos     ,'9999').
-            FIND FIRST tAufze
-                WHERE tAufze.Aufnr  = sAufko.iSamm_Nr
-                AND   tAufze.Artnr  = Aufze.Artnr 
-                AND   tAufze.Inhalt = Aufze.Inhalt
-                AND   tAufze.Jahr   = Aufze.Jahr NO-ERROR.
-            IF NOT AVAILABLE tAufze THEN 
-            DO:
-                CREATE  tAufze.
-                ASSIGN  
-                    tAufze.Aufnr  = sAufko.iSamm_Nr
-                    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.Sort1  = cLagOrt
-                    tAufze.Sort2  = cSort
-                    tAufze.Sort3  = STRING(Aufze.Artnr ,'999999')
-                                  + STRING(Aufze.Inhalt,'9999')
-                                  + STRING(Aufze.Jahr  ,'9999')
-                    tAufze.LagOrt = cLagort.
-            END.
-            ASSIGN  
-                tAufze.MGel    = tAufze.MGel    + Aufze.MGel
-                tAufze.GGeb_Me = tAufze.GGeb_Me + Aufze.GGeb_Me
-                tAufze.VGeb_Me = tAufze.VGeb_Me + Aufze.VGeb_Me
-                tAufze.KGeb_Me = tAufze.KGeb_Me + Aufze.KGeb_Me.
-        END.
-    END.
-    
-    RUN GEBINDE_SALDO.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER 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=1').
-        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").
-    
-    iMaxPos = 2800.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        RUN vpr_printdoc ( iSeite, iSeite ).
-        PAUSE 0.2 NO-MESSAGE.
-        RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        RUN vpr_printdoc ( iSeite, iSeite ).
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2318
GUI/DruckProgramme/wiederkehr/SammelRechnung.p

@@ -1,2318 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bAufko   FOR Aufko   .
-DEFINE BUFFER bAufze   FOR Aufze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sAufko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tAufko LIKE Aufko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqAufko LIKE Aufko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
-htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tAufze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tAufze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-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.
-    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.
-
-    FIND Aufko NO-LOCK 
-        WHERE Aufko.Firma = sAufko.cFirma
-        AND   Aufko.Aufnr = sAufko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqAufko     .
-    CREATE  tqAufko.
-    BUFFER-COPY Aufko TO tqAufko
-        ASSIGN  
-        tqAufko.iRecid  = RECID(Aufko)
-        tqAufko.lBetrag = TRUE.
-    RELEASE Aufko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sAufko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bAufko NO-LOCK
-            WHERE bAufko.Firma      = sAufko.cFirma
-            AND   bAufko.Fak_Knr    = sAufko.iFak_Knr
-            AND   bAufko.Samm_Nr    = sAufko.iSamm_Nr
-            AND   bAufko.Faknr      = sAufko.iFaknr
-                    
-            BREAK BY bAufko.Fak_Knr
-            BY bAufko.Samm_Nr
-            BY bAufko.Knr
-            BY bAufko.Aufnr :
-
-            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.
-        
-            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.
-                
-            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.
-
-            IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-            /*  Auftragskopf mutieren       */
-                
-            REPEAT TRANSACTION:
-                IF iLauf < iAnzDok THEN LEAVE.
-                
-                FIND FIRST tTabTexte NO-LOCK
-                    WHERE tTabTexte.cRecArt = 'FAKART'
-                    AND   tTabTexte.iZeile  = 1.    
-                FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
-                Aufko.Gedruckt  = TRUE.
-            
-                IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art  = tTabTexte.iFeld1.
-                IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta  = tTabTexte.iFeld2.
-            
-                RELEASE Aufko.
-                LEAVE.
-            END.
-                
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hAufko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqAufko.
-    tqAufko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqAufko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    /*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-    /*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tAufze WHERE RECID(tAufze) = ipRecid      NO-LOCK.
-    FIND Aufze  WHERE RECID(Aufze)  = tAufze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Aufze.Artnr = 0:
-        cString = Aufze.Bez1.
-        IF Aufze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Aufze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        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 VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr   ,"999999") ).
-    
-    IF Aufze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Aufze.MGeli,'->>,>>9') ).
-    
-    cString = Aufze.Bez1.
-    IF Aufze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Bez2.
-    END.
-    IF Aufze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Aufze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Aufze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Aufze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Aufze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Aufze.WuCd    ,'z9') ).
-    
-    IF Aufze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Aufze.Rab_Wert).
-        IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Rab_Art = 2    OR
-            Aufze.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(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Aufze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Aufze.Zus_Wert).
-        IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Aufze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Aufze.Zus_Art = 2    OR
-            Aufze.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(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Aufze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Aufze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Aufze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Aufze.WuCd
-        AND   tUmsGrp.Ansatz  = Aufze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Aufze.WuCd
-            tUmsGrp.lInkl   = Aufze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Aufze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Aufze.Net_Betr
-        - Aufze.Auf_Rab
-        - Aufze.Abh_Rab
-        - Aufze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sAufko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
-        WHERE Aufko.Firma       = tParam.cFirma
-        AND   Aufko.Fak_Art     = tParam.iFakArt
-        AND   Aufko.Auf_Sta     = tParam.iAufSta
-        AND   Aufko.Auf_Sta    >= 4
-        AND   Aufko.Fak_Knr    >= tParam.iVonKnr
-        AND   Aufko.Fak_Knr    <= tParam.iBisKnr
-        AND   Aufko.Lief_Datum >= tParam.dVonDatum
-        AND   Aufko.Lief_Datum <= tParam.dBisDatum
-        AND   Aufko.Samm_Nr     > 0
-            
-        BREAK BY Aufko.Fak_Knr
-        BY Aufko.Samm_Nr
-        BY Aufko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
-        
-        IF tParam.iVerband <> 999999 THEN 
-        DO:
-            FIND bDebst NO-LOCK
-                WHERE bDebst.Firma = Aufko.Firma
-                AND   bDebst.Knr   = Aufko.Fak_Knr NO-ERROR.
-            IF NOT AVAILABLE bDebst THEN NEXT.
-            IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
-            RELEASE bDebst.
-        END.
-        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 Aufträge, die nicht in diese Auswahl passen    */
-    /*  Rechnunsnummer und Gedrucktflag zurücksetzen        */
-    /*  In Status 4 (Monatsrechnungen) zurück setzen        */
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko.
-            FOR EACH Aufko
-                WHERE Aufko.Firma   = sAufko.cFirma
-                AND   Aufko.Samm_Nr = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr = sAufko.iFak_Knr:
-                IF Aufko.Lief_Datum >= tParam.dvonDatum AND
-                    Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
-                
-                iAufnr = 0.
-                ASSIGN  
-                    Aufko.Faknr    = 0
-                    Aufko.Gedruckt = FALSE.
-                IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
-                RELEASE Aufko.
-                IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
-            END.
-        END.
-        RELEASE Aufko.
-        LEAVE.
-    END.
-    
-    /*  Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen    */
-    
-    FOR EACH sAufko
-        WHERE sAufko.iFaknr = 0:
-        sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
-        IF sAufko.iFaknr = 0 OR
-            sAufko.iFaknr = ? THEN 
-        DO:
-            MESSAGE 'Es konnten keine(nicht alle Rechnungsnummern gelöst werden'
-                VIEW-AS ALERT-BOX ERROR.
-            opcResult = 'FAKNR'.
-            RETURN NO-APPLY.
-        END.
-    END.
-    
-    REPEAT TRANSACTION:
-        FOR EACH sAufko:
-            FOR EACH Aufko
-                WHERE Aufko.Firma       = sAufko.cFirma
-                AND   Aufko.Samm_Nr     = sAufko.iSamm_Nr
-                AND   Aufko.Fak_Knr     = sAufko.iFak_Knr
-                AND   Aufko.Lief_Datum >= tParam.dvonDatum 
-                AND   Aufko.Lief_Datum <= tParam.dbisDatum:
-                ASSIGN  
-                    Aufko.Faknr     = sAufko.iFaknr
-                    Aufko.Fak_Datum = tParam.dFakDat.
-                RELEASE Aufko.
-            END.
-        END.
-        LEAVE.
-    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-AUSGABE_ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure 
-PROCEDURE AUSGABE_ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF  bAufko.Knr = bAufko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bAufko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bAufko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    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) ).
-
-        nFakBetr = nFakBetr + Aufze.Net_Betr.
-        RELEASE Aufze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.F_Wert).
-        IF AufRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        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.
-        nRabWert = ABSOLUT(AufRabSu.A_Wert).
-        IF AufRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
-            WHERE AufSpRab.Firma    = bAufko.Firma
-            AND   AufSpRab.Aufnr    = bAufko.Aufnr
-            AND   AufSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
-        IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Gebuehr <> 0
-        AND   AufGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = AufGKon.MWST_Cd.
-        nFakBetr = nFakBetr + AufGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE AufGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH AufGKon USE-INDEX AufGKon-k1
-        WHERE AufGKon.Firma    = bAufko.Firma
-        AND   AufGKon.Aufnr    = bAufko.Aufnr
-        AND   AufGKon.Depot   <> 0
-        AND  (AufGKon.Eingang <> 0  OR
-        AufGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = AufGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bAufko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = AufGKon.Geb_Cd.
-        i1        = AufGKon.Ausgang - AufGKon.Eingang.
-        Rundbetr  = AufGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bAufko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bAufko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bAufko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bAufko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bAufko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bAufko.Fak_Knr,'999999')
-        + STRING(bAufko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bAufko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bAufko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-    
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bAufko.Knr  ,'999999'),
-        STRING(bAufko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        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(dFakDatum,"99.99.9999").
-
-        cString = (IF bAufko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER 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  = ''
-            tAufze.Sort2  = 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  = 'ZZZ'
-                tAufze.Sort2  = 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 WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    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 Artst NO-LOCK
-                WHERE Artst.Firma  = Aufze.Firma
-                AND   Artst.Artnr  = Aufze.Artnr
-                AND   Artst.Inhalt = Aufze.Inhalt
-                AND   Artst.Jahr   = Aufze.Jahr NO-ERROR.
-                
-            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 NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
-        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  = cSort
-            tAufze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tAufze.Pos,'99999')
-            tAufze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2750.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    IF tParam.lCreatePDF THEN 
-    DO:
-        RUN vpr_initGraphObj.
-        RUN vpr_FlushGroup  ('Fusstext').
-    END.
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2361
GUI/DruckProgramme/wiederkehr/Sav_Faktura.p

@@ -1,2361 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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 = sSavko.dFakdat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.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 CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Savze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   SavKo.Fak_Art     = tParam.iFakArt  
-        AND   Savko.Faknr       = tParam.iFaknr :
-            
-        iFaknr        = Savko.Faknr.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr
-            sSavko.dFakDat  = Savko.Fak_Datum.
-        RELEASE Savko.
-        RELEASE bSavko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tSavko NO-ERROR.
-    IF NOT AVAILABLE tSavko THEN CREATE tSavko.
-    BUFFER-COPY bSavko TO tSavko
-        ASSIGN  
-        tSavko.iRecid  = RECID(bSavko)
-        tSavko.lBetrag = TRUE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE SavGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Depot   <> 0
-            AND   SavGKon.Betrag  <> 0 :
-
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN 
-            DO:
-                FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = SavGKon.Firma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-                CREATE  tGebKto.
-                ASSIGN  
-                    tGebKto.Sort_Cd = GebKonto.Sort_Cd
-                    tGebKto.Geb_Cd  = GebKonto.Geb_Cd
-                    tGebKto.Bez     = GebKonto.Bez
-                    tGebKto.Preis   = SavGKon.Depot
-                    tGebKto.MWST_Cd = SavGKon.MWSt_Cd.
-            END.
-            tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-            tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-            tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-            tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-        END.
-        RELEASE SavGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Depot   <> 0
-            AND  (SavGKon.Eingang <> 0  OR
-            SavGKon.Ausgang <> 0)
-                      
-            BREAK BY SavGKon.Firma
-            BY SavGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE SavGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bSavko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    IF bSavko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    /*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-    RUN vpr_ActivateReport  (tParam.cDokument).
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bSavko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bSavko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bSavko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bSavko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bSavko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bSavko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Savze    WHERE RECID(Savze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Savze.Bez1.
-                
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Savze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Savze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MRuek,'->>,>>9') ).
-
-
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    IF Savze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Savze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-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_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = STRING(0,'99')
-            tSavze.Sort2 = ''
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos   ,'99999').
-        tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1 = STRING(99,'99')
-                tSavze.Sort2 = ''
-                tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                                 + STRING(tSavze.Inhalt,'9999')
-                                 + STRING(tSavze.Jahr  ,'9999')
-                                 + STRING(iPlusMinus   ,'9')
-                                 + STRING(tSavze.Pos   ,'99999').
-            tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Lagerort             */
-    cLagOrt = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager.
-            cLagOrt = ArtLager.Ort.
-        END.
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1 = STRING(jPlatz,'99')
-            tSavze.Sort2 = cLagOrt
-            tSavze.Sort3 = STRING(tSavze.Artnr ,'999999')
-                             + STRING(tSavze.Inhalt,'9999')
-                             + STRING(tSavze.Jahr  ,'9999')
-                             + STRING(iPlusMinus   ,'9')
-                             + STRING(tSavze.Pos   ,'99999').
-        tSavze.LagOrt = cLagort.
-                
-        IF tSavze.MRuek > 0 THEN 
-        DO:
-            CREATE  tRueckst.
-            BUFFER-COPY tSavze
-                TO      tRueckst
-                ASSIGN  
-                tRueckst.Zeile = RECID(Savze).
-        END.
-        
-        IF tSavze.Artnr > 0  AND
-            tSavze.MGeli = 0  THEN DELETE tSavze.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    /*    EMPTY TEMP-TABLE ttSendMail.                                          */
-    /*    CREATE  ttSendMail.                                                   */
-    /*    ASSIGN                                                                */
-    /*        ttSendMail.cFrom         = cMailFromFreigabe                      */
-    /*        ttSendMail.cTo           = cTo                                    */
-    /*        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/               */
-    /*        ttSendMail.cSubject      = cSubject                               */
-    /*        ttSendMail.cBody         = cBody                                  */
-    /*        ttSendMail.cAttachedName = cNamen                                 */
-    /*        ttSendMail.cAttachedFile = ipAttachment                           */
-    /*        ttSendMail.cMailServer   = cMailServer                            */
-    /*        ttSendMail.cMailPort     = cMailPort                              */
-    /*        ttSendMail.cMailKonto    = cMailKonto                             */
-    /*        ttSendMail.cMailPassw    = cMailPassw                             */
-    /*        ttSendMail.cDomaine      = cMailDomaine                           */
-    /*        ttsendmail.lAuth         = lMailAuth                              */
-    /*        ttSendMail.lSSLEnabled   = lSSLEnabled.                           */
-    /*                                                                          */
-    /*    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).*/
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        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").
-    
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        /*        IF tParam.lDokDruck THEN                                                      */
-        /*        DO:                                                                           */
-        /*            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).*/
-        /*            RUN vpr_printdoc ( iSeite, iSeite ).                                      */
-        /*            PAUSE 0.2 NO-MESSAGE.                                                     */
-        /*            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).*/
-        /*            RUN vpr_printdoc ( iSeite, iSeite ).                                      */
-        /*        END.                                                                          */
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2225
GUI/DruckProgramme/wiederkehr/Sav_FestRechnung.p

@@ -1,2225 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqSavko AS HANDLE NO-UNDO.
-htqSavko = TEMP-TABLE tqSavko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-    
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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.
-        
-    FIND Savko NO-LOCK 
-        WHERE Savko.Firma = sSavko.cFirma
-        AND   Savko.Aufnr = sSavko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqSavko     .
-    CREATE  tqSavko.
-    BUFFER-COPY Savko TO tqSavko
-        ASSIGN  
-        tqSavko.iRecid  = RECID(Savko)
-        tqSavko.lBetrag = TRUE.
-    RELEASE Savko.
-
-    { vpr.i INIT  }
-{ vpr.i START }
-                
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-            AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-            AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-            BREAK BY bSavko.Fak_Knr
-            BY bSavko.Samm_Nr
-            BY bSavko.Knr
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            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   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqSavko.
-    tqSavko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tqSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    /*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-    RUN vpr_ActivateReport  (tParam.cDokument).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez1 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE tRabSumm THEN 
-        DO:
-            tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Savze.Auf_Rab.
-            tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp
-        WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.lInkl   = Savze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab
-        - Savze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   SavKo.Fak_Art     = tParam.iFakArt  
-        AND   Savko.Faknr       = tParam.iFaknr :
-            
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = Savko.Samm_Nr
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = Savko.Faknr.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF bSavko.Knr = bSavko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + STRING(bSavko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-    
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bSavko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        /*         CREATE  tDokument. */
-        /*         ASSIGN  tDokument.cGruppe = 'KOPF' */
-        /*                 tDokument.iZeile  = 1 */
-        /*                 tDokument.cFeld   = 'T_Dokument' */
-        /*                 tDokument.cInhalt = (IF bSavko.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(bSavko.Faknr,'z999999'). */
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = ''
-            tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                          + STRING(tSavze.Inhalt,'9999')
-                          + STRING(tSavze.Jahr  ,'9999')
-                          + STRING(iPlusMinus   ,'9')
-                          + STRING(tSavze.Pos   ,'99999')
-            tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1  = 'ZZZ'
-                tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                              + STRING(tSavze.Inhalt,'9999')
-                              + STRING(tSavze.Jahr  ,'9999')
-                              + STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos   ,'99999')
-                tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-                
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = cSort
-            tSavze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tSavze.Pos,'99999')
-            tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_ResetDoc.
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2750.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    IF tParam.lCreatePDF THEN 
-    DO:
-        RUN vpr_initGraphObj.
-        RUN vpr_FlushGroup  ('Fusstext').
-    END.
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2430
GUI/DruckProgramme/wiederkehr/Sav_LieferFak.p

@@ -1,2430 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lLast         AS LOG       NO-UNDO INIT FALSE.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-DEFINE VARIABLE lEnde         AS LOG       NO-UNDO INIT FALSE.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-DEFINE VARIABLE VWg_Grp       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VProd_Grp     AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE VArt_Grp      AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AArtnr        AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AInhalt       AS INTEGER   INIT 0 NO-UNDO.
-DEFINE VARIABLE AJahr         AS INTEGER   INIT 0 NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/ttdruckparam.i }
-{ incl/properties.i   }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    FIELD dFakDat  AS DATE
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL
-    .
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tRueckst LIKE tSavze
-    .
-
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-/* ************************  Function Prototypes ********************** */
-
-
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-
-
-/* *********************** 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).
-IF tParam.lSendMail THEN ASSIGN tParam.lDokDruck  = FALSE
-        tParam.lCreatePDF = TRUE
-        tParam.lOpenPDF   = FALSE.
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl
-    lPreis  = TRUE.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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 = sSavko.dFakdat.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lLast     = FALSE.
-
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Aufnr      = sSavko.iAufnr
-                    
-            BREAK BY bSavko.Firma
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            EMPTY TEMP-TABLE tGebKto    .
-            EMPTY TEMP-TABLE tRabSumm   .
-            EMPTY TEMP-TABLE tSpeRab    .
-            EMPTY TEMP-TABLE tTabTexte  .
-            EMPTY TEMP-TABLE tRueckst   .
-                
-            FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
-                WHERE bAdresse.Firma = AdFirma
-                AND   bAdresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-                
-            IF LAST-OF ( bSavko.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 CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-FUELLEN_UEBERSCHRIFT) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_UEBERSCHRIFT Procedure
-PROCEDURE FUELLEN_UEBERSCHRIFT:
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Artnr_T'
-        tDokument.cInhalt = ENTRY(1, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(2, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'VGeb_T'
-        tDokument.cInhalt = ENTRY(3, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_Menge_T'
-        tDokument.cInhalt = ENTRY(4, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'KGeb_T'
-        tDokument.cInhalt = ENTRY(5, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Bez_T'
-        tDokument.cInhalt = ENTRY(6, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Alk%_T'
-        tDokument.cInhalt = ENTRY(7, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'JG_T'
-        tDokument.cInhalt = ENTRY(8, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Preis_T'
-        tDokument.cInhalt = ENTRY(9, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'Betrag_T'
-        tDokument.cInhalt = ENTRY(10, cFormText[23], ';').
-
-    CREATE  tDokument.
-    ASSIGN  
-        tDokument.cGruppe = 'UEBERSCHRIFT'
-        tDokument.iZeile  = 1
-        tDokument.cFeld   = 'MC_T'
-        tDokument.cInhalt = ENTRY(11, cFormText[23], ';').
-
-    cZellen = ''.
-    cWerte  = ''.
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = 'Ueberschrift'
-        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 ('Ueberschrift', cZellen, cWerte).
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr'   , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', STRING(Savze.VGeb_Me,'->>,>>9') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.KBez ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    DO WHILE lPreis :
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-        
-        IF Savze.Rab_Betr = 0 THEN LEAVE.
-
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    DO WHILE lPreis:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF  Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF  Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab.
-        
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Aufnr       = tParam.iAufnr :
-            
-        iFaknr        = Savko.Faknr.
-        tParam.iFaknr = iFaknr.
-        
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = 0
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = iFaknr
-            sSavko.dFakDat  = Savko.Fak_Datum.
-        RELEASE Savko.
-        RELEASE bSavko.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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().
-            RUN vpr_setPageVPos  ( iVPagePos ).
-            RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-        END.
-        IF FIRST-OF ( tDokument.iZeile ) THEN 
-        DO:
-            cZellen = ''.
-            cWerte  = ''.
-        END.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        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.
-        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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   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 VIPER_NEUE_SEITE.
-    /*        iVPagePos = vpr_getPageVPos().    */
-    /*        RUN vpr_setPageVPos ( iVPagePos ).*/
-    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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nBetrag   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nRabwert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE lJa       AS LOG       NO-UNDO.
-    DEFINE VARIABLE cPDFName  AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE nPfli     AS DECIMAL   EXTENT 12 NO-UNDO.
-    DEFINE VARIABLE nMwst     AS DECIMAL   EXTENT 12 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lBatch THEN 
-    DO:
-        ASSIGN  
-            tParam.lOpenPDF = FALSE.
-    END.
-    lEnde = FALSE.
-    
-    FIND FIRST tSavko NO-ERROR.
-    IF NOT AVAILABLE tSavko THEN CREATE tSavko.
-    BUFFER-COPY bSavko TO tSavko
-        ASSIGN  
-        tSavko.iRecid  = RECID(bSavko)
-        tSavko.lBetrag = FALSE.
-
-    nFakBetr = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-    
-    RUN DRUCKEN_KOPF.
-
-    iArtZeile = 0.
-    iVPagePos = vpr_getPageVPos() + 50.
-    RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
-    
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-
-    iArtZeile = iArtZeile + 1.
-    cText = TRIM(SUBSTRING(cFormText[10],41,20)).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , cText ).
-    cText = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-    RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-    
-    iArtZeile = 0.
-    ii        = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-        ii = ii + 1.
-    END.
-    IF ii > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', '  ' ).
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    ii = 0.
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        cText = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    ii = 0.
-    FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
-        BY tSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = tSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = tSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        cText = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        ii        = ii        + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = tSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        cText   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Total nach Abzug des Auftrag- / Abhol-Rabattes ---------------------    */
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],21,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.99')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', '  ' ).
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        
-        RUN AUSGABE_ARTIKELZEILE.
-    END.
-        
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon NO-LOCK
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 :
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN cText = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           cText = GebKonto.Bez.
-        
-        iMwstCd   = SavGKon.MWST_Cd.
-        nFakBetr  = nFakBetr + SavGKon.Betrag.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.999')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        cText     = TRIM(SUBSTRING(cFormText[14],41,20)).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cText ).
-        cText     = TRIM(STRING(nFakBetr,'->>>,>>9.999')).
-        RUN vpr_asc2rtf ( cText, 'bold', OUTPUT cText).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', cText ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', ' ' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', ' ' ).
-    END.
-    RELEASE SavGKon.
-    
-    /*  Gebinde Aus- und Eingänge   ----------------------------------------    */
-
-    IF FDebst.Geb_Rg THEN 
-    DO:
-        FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Depot   <> 0
-            AND   SavGKon.Betrag  <> 0 :
-
-            FIND FIRST tGebKto WHERE tGebKto.Geb_Cd = SavGKon.Geb_Cd NO-ERROR.
-            IF NOT AVAILABLE tGebKto THEN 
-            DO:
-                FIND GebKonto NO-LOCK
-                    WHERE GebKonto.Firma  = SavGKon.Firma
-                    AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-                CREATE  tGebKto.
-                ASSIGN  
-                    tGebKto.Sort_Cd = GebKonto.Sort_Cd
-                    tGebKto.Geb_Cd  = GebKonto.Geb_Cd
-                    tGebKto.Bez     = GebKonto.Bez
-                    tGebKto.Preis   = SavGKon.Depot
-                    tGebKto.MWST_Cd = SavGKon.MWSt_Cd.
-            END.
-            tGebKto.A_Anz    = tGebKto.A_Anz + SavGKon.Ausgang.
-            tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
-            tGebKto.E_Anz    = tGebKto.E_Anz + SavGKon.Eingang.
-            tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
-        END.
-        RELEASE SavGKon.
-        
-        /*  Gebindelieferungen  ------------------------------------------------    */
-
-        nBetrag   = 0.
-        FOR EACH SavGKon NO-LOCK
-            WHERE SavGKon.Firma    = bSavko.Firma
-            AND   SavGKon.Aufnr    = bSavko.Aufnr
-            AND   SavGKon.Depot   <> 0
-            AND  (SavGKon.Eingang <> 0  OR
-            SavGKon.Ausgang <> 0)
-                      
-            BREAK BY SavGKon.Firma
-            BY SavGKon.Aufnr:
-
-            FIND GebKonto NO-LOCK
-                WHERE GebKonto.Firma  = cFirma
-                AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-            i1        = SavGKon.Ausgang - SavGKon.Eingang.
-            Rundbetr  = SavGKon.Betrag.
-            iMwstCd   = SavGKon.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(SavGKon.Ausgang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-            IF lPreis THEN 
-                RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr    ,"->>,>>9.999")) ).
-        END.
-        RELEASE SavGKon.
-        RELEASE GebKonto.
-        
-        IF  lPreis        AND
-            iArtZeile > 0 THEN 
-        DO:
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , TRIM(STRING(nBetrag      ,"->>>,>>9.999")) ).
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot'  , ' ' ).
-        END.
-        nFakBetr = nFakBetr + nBetrag.
-    END.
-
-    IF iArtZeile > 0 THEN 
-    DO:    
-        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'ArtikelZeile1') NO-ERROR.
-        ii = ii + DYNAMIC-FUNCTION ('calculateBlock':U, 'Gebindeabrechnung') NO-ERROR.
-        ii = ii + vpr_getPageVPos() + 50.
-        IF ii > (iMaxPos) THEN 
-        DO:
-            RUN VIPER_NEUE_SEITE.
-        END.
-        RUN AUSGABE_GRUPPE ( 'ArtikelZeile1'     ).
-        RUN AUSGABE_GRUPPE ( 'Gebindeabrechnung' ).
-    END.
-        
-    /*  Mehrwertsteuer  ----------------------------------------------------    */
-
-    nPfli     = 0.
-    nMwst     = 0.
-    i1        = 2.
-    DO ii = 1 TO 11:
-        IF bSavko.WPfl[ii] = 0 THEN NEXT.
-        nPfli[ii] = bSavko.Wpfl[ii].
-        nMwst[ii] = bSavko.Wust[ii].
-        nFakBetr = nFakBetr + nMwst[ii].
-        i1       = i1       + 1.
-    END.
-    
-    iArtZeile = 0.
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', 1,  'MwstBez' , ' ' ).
-    DO ii = 1 TO 11:
-        IF nPfli[ii] = 0 THEN NEXT.
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ii
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(nPfli[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(nMwst[ii],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ii       ,"->>,>>9")) ).
-    END.
-    
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    /*  Rechnungsbetrag  ---------------------------------------------------    */
-
-    Rundbetr = nFakBetr.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    nFakBetr = Rundbetr.
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Rechnungsbetrag inkl. Mehrwertsteuer' ).
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(nFakBetr,"->>>,>>9.99")) ).
-    
-    FIND FIRST Kondi NO-LOCK
-        WHERE Kondi.Kond = bSavko.Kond.
-    IF Kondi.Skonto[01] <> 0 THEN 
-    DO:
-        Rundbetr = bSavko.Sk_Ber * Kondi.Skonto[01] / 100.
-        Rundcode = 1.
-        RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', '  ' ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Skontoabzug' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        
-        Rundbetr  = nFakBetr  - Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', 'Barzahlungsbetrag' ).
-        RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'EndBetrag', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile,  'Rechnungsbetrag_T', Kondi.KoText ).
-    
-    RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
-
-/*    /*  Gebinderücknahmetabelle  -------------------------------------------    */           */
-/*                                                                                             */
-/*    DEFINE VARIABLE xString AS CHARACTER NO-UNDO.                                            */
-/*                                                                                             */
-/*    iArtZeile = 0.                                                                           */
-/*    xString   = SUBSTITUTE('GEBINDERETOUR&1', STRING(bSavko.Fak_Art,'99')).                  */
-/*    cText     = ''.                                                                          */
-/*                                                                                             */
-/*    FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1                                              */
-/*        WHERE TabTexte.Firma   = bSavko.Firma                                                */
-/*        AND   TabTexte.TextArt = xString                                                     */
-/*        AND   TabTexte.Sprcd   = iSprcd NO-ERROR.                                            */
-/*    IF NOT AVAILABLE TabTexte THEN                                                           */
-/*    DO:                                                                                      */
-/*        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1                                          */
-/*            WHERE TabTexte.Firma   = bSavko.Firma                                            */
-/*            AND   TabTexte.TextArt = xString                                                 */
-/*            AND   TabTexte.Sprcd   = 1 NO-ERROR.                                             */
-/*    END.                                                                                     */
-/*    IF NOT AVAILABLE TabTexte THEN                                                           */
-/*    DO:                                                                                      */
-/*        xString = 'GEBINDERETOUR'.                                                           */
-/*        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1                                          */
-/*            WHERE TabTexte.Firma   = bSavko.Firma                                            */
-/*            AND   TabTexte.TextArt = xString                                                 */
-/*            AND   TabTexte.Sprcd   = iSprcd NO-ERROR.                                        */
-/*    END.                                                                                     */
-/*    IF NOT AVAILABLE TabTexte THEN                                                           */
-/*    DO:                                                                                      */
-/*        FIND TabTexte NO-LOCK USE-INDEX TabTexte-k1                                          */
-/*            WHERE TabTexte.Firma   = bSavko.Firma                                            */
-/*            AND   TabTexte.TextArt = xString                                                 */
-/*            AND   TabTexte.Sprcd   = 1 NO-ERROR.                                             */
-/*    END.                                                                                     */
-/*    IF AVAILABLE TabTexte THEN cText = TabTexte.Inhalt.                                      */
-/*                                                                                             */
-/*    IF cText <> '' THEN                                                                      */
-/*    DO:                                                                                      */
-/*        RUN vpr_asc2rtf ( cText, '', OUTPUT cText ).                                         */
-/*        RUN VIPER_CREATE_DOKUMENT ( 'GebindeRuecknahme', 1,  'GebindeRuecknahme_T' , cText ).*/
-/*        ii = DYNAMIC-FUNCTION ('calculateBlock':U, 'GebindeRuecknahme') NO-ERROR.            */
-/*        ii = ii + vpr_getPageVPos() + 150.                                                   */
-/*        IF ii > (iMaxPos) THEN                                                               */
-/*        DO:                                                                                  */
-/*            RUN VIPER_NEUE_SEITE.                                                            */
-/*            iVPagePos = vpr_getPageVPos() + 75.                                              */
-/*        END.                                                                                 */
-/*        ELSE iVPagePos = vpr_getPageVPos() + 150.                                            */
-/*                                                                                             */
-/*        RUN vpr_setPageVPos  ( iVPagePos ).                                                  */
-/*        RUN vpr_setGroupVPos ( 'GebindeRuecknahme', iVPagePos ).                             */
-/*        RUN AUSGABE_GRUPPE   ( 'GebindeRuecknahme' ).                                        */
-/*    END.                                                                                     */
-/*                                                                                             */
-    lEnde = TRUE.
-    RUN VIPER_NEUE_SEITE.
-    
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-/*        IF tParam.lDokDruck THEN RUN vpr_PrintDoc ( 0, 0 ).*/
-        RETURN.
-    END.
-    
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    IF bSavko.Auf_Tot > 0 THEN 
-    DO:
-        RUN vpr_newPage.
-        RUN DRUCKEN_QRCODE.
-    END.
-
-    RUN vpr_EndDoc.
-/*    IF tParam.lDokDruck THEN RUN vpr_printDoc ( 0, 0 ).*/
-    
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente,
-        tParam.cInstall, 
-        'Rechnungen',
-        SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument) ).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    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:    
-        DEFINE VARIABLE 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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-
-    iPos      = vpr_getGroupVPos('KopfDetail').
-    iVPagePos = vpr_getCellVPos('Seite_T', 'Kopf') + vpr_getCellHeight('Seite_T', 'Kopf').
-    IF iPos > iVPagePos THEN iVPagePos = iPos.
-    iVPagePos = iVPagePos + 20.
-
-    RUN vpr_setGroupVPos ( 'Ueberschrift', iVPagePos ).
-    RUN vpr_FlushGroup   ( 'Ueberschrift' ).
-    
-    iPos = vpr_getGroupVPos('Ueberschrift') + vpr_getGroupHeight('Ueberschrift').
-    RUN vpr_setPageVPos ( iPos ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_QRCODE :
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tSavko.
-    hSavko = TEMP-TABLE tSavko:DEFAULT-BUFFER-HANDLE.
-    tSavko.lBetrag = FALSE.
-    
-    FIND FIRST tParam.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tSavko.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( hSavko, cFileName ).
-    
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1    AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-        iFaknr = tParam.iFaknr.
-        
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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   = 'T_Dokument'
-            tDokument.cInhalt = (IF bSavko.Auf_Tot >= 0
-                                    THEN TRIM(SUBSTRING(cFormText[02],01,20))
-                                    ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        tDokument.cInhalt = tDokument.cInhalt
-            + ' '
-            + STRING(iFaknr,'z999999').
-    
-        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").
-
-        /*  Kundennummer        */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr_T'
-            tDokument.cInhalt = ENTRY(1, cFormText[24], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Knr,'999999').
-    
-        /*  Gewicht             */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[19], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Gewicht'
-            tDokument.cInhalt = TRIM(STRING(bSavko.Gewicht,'->>>,>>9.999')).
-                              
-        /*  Bestellt am     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Bestellt_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Auf_Datum'
-            tDokument.cInhalt = STRING(bSavko.Auf_Datum,'99.99.9999').
-    
-        /*  Lieferdatum     */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Geliefert_T'
-            tDokument.cInhalt = ENTRY(3, cFormText[20], ';').
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPFDETAIL'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Lief_Datum'
-            tDokument.cInhalt = STRING(bSavko.Lief_Datum,'99.99.9999').
-            
-        /*  Auftragstext, Abladevorschrift, Abholtext   */
-        cText = ''.
-        IF bSavko.Auf_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) )
-                + bSavko.Auf_Text.
-                                            
-        FIND FIRST tTabTexte WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
-        IF AVAILABLE tTabTexte THEN 
-        DO:
-            IF tTabTexte.cFeld3 <> '' THEN
-                cText = cText
-                    + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                    + tTabTexte.cFeld3.
-        END.
-        IF bSavko.Abh_Text <> '' THEN
-            cText = cText
-                + (IF cText = '' THEN '' ELSE CHR(10) + CHR(10) )
-                + bSavko.Abh_Text.
-                
-        IF cText <> '' THEN 
-        DO:
-            RUN vpr_asc2rtf ( cText, '', OUTPUT cText).
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'KOPFDETAIL'
-                tDokument.iZeile  = 1
-                tDokument.cFeld   = 'Kopftexte'
-                tDokument.cInhalt = cText.
-        END.
-
-        /*  Seitentext      */
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Seite_T'
-            tDokument.cInhalt = ENTRY(2, cFormText[24], ';').
-    END.
-    
-    RUN DRUCKEN_ADRESSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_RUECKSTAND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_RUECKSTAND Procedure 
-PROCEDURE DRUCKEN_RUECKSTAND :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    
-    FIND tRueckst WHERE RECID(tRueckst) = ipRecid        NO-LOCK.
-    FIND Savze    WHERE RECID(Savze)    = tRueckst.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = Savze.Bez1.
-                
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            iArtZeile = iArtZeile + 1.
-            CREATE  tDokument.
-            ASSIGN  
-                tDokument.cGruppe = 'ArtikelZeile1'
-                tDokument.iZeile  = iArtZeile
-                tDokument.cFeld   = 'Bez1'
-                tDokument.cInhalt = Savze.Bez2.
-        END.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    
-    IF Savze.VGeb_Ru <> 0 THEN 
-    DO:
-        cString = STRING(Savze.VGeb_Ru,'->>>>')
-            + 'x '
-            + VGebinde.KBez.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge', STRING(Savze.MRuek,'->>,>>9') ).
-
-
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    IF Savze.Aktion     THEN cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
-    
-    RELEASE Savze   .
-    RELEASE Artst   .
-    RELEASE VGebinde.
-    RELEASE KGebinde.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_tSavze) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tSavze Procedure 
-PROCEDURE FUELLEN_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO INIT 1.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = STRING(0,'99')
-            tSavze.Sort2  = ''
-            tSavze.Sort3  = STRING(tSavze.Artnr ,'999999')
-                          + STRING(tSavze.Inhalt,'9999')
-                          + STRING(tSavze.Jahr  ,'9999')
-                          + STRING(iPlusMinus   ,'9')
-                          + STRING(tSavze.Pos   ,'99999')
-            tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-                
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1  = 'ZZZ'
-                tSavze.Sort2  = ''
-                tSavze.Sort3  = STRING(tSavze.Artnr ,'999999')
-                              + STRING(tSavze.Inhalt,'9999')
-                              + STRING(tSavze.Jahr  ,'9999')
-                              + STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos   ,'99999')
-                tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach Lagerort/WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-                
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = cLagOrt
-            tSavze.Sort2  = cSort
-            tSavze.Sort3  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tSavze.Pos,'99999')
-            tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_MAIL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_MAIL Procedure 
-PROCEDURE SEND_MAIL :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAttachment    AS CHARACTER     NO-UNDO.
-
-    FIND FIRST tParam.
-
-    DEFINE VARIABLE cTo       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cCc       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE lRetValue AS LOG       NO-UNDO.
-    DEFINE VARIABLE cMeldung  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cSubject  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBody     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cQuittung AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iInd      AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cNamen    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.    
-    
-    FIND Adresse NO-LOCK
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = tParam.iKnr NO-ERROR.
-    cTo = Adresse.Mail.
-    cTo = 'rs@adprime.ch'.
-    cCc = 'wr@adprime.ch'.
-    
-    IF cTo             = '' THEN RETURN.
-    IF INDEX(cTo, '@') = 0 THEN RETURN.
-
-    cSubject      = SUBSTITUTE('Rechnung &1 vom &2', tParam.iFaknr, STRING(TODAY,'99.99.9999') ).
-    cBody         = SUBSTITUTE('Im Anhang die Rechnung von der Lieferung vom &1 ', STRING(TODAY,'99.99.9999') ).
-    cQuittung     = SUBSTITUTE('&1&2-&3-Quittung.pdf', cPathQuittung, STRING(tParam.iKnr,'999999'), STRING(tParam.iAufnr,'9999999')).
-    
-    FILE-INFO:FILE-NAME = cQuittung.
-    cQuittung    = FILE-INFO:FULL-PATHNAME NO-ERROR.
-    IF cQuittung = ? THEN cQuittung = ''.
-    IF cQuittung <> '' THEN 
-    DO:
-        ipAttachment = ipAttachment
-            + (IF ipAttachment = '' THEN '' ELSE ';')
-            + cQuittung.
-    END.
-                  
-    DO ii = 1 TO NUM-ENTRIES(ipAttachment, ';'):
-        cName  = ENTRY(ii, ipAttachment, ';').
-        cName  = REPLACE(cName, '\', '/').
-        IF R-INDEX(cName, '/') > 0 THEN cName = SUBSTRING(cName, R-INDEX(cName, '/') + 1).
-        cNamen = cNamen
-            + (IF cNamen = '' THEN '' ELSE ';')
-            + cName.
-    END.
-
-    /*    EMPTY TEMP-TABLE ttSendMail.                                          */
-    /*    CREATE  ttSendMail.                                                   */
-    /*    ASSIGN                                                                */
-    /*        ttSendMail.cFrom         = cMailFromFreigabe                      */
-    /*        ttSendMail.cTo           = cTo                                    */
-    /*        ttSendMail.cCC           = cCC /* cMailCCFreigabe*/               */
-    /*        ttSendMail.cSubject      = cSubject                               */
-    /*        ttSendMail.cBody         = cBody                                  */
-    /*        ttSendMail.cAttachedName = cNamen                                 */
-    /*        ttSendMail.cAttachedFile = ipAttachment                           */
-    /*        ttSendMail.cMailServer   = cMailServer                            */
-    /*        ttSendMail.cMailPort     = cMailPort                              */
-    /*        ttSendMail.cMailKonto    = cMailKonto                             */
-    /*        ttSendMail.cMailPassw    = cMailPassw                             */
-    /*        ttSendMail.cDomaine      = cMailDomaine                           */
-    /*        ttsendmail.lAuth         = lMailAuth                              */
-    /*        ttSendMail.lSSLEnabled   = lSSLEnabled.                           */
-    /*                                                                          */
-    /*    RUN sendsmtpmail.p ( httSendMail, OUTPUT cMeldung, OUTPUT lRetValue ).*/
-
-    RETURN cMeldung.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    
-    IF iLauf = 1 THEN 
-    DO:
-        RUN vpr_SelectPrinter   (tParam.Drucker).
-        RUN vpr_setPrinterAttrib('duplex=1').
-        RUN vpr_SetPrinterAttrib('copies=1').
-        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").
-    
-    iMaxPos = 2800.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cTempDateiName AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN FUELLEN_UEBERSCHRIFT.
-            LEAVE.
-        END.
-        
-        IF tParam.lDokDruck THEN 
-        DO:
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-            PAUSE 0.2 NO-MESSAGE.
-            RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-            RUN vpr_printdoc ( iSeite, iSeite ).
-        END.
-        
-        IF NOT lEnde THEN 
-        DO:
-            RUN vpr_NewPage.
-            RUN vpr_InitGroups('').
-            iSeite = iSeite + 1.
-            RUN DRUCKEN_ADRESSE.
-        END.
-        LEAVE.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-
-/* ************************  Function Implementations ***************** */
-&IF DEFINED(EXCLUDE-calculateBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calculateBlock Procedure
-FUNCTION calculateBlock RETURNS INTEGER 
-    ( ipGruppe AS CHARACTER  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEF VAR cZellen AS CHAR NO-UNDO.
-    DEF VAR cWerte  AS CHAR NO-UNDO.
-    DEF VAR iSpace  AS INT  NO-UNDO.
-    DEF VAR iGrpHo  AS INT  NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    /*    RUN vpr_InitGroups(ipGruppe).*/
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-

+ 0 - 2215
GUI/DruckProgramme/wiederkehr/Sav_SammelRechnung.p

@@ -1,2215 +0,0 @@
-&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  ************************** */
-
-DEFINE INPUT  PARAMETER iphParam   AS HANDLE           NO-UNDO.
-DEFINE OUTPUT PARAMETER opcResult  AS CHARACTER             NO-UNDO.
-
-DEFINE VARIABLE iSeite        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzDok       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iLauf         AS INTEGER   NO-UNDO.
-DEFINE VARIABLE lFirst        AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lLast         AS LOG       INIT FALSE NO-UNDO.
-DEFINE VARIABLE lPreis        AS LOG       NO-UNDO.
-
-DEFINE VARIABLE cFirma        AS CHARACTER NO-UNDO.
-DEFINE VARIABLE AdFirma       AS CHARACTER NO-UNDO.
-DEFINE VARIABLE nFakBetr      AS DECIMAL   NO-UNDO.
-DEFINE VARIABLE dFakDatum     AS DATE      NO-UNDO.
-DEFINE VARIABLE iFaknr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iSprcd        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE nTotale       AS DECIMAL   EXTENT 15 NO-UNDO.
-DEFINE VARIABLE cFormtext     AS CHARACTER EXTENT 30 NO-UNDO.
-DEFINE VARIABLE cRabText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cZusText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cEpzText      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cBesrKopf     AS CHARACTER EXTENT 12 NO-UNDO.
-DEFINE VARIABLE lDebIncl      AS LOG       NO-UNDO.
-DEFINE VARIABLE Rundbetr      AS DECIMAL   DECIMALS 4 NO-UNDO.
-DEFINE VARIABLE RundCode      AS INTEGER   INIT 1 NO-UNDO.
-DEFINE VARIABLE htTabTexte    AS HANDLE    NO-UNDO.
-DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
-
-DEFINE VARIABLE iWgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iPgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAgr          AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iArtnr        AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iInhalt       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iJahr         AS INTEGER   NO-UNDO.
-
-DEFINE VARIABLE iMaxPos       AS INTEGER   INIT 2650 NO-UNDO.
-DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iArtZeile     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVPagePos     AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iVGroupPos    AS INTEGER   NO-UNDO.
-
-DEFINE BUFFER bSavko   FOR Savko   .
-DEFINE BUFFER bSavze   FOR Savze   .
-DEFINE BUFFER FDebst   FOR Debst   .       /*  Fakturaadresse  */
-DEFINE BUFFER LDebst   FOR Debst   .       /*  Lieferadresse   */
-DEFINE BUFFER LAdresse FOR Adresse .
-DEFINE BUFFER bAdresse FOR Adresse .
-DEFINE BUFFER bWust    FOR Wust    .
-DEFINE BUFFER bSteuer  FOR Steuer  .
-
-{ incl/properties.i   }
-{ incl/ttdruckparam.i }
-{ swissQR/propertiesSwissQR.i }
-
-DEFINE TEMP-TABLE tDokument
-    FIELD cGruppe AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld   AS CHARACTER
-    FIELD cInhalt AS CHARACTER
-    
-    INDEX tDokument-k1 IS PRIMARY
-    cGruppe
-    iZeile
-    cFeld
-    .
-DEFINE TEMP-TABLE tTotale
-    FIELD nMwstPfl AS DECIMAL EXTENT 12
-    FIELD nMwstBet AS DECIMAL EXTENT 12
-    FIELD nSammTot AS DECIMAL
-    FIELD nSkBer   AS DECIMAL
-    FIELD nWW      AS DECIMAL
-    .
-DEFINE TEMP-TABLE sSavko
-    FIELD cFirma   AS CHARACTER
-    FIELD iAufnr   AS INTEGER
-    FIELD iFak_Knr AS INTEGER
-    FIELD iKnr     AS INTEGER
-    FIELD iSamm_Nr AS INTEGER
-    FIELD iRecid   AS RECID
-    FIELD iFaknr   AS INTEGER
-    .
-DEFINE TEMP-TABLE tSavko LIKE Savko
-    FIELD iRecid AS RECID
-    .
-DEFINE TEMP-TABLE tqSavko LIKE Savko
-    FIELD iRecid  AS RECID
-    FIELD lBetrag AS LOGICAL.
-    .
-DEFINE VARIABLE htqSavko AS HANDLE NO-UNDO.
-htqSavko = TEMP-TABLE tqSavko:DEFAULT-BUFFER-HANDLE.
-
-DEFINE TEMP-TABLE tSavze
-    FIELD Aufnr  AS INTEGER
-    FIELD Sort1  AS CHARACTER
-    FIELD Sort2  AS CHARACTER
-    FIELD Sort3  AS CHARACTER
-    FIELD Artnr  AS INTEGER
-    FIELD Inhalt AS INTEGER
-    FIELD Jahr   AS INTEGER
-    FIELD Pos    AS INTEGER
-    FIELD Zeile  AS RECID
-    FIELD Preis  AS DECIMAL   DECIMALS 4
-    FIELD Aktion AS LOG
-    FIELD LagOrt AS CHARACTER
-    FIELD MGeli  AS DECIMAL
-    FIELD MRuek  AS DECIMAL
-    
-    INDEX tSavze-k1 IS PRIMARY
-    Aufnr
-    Sort1
-    Sort2
-    Sort3
-    .
-DEFINE TEMP-TABLE tSpeRab
-    FIELD Rab_Grp  AS INTEGER
-    FIELD Auf_Betr AS DECIMAL DECIMALS 4
-    .
-DEFINE TEMP-TABLE tGebKto
-    FIELD Sort_Cd  AS CHARACTER
-    FIELD Geb_Cd   AS CHARACTER
-    FIELD Bez      AS CHARACTER
-    FIELD Preis    AS DECIMAL
-    FIELD A_Anz    AS DECIMAL
-    FIELD A_Betrag AS DECIMAL
-    FIELD E_Anz    AS DECIMAL
-    FIELD E_Betrag AS DECIMAL
-    FIELD MWST_Art AS INTEGER
-    FIELD MWST_Cd  AS INTEGER
-    .
-DEFINE TEMP-TABLE tRabSumm
-    FIELD Rab_Summ  AS INTEGER
-    FIELD Bez       AS CHARACTER
-    FIELD F_Rab_Art AS INTEGER
-    FIELD F_Wert    AS DECIMAL   DECIMALS 4
-    FIELD A_Rab_Art AS INTEGER
-    FIELD A_Wert    AS DECIMAL   DECIMALS 4
-    FIELD Auf_Rab   AS DECIMAL   DECIMALS 4
-    FIELD Abh_Rab   AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tUmsGrp
-    FIELD Ums_Grp  AS INTEGER
-    FIELD Mwst     AS INTEGER
-    FIELD Ansatz   AS DECIMAL
-    FIELD Bez      AS CHARACTER
-    FIELD lInkl    AS LOG
-    FIELD Ums_Betr AS DECIMAL   DECIMALS 4
-    .
-DEFINE TEMP-TABLE tTabTexte
-    FIELD cRecArt AS CHARACTER
-    FIELD iZeile  AS INTEGER
-    FIELD cFeld1  AS CHARACTER
-    FIELD cFeld2  AS CHARACTER
-    FIELD cFeld3  AS CHARACTER
-    FIELD iFeld1  AS INTEGER
-    FIELD iFeld2  AS INTEGER
-    FIELD iFeld3  AS INTEGER
-    
-    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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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 = ''.
-cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
-
-CREATE tParam.
-htParam:BUFFER-COPY(iphParam).
-    
-ASSIGN  
-    cFirma  = tParam.cFirma
-    iAnzDok = tParam.Anzahl.
-            
-FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-AdFirma = bSteuer.AdFirma.
-
-RUN AUFTRAG_ERMITTELN.
-IF opcResult <> '' THEN RETURN.
-
-FOR EACH sSavko
-    BY sSavko.iFak_Knr:
-
-    FIND bAdresse NO-LOCK
-        WHERE bAdresse.Firma = AdFirma
-        AND   bAdresse.Knr   = sSavko.iFak_Knr.
-    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.
-
-    FIND Savko NO-LOCK 
-        WHERE Savko.Firma = sSavko.cFirma
-        AND   Savko.Aufnr = sSavko.iAufnr NO-ERROR.
-    EMPTY TEMP-TABLE tqSavko     .
-    CREATE  tqSavko.
-    BUFFER-COPY Savko TO tqSavko
-        ASSIGN  
-        tqSavko.iRecid  = RECID(Savko)
-        tqSavko.lBetrag = TRUE.
-    RELEASE Savko.
-    
-    { vpr.i INIT  }
-{ vpr.i START }
-
-    DO iLauf = 1 TO iAnzDok:
-        
-        dFakDatum = tParam.dFakDatum.
-        iSeite    = 0.
-        iFaknr    = sSavko.iFaknr.
-        lFirst    = TRUE.
-        lPreis    = TRUE.
-        lLast     = FALSE.
-                    
-        EMPTY TEMP-TABLE tUmsGrp    .
-        EMPTY TEMP-TABLE tTotale    .
-        EMPTY TEMP-TABLE tDokument  .
-            
-        CREATE  tTotale.
-            
-        FOR EACH bSavko NO-LOCK
-            WHERE bSavko.Firma      = sSavko.cFirma
-            AND   bSavko.Fak_Knr    = sSavko.iFak_Knr
-            AND   bSavko.Samm_Nr    = sSavko.iSamm_Nr
-            AND   bSavko.Faknr      = sSavko.iFaknr
-                    
-            BREAK BY bSavko.Fak_Knr
-            BY bSavko.Samm_Nr
-            BY bSavko.Knr
-            BY bSavko.Aufnr :
-
-            EMPTY TEMP-TABLE tSavze     .
-            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   = bSavko.Fak_Knr NO-ERROR.
-            FIND LDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE LDebst.Firma  = cFirma
-                AND   LDebst.Knr    = bSavko.Knr NO-ERROR.
-            FIND FDebst NO-LOCK USE-INDEX Debst-k1
-                WHERE FDebst.Firma  = cFirma
-                AND   FDebst.Knr    = bSavko.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.
-        
-            hSavko     = BUFFER bSavko: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 ( hSavko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
-                
-            RUN FUELLEN_tSavze ( bSavko.Aufnr ) NO-ERROR.
-                
-            FOR EACH tSavze
-                WHERE tSavze.Artnr > 0:
-                
-                FIND bSavze NO-LOCK WHERE RECID(bSavze) = tSavze.Zeile.
-                    
-                /*  Spezial-Auftragsrabatt pro Lieferschein bilden  */
-                
-                IF bSavze.Auf_Sp_Grp > 0 THEN 
-                DO:
-                    FIND FIRST tSpeRab
-                        WHERE tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp NO-ERROR.
-                    IF NOT AVAILABLE tSpeRab THEN 
-                    DO:
-                        CREATE  tSpeRab.
-                        ASSIGN  
-                            tSpeRab.Rab_Grp = bSavze.Auf_Sp_Grp.
-                    END.
-                    tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bSavze.Auf_Sp_Rab.
-                END.
-                    
-                /*  Summengruppen-Totale pro Lieferschein bilden  */
-                    
-                DO WHILE bSavze.Rab_Su_Grp > 0:
-                    FIND FIRST tRabSumm
-                        WHERE tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                    IF NOT AVAILABLE tRabSumm THEN 
-                    DO:
-                        FIND FIRST RabSumm NO-LOCK
-                            WHERE RabSumm.Firma    = bSavze.Firma
-                            AND   RabSumm.Rab_Summ = bSavze.Rab_Su_Grp NO-ERROR.
-                        IF NOT AVAILABLE RabSumm THEN LEAVE.
-                        CREATE  tRabSumm.
-                        ASSIGN  
-                            tRabSumm.Rab_Summ = bSavze.Rab_Su_Grp
-                            tRabSumm.Bez      = RabSumm.Bez
-                            tRabSumm.Auf_Rab  = 0
-                            tRabSumm.Abh_Rab  = 0.
-                    END.
-                    LEAVE.
-                END.
-            END.
-
-            IF LAST-OF ( bSavko.Samm_Nr ) THEN lLast = TRUE.
-                
-            iArtZeile = 0.
-            RUN DRUCKEN.
-            
-        END.
-    END.
-    { vpr.i STOP }
-END.
-
-PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
-    DEFINE INPUT PARAMETER lphwnd       AS LONG.
-    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER.
-    DEFINE INPUT PARAMETER lpFile       AS CHARACTER.
-    DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
-    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER.
-    DEFINE INPUT PARAMETER nShowCmd     AS LONG.
-    DEFINE RETURN PARAMETER hInstance   AS LONG.
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
-PROCEDURE DRUCKEN_QRCODE:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-    
-    DEFINE VARIABLE cFileName     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cString       AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hSavko        AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
-    DEFINE VARIABLE cWerbung      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cConString    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE i1            AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tqSavko.
-    tqSavko.Auf_Tot = RundBetr.
-    
-    FIND FIRST tParam.
-    RUN vpr_newPage.
-    
-    FIND FIRST ViperDoc NO-LOCK
-        WHERE ViperDoc.Firma    = tParam.Firma
-        AND   ViperDoc.Benutzer = ''
-        AND   ViperDoc.Formular = 'BESR_QR'
-        AND   ViperDoc.DokArt   = 0 NO-ERROR.
-    IF NOT AVAILABLE ViperDoc THEN RETURN.
-    
-    RUN vpr_LoadVFR         (cBesrTemplate).
-    RUN vpr_ActivateReport  ('BESR_QR').
-    RUN vpr_SelectPrinter   (ViperDoc.Drucker).
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_InitGroups      ("").
-    RUN vpr_initGraphObj.
-    IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
-
-    cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bSavko.Aufnr,'9999999')).
-
-    RUN 'SwissQR/SwissQRCode.p' ( htqSavko, cFileName ).
-
-    cFilename = cFileName + '.jpg'.
-    IF SEARCH(cFileName) <> ? THEN 
-    DO:
-        cFileName = 'FILENAME=' + cFileName.
-        RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
-    END.
-    /*    FILE-INFO:FILE-NAME = cFileName.    */
-    /*    cFileName = FILE-INFO:FULL-PATHNAME.*/
-
-    cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
-    cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqSavko.Firma).
-
-    IF SEARCH(cWerbung) <> ? THEN 
-    DO:
-        cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
-        RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
-    END.
-    
-    RUN vpr_InitGraphObj.
-    RUN vpr_flushGroup('QRCODE').
-
-/*    RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
-
-/*    RUN vpr_ActivateReport  (tParam.cDokument).*/
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure 
-PROCEDURE ARTIKELZEILE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipRecid AS RECID            NO-UNDO.
-    
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE nRabWert AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
-    
-    FIND tSavze WHERE RECID(tSavze) = ipRecid      NO-LOCK.
-    FIND Savze  WHERE RECID(Savze)  = tSavze.Zeile NO-LOCK.
-
-    iArtZeile = iArtZeile + 1.    
-    DO WHILE Savze.Artnr = 0:
-        cString = Savze.Bez1.
-        IF Savze.Bez2 <> '' THEN 
-        DO:
-            cString = cString
-                + (IF cString = '' THEN '' ELSE CHR(10))
-                + Savze.Bez2.
-        END.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'ArtikelZeile1'
-            tDokument.iZeile  = iArtZeile
-            tDokument.cFeld   = 'Bez1'
-            tDokument.cInhalt = cString.
-        RETURN.
-    END.
-
-    FIND Artst OF Savze NO-LOCK.
-            
-    FIND GGebinde NO-LOCK
-        WHERE GGebinde.Firma  = cFirma
-        AND   GGebinde.Geb_Cd = Savze.GGeb_Cd NO-ERROR.
-    FIND VGebinde NO-LOCK
-        WHERE VGebinde.Firma  = cFirma
-        AND   VGebinde.Geb_Cd = Savze.VGeb_Cd NO-ERROR.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = cFirma
-        AND   KGebinde.Geb_Cd = Savze.KGeb_Cd NO-ERROR.
-
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Savze.Artnr   ,"999999") ).
-    
-    IF Savze.VGeb_Me <> 0 THEN 
-    DO:
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Savze.VGeb_Me,'->>>>>9')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde'  , VGebinde.KBez ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge'   , STRING(Savze.MGeli,'->>,>>9') ).
-    
-    cString = Savze.Bez1.
-    IF Savze.Bez2 <> '' THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Bez2.
-    END.
-    IF Savze.Aktion THEN 
-    DO:
-        cString = cString
-            + (IF cString = '' THEN '' ELSE CHR(10))
-            + Savze.Aktion_Text.
-    END.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
-    
-    IF Savze.Alk_Gehalt <> 0 THEN 
-    DO:
-        cString = STRING(Savze.Alk_Gehalt,"zz9.9%").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
-    END.
-    IF Savze.Jahr > 9 THEN 
-    DO:
-        cString = STRING(Savze.Jahr,"9999").
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Savze.Preis   ,'>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Savze.Bru_Betr,'->>>,>>9.99') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC'    , STRING(Savze.WuCd    ,'z9') ).
-    
-    IF Savze.Rab_Betr <> 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.        
-        nRabWert  = ABSOLUTE(Savze.Rab_Wert).
-        IF Savze.Rab_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Rab_Betr < 0 THEN xRabText = cZusText.
-            IF Savze.Rab_Betr > 0 THEN xRabText = cRabText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Rab_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Rab_Art = 2    OR
-            Savze.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(- Savze.Rab_Betr,"->>>,>>9.99")) ).
-    END.
-    
-    DO WHILE TRUE:    
-        IF Savze.Zus_Betr = 0 THEN LEAVE.
-        
-        iArtZeile = iArtZeile + 1.        
-        nRabWert   = ABSOLUTE(Savze.Zus_Wert).
-        IF Savze.Zus_Art = 3 THEN xRabText = cEpzText.
-        ELSE 
-        DO:
-            IF Savze.Zus_Betr < 0 THEN xRabText = cRabText.
-            IF Savze.Zus_Betr > 0 THEN xRabText = cZusText.
-        END.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
-        
-        IF Savze.Zus_Art = 1    THEN cString = STRING(nRabWert,"->9.9%").
-        IF Savze.Zus_Art = 2    OR
-            Savze.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(+ Savze.Zus_Betr,"->>>,>>9.99")) ).
-        LEAVE.
-    END.
-    
-    /*  ----  Summengruppen-Total  -------------------------------------------- */
-        
-    IF Savze.Rab_Su_Grp <> 0 THEN 
-    DO:
-        FIND FIRST TRabSumm WHERE TRabSumm.Rab_Summ = Savze.Rab_Su_Grp NO-ERROR.
-        IF AVAILABLE TRabSumm THEN 
-        DO:
-            TRabSumm.Auf_Rab = TRabSumm.Auf_Rab + Savze.Auf_Rab.
-            TRabSumm.Abh_Rab = TRabSumm.Abh_Rab + Savze.Abh_Rab.
-        END.
-    END.
-            
-    /*  ----  Warengruppen-Totale  -------------------------------------------- */
-        
-    FIND FIRST tUmsGrp WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
-        AND   tUmsGrp.MWst    = Savze.WuCd
-        AND   tUmsGrp.Ansatz  = Savze.Mwst% NO-ERROR.
-    IF NOT AVAILABLE tUmsGrp THEN 
-    DO:
-        FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-            WHERE WarenGrp.Firma  = cFirma
-            AND   WarenGrp.Wgr    = Artst.Wg_Grp NO-ERROR.
-        CREATE  tUmsGrp.
-        ASSIGN  
-            tUmsGrp.Ums_Grp = Artst.Wg_Grp
-            tUmsGrp.Mwst    = Savze.WuCd
-            tUmsGrp.lInkl   = Savze.Mwst_Inkl
-            tUmsGrp.Ansatz  = Savze.MWST%.
-        IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
-        ELSE                       tUmsGrp.Bez = "??????????".
-    END.
-            
-    tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr 
-        + Savze.Net_Betr
-        - Savze.Auf_Rab
-        - Savze.Abh_Rab
-        - Savze.Auf_Sp_Rab.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
-    
-    DEFINE BUFFER bDebst FOR Debst.
-
-    FIND FIRST tParam.
-    
-    EMPTY TEMP-TABLE sSavko.
-    
-    /*  Sammeln aller Aufträge pro Sammelnummer  */
-    
-    FOR EACH Savko NO-LOCK USE-INDEX Savko-k5
-        WHERE Savko.Firma       = tParam.cFirma
-        AND   Savko.Fak_Art     = tParam.iFakArt
-        AND   Savko.Faknr       = tParam.iFaknr
-            
-        BREAK BY Savko.Fak_Knr
-        BY Savko.Samm_Nr
-        BY Savko.Faknr DESCENDING:
-                  
-        IF NOT FIRST-OF ( Savko.Samm_Nr ) THEN NEXT.
-        
-        CREATE  sSavko.
-        ASSIGN  
-            sSavko.cFirma   = Savko.Firma
-            sSavko.iAufnr   = Savko.Aufnr
-            sSavko.iFak_Knr = Savko.Fak_Knr
-            sSavko.iKnr     = Savko.Knr
-            sSavko.iSamm_Nr = Savko.Samm_Nr
-            sSavko.iRecid   = RECID(Savko)
-            sSavko.iFaknr   = Savko.Faknr.
-    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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iPos    AS INTEGER   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.
-/*        IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
-        IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
-        cWerte  = cWerte 
-            + tDokument.cInhalt.
-        cZellen = cZellen
-            + tDokument.cFeld.
-                
-/*        CASE tDokument.cFeld:                               */
-/*            WHEN 'Bez1' THEN                                */
-/*                cWerte = REPLACE(cWerte, CHR(10), ' \par ').*/
-/*        END CASE.                                           */
-
-        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 vpr_SetPageVPos ( iMaxPos ).
-            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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER     NO-UNDO.
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    
-    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_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        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_setPageVPos  ( iVPagePos ).
-                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.
-                
-        CASE tDokument.cFeld:
-            WHEN 'Bez1' THEN 
-                cWerte = REPLACE(cWerte, CHR(10), ' \par ').
-        END CASE.
-                
-        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-DRUCKEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure 
-PROCEDURE DRUCKEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE xString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE RText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE WText     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nRabWert  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE iMwstCd   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE nZeiTot   AS DECIMAL   DECIMALS 4 NO-UNDO.
-    
-    FIND FIRST tParam.
-    IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
-
-    nFakBetr  = 0.
-    IF iSeite = 0 THEN RUN VIPER_INIT.
-
-    RUN DRUCKEN_KOPF.
-
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-    RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
-    
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    xString = TRIM(SUBSTRING(cFormText[17],01,20))      + ' / '
-        + TRIM(SUBSTRING(cFormText[17],21,20))      + '     '
-        + TRIM(STRING(bSavko.Aufnr,"zzzzzzzzz9"))   + ' / '
-        + TRIM(STRING(bSavko.Lief_Datum,"99.99.9999")).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
-    
-    DO WHILE TRUE:
-        lFirst    = TRUE.
-        cLAdresse = ''.
-        IF  bSavko.Knr = bSavko.Fak_Knr AND
-            NOT FDebst.Passant          THEN LEAVE.
-           
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-        DO ii = 1 TO 5:
-            IF bSavko.Adresse[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bSavko.Adresse[ii] ).
-            lFirst = FALSE.
-        END.
-        IF NOT lFirst THEN LEAVE.
-        IF bSavko.Knr = bSavko.Fak_Knr THEN LEAVE.
-        FIND LAdresse NO-LOCK
-            WHERE LAdresse.Firma = AdFirma
-            AND   LAdresse.Knr   = bSavko.Knr NO-ERROR.
-        IF NOT AVAILABLE LAdresse THEN LEAVE.
-        DO ii = 1 TO 12:
-            IF LAdresse.Anschrift[ii] = '' THEN NEXT.
-            iArtZeile = iArtZeile + 1.
-            RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
-            lFirst = FALSE.
-        END.
-        LEAVE.
-    END.
-    IF NOT lFirst THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
-    
-    iArtZeile = 0.
-    FOR EACH tSavze NO-LOCK
-        BY tSavze.Aufnr
-        BY tSavze.Sort1
-        BY tSavze.LagOrt
-        BY tSavze.Sort2
-        BY tSavze.Pos  :
-             
-        FIND Savze NO-LOCK WHERE RECID(Savze) = tSavze.Zeile.
-        
-        RUN ARTIKELZEILE ( RECID(tSavze) ).
-
-        nFakBetr = nFakBetr + Savze.Net_Betr.
-        RELEASE Savze.
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    
-    RUN AUSGABE_ARTIKELZEILE.
-
-    /*  Auftragsrabatt  ----------------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH tRabSumm
-        WHERE tRabSumm.Auf_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Auf_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.F_Wert).
-        IF SavRabSu.F_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-
-    /*  Abholrabatt  -------------------------------------------------------    */
-    
-    FOR EACH tRabSumm WHERE tRabSumm.Abh_Rab <> 0
-        BY tRabSumm.Rab_Summ:
-        Rundbetr = tRabSumm.Abh_Rab.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + tRabSumm.Bez.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavRabSu NO-LOCK USE-INDEX SavRabSu-k1
-            WHERE SavRabSu.Firma    = bSavko.Firma
-            AND   SavRabSu.Aufnr    = bSavko.Aufnr
-            AND   SavRabSu.Rab_Summ = tRabSumm.Rab_Summ.
-        nRabWert = ABSOLUT(SavRabSu.A_Wert).
-        IF SavRabSu.A_Proz_Betr THEN WText = "%".
-        ELSE                         WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    /*  Spezialpreis-Auftragsrabatte  ----------------------------------------  */
-    
-    FOR EACH TSpeRab WHERE TSpeRab.Auf_Betr <> 0
-        BY TSpeRab.Rab_Grp:
-        FIND Tabel USE-INDEX Tabel-k1
-            WHERE Tabel.Firma  = cFirma
-            AND   Tabel.RecArt = 'ARABGRP'
-            AND   Tabel.CodeC  = ''
-            AND   Tabel.CodeI  = TSpeRab.Rab_Grp
-            AND   Tabel.Sprcd  = 1 NO-LOCK.
-        Rundbetr = TSpeRab.Auf_Betr.
-        nFakBetr = nFakBetr - Rundbetr.
-        IF Rundbetr < 0 THEN RText = cZusText.
-        ELSE                 RText = cRabText.
-        xString   = RText
-            + " "
-            + Tabel.Bez1.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        FIND FIRST SavSpRab USE-INDEX SavSpRab-k1
-            WHERE SavSpRab.Firma    = bSavko.Firma
-            AND   SavSpRab.Aufnr    = bSavko.Aufnr
-            AND   SavSpRab.Rab_Grp  = TSpeRab.Rab_Grp NO-LOCK.
-        nRabWert = ABSOLUT(SavSpRab.Auf_Wert).
-        IF SavSpRab.Auf_Proz_Betr THEN WText = "%".
-        ELSE                           WText = "Fr.".
-        xString   = STRING(nRabWert,"z9.99-")
-            + WText.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
-    END.
-    
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-    
-    /*  Recycling-Gebuehren  -----------------------------------------------    */
-
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Gebuehr <> 0
-        AND   SavGKon.Betrag  <> 0 NO-LOCK:
-            
-        FIND GebKonto OF SavGKon NO-LOCK NO-ERROR.
-        IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
-        ELSE                           xString = GebKonto.Bez.
-        
-        iMwstCd  = SavGKon.MWST_Cd.
-        nFakBetr = nFakBetr + SavGKon.Betrag.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(SavGKon.Betrag,'->>>,>>9.99')) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(SavGKon.MWSt_Cd,'z9') ).
-        
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1000
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1000 NO-LOCK NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1000
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-    END.
-    IF iArtZeile > 0 THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , ' ' ).
-    END.
-    RELEASE SavGKon.
-    RUN AUSGABE_GRUPPE ('ArtikelZeile1').
-
-    /*  Gebindelieferungen  ------------------------------------------------    */
-
-    nZeiTot   = 0.
-    iArtZeile = 0.
-    FOR EACH SavGKon USE-INDEX SavGKon-k1
-        WHERE SavGKon.Firma    = bSavko.Firma
-        AND   SavGKon.Aufnr    = bSavko.Aufnr
-        AND   SavGKon.Depot   <> 0
-        AND  (SavGKon.Eingang <> 0  OR
-        SavGKon.Ausgang <> 0) NO-LOCK:
-            
-        iMwstCd = SavGKon.MWSt_Cd.
-        FIND LAST MwstAns NO-LOCK
-            WHERE MwstAns.Mwst_Cd = iMwstCd
-            AND   MwstAns.Datum  <= bSavko.Fak_Datum NO-ERROR.
-        FIND FIRST tUmsGrp
-            WHERE tUmsGrp.Ums_Grp = 1001
-            AND   tUmsGrp.Mwst    = iMwstCd
-            AND   tUmsGrp.Ansatz  = MwstAns.Ansatz NO-ERROR.
-        IF NOT AVAILABLE tUmsGrp THEN 
-        DO:
-            FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
-                WHERE WarenGrp.Firma = cFirma
-                AND   WarenGrp.Wgr   = 1001 NO-ERROR.
-            CREATE  tUmsGrp.
-            ASSIGN  
-                tUmsGrp.Ums_Grp = 1001
-                tUmsGrp.Mwst    = iMwstCd
-                tUmsGrp.Ansatz  = MwstAns.Ansatz
-                tUmsGrp.lInkl   = lDebIncl
-                tUmsGrp.Bez     = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
-        END.
-        tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + SavGKon.Betrag.
-        
-        FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
-            WHERE GebKonto.Firma  = cFirma
-            AND   GebKonto.Geb_Cd = SavGKon.Geb_Cd.
-        i1        = SavGKon.Ausgang - SavGKon.Eingang.
-        Rundbetr  = SavGKon.Betrag.
-        nZeiTot   = nZeiTot   + Rundbetr.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'Gebindetext' , GebKonto.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeGel'  , TRIM(STRING(SavGKon.Ausgang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeRet'  , TRIM(STRING(SavGKon.Eingang,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeSaldo', TRIM(STRING(i1             ,"->>,>>9")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeBetr' , TRIM(STRING(Rundbetr       ,"->>,>>9.99")) ).
-    END.
-    IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile,  'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
-
-    nFakBetr = nFakBetr + nZeiTot.
-    IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
-
-    FIND FIRST tTotale.
-    DO ii = 1 TO 12:
-        tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bSavko.Wpfl[ii].
-        tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bSavko.Wust[ii].
-    END.
-    tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
-    tTotale.nSkBer   = tTotale.nSkBer   + bSavko.Sk_Ber.
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-    RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    IF lLast THEN 
-    DO:
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-        iArtZeile = iArtZeile + 1.
-        RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1'  , xString ).
-        RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
-        RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' '   ).
-    RUN AUSGABE_GRUPPE  ( 'ArtikelZeile1' ).
-
-    IF lLast THEN RUN DRUCKEN_ENDE.
-
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER 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').
-    RUN vpr_FlushGroup   ('Ueberschrift').
-    
-    iVPagePos = vpr_getPageVPos() + 20.
-    RUN vpr_setPageVPos ( iVPagePos ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure 
-PROCEDURE DRUCKEN_BESR :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipDokument  AS CHARACTER         NO-UNDO.
-
-    DEFINE VARIABLE ix         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1         AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cFeld      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cVorlage   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iKopfZeile AS INTEGER   NO-UNDO.
-    
-    DEFINE VARIABLE PZBetrag   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cReferenz  AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    
-    /*     IF Rundbetr < 0 THEN RETURN. */
-    
-    RUN vpr_NewPage.
-   
-    cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
-    RUN vpr_LoadVFR         (cVorlage).
-    RUN vpr_ActivateReport  (ipDokument).
-    RUN vpr_setPrinterAttrib("duplex=1").
-    RUN vpr_SetDocAttrib    ("PAPERSIZE=A4").
-    RUN vpr_SetPrinterAttrib("copies=1").
-    RUN vpr_InitGroups      ("").
-    IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
-    IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
-
-    RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
-    RUN vpr_SetGroupAttrib ("BESR"   , "Fixed=true").
-        
-    FIND Adresse NO-LOCK USE-INDEX Adresse-k1
-        WHERE Adresse.Firma = AdFirma
-        AND   Adresse.Knr   = bSavko.Fak_Knr NO-ERROR.
-
-    iKopfZeile = 1.
-    cBesrKopf  = ''.
-    IF bSavko.Adresse[05] <> '' THEN 
-    DO:
-        i1 = 6.
-        DO ix = 1 TO 5:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING((6 + ix),'99') */
-            /*                     tDokument.cInhalt = bSavko.Adresse[ix]. */
-            i1 = i1 + 1.
-            cBesrKopf[i1] = bSavko.Adresse[ix].
-        END.
-    END.
-    ELSE 
-    DO:
-        DO ix = 6 TO 11:
-            /*             CREATE  tDokument. */
-            /*             ASSIGN  tDokument.cGruppe = 'ADRESSE' */
-            /*                     tDokument.iZeile  = 1 */
-            /*                     tDokument.cFeld   = 'Adresse_' + STRING(ix,'99') */
-            /*                     tDokument.cInhalt = Adresse.Anschrift[ix]. */
-            cBesrKopf[ix] = Adresse.Anschrift[ix].
-        END.
-    END.
-    DO ix = 6 TO 11:
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_R_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-        IF ix < 7 THEN NEXT.
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'BESR'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Adresse_L_' + STRING(ix,'99')
-            tDokument.cInhalt = cBesrKopf[ix].
-    END.
-
-    IF Rundbetr > 0.00 THEN 
-    DO:
-        cFeld = STRING(Rundbetr,'zzzzzz9.99').
-        cFeld = REPLACE(cFeld, '.', ' ').
-        cFeld = STRING(cFeld,'X X X X X X X X X X').
-    END.
-    ELSE cFeld = ''.
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
-    
-    IF Rundbetr > 0 THEN PZBetrag   = '01' + STRING(Rundbetr * 100,'9999999999 ').
-    ELSE                 PZBetrag   = '          04 '.
-
-    PZReferenz = '00000000000'
-        + STRING(bSavko.Fak_Knr,'999999')
-        + STRING(bSavko.Faknr  ,'9999999')
-        + '00'.
-    PZTNNummer = '01036226'. 
-    RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
-    
-    RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
-    RUN AUSGABE_GRUPPE ( 'BESR' ).
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure 
-PROCEDURE DRUCKEN_ENDE :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
-    DEFINE VARIABLE iSpace   AS INTEGER   INIT 0 NO-UNDO.
-    DEFINE VARIABLE iPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iKopie   AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ix       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lJa      AS LOG       NO-UNDO.
-    DEFINE VARIABLE nNetto   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nBrutto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTNetto  AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTMwst   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE nTBrutto AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cText    AS CHARACTER NO-UNDO.
-    
-    FIND FIRST tParam.
-    FIND FIRST tTotale.
-    
-    iPos      = vpr_getPageVPos().
-    iArtZeile = 1.
-    iSpace    = iSpace + 40.
-    iMaxPos   = 2650.    
-    RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , ' ' ).
-    FIND FIRST tTotale.
-    DO ix = 1 TO 11:
-        IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
-        tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
-        
-        FIND LAST MWSTAns USE-INDEX MWSTAns-k1
-            WHERE MWSTAns.MWST_Cd = ix
-            AND   MWSTAns.Datum  <= bSavko.Kond_Datum NO-LOCK.
-        iArtZeile = iArtZeile + 1.
-        iSpace    = iSpace + 40.
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBez' , MWStAns.Bez                            ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99"))  ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile,  'MwstCd'  , TRIM(STRING(ix        ,">>9"))         ).
-    END.
-    IF (iSpace + iPos + 80) >= iMaxPos THEN 
-    DO:
-        RUN vpr_SetPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
-    
-    Rundbetr = tTotale.nSammTot.
-    Rundcode = 1.
-    RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-    tTotale.nSammTot = Rundbetr.
-
-    iArtZeile = 1.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
-    iArtZeile = 2.
-    RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
-    RUN AUSGABE_GRUPPE  ( 'RechnungsTotal' ).
-
-    /*  ------  Umsatzverteilung  ------------------------------------------------  */
-
-    iArtZeile = 1.
-    RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    ASSIGN  
-        nTNetto  = 0
-        nTMwst   = 0
-        nTBrutto = 0.
-    FOR EACH TUmsGrp NO-LOCK
-        BY TUmsGrp.Ums_Grp
-        BY TUmsGrp.Mwst :
-        IF tUmsGrp.lInkl THEN 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
-            nBrutto = tUmsGrp.Ums_Betr.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ELSE 
-        DO:
-            nNetto  = tUmsGrp.Ums_Betr.
-            nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
-            nMwst   = nBrutto - nNetto.
-        END.
-        ASSIGN  
-            nTNetto  = nTNetto  + nNetto
-            nTMwst   = nTMwst   + nMwst
-            nTBrutto = nTBrutto + nBrutto.
-        iArtZeile = iArtZeile + 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , TUmsGrp.Bez ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Frw'          , BSteuer.Fwc03 ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nNetto        ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Ansatz'       , TRIM(STRING(TUmsGrp.Ansatz,">9.99%"))      ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nMwst         ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nBrutto       ,"->>>,>>9.99")) ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'MC'           , TRIM(STRING(tUmsGrp.Mwst  ,"z9"))          ).
-    END.
-    iArtZeile = iArtZeile + 1.
-    RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Umsatzgruppe' , cText ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Netto'        , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Mwst'         , TRIM(STRING(nTMwst  ,"->>>,>>9.99")) ).
-    RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile,  'Brutto'       , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
-    
-    ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
-        + 30
-        + vpr_getPageVPos().
-    IF ix >= iMaxPos THEN 
-    DO:
-        RUN vpr_setPageVPos ( iMaxPos ).
-        RUN VIPER_NEUE_SEITE.
-        RUN DRUCKEN_ADRESSE.
-    END.
-    RUN AUSGABE_GRUPPE  ( 'Umsatzverteilung' ).
-
-    /*  Zahlungskondition  -------------------------------------------------    */
-
-    FIND Kondi NO-LOCK USE-INDEX Kondi-k1
-        WHERE Kondi.Kond  = bSavko.Kond
-        AND   Kondi.Sprcd = iSprcd NO-ERROR.
-    IF AVAILABLE Kondi THEN 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', Kondi.KoText ).
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
-        IF Kondi.Skonto[01] <> 0 THEN 
-        DO:
-            Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
-            Rundcode = 1.
-            RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
-            RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
-        END.
-    END.
-    ELSE 
-    DO:
-        iArtZeile = 1.
-        RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Zahkond', FILL('?', 29) ).
-    END.
-    
-    RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile,  'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
-    RUN AUSGABE_GRUPPE  ( 'Kondition' ).
-
-    nFakBetr = tTotale.nSammTot.
-    IF nFakBetr = 0 THEN Rundbetr  = -1.
-    ELSE                 Rundbetr  = nFakBetr.
-    IF  AVAILABLE Kondi       AND
-        Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
-
-    /*  Abschluss und Druck  -----------------------------------------------    */
-
-    IF iLauf < iAnzDok THEN 
-    DO:
-        RUN vpr_EndDoc.
-        IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
-        RETURN.
-    END.
-
-    IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
-     
-    /*  ------------------------------------------------------  */
-    /*  Druckausgabe                                            */    
-    /*  ------------------------------------------------------  */
-    
-    RUN vpr_EndDoc.
-    cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
-        STRING(bSavko.Knr  ,'999999'),
-        STRING(bSavko.Faknr,'9999999'),
-        tParam.cDokument).
-    cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
-    RUN vpr_SaveDoc ( cvpr_Dokument ).
-
-    DO WHILE tParam.lDokDruck:
-        SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
-        IF SESSION:PRINTER-NAME <> tParam.Drucker THEN 
-        DO:
-            RUN vpr_printerDialog ( OUTPUT lJa ).
-            IF NOT lJa THEN LEAVE.
-        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:    
-        DEFINE VARIABLE 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_KOPF) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure 
-PROCEDURE DRUCKEN_KOPF :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE i1        AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iOldSeite AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    iOldSeite = iSeite.
-    RUN VIPER_NEUE_SEITE.
-
-    IF iSeite = 1 THEN 
-    DO:
-       
-        FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
-       
-        cBesrKopf = ''.
-        IF bSavko.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 = bSavko.Adresse[ii].
-                i1 = i1 + 1.
-                cBesrKopf[i1] = bSavko.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(dFakDatum,"99.99.9999").
-
-        cString = (IF bSavko.Auf_Tot >= 0
-            THEN TRIM(SUBSTRING(cFormText[02],01,20))
-            ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
-        cString = cString
-            + '  '
-            + TRIM(STRING(bSavko.Faknr,'>>>>>>9')).
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'T_Dokument'
-            tDokument.cInhalt = cString.
-    
-        CREATE  tDokument.
-        ASSIGN  
-            tDokument.cGruppe = 'KOPF'
-            tDokument.iZeile  = 1
-            tDokument.cFeld   = 'Knr'
-            tDokument.cInhalt = STRING(bSavko.Fak_Knr,'999999').
-    
-    END.
-    
-    IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
-    
-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_tSavze :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipAufnr     AS INTEGER          NO-UNDO.
-
-    DEFINE VARIABLE minPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE maxPos     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE jPlatz     AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cLagOrt    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iRuestArt  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iPlusMinus AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE lArtikel   AS LOG       NO-UNDO.
-    DEFINE VARIABLE cSort      AS CHARACTER NO-UNDO.
-
-    EMPTY TEMP-TABLE tSavze.
-    
-    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 Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos:
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            lArtikel = TRUE.
-            LEAVE.
-        END.
-        
-        minPos = Savze.Pos.
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = ''
-            tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                          + STRING(tSavze.Inhalt,'9999')
-                          + STRING(tSavze.Jahr  ,'9999')
-                          + STRING(iPlusMinus   ,'9')
-                          + STRING(tSavze.Pos   ,'99999')
-            tSavze.LagOrt = ''.
-    END.
-    
-    /*  Kommentar am Ende eines Auftrages       */
-    IF lArtikel THEN 
-    DO:
-        FOR EACH Savze NO-LOCK
-            WHERE Savze.Firma = cFirma
-            AND   Savze.Aufnr = ipAufnr
-            BY Savze.Pos DESCENDING:
-            IF Savze.Artnr > 0 THEN LEAVE.
-            
-            maxPos = Savze.Pos.
-            CREATE  tSavze.
-            ASSIGN  
-                tSavze.Aufnr  = Savze.Aufnr
-                tSavze.Artnr  = Savze.Artnr
-                tSavze.Inhalt = Savze.Inhalt
-                tSavze.Jahr   = Savze.Jahr
-                tSavze.Pos    = Savze.Pos
-                tSavze.Zeile  = RECID(Savze)
-                tSavze.Aktion = Savze.Aktion
-                tSavze.Preis  = Savze.Preis
-                tSavze.MGeli  = Savze.MGeli
-                tSavze.MRuek  = Savze.MRuek.
-                    
-            ASSIGN  
-                tSavze.Sort1  = 'ZZZ'
-                tSavze.Sort2  = STRING(tSavze.Artnr ,'999999')
-                              + STRING(tSavze.Inhalt,'9999')
-                              + STRING(tSavze.Jahr  ,'9999')
-                              + STRING(iPlusMinus   ,'9')
-                              + STRING(tSavze.Pos   ,'99999')
-                tSavze.LagOrt = ''.
-        END.
-    END.
-    
-    /*  Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen   */
-    cLagOrt = ''.
-    cSort   = ''.
-    FOR EACH Savze NO-LOCK
-        WHERE Savze.Firma = cFirma
-        AND   Savze.Aufnr = ipAufnr
-        AND   Savze.Pos   > minPos
-        AND   Savze.Pos   < MaxPos
-        BY Savze.Pos DESCENDING:
-            
-        IF Savze.Artnr > 0 THEN 
-        DO:
-            FIND Artst NO-LOCK
-                WHERE Artst.Firma  = Savze.Firma
-                AND   Artst.Artnr  = Savze.Artnr
-                AND   Artst.Inhalt = Savze.Inhalt
-                AND   Artst.Jahr   = Savze.Jahr NO-ERROR.
-                
-            FIND ArtLager NO-LOCK
-                WHERE ArtLager.Firma  = Savze.Firma
-                AND   ArtLager.Artnr  = Savze.Artnr
-                AND   ArtLager.Inhalt = Savze.Inhalt
-                AND   ArtLager.Jahr   = Savze.Jahr
-                AND   ArtLager.Lager  = Savze.Lager NO-ERROR.
-            IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
-            
-            ASSIGN  
-                iWgr    = Artst.Wg_Grp
-                iPgr    = Artst.Prod_Grp
-                iAgr    = Artst.Art_Grp
-                iArtnr  = Artst.Artnr
-                iInhalt = Artst.Inhalt
-                iJahr   = Artst.Jahr.
-        END.
-        cSort = STRING(iWgr,'9999')
-            + STRING(iPgr,'9999')
-            + STRING(iAgr,'9999').
-                    
-        iPlusMinus = (IF Savze.MGeli < 0 THEN 1 ELSE 0).
-        CREATE  tSavze.
-        ASSIGN  
-            tSavze.Aufnr  = Savze.Aufnr
-            tSavze.Artnr  = Savze.Artnr
-            tSavze.Inhalt = Savze.Inhalt
-            tSavze.Jahr   = Savze.Jahr
-            tSavze.Pos    = Savze.Pos
-            tSavze.Zeile  = RECID(Savze)
-            tSavze.Aktion = Savze.Aktion
-            tSavze.Preis  = Savze.Preis
-            tSavze.MGeli  = Savze.MGeli
-            tSavze.MRuek  = Savze.MRuek.
-                
-        ASSIGN  
-            tSavze.Sort1  = cSort
-            tSavze.Sort2  = STRING(iArtnr    ,'999999')
-                          + STRING(iInhalt   ,'9999')
-                          + STRING(iJahr     ,'9999')
-                          + STRING(iPlusMinus,'9')
-                          + STRING(tSavze.Pos,'99999')
-            tSavze.LagOrt = cLagort.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure 
-PROCEDURE PRUEFZIFFER :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    /* ------------------------------------------------------------------------- */
-    /*  Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.)                     */
-    /* ------------------------------------------------------------------------- */
-    /*                                                                           */
-    /*  Uebergabe Variable:  1.  String Betrag              (12-stellig)         */
-    /*                       2.  String Referenz            (27-stellig)         */
-    /*                       3.  String Teilnehmernummer    ( 9-stellig)         */
-    /*                                                                           */
-    /*  Erstellung der VESR-Codierzeile                                          */
-    /*                                                                           */
-    /*---------------------------------------------------------------------------*/
-
-    DEFINE INPUT-OUTPUT PARAMETER PZBetrag     AS CHARACTER FORMAT "x(13)".
-    DEFINE INPUT-OUTPUT PARAMETER PZReferenz   AS CHARACTER FORMAT "x(27)".
-    DEFINE INPUT-OUTPUT PARAMETER PZTNummer    AS CHARACTER FORMAT "x(09)".
-    DEFINE OUTPUT       PARAMETER VSZeile      AS CHARACTER FORMAT "x(58)".
-    
-    DEFINE VARIABLE l1     AS INTEGER.
-    DEFINE VARIABLE l2     AS INTEGER.
-    DEFINE VARIABLE l3     AS INTEGER.
-    DEFINE VARIABLE PZ     AS INTEGER.
-    DEFINE VARIABLE x1     AS INTEGER.
-    DEFINE VARIABLE x2     AS INTEGER.
-    DEFINE VARIABLE x3     AS INTEGER.
-    DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
-
-    VMOD10[01] = "09468271350".
-    VMOD10[02] = "94682713509".
-    VMOD10[03] = "46827135098".
-    VMOD10[04] = "68271350947".
-    VMOD10[05] = "82713509466".
-    VMOD10[06] = "27135094685".
-    VMOD10[07] = "71350946824".
-    VMOD10[08] = "13509468273".
-    VMOD10[09] = "35094682712".
-    VMOD10[10] = "50946827131".
-
-    l1 = 12.
-    l2 = 26.
-    l3 = 08.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) <> " ":          /*   Mit Betrag  */
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE SUBSTRING(PZBetrag,01,01) = " ":            /*  Ohne Betrag */
-        x2 = 11.
-        x1 = INT(SUBSTRING(PZBetrag  ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 12 TO 12:
-            x1 = INT(SUBSTRING(PZBetrag      ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l2 = 26:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZReferenz,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 26:
-            x1 = INT(SUBSTRING(PZReferenz    ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    DO WHILE l3 = 08:
-        x2 = 1.
-        x1 = INT(SUBSTRING(PZTNummer ,01    ,01)).
-        x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
-
-        DO x3 = 2 TO 08:
-            x1 = INT(SUBSTRING(PZTNummer     ,x3    ,01)).
-            x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
-        END.
-
-        PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
-        SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
-        LEAVE.
-    END.
-
-    VSZeile = "".
-    SUBSTRING(VSZeile,01) = PZBetrag.
-    SUBSTRING(VSZeile,14) = ">".
-    SUBSTRING(VSZeile,15) = PZReferenz.
-    SUBSTRING(VSZeile,42) = "+ ".
-    SUBSTRING(VSZeile,44) = PZTNummer.
-    SUBSTRING(VSZeile,53) = ">".
-/*
-SUBSTRING(VSZeile,58) = "H".
-*/
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT PARAMETER ipGruppe    AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipZeile     AS INTEGER          NO-UNDO.
-    DEFINE INPUT PARAMETER ipFeld      AS CHARACTER         NO-UNDO.
-    DEFINE INPUT PARAMETER ipInhalt    AS CHARACTER         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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZellen   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cZelle    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cGruppe   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii        AS INTEGER   NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    IF  iLauf = iAnzDok   AND
-        tParam.lCreatePDF THEN 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '_pdf.vfr'.
-        cTemplate = tParam.cDokument + '_pdf'.
-    END.
-    ELSE 
-    DO:
-        cDokument = tParam.cInstall  + '/' + tParam.cDokument + '.vfr'.
-        cTemplate = tParam.cDokument.
-    END.
-
-    RUN vpr_LoadVFR         (cDokument).
-    RUN vpr_ActivateReport  (cTemplate).
-    RUN vpr_SelectPrinter   (tParam.Drucker).
-    RUN vpr_setPrinterAttrib('duplex=1').
-    RUN vpr_SetPrinterAttrib('copies=1').
-    RUN vpr_ResetDoc.
-    RUN vpr_SetDocAttrib    ('PAPERSIZE=A4').
-    RUN vpr_SetPreviewMode  ('Direct').
-    RUN vpr_setDocTitle     (tParam.cDokument).
-
-    IF iLauf = 1 THEN 
-    DO:
-        IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-    END.
-    ELSE 
-    DO:
-        IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-    END.
-    
-    RUN vpr_SetGroupAttrib ("Kopf"     , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
-    RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
-    
-    iMaxPos = 2750.
-    
-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:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
-    
-    FIND FIRST tParam.
-
-    DO WHILE TRUE:
-        IF iSeite = 0 THEN 
-        DO:
-            iSeite = iSeite + 1.
-            LEAVE.
-        END.
-        
-        iPos = vpr_getPageVPos().
-        IF (iPos + 160) < iMaxPos THEN 
-        DO:
-            iPos = iPos + 20.
-            RUN vpr_setPageVPos  ( iPos ).
-            RETURN.
-        END.
-        
-        RUN vpr_NewPage.
-        IF iLauf = 1         THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
-        ELSE                      RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie    ).
-        iSeite = iSeite + 1.
-        LEAVE.
-    END.
-    
-    RUN vpr_InitGroups  ('').
-    IF tParam.lCreatePDF THEN 
-    DO:
-        RUN vpr_initGraphObj.
-        RUN vpr_FlushGroup  ('Fusstext').
-    END.
-    RUN vpr_setPageVPos ( 1 ).
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure 
-FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
-
-    DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cWerte  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iSpace  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE iGrpHo  AS INTEGER   NO-UNDO.
-
-    FOR EACH tDokument
-        WHERE tDokument.cGruppe = ipGruppe
-        BREAK BY tDokument.cGruppe
-        BY tDokument.iZeile :
-
-        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_setGroupText (ipGruppe, cZellen, cWerte).
-
-        iGrpHo = vpr_getGroupHeight ( ipGruppe ).
-        iSpace = iSpace + iGrpHo.
-    END.
-    
-    RETURN iSpace.
-    
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 17
GUI/FRAMEWORK.ds

@@ -1,17 +0,0 @@
-Table           Input File              # of Records Read      # of Errors
--------------------------------------------------------------------------
-
--               E:\Datenbanken                  15                  0
-
--               E:\Datenbanken                  75                  0
-
--               E:\Datenbanken                   9                  0
-
--               E:\Datenbanken                1161                  0
-
--               E:\Datenbanken                  12                  0
-
--               E:\Datenbanken                  13                  0
-
--               E:\Datenbanken                 177                  0
-

+ 0 - 4
GUI/Femeld.mut

@@ -1,4 +0,0 @@
-1 1990 "Benutzer ist ungültig !"
-1 1124 "der Inhalt &1 von Feld &2 ist nicht numerisch!"
-1 1124 "der Inhalt <&1> in Feld <&2> ist nicht numerisch!"
-1 9 "Dieser Code ist bereits vorhanden !"

+ 0 - 17
GUI/Ge_MIS.ds

@@ -1,17 +0,0 @@
-Table           Input File              # of Records Read      # of Errors
--------------------------------------------------------------------------
-
--               E:\Datenbanken                   2                  0
-
--               E:\Datenbanken                   4                  0
-
--               E:\Datenbanken                 818                  0
-
--               E:\Datenbanken                 448                  0
-
--               E:\Datenbanken                   0                  0
-
--               E:\Datenbanken                  11                  0
-
--               E:\Datenbanken                  41                  0
-

+ 0 - 132
GUI/GetRestDataJSON.p

@@ -1,132 +0,0 @@
-
-/*------------------------------------------------------------------------
-    File        : GetRestDataExample.p
-    Purpose     : 
-
-    Syntax      :
-
-    Description : 
-
-    Author(s)   : javier.garcia
-    Created     : Wed Nov 27 15:28:15 CET 2019
-    Notes       :
-  ----------------------------------------------------------------------*/
-
-/* ***************************  Definitions  ************************** */
-USING OpenEdge.Net.HTTP.* FROM PROPATH.
-USING OpenEdge.Net.URI FROM PROPATH.
-USING OpenEdge.Core.String FROM PROPATH.
-USING Progress.Json.ObjectModel.JsonObject FROM PROPATH. 
-USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
-USING OpenEdge.Net.HTTP.IHttpClientLibrary.
-USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder. 
-USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
-
-/* ********************  Preprocessor Definitions  ******************** */
-DEFINE VARIABLE oCredentials     AS Credentials        NO-UNDO.
-DEFINE VARIABLE oRequest         AS IHttpRequest       NO-UNDO.
-DEFINE VARIABLE oJson            AS JsonObject         NO-UNDO.
-DEFINE VARIABLE oJsonEntity      AS JsonObject         NO-UNDO.
-DEFINE VARIABLE oJsonParamEntity AS JsonObject         NO-UNDO.
-DEFINE VARIABLE oJsonMappings    AS JsonArray          NO-UNDO.
-DEFINE VARIABLE oResponse        AS IHttpResponse      NO-UNDO.
-DEFINE VARIABLE oLib             AS IHttpClientLibrary NO-UNDO.
-
-DEFINE VARIABLE cUrl             AS CHARACTER          INITIAL "https://test.digitaldrink-online.um3o.de/b2b-digitaldrink-dataservice/export" NO-UNDO.
-DEFINE VARIABLE cLoginName       AS CHARACTER          INITIAL "Huber" NO-UNDO.
-DEFINE VARIABLE cPassword        AS CHARACTER          INITIAL "rkZR9BwM" NO-UNDO.
-
-DEFINE VARIABLE oParser          AS ObjectModelParser  NO-UNDO.
-DEFINE VARIABLE lcJson           AS LONGCHAR           NO-UNDO.
-DEFINE VARIABLE oJsonArray       AS JsonArray          NO-UNDO.
-DEFINE VARIABLE oJsonObject      AS JsonObject         NO-UNDO.
-
-DEFINE VARIABLE ix               AS INTEGER            NO-UNDO.
-DEFINE VARIABLE iCount           AS INTEGER            NO-UNDO.
-
-/* ***************************  Main Block  *************************** */
-/*SESSION:DEBUG-ALERT = TRUE.                    */
-/*                                               */
-/*LOG-MANAGER:LOGFILE-NAME = "logWorkaround.txt".*/
-/*LOG-MANAGER:LOGGING-LEVEL = 5.                 */
-/*LOG-MANAGER:CLEAR-LOG().                       */
-
-/* Generate Request JSON Body Raw */
-oJsonMappings = NEW JsonArray().
-oJsonMappings:Add("content.nutritionInfoId").
-
-oJsonParamEntity = NEW JsonObject().
-oJsonParamEntity:Add("clientId", "Huber").
-oJsonParamEntity:Add("clientName", "Testuser Huber").
-oJsonParamEntity:Add("mappings", oJsonMappings).
-oJsonParamEntity:Add("language", "de").
-
-oJsonEntity = NEW JsonObject().
-oJsonEntity:Add("senderName", "Freitext-H�ndlerbezeichnung").
-oJsonEntity:Add("type", "EXP002").
-oJsonEntity:Add("parameters", oJsonParamEntity).
-
-/* Auth */
-oCredentials = NEW Credentials("application", cLoginName, cPassword).
-
-oRequest = RequestBuilder:Post(cUrl,oJsonEntity)
-:UsingBasicAuthentication(oCredentials)
-:ContentType("application/json; charset=utf-8")
-:AcceptJson()
-:Request.
-
-oLib = ClientLibraryBuilder:Build()
-:sslVerifyHost(NO)
-:ServerNameIndicator('test.digitaldrink-online.um3o.de')
-:library.    
-                                      
-oResponse = ClientBuilder:Build()
-:UsingLibrary(oLib)
-:Client
-:Execute(oRequest).
-
-/* Response JSON */
-IF oResponse:StatusCode <> 200 THEN
-    MESSAGE "Request Error: " + STRING(oResponse:StatusCode)
-        VIEW-AS ALERT-BOX.
-ELSE 
-DO:
-    oParser = NEW ObjectModelParser().
-    oJsonObject = CAST(oParser:Parse(CAST(oResponse:Entity, JsonObject):GetJsonText()), JsonObject).
-    
-    MESSAGE 
-        oJsonObject:GetCharacter("state") SKIP
-        oJsonObject:GetCharacter("stateMessage") SKIP
-        oJsonObject:GetInteger("stateCount") 
-        VIEW-AS ALERT-BOX.
-    
-    DO ix = 1 TO oJsonObject:GetInteger("stateCount"):
-        MESSAGE oJsonObject:GetJsonArray("mappings"):GetJsonObject(ix):GetJsonObject("content"):GetJsonObject("nutritionInfoId"):GetCharacter("protein")
-            VIEW-AS ALERT-BOX.        
-    END.
-END.
-
-CATCH oError AS Progress.Lang.Error :    
-    MESSAGE oError:GetMessage(1) SKIP(2)
-        oError:CallStack
-        VIEW-AS ALERT-BOX.
-END CATCH.
-   
-/* ***************************  Example  *************************** */ 
-/*https://knowledgebase.progress.com/articles/Article/example-using-system-net-http-httpclient-to-post-to-a-rest-web-service*/
-
-/*https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvpin/openedge.net.http.ihttprequest.html*/
-/*https://knowledgebase.progress.com/articles/Article/How-to-consume-a-REST-Webservice-from-an-OpenEdge-Client*/
-/*https://knowledgebase.progress.com/articles/Article/How-to-store-JSON-from-an-HTTP-service-in-a-temp-table*/
-/*https://community.progress.com/community_groups/openedge_development/f/19/t/58920*/
-/*https://knowledgebase.progress.com/articles/Article/How-to-send-a-string-as-the-Request-Body-when-using-the-OpenEdge-HTTP-client*/
-
-/*https://github.com/PeterJudge-PSC/http_samples/tree/master/http_client/http_authentication*/
-
-/*https://www.youtube.com/watch?v=e4_4Ls2XLOM*/
-
-/* JSON */
-
-/*https://knowledgebase.progress.com/articles/Article/how-to-create-a-jsonobject-from-a-dataset-and-back*/
-/*https://knowledgebase.progress.com/articles/Article/How-to-turn-a-string-into-a-JsonObject*/
-/*https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvjsn/inferring-abl-schemas-from-json-data.html#wwID0ETIGM*/

+ 0 - 91
GUI/POST_HTTP-REQUEST.p

@@ -1,91 +0,0 @@
-/*  --------------------------------------------------------------  */
-/*  Shop - Mail - Versand                                           */
-/*  --------------------------------------------------------------  */
-
-DEF INPUT PARAMETER ipMailAdr   AS CHAR         NO-UNDO.
-DEF INPUT PARAMETER ipPasswort  AS CHAR         NO-UNDO.
-DEF INPUT PARAMETER ipBenutzer  AS CHAR         NO-UNDO.
-DEF INPUT PARAMETER ipKnr       AS INT          NO-UNDO.
-
-DEF VAR vcHost      AS CHAR INIT "shop.huber-getraenke.ch"
-                                                NO-UNDO.
-DEF VAR vcPort      AS CHAR INIT "80"           NO-UNDO.
-DEF VAR vhSocket    AS HANDLE                   NO-UNDO.
-DEF VAR cPostURL    AS CHAR INIT '/WebShop_Huber/faces/sendmailinitiator.xhtml'
-                                                NO-UNDO.
-DEF VAR cPostData   AS CHAR                     NO-UNDO.
-
-IF ipBenutzer <> ? AND
-   ipKnr      <> ? THEN cPostData = SUBSTITUTE('email=&1£password=&2£username=&3£knr=&4', ipMailAdr, ipPasswort, ipBenutzer, ipKnr).
-else                    cPostData = SUBSTITUTE('email=&1£password=&2', ipMailAdr, ipPasswort).
-
-cPostData = REPLACE(cpostData, '£', '&').
-cPostData = cPostURL + '?' + cPostData.
- 
-CREATE SOCKET vhSocket.
-vhSocket:CONNECT('-H ' + vcHost + ' -S ' + vcPort) NO-ERROR.
-    
-IF vhSocket:CONNECTED() = FALSE THEN
-DO:
-    MESSAGE "Connection failure" VIEW-AS ALERT-BOX.
-    
-    MESSAGE ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX.
-    RETURN.
-END.
- 
-vhSocket:SET-READ-RESPONSE-PROCEDURE('getResponse').
-
-/* supposes there is an webspeed app called yourapp.w that receives param1, param2, param3 */
-RUN PostRequest (INPUT cPostData).
- 
-WAIT-FOR READ-RESPONSE OF vhSocket. 
-vhSocket:DISCONNECT() NO-ERROR.
-DELETE OBJECT vhSocket.
- 
-PROCEDURE getResponse:
-    DEFINE VARIABLE vcWebResp    AS CHARACTER        NO-UNDO.
-    DEFINE VARIABLE lSucess      AS LOGICAL          NO-UNDO.
-    DEFINE VARIABLE mResponse    AS MEMPTR           NO-UNDO.
-    
-    IF vhSocket:CONNECTED() = FALSE THEN do:
-        MESSAGE 'Not Connected' VIEW-AS ALERT-BOX.
-        RETURN.
-    END.
-    lSucess = TRUE.
-        
-    DO WHILE vhSocket:GET-BYTES-AVAILABLE() > 0:
-            
-         SET-SIZE(mResponse) = vhSocket:GET-BYTES-AVAILABLE() + 1.
-         SET-BYTE-ORDER(mResponse) = BIG-ENDIAN.
-         vhSocket:READ(mResponse,1,1,vhSocket:GET-BYTES-AVAILABLE()).
-         vcWebResp = vcWebResp + GET-STRING(mResponse,1).
-    END.
-    /*
-    *PUT HERE THE CODE TO MANIPULATE THE ANSWER
-    */
-    
-END.
-PROCEDURE PostRequest:
-    DEF INPUT PARAMETER postData    AS CHAR         NO-UNDO.
-    /* Parameters to be sent in the format paramName=value&paramName=value&paramName=value */
-
-    DEF VAR vcRequest   AS CHAR                 NO-UNDO.
-    DEF VAR mRequest    AS MEMPTR               NO-UNDO.
-
-    vcRequest = 'GET '
-              + PostData
-              + ' HTTP/1.1~r~n'
-              + 'Host:'
-              + vcHost
-              + '~r~n'
-              + '~r~n'.
-
-    SET-SIZE(mRequest)            = 0.
-    SET-SIZE(mRequest)            = LENGTH(vcRequest) + 1.
-    SET-BYTE-ORDER(mRequest)      = BIG-ENDIAN.
-    PUT-STRING(mRequest,1)        = vcRequest .
- 
-    vhSocket:WRITE(mRequest, 1, LENGTH(vcRequest)).
-    
-END PROCEDURE.
-

+ 0 - 686
GUI/REORG_HUBER.p

@@ -1,686 +0,0 @@
-&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 VAR xRecArt AS CHAR NO-UNDO
-    INIT 'ABONUS,ARABGRP,AREG,TRAUB,FARB,HERST'.
-DEF VAR cFirma  AS CHAR INIT '1000' NO-UNDO.
-
-DEF STREAM out.
-DEF STREAM artst.
-
-DEF TEMP-TABLE tGruppen NO-UNDO
-    FIELD cKey  AS CHAR
-    FIELD cWert AS CHAR
-    FIELD iAnz  AS INT 
-    FIELD aktiv AS LOG  INIT FALSE.
-
-DEF TEMP-TABLE tArtst   NO-UNDO LIKE Artst
-    FIELD KGeb      AS INT
-    FIELD iRecid    AS RECID
-    INDEX tArtst-k1 IS PRIMARY UNIQUE
-          Firma
-          Artnr
-          Inhalt
-          Jahr
-    INDEX tArtst-k2
-          Firma
-          FremdNr.
-
-DEF TEMP-TABLE tArtstN  NO-UNDO LIKE Artst
-    FIELD KGeb      AS INT
-    FIELD iRecid    AS RECID
-    INDEX tArtstN-k1 IS PRIMARY UNIQUE
-          Firma
-          Artnr
-          Inhalt
-          Jahr
-    INDEX tArtstN-k2
-          Firma
-          FremdNr.
-
-DEF TEMP-TABLE tDateien     NO-UNDO
-    FIELD cName     AS CHAR.
-
-DEF TEMP-TABLE tKGebinde    LIKE KGebinde
-    FIELD Aktiv     AS LOG.
-    
-DEF TEMP-TABLE tVGebinde    LIKE VGebinde
-    FIELD Aktiv     AS LOG.
-    
-DEF TEMP-TABLE tGGebinde    LIKE GGebinde
-    FIELD Aktiv     AS LOG.
-    
-DEF TEMP-TABLE tWarenGrp        LIKE Warengrp
-    FIELD Aktiv     AS LOG.
-    
-DEF TEMP-TABLE tProdGrp         LIKE Prodgrp
-    FIELD Aktiv     AS LOG.
-    
-DEF TEMP-TABLE tArtikGrp        LIKE Artikgrp
-    FIELD Aktiv     AS LOG.
-
-/* _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  *************************** */
-    
-    RUN ARTIKEL_TABELLEN.
-
-    RUN REORG_ARTIKEL.
-    
-    RUN REORG_DEBITOR.
-    
-    RUN NEUE_ARTIKELNUMMER.
-
-    RUN UMNUMMERIEREN.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ARTIKEL_TABELLEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKEL_TABELLEN Procedure 
-PROCEDURE ARTIKEL_TABELLEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cRecArt AS CHAR                     NO-UNDO.
-    DEF VAR ix      AS INT                      NO-UNDO.
-    DEF VAR iCodeI  AS INT                      NO-UNDO.
-
-    DO ix = 1 TO NUM-ENTRIES(xRecArt, ','):
-        cRecArt = ENTRY(ix, xRecArt, ',').
-        FOR EACH Tabel
-                WHERE Tabel.Firma  = cFirma
-                AND   Tabel.RecArt = cRecart:
-            ASSIGN  Tabel.Int_1 = 0.
-        END.
-        
-        FOR EACH Artst NO-LOCK
-                WHERE Artst.Firma = cFirma
-                AND   Artst.Aktiv :
-                
-            CASE cRecArt:
-                WHEN 'ABONUS'   THEN iCodeI = Artst.Bonus_Grp .
-                WHEN 'ARABGRP'  THEN iCodeI = Artst.Rab_Grp   .
-                WHEN 'AREG'     THEN iCodeI = Artst.Reg_Grp   .
-                WHEN 'TRAUB'    THEN iCodeI = Artst.Traub_Grp .
-                WHEN 'FARB'     THEN iCodeI = Artst.Farbe     .
-                WHEN 'HERST'    THEN iCodeI = Artst.Herst     .
-            END.
-                
-            FIND Tabel 
-                    WHERE Tabel.Firma  = cFirma
-                    AND   Tabel.RecArt = cRecArt
-                    AND   Tabel.CodeI  = iCodeI
-                    AND   Tabel.CodeC  = ''
-                    AND   Tabel.Sprcd  = 1.
-            ASSIGN  Tabel.Int_1 = 1.
-        END.
-        FOR EACH Tabel
-                WHERE Tabel.Firma  = cFirma
-                AND   Tabel.RecArt = cRecart.
-            IF Tabel.Int_1 = 0 THEN DELETE  Tabel.
-            ELSE                    Tabel.Int_1 = 0.
-        END.
-    END.
-    
-    EMPTY TEMP-TABLE tWarengrp.
-    EMPTY TEMP-TABLE tProdgrp .
-    EMPTY TEMP-TABLE tArtikgrp.
-    
-    FOR EACH Warengrp NO-LOCK
-            WHERE Warengrp.Firma = cFirma.
-        CREATE  tWarengrp.
-        BUFFER-COPY Warengrp to tWarengrp
-            ASSIGN  tWarengrp.Aktiv = FALSE.
-    END.
-    FOR EACH Prodgrp NO-LOCK
-            WHERE Prodgrp.Firma = cFirma.
-        CREATE  tProdgrp.
-        BUFFER-COPY Prodgrp to tProdgrp
-            ASSIGN  tProdgrp.Aktiv = FALSE.
-    END.
-    FOR EACH Artikgrp NO-LOCK
-            WHERE Artikgrp.Firma = cFirma.
-        CREATE  tArtikgrp.
-        BUFFER-COPY Artikgrp to tArtikgrp
-            ASSIGN  tArtikgrp.Aktiv = FALSE.
-    END.
-
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = cFirma
-            AND   Artst.Aktiv:
-        FIND tWarengrp
-                WHERE tWarengrp.Firma = cFirma
-                AND   tWarengrp.Wgr   = Artst.Wg_Grp NO-ERROR.
-        IF NOT AVAILABLE tWarengrp THEN DO:
-            CREATE  Warengrp.
-            ASSIGN  Warengrp.Firma = cFirma
-                    Warengrp.Wgr   = Artst.Wg_Grp
-                    Warengrp.Bez1  = 'unbekannt'.
-            CREATE  tWarengrp.
-            BUFFER-COPY Warengrp TO tWarengrp
-                ASSIGN  tWarengrp.Aktiv = TRUE.
-        END.
-        ELSE tWarengrp.Aktiv = TRUE.
-    END.
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = cFirma
-            AND   Artst.Aktiv:
-        FIND tProdgrp
-                WHERE tProdgrp.Firma    = cFirma
-                AND   tProdgrp.Wgr      = Artst.Wg_Grp
-                AND   tProdgrp.Prod_Grp = Artst.Prod_Grp NO-ERROR.
-        IF NOT AVAILABLE tProdgrp THEN DO:
-            CREATE  Prodgrp.
-            ASSIGN  Prodgrp.Firma    = cFirma
-                    Prodgrp.Wgr      = Artst.Wg_Grp
-                    Prodgrp.Prod_Grp = Artst.Prod_Grp
-                    Prodgrp.Bez1     = 'unbekannt'.
-            CREATE  tProdgrp.
-            BUFFER-COPY Prodgrp TO tProdgrp
-                ASSIGN  tProdgrp.Aktiv = TRUE.
-        END.
-        ELSE tProdgrp.Aktiv = TRUE.
-    END.
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = cFirma
-            AND   Artst.Aktiv:
-        FIND tArtikgrp
-                WHERE tArtikgrp.Firma     = cFirma
-                AND   tArtikgrp.Wgr       = Artst.Wg_Grp
-                AND   tArtikgrp.Prod_Grp  = Artst.Prod_Grp
-                AND   tArtikgrp.Art_Grp   = Artst.Art_Grp NO-ERROR.
-        IF NOT AVAILABLE tArtikgrp THEN DO:
-            CREATE  Artikgrp.
-            ASSIGN  Artikgrp.Firma    = cFirma
-                    Artikgrp.Wgr      = Artst.Wg_Grp
-                    Artikgrp.Prod_Grp = Artst.Prod_Grp
-                    Artikgrp.Art_Grp  = Artst.Art_Grp
-                    Artikgrp.Bez1     = 'unbekannt'.
-            CREATE  tArtikgrp.
-            BUFFER-COPY Artikgrp TO tArtikgrp
-                ASSIGN  tArtikgrp.Aktiv = TRUE.
-        END.
-        ELSE tArtikgrp.Aktiv = TRUE.
-    END.
-    
-    FOR EACH tArtikgrp WHERE NOT tArtikgrp.Aktiv:
-        FIND Artikgrp OF tArtikgrp.
-        DELETE  Artikgrp.
-    END.
-    FOR EACH tProdGrp WHERE NOT tProdGrp.Aktiv:
-        FIND ProdGrp OF tProdGrp.
-        DELETE  ProdGrp.
-    END.
-    FOR EACH tWarenGrp WHERE NOT tWarenGrp.Aktiv:
-        FIND WarenGrp OF WarenGrp.
-        DELETE  WarenGrp.
-    END.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-NEUE_ARTIKELNUMMER) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_ARTIKELNUMMER Procedure 
-PROCEDURE NEUE_ARTIKELNUMMER :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR Artnr       AS INT  INIT 0          NO-UNDO.
-    
-    
-    EMPTY TEMP-TABLE tArtst.
-    EMPTY TEMP-TABLE tArtstN.
-
-    FOR EACH Artst NO-LOCK:
-        CREATE  tArtst.
-        BUFFER-COPY Artst TO tArtst.
-        ASSIGN  tArtst.iRecid = RECID(Artst).
-    END.
-
-    Artnr = 100000.
-    FOR EACH tArtst
-              BY tArtst.Wg_Grp
-              BY tArtst.Herst
-              BY tArtst.Bez
-              BY tArtst.KGeb :
-
-        Artnr = Artnr + 1.
-        CREATE  tArtstN.
-        BUFFER-COPY tArtst EXCEPT Artnr Inhalt Jahr FremdNr
-                TO  tArtstN
-            ASSIGN  tArtstN.Artnr   = Artnr
-                    tArtstN.Inhalt  = 0
-                    tArtstN.Jahr    = tArtst.Jahr
-                    tArtstN.FremdNr = STRING(tArtst.Artnr ,'999999')
-                                    + STRING(tArtst.Inhalt,'9999')
-                                    + STRING(tArtst.Jahr  ,'9999').
-    END.
-    FOR EACH tArtstN:
-        IF tArtstN.Wg_Grp = 05 THEN NEXT.
-        IF tArtstN.Wg_Grp = 07 THEN NEXT.
-        IF tArtstN.Wg_Grp = 08 THEN NEXT.
-        ASSIGN  tArtstN.Jahr = 0.
-    END.
-
-    FOR EACH _Field WHERE _Field._Field-Name = 'Artnr',
-        FIRST _File OF _Field:
-        CREATE  tDateien.
-        ASSIGN  tDateien.cName = _File._File-Name.
-    END.
-
-    OUTPUT TO 'D:\Temp\Huber_Artst_N.csv' NO-MAP NO-CONVERT.
-    FOR EACH tArtstN NO-LOCK:
-        EXPORT DELIMITER ';' tArtstN.
-    END.
-    OUTPUT CLOSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-REORG_ARTIKEL) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_ARTIKEL Procedure 
-PROCEDURE REORG_ARTIKEL :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cWert   AS CHAR NO-UNDO.
-    DEF VAR iWert   AS INT  NO-UNDO.
-    DEF VAR cRecArt AS CHAR NO-UNDO.
-    DEF VAR yRecArt AS CHAR NO-UNDO.
-    DEF VAR ix      AS INT  NO-UNDO.
-    
-    DEF BUFFER bArtst FOR Artst.
-
-    FOR EACH Artst WHERE Artst.Firma = cFirma:
-        IF NOT Artst.Aktiv              THEN NEXT.
-        IF Artst.Bestand >  0           THEN NEXT.
-        IF Artst.EDat    >= 07/01/2003  THEN NEXT.
-        
-        FIND FIRST Artbw NO-LOCK USE-INDEX Artbw-k9
-            WHERE Artbw.Firma  = Artst.Firma
-            AND   Artbw.Artnr  = Artst.Artnr
-            AND   Artbw.Inhalt = Artst.Inhalt
-            AND   Artbw.Jahr   = Artst.Jahr NO-ERROR.
-        IF NOT AVAILABLE Artbw          OR
-           Artbw.Datum < 07/01/2003     THEN DO:
-            Artst.Aktiv = FALSE.
-        END.
-    END.
-
-    EMPTY TEMP-TABLE tKGebinde.
-    EMPTY TEMP-TABLE tVGebinde.
-    EMPTY TEMP-TABLE tGGebinde.
-        
-    FOR EACH KGebinde WHERE KGebinde.Firma = cFirma NO-LOCK:
-        CREATE  tKGebinde.
-        BUFFER-COPY KGebinde TO tKGebinde
-            ASSIGN  tKGebinde.Aktiv = FALSE.
-    END.
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = '1000'
-            AND   Artst.Aktiv = TRUE
-                BREAK BY Artst.KGeb_Cd:
-        
-        IF FIRST-OF ( Artst.KGeb_Cd ) THEN DO:
-            FIND FIRST tKGebinde
-                    WHERE tKGebinde.Firma  = Artst.Firma
-                    AND   tKGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
-            tKGebinde.Aktiv = TRUE.
-        END.
-    END.
-    FOR EACH tKGebinde WHERE NOT tkgebinde.aktiv.
-        FIND KGebinde OF tKGebinde.
-        DELETE KGebinde.
-    END.
-        
-    FOR EACH VGebinde WHERE VGebinde.Firma = cFirma NO-LOCK:
-        CREATE  tVGebinde.
-        BUFFER-COPY VGebinde TO tVGebinde
-            ASSIGN  tVGebinde.Aktiv = FALSE.
-    END.
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = '1000'
-            AND   Artst.Aktiv = TRUE
-                BREAK BY Artst.VGeb_Cd:
-        
-        IF FIRST-OF ( Artst.VGeb_Cd ) THEN DO:
-            FIND FIRST tVGebinde
-                    WHERE tVGebinde.Firma  = Artst.Firma
-                    AND   tVGebinde.Geb_Cd = Artst.VGeb_Cd.
-            tVGebinde.Aktiv = TRUE.
-        END.
-    END.
-    FOR EACH tVGebinde WHERE NOT tVGebinde.aktiv.
-        FIND VGebinde OF tVGebinde.
-        DELETE VGebinde.
-    END.
-        
-    FOR EACH GGebinde WHERE GGebinde.Firma = cFirma NO-LOCK:
-        CREATE  tGGebinde.
-        BUFFER-COPY GGebinde TO tGGebinde
-            ASSIGN  tGGebinde.Aktiv = FALSE.
-    END.
-    FOR EACH Artst NO-LOCK
-            WHERE Artst.Firma = '1000'
-            AND   Artst.Aktiv = TRUE
-                BREAK BY Artst.GGeb_Cd:
-        
-        IF FIRST-OF ( Artst.GGeb_Cd ) THEN DO:
-            FIND FIRST tGGebinde
-                    WHERE tGGebinde.Firma  = Artst.Firma
-                    AND   tGGebinde.Geb_Cd = Artst.GGeb_Cd.
-            tGGebinde.Aktiv = TRUE.
-        END.
-    END.
-    FOR EACH tGGebinde WHERE NOT tGGebinde.aktiv.
-        FIND GGebinde OF tGGebinde.
-        DELETE GGebinde.
-    END.
-    /*
-    FOR EACH Artst
-            WHERE Artst.Firma = '1000'
-            AND   Artst.Aktiv :
-        IF Artst.Wg_Grp > 16 THEN ASSIGN Artst.Sk_Ber = FALSE.
-        ELSE                             Artst.Sk_Ber = TRUE.
-        IF Artst.Wg_Grp = 9  THEN ASSIGN Artst.Sk_Ber = FALSE.
-        ASSIGN  Artst.Netto = TRUE.
-        IF Artst.Wg_Grp < 6  THEN ASSIGN Artst.Netto = FALSE.
-        IF Artst.Wg_Grp > 10 AND
-           Artst.Wg_Grp < 13 THEN ASSIGN Artst.Netto = FALSE.
-        IF Artst.Wg_Grp > 13 AND
-           Artst.Wg_Grp < 17 THEN ASSIGN Artst.Netto = FALSE.
-    END.
-    */
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-REORG_DEBITOR) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_DEBITOR Procedure 
-PROCEDURE REORG_DEBITOR :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR cWert   AS CHAR NO-UNDO.
-    DEF VAR iWert   AS INT  NO-UNDO.
-    DEF VAR cRecArt AS CHAR NO-UNDO.
-    DEF VAR yRecArt AS CHAR NO-UNDO.
-    DEF VAR ix      AS INT  NO-UNDO.
-    
-    DEF BUFFER bArtst FOR Artst.
-
-    FOR EACH Tabel
-            WHERE Tabel.Firma  = '1000'
-            AND   Tabel.RecArt = 'PREGRP':
-        Tabel.Int_2 = 0.
-    END.
-    FOR EACH Debst NO-LOCK
-            WHERE Debst.Firma = cFirma
-            AND   Debst.Aktiv
-            
-            BREAK BY Debst.Preis_Grp:
-        
-        IF NOT FIRST-OF ( Debst.Preis_Grp ) THEN NEXT.
-        FIND Tabel
-                WHERE Tabel.Firma  = Debst.Firma
-                AND   Tabel.RecArt = 'PREGRP'
-                AND   Tabel.CodeC  = ''
-                AND   Tabel.CodeI  = Debst.Preis_Grp
-                AND   Tabel.Sprcd  = 1.
-        ASSIGN  Tabel.Int_2 = 1.
-    END.
-   
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-UMNUMMERIEREN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMNUMMERIEREN Procedure 
-PROCEDURE UMNUMMERIEREN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR iArtnr      AS INT                      NO-UNDO.
-    DEF VAR iInhalt     AS INT                      NO-UNDO.
-    DEF VAR iJahr       AS INT                      NO-UNDO.
-    DEF VAR hFeld       AS HANDLE                   NO-UNDO.
-    DEF VAR hArtstN     AS HANDLE                   NO-UNDO.
-    DEF VAR hBuffer     AS HANDLE                   NO-UNDO.
-    DEF VAR hQuery      AS HANDLE                   NO-UNDO.
-    DEF VAR hTemp       AS HANDLE                   NO-UNDO.
-    DEF VAR hTempBuff   AS HANDLE                   NO-UNDO.
-    DEF VAR cWhere      AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cDumpName   AS CHAR                     NO-UNDO.
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR i1          AS INT                      NO-UNDO.
-    DEF VAR i2          AS INT                      NO-UNDO.
-    DEF VAR iZeit       AS INT                      NO-UNDO.
-    DEF VAR iAnz        AS INT                      NO-UNDO.
-
-    hArtstN = TEMP-TABLE tArtstN:DEFAULT-BUFFER-HANDLE.
-    FOR EACH tArtstN USE-INDEX tArtstN-k1 TRANSACTION:
-        ASSIGN  iArtnr  = INTEGER(SUBSTRING(tArtstN.FremdNr,01,06))
-                iInhalt = INTEGER(SUBSTRING(tArtstN.FremdNr,07,04))
-                iJahr   = INTEGER(SUBSTRING(tArtstN.FremdNr,11,04)).
-        FIND Artst WHERE RECID(Artst) = tArtstN.iRecid.
-        FOR EACH tDateien WHERE tDateien.cName <> 'Artst':
-            iZeit = ETIME(TRUE).
-            iAnz  = 0.
-            CREATE BUFFER hBuffer FOR TABLE tDateien.cName.
-            CREATE QUERY  hQuery.
-            hQuery:SET-BUFFERS(hBuffer).
-            CASE tDateien.cName:
-                WHEN 'ArtUms'   OR
-                WHEN 'DeArUms'  THEN DO:
-                    cWhere = 'FOR EACH &1 '
-                           + 'WHERE &1.Firma  = &2 '
-                           + 'AND   &1.Artnr  = &3 '
-                           + 'AND   &1.Inhalt = &4 '
-                           + 'AND   &1.Jahrg  = &5 '.
-                END.
-                OTHERWISE DO:
-                    cWhere = 'FOR EACH &1 '
-                           + 'WHERE &1.Firma  = &2 '
-                           + 'AND   &1.Artnr  = &3 '
-                           + 'AND   &1.Inhalt = &4 '
-                           + 'AND   &1.Jahr   = &5 '.
-                END.
-            END CASE.
-            cWhere = SUBSTITUTE(cWhere, tDateien.cName,
-                                        '"1000"' ,
-                                        iArtnr ,
-                                        iInhalt,
-                                        iJahr  ).
-            hQuery:QUERY-PREPARE(cWhere) NO-ERROR.
-            IF ERROR-STATUS:ERROR THEN DO:
-                MESSAGE cWhere 'funktioniert nicht!' VIEW-AS ALERT-BOX.
-                NEXT.
-            END.
-            cDumpName = tDateien.cName + '.d'.
-
-            CREATE TEMP-TABLE hTemp.
-            hTemp:CREATE-LIKE(hBuffer).
-            hTemp:TEMP-TABLE-PREPARE("tDump").
-            hTempBuff = hTemp:DEFAULT-BUFFER-HANDLE.
-
-            hQuery:QUERY-OPEN().
-            hQuery:GET-FIRST().
-            DO WHILE NOT hQuery:QUERY-OFF-END:
-                iAnz = iAnz + 1.
-                hTempBuff:BUFFER-CREATE.
-                hTempBuff:BUFFER-COPY(hBuffer, "Artnr,Inhalt").
-                ASSIGN  hTempBuff::Artnr  = hArtstN::Artnr
-                        hTempBuff::Inhalt = hArtstN::Inhalt.
-                CASE tDateien.cName:
-                    WHEN 'ArtUms'   OR
-                    WHEN 'DeArUms'  THEN ASSIGN hTempBuff::Jahrg = hArtstN::Jahr.
-                    OTHERWISE            ASSIGN hTempBuff::Jahr  = hArtstN::Jahr.
-                END CASE.
-                hQuery:GET-NEXT().
-            END.
-            OUTPUT TO 'D:\Temp\Reorg.log' APPEND.
-            PUT CONTROL 'Verarbeitet -> ' tDateien.cName ' / Zeit ' ETIME(FALSE) CHR(10).
-            OUTPUT CLOSE.
-
-            hQuery:QUERY-CLOSE().
-            DELETE OBJECT hQuery  NO-ERROR.
-            DELETE OBJECT hBuffer NO-ERROR.
-
-            CREATE QUERY hQuery.
-            hQuery:SET-BUFFERS(hTempBuff).
-            hQuery:QUERY-PREPARE("FOR EACH tDump").
-            hQuery:QUERY-OPEN().
-            hQuery:GET-FIRST(NO-LOCK).
-            OUTPUT STREAM out TO VALUE(cDumpName) APPEND NO-MAP NO-CONVERT.
-            DO WHILE NOT hQuery:QUERY-OFF-END:
-                cString = ''.
-                DO i1 = 1 TO hTempBuff:NUM-FIELDS:
-                    hFeld = hTempBuff:BUFFER-FIELD(i1).
-                    IF hFeld:EXTENT = 0 THEN DO:
-                        cFeld = hFeld:BUFFER-VALUE(0).
-                        IF cFeld = ? THEN cFeld = '?'.
-                        IF hFeld:DATA-TYPE = 'character' THEN DO:
-                            cFeld = '"' + REPLACE(cFeld, '"', '""') + '"'.
-                        END.
-                        IF cString <> '' THEN cString = cString + ' '.
-                        cString = cString + cFeld.
-                    END.
-                    ELSE DO:
-                        DO i2 = 1 TO hFeld:EXTENT:
-                            cFeld = hFeld:BUFFER-VALUE(i2).
-                            IF cFeld = ? THEN cFeld = '?'.
-                            IF hFeld:DATA-TYPE = 'character' THEN DO:
-                                cFeld = '"' + REPLACE(cFeld, '"', '""') + '"'.
-                            END.
-                            IF cString <> '' THEN cString = cString + ' '.
-                            cString = cString + cFeld.
-                        END.
-                    END.
-                END.
-                PUT STREAM out UNFORMATTED cString SKIP.
-                hQuery:GET-NEXT(NO-LOCK).
-            END.
-            OUTPUT STREAM out CLOSE.
-
-            hQuery:QUERY-CLOSE().
-            DELETE OBJECT hTemp     NO-ERROR.
-            DELETE OBJECT hTempBuff NO-ERROR.
-            DELETE OBJECT hQuery    NO-ERROR.
-        END.
-
-    END.
-
-    OUTPUT STREAM artst TO 'Artst.d' NO-MAP NO-CONVERT.
-    FOR EACH tArtstN:
-        EXPORT STREAM artst tArtstN EXCEPT KGeb iRecid .
-    END.
-    OUTPUT STREAM artst CLOSE.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 217
GUI/RenameDokumente.p

@@ -1,217 +0,0 @@
-&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 VAR cFirma          AS CHAR INIT '1000'         NO-UNDO.
-
-DEF VAR cPDFDocument    AS CHAR                     NO-UNDO.
-DEF VAR coldDocument    AS CHAR                     NO-UNDO.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT, ipDokArt AS CHAR )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** 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  *************************** */
-
-DEF VAR cDokArt     AS CHAR                     NO-UNDO.
-DEF VAR cPath       AS CHAR                     NO-UNDO.
-DEF VAR ii          AS INT                      NO-UNDO.
-
-FOR EACH Savko NO-LOCK
-        WHERE Savko.Fak_Datum >= 01/01/2015
-        BREAK BY Savko.Faknr:
-        
-    IF NOT FIRST-OF (Savko.Faknr) THEN NEXT.
-    
-    CASE Savko.Fak_Art:
-        WHEN 11 THEN cDokArt = 'LieferFak'.
-        WHEN 21 THEN cDokArt = 'Faktura'.
-        WHEN 31 THEN cDokArt = 'SammFak'.
-        WHEN 32 THEN cDokArt = 'SammFak'.
-        WHEN 33 THEN cDokArt = 'SammFak'.
-    END CASE.
-    
-    cPDFDocument = SUBSTITUTE('&1-&2_&3.pdf',
-                               STRING(Savko.Fak_Knr,'999999'),
-                               STRING(Savko.Faknr  ,'9999999'),
-                               cDokArt).
-    cOldDocument = DYNAMIC-FUNCTION('getPDFDocument':U, Savko.Aufnr, cDokArt ).
-    IF cOldDocument = ?  OR
-       cOldDocument = '' THEN NEXT.
-    ii = R-INDEX(cOldDocument, '\').
-    IF ii = 0 THEN ii = R-INDEX(cOldDocument, '/').
-    cPDFDocument = SUBSTRING(cOldDocument,01,ii) + cPDFDocument.
-    IF cPDFDocument = cOldDocument THEN NEXT.
-    OS-RENAME VALUE(cOldDocument) VALUE(cPDFDocument).
-END.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-getPDFDocument) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getPDFDocument Procedure 
-FUNCTION getPDFDocument RETURNS CHARACTER
-  ( ipAufnr AS INT, ipDokArt AS CHAR ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDokument   AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER bSavko   FOR Savko.
-    
-    FIND bSavko NO-LOCK
-            WHERE bSavko.Firma = cFirma
-            AND   bSavko.Aufnr = ipAufnr NO-ERROR.
-    IF NOT AVAILABLE bSavko THEN RETURN ''.
-    
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'9999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'9999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'9999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'9999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Faknr,'999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Faknr  ,'999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Knr  ,'999999'),
-                            STRING(bSavko.Aufnr,'999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    cDokument = SUBSTITUTE('Rechnungen/&1-&2_&3.pdf',
-                            STRING(bSavko.Fak_Knr,'999999'),
-                            STRING(bSavko.Aufnr  ,'999999'),
-                            ipDokArt).
-    FILE-INFO:FILE-NAME = cDokument.
-    IF FILE-INFO:FULL-PATHNAME <> ?  AND
-       FILE-INFO:FULL-PATHNAME <> '' THEN RETURN FILE-INFO:FULL-PATHNAME.
-
-    RETURN "".   /* Function return value. */
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 1678
GUI/SESAMSQL.p

@@ -1,1678 +0,0 @@
-&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 - ADM2
-&ANALYZE-RESUME
-{adecomm/appserv.i}
-&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  ************************** */
-
-
-DEFINE VARIABLE ObjRecordSet  AS COMPONENT-HANDLE NO-UNDO.
-DEFINE VARIABLE ObjConnection AS COMPONENT-HANDLE NO-UNDO.
-DEFINE VARIABLE ObjCommand    AS COMPONENT-HANDLE NO-UNDO.
-DEFINE VARIABLE ODBC-DSN      AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-SERVER   AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-USERID   AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-PASSWD   AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-QUERY    AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-STATUS   AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-RECCOUNT AS INTEGER          NO-UNDO.
-DEFINE VARIABLE ODBC-NULL     AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE ODBC-CURSOR   AS INTEGER          NO-UNDO.
-
-DEFINE VARIABLE fEnde         AS LOG              NO-UNDO.
-DEFINE VARIABLE cTempName     AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE cTempDir      AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE cJournal      AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE WebString     AS CHARACTER        NO-UNDO.
-
-DEFINE VARIABLE AllesOK       AS LOG              NO-UNDO.
-DEFINE VARIABLE Sprcd         AS INTEGER          NO-UNDO.
-DEFINE VARIABLE LVAdx         AS CHARACTER        NO-UNDO EXTENT 15.
-DEFINE VARIABLE LVAdy         AS CHARACTER        NO-UNDO EXTENT 15.
-DEFINE VARIABLE cOrt          AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE Firma         AS CHARACTER        NO-UNDO INIT '9999'.
-DEFINE VARIABLE GVFirma       AS CHARACTER        NO-UNDO INIT '9999'.
-DEFINE VARIABLE ja            AS LOG              NO-UNDO.
-DEFINE VARIABLE CrLf          AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE cMessage      AS CHARACTER        NO-UNDO.
-DEFINE VARIABLE iAnzOp        AS INTEGER          NO-UNDO.
-DEFINE VARIABLE nTotBetr      AS DECIMAL          NO-UNDO.
-DEFINE VARIABLE lAnmeldung    AS LOGICAL          NO-UNDO INIT FALSE.
-DEFINE VARIABLE cBenutzer    AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cPasswort    AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cMandant     AS CHARACTER NO-UNDO.
-
-DEFINE STREAM LogStream.
-DEFINE STREAM Logfile.
-
-DEFINE TEMP-TABLE tMwstBetr
-    FIELD SammelKonto AS CHARACTER
-    FIELD MwstCd      AS INTEGER
-    FIELD MwstPfl     AS DECIMAL   DECIMALS 2
-    FIELD MwstBet     AS DECIMAL   DECIMALS 2
-    FIELD MwstAns     AS DECIMAL   DECIMALS 2.
-
-DEFINE TEMP-TABLE tDebop   
-    FIELD DocType     AS INTEGER
-    FIELD OpId        AS CHARACTER
-    FIELD KndNr       AS INTEGER
-    FIELD SammelKonto AS CHARACTER
-    FIELD OpText      AS CHARACTER
-    FIELD OpDate      AS DATE
-    FIELD ZabTyp      AS CHARACTER
-    FIELD SortId      AS CHARACTER
-    FIELD Firma       AS CHARACTER
-    FIELD Zusatz1     AS CHARACTER
-    FIELD Strasse     AS CHARACTER
-    FIELD Plz         AS CHARACTER
-    FIELD Ort         AS CHARACTER
-    FIELD Telefon1    AS CHARACTER
-    FIELD Telefon4    AS CHARACTER
-    FIELD EsrNr       AS CHARACTER
-    FIELD Sprache     AS CHARACTER
-    FIELD iStatus     AS INTEGER
-    
-    INDEX tDebop-k1 IS PRIMARY
-    OpId
-    .
-DEFINE TEMP-TABLE TZaKo    
-    FIELD ZabTyp  AS CHARACTER
-    FIELD ZabTyp2 AS CHARACTER.
-
-DEFINE TEMP-TABLE TDetail
-    FIELD DocKey       AS INTEGER
-    FIELD DocLine      AS INTEGER
-    FIELD SammelKonto  AS CHARACTER
-    FIELD cText        AS CHARACTER
-    FIELD MwstTyp      AS CHARACTER
-    FIELD Betrag       AS DECIMAL   DECIMALS 2
-    FIELD BetragMwst   AS DECIMAL   DECIMALS 2
-    FIELD BetragFW     AS DECIMAL   DECIMALS 2
-    FIELD BuchTyp      AS CHARACTER
-    FIELD Kostenstelle AS CHARACTER
-    FIELD cCode        AS CHARACTER
-    FIELD iStatus      AS INTEGER.
-
-DEFINE TEMP-TABLE tOpSaldo 
-    FIELD OpId     AS CHARACTER
-    FIELD PkNr     AS INTEGER
-    FIELD Betrag   AS DECIMAL
-    FIELD BetragFW AS DECIMAL
-    INDEX Kunde IS PRIMARY
-    PkNr
-    INDEX Faknr
-    OpId.
-
-DEFINE TEMP-TABLE TBeleg       
-    FIELD OpID   AS CHARACTER
-    FIELD KndNr  AS INTEGER
-    FIELD DocKey AS INTEGER
-    
-    INDEX Faknr IS PRIMARY
-    OpId
-    .
-
-DEFINE TEMP-TABLE TBelegDetail 
-    FIELD DocKey  AS INTEGER
-    FIELD DocLine AS INTEGER
-    INDEX DokNr IS PRIMARY
-    DocKey.
-
-DEFINE TEMP-TABLE xDetail
-    FIELD DocKey       AS INTEGER
-    FIELD DocLine      AS INTEGER
-    FIELD Konto        AS CHARACTER
-    FIELD cText        AS CHARACTER
-    FIELD MwstTyp      AS CHARACTER
-    FIELD Betrag       AS DECIMAL   DECIMALS 2
-    FIELD BetragMwst   AS DECIMAL   DECIMALS 2
-    FIELD BetragFW     AS DECIMAL   DECIMALS 2
-    FIELD BuchTyp      AS CHARACTER
-    FIELD Kostenstelle AS CHARACTER
-    FIELD cCode        AS CHARACTER
-    FIELD iStatus      AS INTEGER.
-    
-DEFINE TEMP-TABLE xOpSaldo LIKE tOpSaldo.
-
-{ funktionen.i }
-{ ttsendmail.i }
-{ properties.i }
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD cancelSQLTransaction Procedure 
-FUNCTION cancelSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CloseConnection Procedure 
-FUNCTION CloseConnection RETURNS LOGICAL
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD closeSQLTransaction Procedure 
-FUNCTION closeSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateConnection Procedure 
-FUNCTION CreateConnection RETURNS LOGICAL
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateSetDaten Procedure 
-FUNCTION CreateSetDaten RETURNS CHARACTER
-    ( iphBuffer AS HANDLE, ipArt AS INTEGER )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBeleg Procedure 
-FUNCTION lesenBeleg RETURNS INTEGER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBelegDetail Procedure 
-FUNCTION lesenBelegDetail RETURNS INTEGER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenOpSaldo Procedure 
-FUNCTION lesenOpSaldo RETURNS INTEGER
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-SendMail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD SendMail Procedure
-FUNCTION SendMail RETURNS LOGICAL 
-    (  ) FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startSQLTransaction Procedure 
-FUNCTION startSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBeleg Procedure 
-FUNCTION updateBeleg RETURNS LOGICAL
-    ( ipTHandle AS HANDLE, ipArt AS INTEGER )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBelegDetail Procedure 
-FUNCTION updateBelegDetail RETURNS LOGICAL
-    ( ipTHandle AS HANDLE, ipArt AS INTEGER )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-    ( ipMessage AS CHARACTER  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** Procedure Settings ************************ */
-
-&ANALYZE-SUSPEND _PROCEDURE-SETTINGS
-/* Settings for THIS-PROCEDURE
-   Type: Procedure
-   Allow: 
-   Frames: 0
-   Add Fields to: Neither
-   Other Settings: CODE-ONLY COMPILE APPSERVER
- */
-&ANALYZE-RESUME _END-PROCEDURE-SETTINGS
-
-/* *************************  Create Window  ************************** */
-
-&ANALYZE-SUSPEND _CREATE-WINDOW
-/* DESIGN Window definition (used by the UIB) 
-  CREATE WINDOW Procedure ASSIGN
-         HEIGHT             = 27.48
-         WIDTH              = 132.8.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-
-REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
-    RUN ANMELDEN.
-    IF NOT lAnmeldung THEN QUIT.
-    LEAVE.
-END.
-
-cTempName = DYNAMIC-FUNCTION('getLogName':U) NO-ERROR.
-cJournal  = REPLACE(cTempName, '.log', '.csv').
-    
-GET-KEY-VALUE SECTION 'Grundeinstellungen'
-    KEY     'SESAM_SQL_LOG'
-    VALUE   cTempDir.
-IF cTempDir = ?  THEN cTempDir = SESSION:TEMP-DIRECTORY.
-IF cTempDir = '' THEN cTempDir = SESSION:TEMP-DIRECTORY.
-    
-cMessage = 'Start Datentransfer Ge_MIS <-> SAGE '.
-DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-IF TIME > 21600 THEN 
-DO:    /*  Test auf zweimalige Ausführung nur nach 06:00 Uhr   */
-    FIND Steuer NO-LOCK
-        WHERE Steuer.Firma = cMandant.
-    IF Steuer.Fwi30 = 1 THEN 
-    DO:
-        cMessage = 'Es ist bereits ein Task am Arbeiten '.
-        DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-        QUIT.
-    END.
-END.
-    
-ja = DYNAMIC-FUNCTION('CreateConnection':U) NO-ERROR.
-IF NOT ja THEN QUIT.
-    
-REPEAT TRANSACTION:
-    FIND Steuer
-        WHERE Steuer.Firma = cMandant.
-    Steuer.Fwi30 = 1.
-    RELEASE Steuer.
-    LEAVE.
-END.
-    
-RUN FUELLEN_OP.
-RUN LESEN_OFFENESALDI.
-
-DYNAMIC-FUNCTION('CloseConnection':U) NO-ERROR.
-
-cMessage = 'Ende Datentransfer Ge_MIS <-> SAGE ' + CHR(10).
-DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-DYNAMIC-FUNCTION ('sendMail':U) NO-ERROR.
-    
-REPEAT TRANSACTION:
-    FIND Steuer
-        WHERE Steuer.Firma = cMandant.
-    Steuer.Fwi30 = 0.
-    RELEASE Steuer.
-    LEAVE.
-END.
-
-QUIT.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-ANMELDEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ANMELDEN Procedure
-PROCEDURE ANMELDEN:
-    /*------------------------------------------------------------------------------*/
-    /*  Purpose:                                                                    */
-    /*  Parameters:  <none>                                                         */
-    /*  Notes:                                                                      */
-    /*------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix      AS INTEGER   NO-UNDO.
-    
-    DO WHILE TRUE:
-
-        ASSIGN  
-            cBenutzer = ''
-            cPasswort = ''
-            cMandant  = ''.
-            
-        DO ix = 1 TO NUM-ENTRIES(SESSION:PARAMETER, ';'):
-            CASE ix:
-                WHEN 1 THEN 
-                    cBenutzer = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
-                WHEN 2 THEN 
-                    cPasswort = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
-                WHEN 3 THEN 
-                    cMandant  = ENTRY(ix, SESSION:PARAMETER, ';') NO-ERROR.
-            END CASE.
-        END.
-    
-        FIND FIRST Benutzer NO-LOCK USE-INDEX Benutzer-k1
-            WHERE Benutzer.Benutzer = cBenutzer
-            AND   Benutzer.Kennwort = cPasswort NO-ERROR.
-        IF NOT AVAILABLE Benutzer THEN 
-        DO:
-            LEAVE.
-        END.
-    
-        FIND Mandant NO-LOCK USE-INDEX Mandant-k1
-            WHERE Mandant.Firma = cMandant NO-ERROR.
-        IF NOT AVAILABLE Mandant THEN 
-        DO:
-            LEAVE.
-        END.
-    
-        cString = cBenutzer + CHR(01) + cPasswort + CHR(01) + cMandant.
-        RUN ANMELDUNG ( INPUT cString ).
-        RUN AUFTRAGFUNKTIONENINIT.
-    
-        lAnmeldung = TRUE.
-        LEAVE.
-    END.
-
-END PROCEDURE.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-
-&IF DEFINED(EXCLUDE-FUELLEN_OP) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_OP Procedure 
-PROCEDURE FUELLEN_OP :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE htDebop  AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE htDetail AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE xx       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cOrt     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE dFakBetr AS DECIMAL   DECIMALS 2 NO-UNDO.
-    DEFINE VARIABLE BuchBetr AS DECIMAL   DECIMALS 2 NO-UNDO.
-    DEFINE VARIABLE Ansatz   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE Inkl     AS LOG       NO-UNDO.
-    DEFINE VARIABLE ii       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cString  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iDocKey  AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cAdresse AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE dMwst    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE lErst    AS LOG       NO-UNDO.
-    DEFINE VARIABLE lMwstAdd AS LOG       NO-UNDO.
-    DEFINE VARIABLE nDiff    AS DECIMAL   DECIMALS 2 NO-UNDO.
-    DEFINE VARIABLE cExport  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE iMwstCd  AS INTEGER   NO-UNDO.
-
-    EMPTY TEMP-TABLE tDebop  .
-    EMPTY TEMP-TABLE tDetail .
-    EMPTY TEMP-TABLE xDetail .
-    EMPTY TEMP-TABLE xOpSaldo.
-    htDebop  = BUFFER tDebop :HANDLE.
-    htDetail = BUFFER xDetail:HANDLE.
-    
-    CREATE xDetail.
-
-    FIND Steuer WHERE Steuer.Firma = cMandant NO-LOCK.
-
-    cMessage = ' Einlesen Daten aus SESAM gestartet'.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    xx = DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE('  Anzahl eingelesene verarbeitete Rechnungen aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE('  Anzahl eingelesene Belege aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = DYNAMIC-FUNCTION('lesenBelegDetail':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE(' Anzahl eingelesene Beleg-Details aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    cMessage = ' Einlesen Daten aus SESAM beendet'.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    cMessage = ' '.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    cExport = SUBSTITUTE('&1Beleg.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tBeleg:
-        EXPORT DELIMITER ';' tBeleg.
-    END.
-    OUTPUT CLOSE.
-
-    cExport = SUBSTITUTE('&1BelegDetail.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tBelegDetail:
-        EXPORT DELIMITER ';' tBelegDetail.
-    END.
-    OUTPUT CLOSE.
-
-    xx = 0.
-    FOR EACH Debop NO-LOCK
-        WHERE Debop.Firma    = cMandant
-        AND   Debop.Faknr   >= 30000
-        AND ((Debop.Fakbetr <> 0 AND
-        Debop.Saldo   <> 0.0)
-        OR  (Debop.Fakbetr  = 0)) ,
-        
-        FIRST Adresse NO-LOCK
-        WHERE Adresse.Firma = Debop.Firma
-        AND   Adresse.Knr   = Debop.Knr :
-
-        FIND FIRST tBeleg NO-LOCK
-            WHERE tBeleg.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>')) NO-ERROR.
-        IF AVAILABLE tBeleg THEN NEXT.
-
-        IF Debop.Fakbetr = 0 THEN 
-        DO:
-            dMwst = 0.
-            DO ii = 1 TO 10:
-                dMwst = dMwst + Debop.FakWpfl[ii].
-            END.
-            IF dMwst = 0 THEN NEXT.
-        END.
-                      
-        FIND Orte OF Adresse NO-LOCK NO-ERROR.
-        IF Adresse.Ort <> ''   THEN cOrt = Adresse.Ort.
-        ELSE IF AVAILABLE Orte THEN cOrt = Orte.Ort.
-            ELSE                        cOrt = '??????????'.
-        FIND Sprache OF Adresse NO-LOCK NO-ERROR.
-        IF Adresse.Firma1 <> '' THEN cAdresse = TRIM(Adresse.Firma1).
-        ELSE                         cAdresse = TRIM(Adresse.Name + ' ' + Adresse.Vorname).
-        cAdresse = TRIM(SUBSTRING(cAdresse,01,30)).
-
-        CREATE  tDebop.
-        ASSIGN  
-            tDebop.DocTyp      = 0
-            tDebop.OpId        = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-            tDebop.KndNr       = Debop.Knr
-            tDebop.SammelKonto = Debop.Konto
-            tDebop.OpDate      = Debop.Fakdat
-            tDebop.ZabTyp      = STRING(Debop.Kond,'99')
-            tDebop.Firma       = cAdresse
-            tDebop.SortId      = TRIM(SUBSTRING(Adresse.Suchbe ,01,10))
-            tDebop.Zusatz1     = TRIM(SUBSTRING(Adresse.Zusatz1,01,30))
-            tDebop.Strasse     = TRIM(SUBSTRING(Adresse.Strasse,01,30))
-            tDebop.Plz         = TRIM(SUBSTRING(Adresse.Plz    ,01,06))
-            tDebop.Ort         = TRIM(SUBSTRING(cOrt           ,01,24))
-            tDebop.Telefon1    = TRIM(SUBSTRING(Adresse.Tel-1  ,01,20))
-            tDebop.Telefon4    = TRIM(SUBSTRING(Adresse.Tel-3  ,01,20))
-            tDebop.EsrNr       = ''
-            tDebop.Sprache     = (IF AVAILABLE Sprache THEN SUBSTRING(Sprache.Bez,01,01) ELSE 'D')
-            tDebop.iStatus     = 9.
-        .
-        IF tDebop.Firma = ''
-            THEN tDebop.Firma = TRIM(SUBSTRING((Adresse.NAME + ' ' + Adresse.Vorname),01,30)).
-
-        dFakBetr = Debop.FakBetr.
-        EMPTY TEMP-TABLE tMwstBetr.
-        FOR EACH Interf NO-LOCK
-            WHERE Interf.Firma    = Steuer.Fwc09
-            AND   Interf.TrNr1    = Debop.TrNr1 
-            AND   Interf.TrNr2    = Debop.TrNr2
-            AND   Interf.Herk    >= 50
-            AND   Interf.Herk    <= 59
-            AND   Interf.MWSt_Art = 0
-            BREAK BY Interf.Firma
-            BY Interf.TrNr1
-            BY Interf.TrNr2
-            BY Interf.Trnr :
-                                    
-            FIND FIRST tMwstBetr
-                WHERE tMwstbetr.SammelKonto  = Interf.Kto2
-                AND   tMwstbetr.MwstCd       = Interf.Mwst_Cd NO-ERROR.
-            IF NOT AVAILABLE tMwstBetr THEN 
-            DO:
-                CREATE  tMwstBetr.
-                ASSIGN  
-                    tMwstBetr.SammelKonto = Interf.Kto2
-                    tMwstBetr.MwstCd      = Interf.Mwst_Cd
-                    tMwstBetr.MwstAns     = Debop.Fakwpro[Interf.Mwst_Cd].
-            END.
-            ASSIGN  
-                tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + Interf.Betrag.
-            IF NOT LAST-OF ( Interf.TrNr2 ) THEN NEXT.
-            
-            BuchBetr = 0.
-            lMwstAdd = FALSE.
-            FOR EACH tMwstBetr
-                BREAK BY tMwstBetr.MwstCd:
-                IF FIRST-OF ( tMwstBetr.MwstCd ) THEN BuchBetr = 0.
-                BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
-                IF NOT LAST-OF ( tMwstBetr.MwstCd ) THEN NEXT.
-                
-                ii = tMwstBetr.MwstCd.
-                IF ABS(Debop.FakWpfl[ii] - BuchBetr) < ABS(Debop.FakWpfl[ii] * 0.01) THEN 
-                DO.
-                    lMwstAdd = TRUE.
-                    LEAVE.
-                END.
-            END.
-
-            /*  lMwstAdd = TRUE --> Beim Betrag muss die Mwst dazugerechnet werden  */
-            /*  In der Schnittstelle werden nur Inklusiv-Beträge übermittelt        */
-            IF lMwstAdd THEN 
-            DO:
-                FOR EACH tMwstBetr :
-                    tMwstBetr.MwstPfl = tMwstBetr.MwstPfl * (100 + tMwstBetr.MwstAns) / 100.
-                END.
-            END.
-           
-            /*  Different zwischen Fakbetr und einzelnen Buchungen errechnen    */
-            /*  Differenz auf dem Konto mit dem grössten Betrag ausgleichen     */
-            Buchbetr = 0.
-            FOR EACH tMwstBetr:
-                tMwstBetr.MwstPfl = DECIMAL(STRING(tMwstBetr.MwstPfl,'999999999.99-')).
-                BuchBetr          = BuchBetr + tMwstBetr.MwstPfl.
-            END.
-            Buchbetr = DECIMAL(STRING(Buchbetr,'999999999.99-')).
-            nDiff    = dFakBetr - Buchbetr.
-            FOR FIRST tMwstBetr
-                BY tMwstBetr.MwstPfl DESCENDING:
-                tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + nDiff.
-            END.
-
-            ii = 0.            
-            FOR EACH tMwstBetr
-                BY tMwstBetr.SammelKonto
-                BY tMwstBetr.MwstCd:
-                iMwstCd = (IF tMwstBetr.MwstCd < 5 OR
-                    tMwstBetr.MwstCd > 6 THEN tMwstBetr.MwstCd ELSE 13).
-                ii = ii + 1.
-                CREATE  tDetail.
-                ASSIGN  
-                    tDetail.DocKey       = Debop.Faknr
-                    tDetail.DocLine      = ii
-                    tDetail.SammelKonto  = tMwstBetr.SammelKonto
-                    tDetail.cText        = ''
-                    tDetail.MwstTyp      = STRING(iMWStCd,'99')
-                    tDetail.Betrag       = tMwstBetr.MwstPfl
-                    tDetail.BetragMwst   = 0
-                    tDetail.BetragFW     = 0
-                    tDetail.BuchTyp      = ''
-                    tDetail.Kostenstelle = ''
-                    tDetail.cCode        = ''
-                    tDetail.iStatus      = 9.
-            END.
-        END.
-        xx = xx + 1.
-    END.
-
-    cMessage = SUBSTITUTE(' Anzahl beruecksichtigte Rechnungen aus Ge_MIS -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    iAnzOp   = 0.
-    nTotBetr = 0.00.
-    
-    xx = 0.
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-    FOR EACH tDebop:
-        FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpID NO-ERROR.
-        IF AVAILABLE tBeleg THEN NEXT.
-        
-        ja = DYNAMIC-FUNCTION('updateBeleg':U, INPUT htDebop, INPUT 1) NO-ERROR.
-        tDebop.iStatus = (IF ja THEN 1 ELSE 0).
-        
-        IF tDebop.iStatus < 9 THEN 
-        DO:
-            CREATE xOpSaldo.
-            ASSIGN  
-                xOpSaldo.OpId = tDebop.OpId
-                xOpSaldo.PkNr = tDebop.KndNr.
-        END.
-        
-        xx = xx + 1.
-        IF xx MOD 100 = 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-            cMessage = SUBSTITUTE(' -> bereits eingefuegte Belege -> &1', xx).
-            DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-            
-            ii = ETIME(TRUE).
-            DO WHILE ETIME < 1000:
-            END.
-
-            DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-        END.
-
-        FIND Debop NO-LOCK
-            WHERE Debop.Firma = cMandant
-            AND   Debop.Knr   = tDebop.KndNr
-            AND   Debop.Faknr = INTEGER(tDebop.OpId) NO-ERROR.
-        CREATE  tOpSaldo.
-        ASSIGN  
-            tOpSaldo.OpId     = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-            tOpSaldo.PkNr     = Debop.Knr
-            tOpSaldo.Betrag   = Debop.Saldo
-            tOpSaldo.BetragFW = Debop.Saldo NO-ERROR.
-        IF tDebop.iStatus = 1 THEN
-            ASSIGN  
-                iAnzOp   = iAnzOp + 1
-                nTotBetr = nTotBetr + Debop.Fakbetr.
-    END.
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE(' Anzahl eingefügte Belege -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    ii = ETIME(TRUE).
-    DO WHILE ETIME < 1000:
-    END.
-
-    xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE(' Anzahl eingelesene Belege aus SESAM nach Belegverbuchen -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = 0.
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-    FOR EACH tDetail:
-        
-        FIND FIRST tBeleg WHERE tBeleg.OpId = TRIM(STRING(tDetail.DocKey,'>>>>>>>>')) NO-ERROR.
-        IF NOT AVAILABLE tBeleg THEN NEXT.
-        
-        iDocKey = tBeleg.DocKey.
-        FIND FIRST tBelegDetail
-            WHERE tBelegDetail.DocKey  = iDocKey
-            AND   tBelegDetail.DocLine = tDetail.DocLine NO-ERROR.
-        IF AVAILABLE tBelegDetail THEN NEXT.
-        
-        FIND FIRST xDetail.
-        BUFFER-COPY tDetail EXCEPT DocKey SammelKonto TO xDetail
-            ASSIGN  
-            xDetail.DocKey = iDocKey
-            xDetail.Konto  = tDetail.SammelKonto.
-        /*
-        tDetail.DocKey = cDocKey.
-        IF tDetail.DocKey = ? THEN NEXT.
-        IF tDetail.DocKey = 0 THEN NEXT.
-        ja = DYNAMIC-FUNCTION('ifBelegDetail':U,
-                               INPUT tDetail.DocKey,
-                               INPUT tDetail.DocLine) NO-ERROR.
-        IF ja = ?    THEN NEXT.
-        IF ja = TRUE THEN NEXT.
-        */
-        DYNAMIC-FUNCTION('updateBelegDetail':U, INPUT htDetail, INPUT 1) NO-ERROR.
-        tDetail.iStatus = (IF ja THEN 1 ELSE 0).
-        xx = xx + 1.
-        IF xx MOD 100 = 0 THEN 
-        DO:
-            DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-            cMessage = SUBSTITUTE(' -> bereits eingefuegte BelegDetail -> &1', xx).
-            DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-            
-            ii = ETIME(TRUE).
-            DO WHILE ETIME < 500:
-            END.
-
-            DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-        END.
-    END.
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE(' Anzahl eingefuegte BelegDetail -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    OUTPUT TO VALUE(cJournal) NO-MAP NO-CONVERT.
-    FOR EACH tDebop:
-        PUT CONTROL tDebop.OpId
-            ';'
-            tDebop.KndNr
-            ';'
-            tDebop.Firma
-            ';'
-            tDebop.Zusatz
-            ';'
-            tDebop.Ort
-            ';'
-            tDebop.iStatus
-            ';'
-            tDebop.SammelKonto
-            ';'.
-        lErst = TRUE.
-        FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpId.
-        FOR EACH tDetail WHERE tDetail.DocKey = INTEGER(tDebop.OpID):
-            IF NOT lErst THEN PUT CONTROL ';;;;;;;'.
-            PUT CONTROL tDetail.SammelKonto
-                ';'
-                tDetail.cText
-                ';'
-                tDetail.MwstTyp
-                ';'
-                TRIM(STRING(tDetail.BetragMwst,'->>>>>>>>9.99'))
-                ';'
-                TRIM(STRING(tDetail.Betrag    ,'->>>>>>>>9.99'))
-                ';'
-                tDetail.BuchTyp
-                ';'
-                tDetail.iStatus
-                CHR(10).
-            lErst = FALSE.
-        END.
-    END.
-    OUTPUT CLOSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-LESEN_OFFENESALDI) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LESEN_OFFENESALDI Procedure 
-PROCEDURE LESEN_OFFENESALDI :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE Saldo   AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE Diff    AS DECIMAL   NO-UNDO.
-    DEFINE VARIABLE cExport AS CHARACTER NO-UNDO.
-    
-    DEFINE BUFFER BDebst FOR Debst.
-
-    cExport = SUBSTITUTE('&1tOpSaldo.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tOpSaldo:
-        EXPORT DELIMITER ';' tOpSaldo.
-    END.
-    OUTPUT CLOSE.
-
-    FIND FIRST tOpSaldo NO-LOCK NO-ERROR.
-    IF NOT AVAILABLE tOpSaldo THEN RETURN.
-
-    FOR EACH Debst NO-LOCK:
-        Saldo = 0.
-        
-        FOR EACH Debop USE-INDEX Debop-k1
-            WHERE Debop.Firma = Debst.Firma
-            AND   Debop.Knr   = Debst.Knr:
-                
-            FIND FIRST xOpSaldo NO-LOCK USE-INDEX Faknr
-                WHERE xOpSaldo.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>')) NO-ERROR.
-            IF  AVAILABLE xOpSaldo THEN NEXT.
-                
-            FIND FIRST tOpSaldo NO-LOCK USE-INDEX Faknr
-                WHERE tOpSaldo.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-                AND   tOpSaldo.PkNr = Debst.Knr NO-ERROR.
-            IF AVAILABLE tOpSaldo THEN Diff = Debop.Saldo - tOpSaldo.Betrag.
-            ELSE                       Diff = (IF Debop.Fakdat < (TODAY - 7) THEN Debop.Saldo ELSE 0).
-            IF Diff <> 0 THEN 
-            DO:
-                Debop.ZahBetr = Debop.ZahBetr + Diff.
-                Debop.Saldo   = Debop.Fakbetr - Debop.Zahbetr - Debop.Skonto.
-                Debop.Zahdat  = TODAY.
-            END.
-            Saldo = Saldo + Debop.Saldo.
-            IF Debop.Saldo  <> 0            THEN NEXT.
-            IF Debop.FakDat > (TODAY - 360) THEN NEXT.
-        /*
-        DELETE  Debop.
-        */
-        END.
-        IF Saldo = Debst.Saldo THEN NEXT.
-        FIND BDebst WHERE RECID(BDebst) = RECID(Debst)
-            EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-        IF NOT AVAILABLE BDebst THEN NEXT.
-        BDebst.Saldo = Saldo.
-        RELEASE BDebst.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-RUNDEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUNDEN Procedure 
-PROCEDURE RUNDEN :
-    /*------------------------------------------------------------------------------
-      Purpose:     
-      Parameters:  <none>
-      Notes:       
-    ------------------------------------------------------------------------------*/
-
-    DEFINE INPUT        PARAMETER Rundcode     AS INTEGER              NO-UNDO.
-    DEFINE INPUT-OUTPUT PARAMETER Rundbetr     AS DECIMAL  DECIMALS 4  NO-UNDO.
-
-    DEFINE VARIABLE VBetr  AS DECIMAL   DECIMALS 4 NO-UNDO.
-    DEFINE VARIABLE VOp    AS DECIMAL   INIT 0.2 NO-UNDO.
-    DEFINE VARIABLE XPChar AS CHARACTER NO-UNDO.
-
-    DO TRANSACTION:
-        VBetr = Rundbetr.
-
-        IF Rundcode = 1 THEN 
-        DO:
-            VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
-        END.
-        IF Rundcode = 2 THEN 
-        DO:
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-        END.
-        IF Rundcode = 3 THEN 
-        DO:
-            VBetr = VBetr + 0.0499.
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-        END.
-        IF Rundcode = 4 THEN 
-        DO:
-            VBetr = VBetr - 0.0500.
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-        END.
-        IF Rundcode = 5 THEN 
-        DO:
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-        END.
-        IF Rundcode = 6 THEN 
-        DO:
-            VBetr = VBetr + 0.4999.
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-        END.
-        IF Rundcode = 7 THEN 
-        DO:
-            VBetr = VBetr - 0.5000.
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-        END.
-        IF Rundcode = 8 THEN 
-        DO:
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-        END.
-        IF Rundcode = 9 THEN 
-        DO:
-            VBetr = VBetr + 4.9999.
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-        END.
-        IF Rundcode = 10 THEN 
-        DO:
-            VBetr = VBetr - 5.0000.
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-        END.
-
-        IF Rundcode = 99 THEN 
-        DO:
-            XPChar = STRING(VBetr,"-99999999.999").
-            VBetr  = DECIMAL(SUBSTRING(XPChar,01,12)).
-            IF SUBSTRING(XPChar,13,01) > "4" THEN VBetr = VBetr + 0.01.
-        END.
-
-        Rundbetr = VBetr.
-
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION cancelSQLTransaction Procedure 
-FUNCTION cancelSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'ROLLBACK'.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CloseConnection Procedure 
-FUNCTION CloseConnection RETURNS LOGICAL
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    ObjConnection:Close NO-ERROR.
-
-    RELEASE OBJECT ObjConnection NO-ERROR.
-    RELEASE OBJECT ObjCommand    NO-ERROR.
-    RELEASE OBJECT ObjRecordSet  NO-ERROR.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION closeSQLTransaction Procedure 
-FUNCTION closeSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'COMMIT'.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateConnection Procedure 
-FUNCTION CreateConnection RETURNS LOGICAL
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cConnCommand AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cDSN         AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cServer      AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ix           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE ii           AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cMessage     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cBenutzer    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cPassword    AS CHARACTER NO-UNDO.
-
-    CREATE "ADODB.Connection"   ObjConnection NO-ERROR.
-    CREATE "ADODB.RecordSet"    ObjRecordSet  NO-ERROR.
-    CREATE "ADODB.Command"      ObjCommand    NO-ERROR.
-
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-        KEY     'SQLServer'
-        VALUE   cServer.
-    IF cServer = ?  THEN RETURN FALSE.
-    IF cServer = '' THEN RETURN FALSE.
-  
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-        KEY     'SQLDSN'
-        VALUE   cDSN.
-    IF cDSN    = ?  THEN RETURN FALSE.
-    IF cDSN    = '' THEN RETURN FALSE.
-  
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-        KEY     'SQLDSNUser'
-        VALUE   cBenutzer.
-    IF cBenutzer = ?  THEN RETURN FALSE.
-    IF cBenutzer = '' THEN RETURN FALSE.
-  
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-        KEY     'SQLDSNPwd'
-        VALUE   cPassword.
-    IF cPassword = ?  THEN RETURN FALSE.
-    IF cPassword = '' THEN RETURN FALSE.
-  
-    ASSIGN  
-        ODBC-STATUS = ''
-        ODBC-NULL   = ''
-        ODBC-DSN    = cDSN
-        ODBC-SERVER = cServer
-        ODBC-USERID = cBenutzer
-        ODBC-PASSWD = cPassword
-        ODBC-QUERY  = ''.
-
-    cConnCommand = 'data source='
-        + ODBC-DSN
-        + ';server='
-        + ODBC-SERVER
-        .
-    ObjConnection:Open ( cConnCommand, ODBC-USERID, ODBC-PASSWD, 0 ) NO-ERROR.
-    IF ( ERROR-STATUS:NUM-MESSAGES > 0 ) THEN 
-    DO:
-        ii = ERROR-STATUS:NUM-MESSAGES.
-        ODBC-STATUS = "Error: keine Verbindung zu Datenserver "
-            + cConnCommand.
-        cMessage = ODBC-STATUS.
-        DO ix = 1 TO ii:
-            cMessage = cMessage
-                + CHR(10)
-                + ERROR-STATUS:GET-MESSAGE(ix).
-        END.
-        DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-        RETURN FALSE.
-    END.
-
-    ASSIGN  
-        ObjCommand:ActiveConnection  = ObjConnection
-        ObjCommand:CommandType       = 1 /* adCmdText       */
-        ObjConnection:CursorLocation = 3 /* adUseClient     */
-        ObjRecordSet:CursorType      = 3 /* adOpenStatic    */.
-
-    cMessage = 'Start SESAM SQL mit Connection ' + cConnCommand.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateSetDaten Procedure 
-FUNCTION CreateSetDaten RETURNS CHARACTER
-    ( iphBuffer AS HANDLE, ipArt AS INTEGER ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cSet     AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE ii       AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE hFeld    AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cFeld    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalt  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cFelder  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cInhalte AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xFeld    AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE xInhalt  AS CHARACTER NO-UNDO.
-
-    cSet     = ''.
-    cFelder  = ''.
-    cInhalte = ''.
-    DO ii = 1 TO iphBuffer:NUM-FIELDS:
-        hFeld = iphBuffer:BUFFER-FIELD(ii).
-        IF hFeld:BUFFER-VALUE(0) = ? THEN NEXT.
-        cFeld = hFeld:NAME.
-        IF cFeld = 'cCode'   THEN cFeld = 'Code'. /*  ProgressSchlüsselFeld  */
-        IF cFeld = 'cText'   THEN cFeld = 'Text'. /*  ProgressSchlüsselFeld  */
-        IF cFeld = 'iStatus' THEN NEXT.           /*  Kein SQL-Feld          */
-        DO WHILE TRUE:
-            IF hFeld:BUFFER-VALUE(0) <> ?   AND
-                hFeld:BUFFER-VALUE(0) <> '?' THEN LEAVE.
-
-            CASE hFeld:DATA-TYPE:
-                WHEN 'INTEGER' THEN 
-                    hFeld:BUFFER-VALUE(0) = '0'.
-                WHEN 'DECIMAL' THEN 
-                    hFeld:BUFFER-VALUE(0) = '0.0'.
-                WHEN 'DATE'    THEN 
-                    hFeld:BUFFER-VALUE(0) = ''.
-                WHEN 'LOGICAL' THEN 
-                    hFeld:BUFFER-VALUE(0) = STRING(FALSE).
-                OTHERWISE 
-                hFeld:BUFFER-VALUE(0) = ''.
-            END CASE.
-
-            LEAVE.
-        END.
-
-        xFeld   = "[" + TRIM(cFeld) + "]".
-        xInhalt = TRIM(hFeld:BUFFER-VALUE(0)).
-        xInhalt = REPLACE(xInhalt, "'", '"').
-        xInhalt = "'" + xInhalt + "'".
-
-        cInhalte = cInhalte + "," + xInhalt.
-        cFelder  = cFelder  + "," + xFeld.
-    END.
-    cInhalte = SUBSTRING(cInhalte,02).
-    cFelder  = SUBSTRING(cFelder ,02).
-
-    CASE ipArt:
-        WHEN 1 THEN 
-            DO:
-                cSet = '('
-                    + cFelder
-                    + ') VALUES ('
-                    + cInhalte
-                    + ')'.
-            END.
-        WHEN 0 THEN 
-            DO:
-                cSet = 'SET '.
-                DO ii = 1 TO NUM-ENTRIES(cFelder, ','):
-                    cSet = cSet + ENTRY(ii, cFelder, ',')
-                        + ' = '
-                        + ENTRY(ii, cInhalte, ',').
-                    IF ii < NUM-ENTRIES(cFelder, ',') THEN cSet = cSet + ', '.
-                END.
-            END.
-    END CASE.
-
-    RETURN cSet.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
-    
-    GET-KEY-VALUE SECTION 'GrundEinstellungen'
-        KEY     'SESAM_SQL_LOG'
-        VALUE   cPath.
-    IF cPath = '' OR
-        cPath = ?  THEN cPath = SESSION:TEMP-DIRECTORY.
-    IF SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND
-        SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'.
-    cPath = cPath
-        + 'SESAMSQL-'
-        + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
-        + REPLACE(STRING(TIME ,'HH:MM:SS')  , ':', '') + '.Log'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBeleg Procedure 
-FUNCTION lesenBeleg RETURNS INTEGER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE tBeleg.
-
-    ODBC-QUERY = 'SELECT [OpId],[KndNr],[DocKey] FROM [g.connect].[dbo].[Beleg]'.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-        ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  tBeleg.
-            ASSIGN  
-                tBeleg.Opid  = ObjRecordSet:FIELDS("OpId")  :VALUE
-                tBeleg.KndNr = ObjRecordSet:FIELDS("KndNr") :VALUE.
-            tBeleg.DocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
-            ASSIGN  
-                ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBelegDetail Procedure 
-FUNCTION lesenBelegDetail RETURNS INTEGER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE TBelegDetail.
-
-    ODBC-QUERY = 'SELECT [DocKey],[DocLine] FROM [g.connect].[dbo].[BelegDetail]'.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-        ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  TBelegDetail.
-            ASSIGN  
-                TBelegDetail.DocKey  = ObjRecordSet:FIELDS("DocKey") :VALUE
-                TBelegDetail.DocLine = ObjRecordSet:FIELDS("DocLine"):VALUE.
-            ASSIGN  
-                ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenOpSaldo Procedure 
-FUNCTION lesenOpSaldo RETURNS INTEGER
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE tOpSaldo.
-    /*
-    FOR EACH xOpSaldo:
-        CREATE  tOpSaldo.
-        BUFFER-COPY xOpSaldo TO tOpSaldo.
-    END.
-    */
-    ODBC-QUERY = "SELECT * FROM [g.connect].[dbo].[OPListe] WHERE OpId > '300000' ".
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-        ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  tOpSaldo.
-            ASSIGN  
-                tOpSaldo.Opid     = ObjRecordSet:FIELDS("OpId")    :VALUE
-                tOpSaldo.PkNr     = ObjRecordSet:FIELDS("PkNr")    :VALUE
-                tOpSaldo.Betrag   = ObjRecordSet:FIELDS("Betrag")  :VALUE
-                tOpSaldo.BetragFW = ObjRecordSet:FIELDS("BetragFW"):VALUE.
-            ASSIGN  
-                ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-SendMail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION SendMail Procedure
-FUNCTION SendMail RETURNS LOGICAL 
-    (  ):
-    /*------------------------------------------------------------------------------
-     Purpose:
-     Notes:
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
-
-    cBody = 'Protokoll der SAGE-Schnittstellenverbuchung'
-        + '</br>' + '</br>'
-        + SUBSTITUTE('Anzahl OP aus Ge_MIS    --> &1 ', STRING(iAnzOp,'zzz,zz9') )
-        + '</br>'
-        + SUBSTITUTE('Gesamtbetrag aus Ge_MIS --> &1 ', STRING(nTotBetr,'z,zzz,zz9.99-') )
-        + '</br>' + '</br>'.
-
-    REPEAT TRANSACTION ON ERROR UNDO, LEAVE:          
-        CREATE  ASMutation.
-        ASSIGN  
-            ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
-            ASMutation.MutArt        = 'MAIL'
-            ASMutation.Aktiv         = TRUE
-            ASMutation.cStatus       = ''
-            ASMutation.Datum         = TODAY
-            ASMutation.Firma         = cMandant
-            ASMutation.cFeld_1       = SUBSTITUTE('TO:&1;CC:&2', cMailToSage, 'wr@adprime.ch')
-            ASMutation.cFeld_2       = SUBSTITUTE('Ge_MIS - SAGE vom &1 um &2', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS') )
-            ASMutation.cFeld_3       = cBody
-            ASMutation.cKey_1        = ''
-            ASMutation.cKey_2        = ''.
-        RELEASE ASMutation.
-        LEAVE.
-    END.
-          
-    RUN 'SendMailStart.p'.
-    
-    RETURN TRUE.
-    
-END FUNCTION.
-    
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startSQLTransaction Procedure 
-FUNCTION startSQLTransaction RETURNS LOGICAL
-    ( /* parameter-definitions */ ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'BEGIN TRANSACTION'.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBeleg Procedure 
-FUNCTION updateBeleg RETURNS LOGICAL
-    ( ipTHandle AS HANDLE, ipArt AS INTEGER ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cSet  AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hFeld AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
-
-    cSet  = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld = ipTHandle:BUFFER-FIELD('OpId').
-    cFeld = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN 
-    DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [g.connect].[dbo].[Beleg] "
-            + cSet.
-    END.
-    IF ipArt = 0 THEN 
-    DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [g.connect].[dbo].[Beleg] "
-            + cSet
-            + " WHERE OpId = '"
-            + cFeld
-            + "' ".
-    END.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE(OUTPUT ODBC-NULL, "", 32)
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN 
-    DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBelegDetail Procedure 
-FUNCTION updateBelegDetail RETURNS LOGICAL
-    ( ipTHandle AS HANDLE, ipArt AS INTEGER ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cSet   AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE hFeld  AS HANDLE    NO-UNDO.
-    DEFINE VARIABLE cFaknr AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cIndex AS CHARACTER NO-UNDO.
-
-    cSet   = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld  = ipTHandle:BUFFER-FIELD('DocKey').
-    cFaknr = hFeld:BUFFER-VALUE(0).
-    hFeld  = ipTHandle:BUFFER-FIELD('DocLine').
-    cIndex = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN 
-    DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [g.connect].[dbo].[BelegDetail] "
-            + cSet.
-    END.
-    IF ipArt = 0 THEN 
-    DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [g.connect].[dbo].[BelegDetail] "
-            + cSet
-            + " WHERE DocKey = '"
-            + cFaknr
-            + "' "
-            + "AND  DocLine = '"
-            + cIndex
-            + "'".
-    END.
-
-    ASSIGN  
-        ObjCommand:CommandText = ODBC-QUERY
-        ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN 
-    DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-    ( ipMessage AS CHARACTER  ) :
-    /*------------------------------------------------------------------------------
-      Purpose:  
-        Notes:  
-    ------------------------------------------------------------------------------*/
-
-    DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
-
-    cString = SUBSTITUTE('&1 &2 -> &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), ipMessage).
-    OUTPUT STREAM LogStream TO VALUE(cTempName) APPEND.
-    PUT STREAM LogStream CONTROL cString CHR(10).
-    OUTPUT STREAM LogStream CLOSE.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 2117
GUI/SESAMSQL_SPEZ.p

@@ -1,2117 +0,0 @@
-&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 - ADM2
-&ANALYZE-RESUME
-{adecomm/appserv.i}
-&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 VAR ObjRecordSet    AS COM-HANDLE           NO-UNDO.
-DEF VAR ObjConnection   AS COM-HANDLE           NO-UNDO.
-DEF VAR ObjCommand      AS COM-HANDLE           NO-UNDO.
-DEF VAR ODBC-DSN        AS CHAR                 NO-UNDO.
-DEF VAR ODBC-SERVER     AS CHAR                 NO-UNDO.
-DEF VAR ODBC-USERID     AS CHAR                 NO-UNDO.
-DEF VAR ODBC-PASSWD     AS CHAR                 NO-UNDO.
-DEF VAR ODBC-QUERY      AS CHAR                 NO-UNDO.
-DEF VAR ODBC-STATUS     AS CHAR                 NO-UNDO.
-DEF VAR ODBC-RECCOUNT   AS INT                  NO-UNDO.
-DEF VAR ODBC-NULL       AS CHAR                 NO-UNDO.
-DEF VAR ODBC-CURSOR     AS INT                  NO-UNDO.
-
-DEF VAR fEnde           AS LOG                  NO-UNDO.
-DEF VAR cTempName       AS CHAR                 NO-UNDO.
-DEF VAR cTempDir        AS CHAR                 NO-UNDO.
-DEF VAR cJournal        AS CHAR                 NO-UNDO.
-DEF VAR WebString       AS CHAR                 NO-UNDO.
-
-DEF VAR AllesOK         AS LOG                  NO-UNDO.
-DEF VAR Sprcd           AS INT                  NO-UNDO.
-DEF VAR LVAdx           AS CHAR                 NO-UNDO EXTENT 15.
-DEF VAR LVAdy           AS CHAR                 NO-UNDO EXTENT 15.
-DEF VAR cOrt            AS CHAR                 NO-UNDO.
-DEF VAR Firma           AS CHAR                 NO-UNDO INIT '9999'.
-DEF VAR GVFirma         AS CHAR                 NO-UNDO INIT '9999'.
-DEF VAR ja              AS LOG                  NO-UNDO.
-DEF VAR CrLf            AS CHAR                 NO-UNDO.
-DEF VAR cMessage        AS CHAR                 NO-UNDO.
-
-DEF STREAM LogStream.
-DEF STREAM Logfile.
-
-DEF TEMP-TABLE tMwstBetr
-    FIELD Konto         AS CHAR
-    FIELD MwstCd        AS INT
-    FIELD MwstPfl       AS DEC  DECIMALS 2
-    FIELD MwstBet       AS DEC  DECIMALS 2
-    FIELD MwstAns       AS DEC  DECIMALS 2.
-
-DEF TEMP-TABLE tDebop   FIELD DocType   AS INT
-                        FIELD OpId      AS CHAR
-                        FIELD KndNr     AS INT
-                        FIELD Konto     AS CHAR
-                        FIELD OpText    AS CHAR
-                        FIELD OpDate    AS DATE
-                        FIELD ZabId     AS CHAR
-                        FIELD SortId    AS CHAR
-                        FIELD Firma     AS CHAR
-                        FIELD Zusatz1   AS CHAR
-                        FIELD Strasse   AS CHAR
-                        FIELD Plz       AS CHAR
-                        FIELD Ort       AS CHAR
-                        FIELD Telefon1  AS CHAR
-                        FIELD Telefon4  AS CHAR
-                        FIELD EsrNr     AS CHAR
-                        FIELD Sprache   AS CHAR
-                        FIELD iStatus   AS INT.
-/*
-DEF TEMP-TABLE TDebDet  FIELD DocKey    AS CHAR.
-*/
-DEF TEMP-TABLE TMwst    FIELD MwstTyp   AS CHAR
-                        FIELD MwstId    AS CHAR.
-
-DEF TEMP-TABLE TZaKo    FIELD ZabId     AS CHAR
-                        FIELD ZabId2    AS CHAR.
-
-DEF TEMP-TABLE TDetail  FIELD DocKey        AS INT
-                        FIELD DocLine       AS INT
-                        FIELD Konto         AS CHAR
-                        FIELD cText         AS CHAR
-                        FIELD MwstTyp       AS CHAR
-                        FIELD Betrag        AS DEC  DECIMALS 2
-                        FIELD BetragMwst    AS DEC  DECIMALS 2
-                        FIELD BetragFW      AS DEC  DECIMALS 2
-                        FIELD BuchTyp       AS CHAR
-                        FIELD Kostenstelle  AS CHAR
-                        FIELD cCode         AS CHAR
-                        FIELD iStatus       AS INT.
-
-DEF TEMP-TABLE TOpSaldo FIELD OpId          AS CHAR
-                        FIELD PkNr          AS INT
-                        FIELD Betrag        AS DEC
-                        FIELD BetragFW      AS DEC
-                        INDEX Kunde IS PRIMARY
-                              PkNr
-                        INDEX Faknr
-                              OpId.
-
-DEF TEMP-TABLE TBeleg       FIELD OpID          AS CHAR
-                            FIELD KndNr         AS INT
-                            FIELD DocKey        AS INT
-                            INDEX Faknr IS PRIMARY
-                                  OpID.
-
-DEF TEMP-TABLE TBelegDetail FIELD DocKey        AS INT
-                            FIELD DocLine       AS INT
-                            INDEX DokNr IS PRIMARY
-                                  DocKey.
-
-DEF TEMP-TABLE xDetail  LIKE TDetail .
-DEF TEMP-TABLE xOpSaldo LIKE TOpSaldo.
-
-/* _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
-
-
-/* ************************  Function Prototypes ********************** */
-
-&IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD cancelSQLTransaction Procedure 
-FUNCTION cancelSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CloseConnection Procedure 
-FUNCTION CloseConnection RETURNS LOGICAL
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD closeSQLTransaction Procedure 
-FUNCTION closeSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateConnection Procedure 
-FUNCTION CreateConnection RETURNS LOGICAL
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateSetDaten Procedure 
-FUNCTION CreateSetDaten RETURNS CHARACTER
-  ( iphBuffer AS HANDLE, ipArt AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDocKey Procedure 
-FUNCTION getDocKey RETURNS INTEGER
-  ( ipDocKey AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getODBCDaten Procedure 
-FUNCTION getODBCDaten RETURNS LOGICAL
-  ( iphBuffer AS HANDLE )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-ifMwst) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD ifMwst Procedure 
-FUNCTION ifMwst RETURNS LOGICAL
-  ( ipMwstId AS CHAR )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-ifZaKo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD ifZaKo Procedure 
-FUNCTION ifZaKo RETURNS LOGICAL
-  ( ipZabId AS CHAR )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBeleg Procedure 
-FUNCTION lesenBeleg RETURNS INTEGER
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBelegDetail Procedure 
-FUNCTION lesenBelegDetail RETURNS INTEGER
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenOpSaldo Procedure 
-FUNCTION lesenOpSaldo RETURNS INTEGER
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-MAKE_DATUM) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD MAKE_DATUM Procedure 
-FUNCTION MAKE_DATUM RETURNS DATE
-  ( ipDatum AS CHAR )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-setTimeStamp) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setTimeStamp Procedure 
-FUNCTION setTimeStamp RETURNS CHARACTER
-  ( ipDatum AS DATE )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startSQLTransaction Procedure 
-FUNCTION startSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBeleg Procedure 
-FUNCTION updateBeleg RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBelegDetail Procedure 
-FUNCTION updateBelegDetail RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateMwstMap) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateMwstMap Procedure 
-FUNCTION updateMwstMap RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateZabMap) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateZabMap Procedure 
-FUNCTION updateZabMap RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-  ( ipMessage AS CHAR  )  FORWARD.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-
-/* *********************** Procedure Settings ************************ */
-
-&ANALYZE-SUSPEND _PROCEDURE-SETTINGS
-/* Settings for THIS-PROCEDURE
-   Type: Procedure
-   Allow: 
-   Frames: 0
-   Add Fields to: Neither
-   Other Settings: CODE-ONLY COMPILE APPSERVER
- */
-&ANALYZE-RESUME _END-PROCEDURE-SETTINGS
-
-/* *************************  Create Window  ************************** */
-
-&ANALYZE-SUSPEND _CREATE-WINDOW
-/* DESIGN Window definition (used by the UIB) 
-  CREATE WINDOW Procedure ASSIGN
-         HEIGHT             = 10.86
-         WIDTH              = 52.6.
-/* END WINDOW DEFINITION */
-                                                                        */
-&ANALYZE-RESUME
-
- 
-
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure 
-
-
-/* ***************************  Main Block  *************************** */
-
-    cTempName = '\\GEMHG\LogFiles$\SAGE\SageSpezial.log'.
-    cJournal  = REPLACE(cTempName, '.log', '.csv').
-    
-    cMessage = 'Start Datentransfer Ge_MIS <-> SAGE '.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    ja = DYNAMIC-FUNCTION('CreateConnection':U) NO-ERROR.
-    IF NOT ja THEN QUIT.
-    
-    /*
-    RUN FUELLEN_MWST.
-    RUN FUELLEN_ZAKOND.
-    */
-/*     RUN FUELLEN_OP. */       /*  Für Abgleich ende Jahr gemacht  07.01.2019  */ 
-    RUN LESEN_OFFENESALDI.
-    /*
-    RUN REORG_DB.
-    */
-    DYNAMIC-FUNCTION('CloseConnection':U) NO-ERROR.
-
-    cMessage = 'Ende Datentransfer Ge_MIS <-> SAGE ' + CHR(10).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    QUIT.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-
-/* **********************  Internal Procedures  *********************** */
-
-&IF DEFINED(EXCLUDE-FUELLEN_MWST) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_MWST Procedure 
-PROCEDURE FUELLEN_MWST :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR hTMwst      AS HANDLE                   NO-UNDO.
-    DEF VAR xx          AS INT                      NO-UNDO.
-
-    EMPTY TEMP-TABLE TMwst.
-    hTMwst = BUFFER TMwst:HANDLE.
-
-    FOR EACH MWSTAns NO-LOCK
-                     WHERE MWSTAns.Datum <= TODAY
-                     BREAK BY MWSTAns.MWST_Cd
-                           BY MWSTAns.Datum:
-        IF NOT LAST-OF ( MWSTAns.MWST_Cd ) THEN NEXT.
-
-        FIND FIRST Wust USE-INDEX Wust-k2
-                        WHERE Wust.WuCd = MWSTAns.MWST_Cd NO-LOCK NO-ERROR.
-
-        CREATE  TMwst.
-        ASSIGN  TMwst.MwstTyp  = STRING(MWSTAns.MWST_Cd,'99')
-                TMwst.MwstId   = ''.
-    END.
-
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-
-    xx = 0.
-    FOR EACH TMwst:
-        ja = DYNAMIC-FUNCTION('ifMwst':U, INPUT TMwst.MwstId) NO-ERROR.
-        IF ja = ?    THEN NEXT.
-        IF ja = TRUE THEN NEXT.
-        /*
-        DYNAMIC-FUNCTION('updateMwstMap':U, INPUT hTMwst, INPUT 1) NO-ERROR.
-        */
-    END.
-
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_OP) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_OP Procedure 
-PROCEDURE FUELLEN_OP :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR htDebop     AS HANDLE                   NO-UNDO.
-    DEF VAR htDetail    AS HANDLE                   NO-UNDO.
-    DEF VAR xx          AS INT                      NO-UNDO.
-    DEF VAR cOrt        AS CHAR                     NO-UNDO.
-    DEF VAR dFakBetr    AS DEC  DECIMALS 2          NO-UNDO.
-    DEF VAR BuchBetr    AS DEC  DECIMALS 2          NO-UNDO.
-    DEF VAR Ansatz      AS DEC                      NO-UNDO.
-    DEF VAR Inkl        AS LOG                      NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR cString     AS CHAR                     NO-UNDO.
-    DEF VAR iDocKey     AS INT                      NO-UNDO.
-    DEF VAR cAdresse    AS CHAR                     NO-UNDO.
-    DEF VAR dMwst       AS DEC                      NO-UNDO.
-    DEF VAR lErst       AS LOG                      NO-UNDO.
-    DEF VAR lMwstAdd    AS LOG                      NO-UNDO.
-    DEF VAR nDiff       AS DEC  DECIMALS 2          NO-UNDO.
-    DEF VAR cExport     AS CHAR                     NO-UNDO.
-
-    EMPTY TEMP-TABLE tDebop  .
-    EMPTY TEMP-TABLE tDetail .
-    EMPTY TEMP-TABLE xDetail .
-    EMPTY TEMP-TABLE xOpSaldo.
-    htDebop  = BUFFER tDebop :HANDLE.
-    htDetail = BUFFER xDetail:HANDLE.
-    
-    CREATE xDetail.
-
-    FIND Steuer WHERE Steuer.Firma = '1000' NO-LOCK.
-
-    cMessage = ' Einlesen Daten aus SESAM gestartet'.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    xx = DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE('  Anzahl eingelesene verarbeitete Rechnungen aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE('  Anzahl eingelesene Belege aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = DYNAMIC-FUNCTION('lesenBelegDetail':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE(' Anzahl eingelesene Beleg-Details aus SESAM -> &1 ', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    cMessage = ' Einlesen Daten aus SESAM beendet'.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    cMessage = ' '.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    cExport = SUBSTITUTE('%1Beleg.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tBeleg:
-        EXPORT DELIMITER ';' tBeleg.
-    END.
-    OUTPUT CLOSE.
-
-    cExport = SUBSTITUTE('%1BelegDetail.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tBelegDetail:
-        EXPORT DELIMITER ';' tBelegDetail.
-    END.
-    OUTPUT CLOSE.
-
-    xx = 0.
-    FOR EACH Debop NO-LOCK
-            WHERE Debop.Firma    = '1000'
-            AND   Debop.Faknr   >= 30000
-            AND ((Debop.Fakbetr <> 0 AND
-                  Debop.Saldo   <> 0.0)
-             OR  (Debop.Fakbetr  = 0)) ,
-        FIRST Adresse NO-LOCK
-                WHERE Adresse.Firma = Debop.Firma
-                AND   Adresse.Knr   = Debop.Knr :
-
-        FIND FIRST tBeleg NO-LOCK
-                WHERE tBeleg.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>')) NO-ERROR.
-        IF AVAILABLE tBeleg THEN NEXT.
-
-        IF Debop.Fakbetr = 0 THEN DO:
-            dMwst = 0.
-            DO ii = 1 TO 10:
-                dMwst = dMwst + Debop.FakWpfl[ii].
-            END.
-            IF dMwst = 0 THEN NEXT.
-        END.
-                      
-        FIND Orte OF Adresse NO-LOCK NO-ERROR.
-        IF Adresse.Ort <> ''   THEN cOrt = Adresse.Ort.
-        ELSE IF AVAILABLE Orte THEN cOrt = Orte.Ort.
-        ELSE                        cOrt = '??????????'.
-        FIND Sprache OF Adresse NO-LOCK NO-ERROR.
-        IF Adresse.Firma1 <> '' THEN cAdresse = TRIM(Adresse.Firma1).
-        ELSE                         cAdresse = TRIM(Adresse.Name + ' ' + Adresse.Vorname).
-        cAdresse = TRIM(SUBSTRING(cAdresse,01,30)).
-
-        CREATE  tDebop.
-        ASSIGN  tDebop.DocTyp    = 0
-                tDebop.OpId      = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-                tDebop.KndNr     = Debop.Knr
-                tDebop.Konto     = Debop.Konto
-                tDebop.OpDate    = Debop.Fakdat
-                tDebop.ZabId     = STRING(Debop.Kond,'99')
-                tDebop.Firma     = cAdresse
-                tDebop.SortId    = TRIM(SUBSTRING(Adresse.Suchbe ,01,10))
-                tDebop.Zusatz1   = TRIM(SUBSTRING(Adresse.Zusatz1,01,30))
-                tDebop.Strasse   = TRIM(SUBSTRING(Adresse.Strasse,01,30))
-                tDebop.Plz       = TRIM(SUBSTRING(Adresse.Plz    ,01,06))
-                tDebop.Ort       = TRIM(SUBSTRING(cOrt           ,01,24))
-                tDebop.Telefon1  = TRIM(SUBSTRING(Adresse.Tel-1  ,01,20))
-                tDebop.Telefon4  = TRIM(SUBSTRING(Adresse.Tel-3  ,01,20))
-                tDebop.EsrNr     = ''
-                tDebop.Sprache   = (IF AVAILABLE Sprache THEN SUBSTRING(Sprache.Bez,01,01) ELSE 'D')
-                tDebop.iStatus   = 9.
-                .
-        IF tDebop.Firma = ''
-        THEN tDebop.Firma = TRIM(SUBSTRING((Adresse.NAME + ' ' + Adresse.Vorname),01,30)).
-
-        dFakBetr = Debop.FakBetr.
-        EMPTY TEMP-TABLE tMwstBetr.
-        FOR EACH Interf NO-LOCK
-                WHERE Interf.Firma    = Steuer.Fwc09
-                AND   Interf.TrNr1    = Debop.TrNr1 
-                AND   Interf.TrNr2    = Debop.TrNr2
-                AND   Interf.Herk    >= 50
-                AND   Interf.Herk    <= 59
-                AND   Interf.MWSt_Art = 0
-                      BREAK BY Interf.Firma
-                            BY Interf.TrNr1
-                            BY Interf.TrNr2
-                            BY Interf.Trnr :
-                                    
-            FIND FIRST tMwstBetr
-                    WHERE tMwstbetr.Konto  = Interf.Kto2
-                    AND   tMwstbetr.MwstCd = Interf.Mwst_Cd NO-ERROR.
-            IF NOT AVAILABLE tMwstBetr THEN DO:
-                CREATE  tMwstBetr.
-                ASSIGN  tMwstBetr.Konto   = Interf.Kto2
-                        tMwstBetr.MwstCd  = Interf.Mwst_Cd
-                        tMwstBetr.MwstAns = Debop.Fakwpro[Interf.Mwst_Cd].
-            END.
-            ASSIGN  tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + Interf.Betrag.
-            IF NOT LAST-OF ( Interf.TrNr2 ) THEN NEXT.
-            
-            BuchBetr = 0.
-            lMwstAdd = FALSE.
-            FOR EACH tMwstBetr
-                    BREAK BY tMwstBetr.MwstCd:
-                IF FIRST-OF ( tMwstBetr.MwstCd ) THEN BuchBetr = 0.
-                BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
-                IF NOT LAST-OF ( tMwstBetr.MwstCd ) THEN NEXT.
-                
-                ii = tMwstBetr.MwstCd.
-                IF ABS(Debop.FakWpfl[ii] - BuchBetr) < ABS(Debop.FakWpfl[ii] * 0.01) THEN DO.
-                    lMwstAdd = TRUE.
-                    LEAVE.
-                END.
-            END.
-
-            /*  lMwstAdd = TRUE --> Beim Betrag muss die Mwst dazugerechnet werden  */
-            /*  In der Schnittstelle werden nur Inklusiv-Beträge übermittelt        */
-            IF lMwstAdd THEN DO:
-                FOR EACH tMwstBetr :
-                    tMwstBetr.MwstPfl = tMwstBetr.MwstPfl * (100 + tMwstBetr.MwstAns) / 100.
-                END.
-            END.
-           
-            /*  Different zwischen Fakbetr und einzelnen Buchungen errechnen    */
-            /*  Differenz auf dem Konto mit dem grössten Betrag ausgleichen     */
-            Buchbetr = 0.
-            FOR EACH tMwstBetr:
-                tMwstBetr.MwstPfl = DECIMAL(STRING(tMwstBetr.MwstPfl,'999999999.99-')).
-                BuchBetr          = BuchBetr + tMwstBetr.MwstPfl.
-            END.
-            Buchbetr = DECIMAL(STRING(Buchbetr,'999999999.99-')).
-            nDiff    = dFakBetr - Buchbetr.
-            FOR FIRST tMwstBetr
-                    BY tMwstBetr.MwstPfl DESCENDING:
-                tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + nDiff.
-            END.
-
-            ii = 0.            
-            FOR EACH tMwstBetr
-                    BY tMwstBetr.Konto
-                    BY tMwstBetr.MwstCd:
-                ii = ii + 1.
-                CREATE  tDetail.
-                ASSIGN  tDetail.DocKey       = Debop.Faknr
-                        tDetail.DocLine      = ii
-                        tDetail.Konto        = tMwstBetr.Konto
-                        tDetail.cText        = ''
-                        tDetail.MwstTyp      = STRING(tMwstBetr.MWStCd,'99')
-                        tDetail.Betrag       = tMwstBetr.MwstPfl
-                        tDetail.BetragMwst   = 0
-                        tDetail.BetragFW     = 0
-                        tDetail.BuchTyp      = ''
-                        tDetail.Kostenstelle = ''
-                        tDetail.cCode        = ''
-                        tDetail.iStatus      = 9.
-            END.
-        END.
-        xx = xx + 1.
-    END.
-
-    cMessage = SUBSTITUTE(' Anzahl beruecksichtigte Rechnungen aus Ge_MIS -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    xx = 0.
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-    FOR EACH tDebop:
-        FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpID NO-ERROR.
-        IF AVAILABLE tBeleg THEN NEXT.
-        
-        ja = DYNAMIC-FUNCTION('updateBeleg':U, INPUT htDebop, INPUT 1) NO-ERROR.
-        tDebop.iStatus = (IF ja THEN 1 ELSE 0).
-        xx = xx + 1.
-        IF xx MOD 100 = 0 THEN DO:
-            DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-            cMessage = SUBSTITUTE(' -> bereits eingefuegte Belege -> &1', xx).
-            DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-            
-            ii = ETIME(TRUE).
-            DO WHILE ETIME < 1000:
-            END.
-
-            DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-        END.
-
-        FIND Debop NO-LOCK
-                WHERE Debop.Firma = '1000'
-                AND   Debop.Knr   = tDebop.KndNr
-                AND   Debop.Faknr = INTEGER(tDebop.OpId) NO-ERROR.
-        CREATE  tOpSaldo.
-        ASSIGN  tOpSaldo.OpId     = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-                tOpSaldo.PkNr     = Debop.Knr
-                tOpSaldo.Betrag   = Debop.Saldo
-                tOpSaldo.BetragFW = Debop.Saldo NO-ERROR.
-    END.
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE(' Anzahl eingefügte Belege -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    ii = ETIME(TRUE).
-    DO WHILE ETIME < 1000:
-    END.
-
-    xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE(' Anzahl eingelesene Belege aus SESAM nach Belegverbuchen -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-
-    xx = 0.
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-    FOR EACH tDetail:
-        FIND FIRST tBeleg WHERE tBeleg.OpId = TRIM(STRING(tDetail.DocKey,'>>>>>>>>')) NO-ERROR.
-        IF NOT AVAILABLE tBeleg THEN NEXT.
-        iDocKey = tBeleg.DocKey.
-        FIND FIRST tBelegDetail
-                WHERE tBelegDetail.DocKey  = iDocKey
-                AND   tBelegDetail.DocLine = tDetail.DocLine NO-ERROR.
-        IF AVAILABLE tBelegDetail THEN NEXT.
-        FIND FIRST xDetail.
-        BUFFER-COPY tDetail EXCEPT DocKey TO xDetail
-            ASSIGN  xDetail.DocKey = iDocKey.
-        /*
-        tDetail.DocKey = cDocKey.
-        IF tDetail.DocKey = ? THEN NEXT.
-        IF tDetail.DocKey = 0 THEN NEXT.
-        ja = DYNAMIC-FUNCTION('ifBelegDetail':U,
-                               INPUT tDetail.DocKey,
-                               INPUT tDetail.DocLine) NO-ERROR.
-        IF ja = ?    THEN NEXT.
-        IF ja = TRUE THEN NEXT.
-        */
-        DYNAMIC-FUNCTION('updateBelegDetail':U, INPUT htDetail, INPUT 1) NO-ERROR.
-        tDetail.iStatus = (IF ja THEN 1 ELSE 0).
-        xx = xx + 1.
-        IF xx MOD 100 = 0 THEN DO:
-            DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-            cMessage = SUBSTITUTE(' -> bereits eingefuegte BelegDetail -> &1', xx).
-            DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-            
-            ii = ETIME(TRUE).
-            DO WHILE ETIME < 500:
-            END.
-
-            DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-        END.
-    END.
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-
-    cMessage = SUBSTITUTE(' Anzahl eingefuegte BelegDetail -> &1', xx).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    /*
-    RUN loeschenDoppelteEintraege.
-    */
-    OUTPUT TO VALUE(cJournal) NO-MAP NO-CONVERT.
-    FOR EACH tDebop:
-        PUT CONTROL tDebop.OpId
-                    ';'
-                    tDebop.KndNr
-                    ';'
-                    tDebop.Firma
-                    ';'
-                    tDebop.Zusatz
-                    ';'
-                    tDebop.Ort
-                    ';'
-                    tDebop.iStatus
-                    ';'
-                    tDebop.Konto
-                    ';'.
-        lErst = TRUE.
-        FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpId.
-        FOR EACH tDetail WHERE tDetail.DocKey = INTEGER(tDebop.OpID):
-            IF NOT lErst THEN PUT CONTROL ';;;;;;;'.
-            PUT CONTROL tDetail.Konto
-                        ';'
-                        tDetail.cText
-                        ';'
-                        tDetail.MwstTyp
-                        ';'
-                        TRIM(STRING(tDetail.BetragMwst,'->>>>>>>>9.99'))
-                        ';'
-                        TRIM(STRING(tDetail.Betrag    ,'->>>>>>>>9.99'))
-                        ';'
-                        tDetail.BuchTyp
-                        ';'
-                        tDetail.iStatus
-                        CHR(10).
-            lErst = FALSE.
-        END.
-    END.
-    OUTPUT CLOSE.
-    
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-FUELLEN_ZAKOND) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_ZAKOND Procedure 
-PROCEDURE FUELLEN_ZAKOND :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR hTZaKo      AS HANDLE                   NO-UNDO.
-    DEF VAR xx          AS INT                      NO-UNDO.
-
-    EMPTY TEMP-TABLE TZaKo.
-    hTZaKo = BUFFER TZaKo:HANDLE.
-
-    FOR EACH Kondi NO-LOCK:
-        CREATE  TZaKo.
-        ASSIGN  TZaKo.ZabId   = STRING(Kondi.Kond,'99')
-                TZaKo.ZabId2  = ''.
-    END.
-
-    DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-
-    xx = 0.
-    FOR EACH TZaKo:
-        ja = DYNAMIC-FUNCTION('ifZaKo':U, INPUT TZaKo.ZabId) NO-ERROR.
-        IF ja = ?    THEN NEXT.
-        IF ja = TRUE THEN NEXT.
-        DYNAMIC-FUNCTION('updateZabMap':U, INPUT hTZaKo, INPUT 1) NO-ERROR.
-    END.
-
-    DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-LESEN_OFFENESALDI) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LESEN_OFFENESALDI Procedure 
-PROCEDURE LESEN_OFFENESALDI :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR Saldo       AS DEC                      NO-UNDO.
-    DEF VAR Diff        AS DEC                      NO-UNDO.
-    DEF VAR cExport     AS CHAR                     NO-UNDO.
-    
-    DEF BUFFER BDebst   FOR Debst.
-
-    
-    DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
-    
-    cExport = SUBSTITUTE('&1tOpSaldo.csv', cTempDir).
-    OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
-    FOR EACH tOpSaldo:
-        EXPORT DELIMITER ';' tOpSaldo.
-    END.
-    OUTPUT CLOSE.
-
-    FIND FIRST tOpSaldo NO-LOCK NO-ERROR.
-    IF NOT AVAILABLE tOpSaldo THEN RETURN.
-
-    FOR EACH Debst NO-LOCK:
-        Saldo = 0.
-        FOR EACH Debop USE-INDEX Debop-k1
-                WHERE Debop.Firma   = Debst.Firma
-                AND   Debop.Knr     = Debst.Knr
-                AND   Debop.Fakdat <= 12/31/2018:
-            FIND FIRST tOpSaldo NO-LOCK USE-INDEX Faknr
-                WHERE tOpSaldo.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
-                AND   tOpSaldo.PkNr = Debst.Knr NO-ERROR.
-            IF AVAILABLE tOpSaldo THEN Diff = Debop.Saldo - tOpSaldo.Betrag.
-            ELSE                       Diff = (IF Debop.Fakdat < (TODAY - 3) THEN Debop.Saldo ELSE 0).
-            IF Diff <> 0 THEN DO:
-                Debop.ZahBetr = Debop.ZahBetr + Diff.
-                Debop.Saldo   = Debop.Fakbetr - Debop.Zahbetr - Debop.Skonto.
-                Debop.Zahdat  = TODAY.
-            END.
-            Saldo = Saldo + Debop.Saldo.
-            IF Debop.Saldo  <> 0            THEN NEXT.
-            IF Debop.FakDat > (TODAY - 360) THEN NEXT.
-            /*
-            DELETE  Debop.
-            */
-        END.
-        IF Saldo = Debst.Saldo THEN NEXT.
-        FIND BDebst WHERE RECID(BDebst) = RECID(Debst)
-                    EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-        IF NOT AVAILABLE BDebst THEN NEXT.
-        BDebst.Saldo = Saldo.
-        RELEASE BDebst.
-    END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-loeschenDoppelteEintraege) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE loeschenDoppelteEintraege Procedure 
-PROCEDURE loeschenDoppelteEintraege :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    OUTPUT TO "C:\Temp\Loeschen.log" APPEND NO-MAP NO-CONVERT.
-
-    DEF VAR AnzRec  AS INT                      NO-UNDO.
-    DEF VAR cWhere  AS CHAR                     NO-UNDO.
-    
-    DYNAMIC-FUNCTION('lesenBeleg':U).
-
-    DO WHILE TRUE:
-        FOR EACH TBeleg NO-LOCK
-                BREAK BY TBeleg.OpID
-                      BY TBeleg.DocKey:
-            IF FIRST-OF ( TBeleg.OpID ) THEN NEXT.
-                                   
-            DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
-            
-            ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
-                       + "WHERE DocKey  = '" + STRING(TBeleg.DocKey)  + "' ".
-            PUT CONTROL ODBC-QUERY ' --> '.
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    ODBC-RECCOUNT          = ObjRecordSet:RecordCount
-                    NO-ERROR.
-            PUT CONTROL ODBC-NULL ' / ' ODBC-RECCOUNT CHR(10).
-
-            ODBC-QUERY = "DELETE FROM [Huber].[dbo].[Beleg] "
-                       + "WHERE OpId = '" + TBeleg.OpId + "' ".
-            PUT CONTROL ODBC-QUERY ' --> '.
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    ODBC-RECCOUNT          = ObjRecordSet:RecordCount
-                    NO-ERROR.
-            PUT CONTROL ODBC-NULL ' / ' ODBC-RECCOUNT CHR(10) CHR(10).
-            
-            DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
-        END.
-        LEAVE.
-    END.
-    
-    OUTPUT CLOSE.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-REORG_DB) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_DB Procedure 
-PROCEDURE REORG_DB :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR AnzRec  AS INT                      NO-UNDO.
-    DEF VAR cWhere  AS CHAR                     NO-UNDO.
-
-    AnzRec = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
-    
-    cMessage = SUBSTITUTE('REORG OP&1Anzahl gelesene Records = &2', CHR(10), AnzRec).
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    /*
-    DO WHILE TRUE:
-        IF AnzRec = ? THEN LEAVE.
-        IF AnzRec = 0 THEN LEAVE.
-        FOR EACH TBeleg NO-LOCK:
-            FIND Debop NO-LOCK USE-INDEX Debop-k1
-                    WHERE Debop.Firma = '1000'
-                    AND   Debop.Knr   = TBeleg.KndNr
-                    AND   Debop.Faknr = INTEGER(TBeleg.OpId) NO-ERROR.
-            IF AVAILABLE Debop THEN NEXT.
-
-            ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
-                       + "WHERE DocKey  = '" + STRING(TBeleg.DocKey)  + "' ".
-            PUT CONTROL ODBC-QUERY ' --> '.
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    NO-ERROR.
-            PUT CONTROL ODBC-NULL CHR(10) CHR(13).
-
-            ODBC-QUERY = "DELETE FROM [Huber].[dbo].[Beleg] "
-                       + "WHERE OpId = '" + TBeleg.OpId + "' ".
-            PUT CONTROL ODBC-QUERY ' --> '.
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    NO-ERROR.
-            PUT CONTROL ODBC-NULL CHR(10) CHR(13).
-        END.
-        LEAVE.
-    END.
-
-    AnzRec = DYNAMIC-FUNCTION('lesenBelegDetail':U) NO-ERROR.
-    PUT CONTROL 'REORG DETAIL' CHR(10) CHR(13)
-                'Anzahl gelesene Records = ' STRING(AnzRec) CHR(10) CHR(13).
-    DO WHILE TRUE:
-        IF AnzRec = ? THEN LEAVE.
-        IF AnzRec = 0 THEN LEAVE.
-        FOR EACH TBelegDetail NO-LOCK:
-            ODBC-QUERY = "SELECT [OpId] FROM [Huber].[dbo].[Beleg] "
-                       + "WHERE DocKey = '" + STRING(TBelegDetail.DocKey) + "' ".
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-            IF ODBC-RECCOUNT <> ?   AND
-               ODBC-RECCOUNT <> 0   THEN NEXT.
-
-            AnzRec = AnzRec + 1.
-            ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
-                       + "WHERE DocKey  = '" + STRING(TBelegDetail.DocKey)  + "' "
-                       + "AND   DocLine = '" + STRING(TBelegDetail.DocLine) + "' " .
-            PUT CONTROL ODBC-QUERY ' --> '.
-            ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-                    ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-                    NO-ERROR.
-            PUT CONTROL ODBC-NULL CHR(10) CHR(13).
-        END.
-        LEAVE.
-    END.
-    */
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-RUNDEN) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUNDEN Procedure 
-PROCEDURE RUNDEN :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-DEF INPUT        PARAMETER Rundcode     AS INT              NO-UNDO.
-DEF INPUT-OUTPUT PARAMETER Rundbetr     AS DEC  DECIMALS 4  NO-UNDO.
-
-DEF VAR VBetr       AS DEC  DECIMALS 4                      NO-UNDO.
-DEF VAR VOp         AS DEC              INIT 0.2            NO-UNDO.
-DEF VAR XPChar      AS CHAR                                 NO-UNDO.
-
-DO TRANSACTION:
-    VBetr = Rundbetr.
-
-    IF Rundcode = 1 THEN DO:
-        VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
-    END.
-    IF Rundcode = 2 THEN DO:
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-    END.
-    IF Rundcode = 3 THEN DO:
-        VBetr = VBetr + 0.0499.
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-    END.
-    IF Rundcode = 4 THEN DO:
-        VBetr = VBetr - 0.0500.
-            VBetr = ROUND((VBetr / 100), 3) * 100.
-    END.
-    IF Rundcode = 5 THEN DO:
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-    END.
-    IF Rundcode = 6 THEN DO:
-            VBetr = VBetr + 0.4999.
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-    END.
-    IF Rundcode = 7 THEN DO:
-            VBetr = VBetr - 0.5000.
-            VBetr = ROUND((VBetr / 100), 2) * 100.
-    END.
-    IF Rundcode = 8 THEN DO:
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-    END.
-    IF Rundcode = 9 THEN DO:
-            VBetr = VBetr + 4.9999.
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-    END.
-    IF Rundcode = 10 THEN DO:
-            VBetr = VBetr - 5.0000.
-            VBetr = ROUND((VBetr / 1000), 2) * 1000.
-    END.
-
-    IF Rundcode = 99 THEN DO:
-            XPChar = STRING(VBetr,"-99999999.999").
-            VBetr  = DECIMAL(SUBSTRING(XPChar,01,12)).
-        IF SUBSTRING(XPChar,13,01) > "4" THEN VBetr = VBetr + 0.01.
-    END.
-
-    Rundbetr = VBetr.
-
-END.
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-SEND_WEBREQUEST) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_WEBREQUEST Procedure 
-PROCEDURE SEND_WEBREQUEST :
-/*------------------------------------------------------------------------------
-  Purpose:     
-  Parameters:  <none>
-  Notes:       
-------------------------------------------------------------------------------*/
-
-    DEF VAR hWebserver  AS HANDLE               NO-UNDO.
-    DEF VAR cConn       AS CHAR                 NO-UNDO.
-    DEF VAR fio         AS LOG                  NO-UNDO.
-    DEF VAR cWebHost    AS CHAR                 NO-UNDO
-            INIT '192.168.99.10'.
-    DEF VAR cWebPort    AS CHAR                 NO-UNDO
-            INIT '8080'.
-    DEF VAR cWebHead    AS CHAR                 NO-UNDO
-            INIT 'webspeed/cgi'.
-    DEF VAR cWebPath    AS CHAR                 NO-UNDO
-            INIT 'cgiip.exe/WService=wsEShop/'.
-
-    DEF VAR vparam  AS CHAR                     NO-UNDO.
-    DEF VAR vURL    AS CHAR                     NO-UNDO.
-    DEF VAR Aufnr   AS INT                      NO-UNDO.
-    DEF VAR vBuff   AS MEMPTR                   NO-UNDO.
-    DEF VAR cc      AS INT                      NO-UNDO.
-    DEF VAR dd      AS INT                      NO-UNDO.
-    DEF VAR cURL    AS CHAR                     NO-UNDO.
-    DEF VAR iTime   AS INT                      NO-UNDO.
-    DEF VAR xTime   AS INT                      NO-UNDO.
-    
-    CrLf = CHR(10)+ CHR(13).
-    CREATE SOCKET hWebserver.
-    hWebserver:SET-READ-RESPONSE-PROCEDURE('lesenWebantwort').
-    cConn     = '-H ' + cWebHost + ' -S ' + cWebPort.
-    fio       = hWebserver:CONNECT(cConn) NO-ERROR.
-    IF NOT fio                          OR
-       hWebserver:CONNECTED() = FALSE   THEN DO:
-        MESSAGE 'Kein Verbindung zu Webserver' view-as alert-box.
-        hWebserver:DISCONNECT() NO-ERROR.
-        DELETE OBJECT hWebserver NO-ERROR.
-        RETURN.
-    END.
-    
-    cWebHead = cWebHost + ':' + cWebPort + '/' + cWebHead.
-    vParam = 'ipFrom=SESAM&ipTo=walter.riechsteiner@adprime.ch&ipCC=&ipBC=&ipSubject=SESAM-Meldung&ipBody=Anhang mit SESAM-Logfile&ipAttach='.
-    vURL   = 'http://' + cWebHead + '/' + cWebPath
-           + '/send_mail.p'.
-
-    WebString = ''.
-    vURL      = 'POST '
-              + vURL
-              + ' HTTP/1.0'
-              + CrLf
-              + 'Content-Type: application/x-www-form-urlencoded'
-              + CrLf
-              + 'Content-Length:'
-              + STRING(LENGTH(vParam))
-              + CrLf
-              + CrLf
-              + vParam
-              + CrLf.
-
-    SET-SIZE(vBuff)         = 0.
-    SET-SIZE(vBuff)         = LENGTH(vURL) + 1.
-    SET-BYTE-ORDER(vBuff)   = BIG-ENDIAN.
-    PUT-STRING(vBuff,1)     = vURL.
-    cURl = REPLACE(vURL, CHR(10), '->').
-    cURl = REPLACE(cURL, CHR(13), '').
-
-    iTime = ETIME(FALSE).
-    DO WHILE (ETIME - iTime) < 30000:
-        hWebserver:WRITE(vBuff, 1, LENGTH(vURL)) NO-ERROR.
-        IF ERROR-STATUS:ERROR THEN NEXT.
-
-        DO WHILE hWebserver:BYTES-WRITTEN < LENGTH(vURL):
-            xTime = ETIME(FALSE).
-            DO WHILE (ETIME - xTime) < 1000:
-            END.
-        END.
-
-        DO WHILE hWebserver:GET-BYTES-AVAILABLE() > 0:
-            xTime = ETIME(FALSE).
-            DO WHILE (ETIME(FALSE) - xTime) < 1000:
-            END.
-        END.
-        LEAVE.
-    END.
-
-    SET-SIZE(vBuff) = 0.
-
-    MESSAGE 'io'  view-as alert-box.
-    hWebserver:DISCONNECT() NO-ERROR.
-    DELETE OBJECT hWebserver NO-ERROR.
-/*
-http://192.168.99.10:8080/webspeed/cgi/cgiip.exe/WService=wsEShop/
-*/
-
-END PROCEDURE.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-/* ************************  Function Implementations ***************** */
-
-&IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION cancelSQLTransaction Procedure 
-FUNCTION cancelSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'ROLLBACK'.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CloseConnection Procedure 
-FUNCTION CloseConnection RETURNS LOGICAL
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    ObjConnection:Close NO-ERROR.
-
-    RELEASE OBJECT ObjConnection NO-ERROR.
-    RELEASE OBJECT ObjCommand    NO-ERROR.
-    RELEASE OBJECT ObjRecordSet  NO-ERROR.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION closeSQLTransaction Procedure 
-FUNCTION closeSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'COMMIT'.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateConnection Procedure 
-FUNCTION CreateConnection RETURNS LOGICAL
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cConnCommand    AS CHAR             NO-UNDO.
-    DEF VAR cDSN            AS CHAR             NO-UNDO.
-    DEF VAR cServer         AS CHAR             NO-UNDO.
-    DEF VAR ix              AS INT              NO-UNDO.
-    DEF VAR ii              AS INT              NO-UNDO.
-    DEF VAR cMessage        AS CHAR             NO-UNDO.
-
-    Create "ADODB.Connection"   ObjConnection NO-ERROR.
-    Create "ADODB.RecordSet"    ObjRecordSet  NO-ERROR.
-    Create "ADODB.Command"      ObjCommand    NO-ERROR.
-
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-                  KEY     'SQLServer'
-                  VALUE   cServer.
-    IF cServer = ?  THEN RETURN FALSE.
-    IF cServer = '' THEN RETURN FALSE.
-  
-    GET-KEY-VALUE SECTION 'Grundeinstellungen'
-                  KEY     'SQLDSN'
-                  VALUE   cDSN.
-    IF cDSN    = ?  THEN RETURN FALSE.
-    IF cDSN    = '' THEN RETURN FALSE.
-  
-    ASSIGN  ODBC-STATUS   = ''
-            ODBC-NULL     = ''
-            ODBC-DSN      = cDSN
-            ODBC-SERVER   = cServer
-            ODBC-USERID   = 'gebtools'
-            ODBC-PASSWD   = 'gebtools'
-            ODBC-QUERY    = ''.
-
-    cConnCommand = 'data source='
-                 + ODBC-DSN
-                 + ';server='
-                 + ODBC-SERVER
-                 .
-    ObjConnection:Open ( cConnCommand, ODBC-USERID, ODBC-PASSWD, 0 ) NO-ERROR.
-    If ( ERROR-STATUS:NUM-MESSAGES > 0 ) THEN DO:
-        ii = ERROR-STATUS:NUM-MESSAGES.
-        ODBC-STATUS = "Error: keine Verbindung zu Datenserver "
-                    + cConnCommand.
-        cMessage = ODBC-STATUS.
-        DO ix = 1 TO ii:
-            cMessage = cMessage
-                     + CHR(10)
-                     + ERROR-STATUS:GET-MESSAGE(ix).
-        END.
-        DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-        RETURN FALSE.
-    END.
-
-    ASSIGN  ObjCommand:ActiveConnection = ObjConnection
-            ObjCommand:CommandType       = 1 /* adCmdText       */
-            ObjConnection:CursorLocation = 3 /* adUseClient     */
-            ObjRecordSet:CursorType      = 3 /* adOpenStatic    */.
-
-    cMessage = 'Start SESAM SQL mit Connection ' + cConnCommand.
-    DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
-    
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateSetDaten Procedure 
-FUNCTION CreateSetDaten RETURNS CHARACTER
-  ( iphBuffer AS HANDLE, ipArt AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cSet        AS CHAR                     NO-UNDO.
-    DEF VAR ii          AS INT                      NO-UNDO.
-    DEF VAR hFeld       AS HANDLE                   NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR cInhalt     AS CHAR                     NO-UNDO.
-    DEF VAR cFelder     AS CHAR                     NO-UNDO.
-    DEF VAR cInhalte    AS CHAR                     NO-UNDO.
-    DEF VAR xFeld       AS CHAR                     NO-UNDO.
-    DEF VAR xInhalt     AS CHAR                     NO-UNDO.
-
-    cSet     = ''.
-    cFelder  = ''.
-    cInhalte = ''.
-    DO ii = 1 TO iphBuffer:NUM-FIELDS:
-        hFeld = iphBuffer:BUFFER-FIELD(ii).
-        IF hFeld:BUFFER-VALUE(0) = ? THEN NEXT.
-        cFeld = hFeld:NAME.
-        IF cFeld = 'cCode'   THEN cFeld = 'Code'. /*  ProgressSchlüsselFeld  */
-        IF cFeld = 'cText'   THEN cFeld = 'Text'. /*  ProgressSchlüsselFeld  */
-        IF cFeld = 'iStatus' THEN NEXT.           /*  Kein SQL-Feld          */
-        DO WHILE TRUE:
-            IF hFeld:BUFFER-VALUE(0) <> ?   AND
-               hFeld:BUFFER-VALUE(0) <> '?' THEN LEAVE.
-
-            CASE hFeld:DATA-TYPE:
-                WHEN 'INTEGER' THEN hFeld:BUFFER-VALUE(0) = '0'.
-                WHEN 'DECIMAL' THEN hFeld:BUFFER-VALUE(0) = '0.0'.
-                WHEN 'DATE'    THEN hFeld:BUFFER-VALUE(0) = ''.
-                WHEN 'LOGICAL' THEN hFeld:BUFFER-VALUE(0) = STRING(FALSE).
-                OTHERWISE hFeld:BUFFER-VALUE(0) = ''.
-            END CASE.
-
-            LEAVE.
-        END.
-
-        xFeld   = "[" + TRIM(cFeld) + "]".
-        xInhalt = TRIM(hFeld:BUFFER-VALUE(0)).
-        xInhalt = REPLACE(xInhalt, "'", '"').
-        xInhalt = "'" + xInhalt + "'".
-
-        cInhalte = cInhalte + "," + xInhalt.
-        cFelder  = cFelder  + "," + xFeld.
-    END.
-    cInhalte = SUBSTRING(cInhalte,02).
-    cFelder  = SUBSTRING(cFelder ,02).
-
-    CASE ipArt:
-        WHEN 1 THEN DO:
-            cSet = '('
-                 + cFelder
-                 + ') VALUES ('
-                 + cInhalte
-                 + ')'.
-        END.
-        WHEN 0 THEN DO:
-            cSet = 'SET '.
-            DO ii = 1 TO NUM-ENTRIES(cFelder, ','):
-                cSet = cSet + ENTRY(ii, cFelder, ',')
-                            + ' = '
-                            + ENTRY(ii, cInhalte, ',').
-                IF ii < NUM-ENTRIES(cFelder, ',') THEN cSet = cSet + ', '.
-            END.
-        END.
-    END CASE.
-
-    RETURN cSet.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getDocKey Procedure 
-FUNCTION getDocKey RETURNS INTEGER
-  ( ipDocKey AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR iDocKey     AS INT                      NO-UNDO.
-
-    iDocKey    = ipDocKey.
-    ODBC-QUERY = "SELECT [DocKey] FROM [Huber].[dbo].[Beleg] "
-               + "WHERE OpId = '" + STRING(ipDocKey,'999999') + "' ".
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ObjRecordSet:MoveFirst NO-ERROR.
-        iDocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
-        LEAVE.
-    END.
-
-    RETURN iDocKey.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName Procedure 
-FUNCTION getLogName RETURNS CHARACTER
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cPath       AS CHAR                     NO-UNDO.
-    
-    GET-KEY-VALUE SECTION 'GrundEinstellungen'
-                  KEY     'SESAM_SQL_LOG'
-                  VALUE   cPath.
-    IF cPath = '' OR
-       cPath = ?  THEN cPath = SESSION:TEMP-DIRECTORY.
-    IF SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND
-       SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'.
-    cPath = cPath
-          + 'SESAMSQL-'
-          + REPLACE(STRING(TODAY,'99.99.9999'), '.', '') + '.Log'.
-
-    RETURN cPath.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getODBCDaten Procedure 
-FUNCTION getODBCDaten RETURNS LOGICAL
-  ( iphBuffer AS HANDLE ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR ii      AS INT                      NO-UNDO.
-    DEF VAR hFeld   AS HANDLE                   NO-UNDO.
-    DEF VAR cFeld   AS CHAR                     NO-UNDO.
-
-    DO ii = 1 TO iphBuffer:NUM-FIELDS:
-        hFeld = iphBuffer:BUFFER-FIELD(ii).
-        cFeld = hFeld:NAME.
-        hFeld:BUFFER-VALUE(0) = ObjRecordSet:FIELDS(cFeld):VALUE NO-ERROR.
-    END.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-ifMwst) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION ifMwst Procedure 
-FUNCTION ifMwst RETURNS LOGICAL
-  ( ipMwstId AS CHAR ) :
-/*------------------------------------------------------------------------------
-    Purpose:  
-      Notes:  
-------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = "SELECT MwstId "
-               + "FROM [Huber].[dbo].[MwstMap] WHERE MwstId = '"
-               + ipMwstId
-               + "' ".
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, '', 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    IF ODBC-RECCOUNT = ? THEN ODBC-RECCOUNT = 0.
-    IF ODBC-RECCOUNT = 0 THEN RETURN FALSE.
-    ELSE                      RETURN TRUE .
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-ifZaKo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION ifZaKo Procedure 
-FUNCTION ifZaKo RETURNS LOGICAL
-  ( ipZabId AS CHAR ) :
-/*------------------------------------------------------------------------------
-    Purpose:  
-      Notes:  
-------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = "SELECT ZabId "
-               + "FROM [Huber].[dbo].[ZabMap] WHERE ZabId = '"
-               + ipZabId
-               + "' ".
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, '', 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    IF ODBC-RECCOUNT = ? THEN ODBC-RECCOUNT = 0.
-    IF ODBC-RECCOUNT = 0 THEN RETURN FALSE.
-    ELSE                      RETURN TRUE .
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBeleg Procedure 
-FUNCTION lesenBeleg RETURNS INTEGER
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE tBeleg.
-
-    ODBC-QUERY = 'SELECT [OpId],[KndNr],[DocKey] FROM [Huber].[dbo].[Beleg]'.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  tBeleg.
-            ASSIGN  tBeleg.Opid   = ObjRecordSet:FIELDS("OpId")  :VALUE
-                    tBeleg.KndNr  = ObjRecordSet:FIELDS("KndNr") :VALUE.
-                    tBeleg.DocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
-            ASSIGN  ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBelegDetail Procedure 
-FUNCTION lesenBelegDetail RETURNS INTEGER
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE TBelegDetail.
-
-    ODBC-QUERY = 'SELECT [DocKey],[DocLine] FROM [Huber].[dbo].[BelegDetail]'.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  TBelegDetail.
-            ASSIGN  TBelegDetail.DocKey  = ObjRecordSet:FIELDS("DocKey") :VALUE
-                    TBelegDetail.DocLine = ObjRecordSet:FIELDS("DocLine"):VALUE.
-            ASSIGN  ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenOpSaldo Procedure 
-FUNCTION lesenOpSaldo RETURNS INTEGER
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    EMPTY TEMP-TABLE TOpSaldo.
-    /*
-    FOR EACH xOpSaldo:
-        CREATE  tOpSaldo.
-        BUFFER-COPY xOpSaldo TO tOpSaldo.
-    END.
-    */
-    ODBC-QUERY = "SELECT * FROM [Huber].[dbo].[OpListe] WHERE OpId > '300000' ".
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
-            ODBC-RECCOUNT          = ObjRecordSet:RecordCount NO-ERROR.
-
-    DO WHILE TRUE:
-        IF ODBC-RECCOUNT = 0 THEN LEAVE.
-        IF ODBC-RECCOUNT = ? THEN LEAVE.
-
-        ODBC-CURSOR = 0.
-        ObjRecordSet:MoveFirst NO-ERROR.
-
-        DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
-            CREATE  TOpSaldo.
-            ASSIGN  TOpSaldo.Opid     = ObjRecordSet:FIELDS("OpId")    :VALUE
-                    TOpSaldo.PkNr     = ObjRecordSet:FIELDS("PkNr")    :VALUE
-                    TOpSaldo.Betrag   = ObjRecordSet:FIELDS("Betrag")  :VALUE
-                    TOpSaldo.BetragFW = ObjRecordSet:FIELDS("BetragFW"):VALUE.
-            ASSIGN  ODBC-CURSOR = ODBC-CURSOR + 1.
-            ObjRecordSet:MoveNext NO-ERROR.
-        END.
-        LEAVE.
-    END.
-
-    RETURN ODBC-RECCOUNT.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-MAKE_DATUM) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION MAKE_DATUM Procedure 
-FUNCTION MAKE_DATUM RETURNS DATE
-  ( ipDatum AS CHAR ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDatum      AS CHAR                     NO-UNDO.
-    DEF VAR dDatum      AS DATE                     NO-UNDO INIT ?.
-
-    cDatum = TRIM(SUBSTRING(ipDatum,01,10)).
-    IF cDatum = '' THEN cDatum = STRING(YEAR (TODAY),'9999')
-                               + '-'
-                               + STRING(MONTH(TODAY),'99')
-                               + '-'
-                               + STRING(DAY  (TODAY),'99').
-    dDatum = DATE(INTEGER(SUBSTRING(cDatum,06,02)),
-                  INTEGER(SUBSTRING(cDatum,09,02)),
-                  INTEGER(SUBSTRING(cDatum,01,04))) NO-ERROR.
-    IF dDatum = ? THEN dDatum = TODAY.
-    RETURN dDatum.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-setTimeStamp) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setTimeStamp Procedure 
-FUNCTION setTimeStamp RETURNS CHARACTER
-  ( ipDatum AS DATE ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cDate   AS CHAR                     NO-UNDO.
-
-    cDate = STRING(YEAR (TODAY),'9999')
-          + '-'
-          + STRING(MONTH(TODAY),'99')
-          + '-'
-          + STRING(DAY  (TODAY),'99')
-          + ' '
-          + STRING(TIME,'HH:MM:SS').
-    RETURN cDate.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startSQLTransaction Procedure 
-FUNCTION startSQLTransaction RETURNS LOGICAL
-  ( /* parameter-definitions */ ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    ODBC-QUERY = 'BEGIN TRANSACTION'.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBeleg Procedure 
-FUNCTION updateBeleg RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cSet    AS CHAR                     NO-UNDO.
-    DEF VAR hFeld   AS HANDLE                   NO-UNDO.
-    DEF VAR cFeld   AS CHAR                     NO-UNDO.
-
-    cSet  = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld = ipTHandle:BUFFER-FIELD('OpId').
-    cFeld = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [Huber].[dbo].[Beleg] "
-                   + cSet.
-    END.
-    IF ipArt = 0 THEN DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [Huber].[dbo].[Beleg] "
-                   + cSet
-                   + " WHERE OpId = '"
-                   + cFeld
-                   + "' ".
-    END.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE(OUTPUT ODBC-NULL, "", 32)
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBelegDetail Procedure 
-FUNCTION updateBelegDetail RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cSet    AS CHAR                     NO-UNDO.
-    DEF VAR hFeld   AS HANDLE                   NO-UNDO.
-    DEF VAR cFaknr  AS CHAR                     NO-UNDO.
-    DEF VAR cIndex  AS CHAR                     NO-UNDO.
-
-    cSet   = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld  = ipTHandle:BUFFER-FIELD('DocKey').
-    cFaknr = hFeld:BUFFER-VALUE(0).
-    hFeld  = ipTHandle:BUFFER-FIELD('DocLine').
-    cIndex = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [Huber].[dbo].[BelegDetail] "
-                   + cSet.
-    END.
-    IF ipArt = 0 THEN DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [Huber].[dbo].[BelegDetail] "
-                   + cSet
-                   + " WHERE DocKey = '"
-                   + cFaknr
-                   + "' "
-                   + "AND  DocLine = '"
-                   + cIndex
-                   + "'".
-    END.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateMwstMap) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateMwstMap Procedure 
-FUNCTION updateMwstMap RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cSet    AS CHAR                     NO-UNDO.
-    DEF VAR hFeld   AS HANDLE                   NO-UNDO.
-    DEF VAR cFeld   AS CHAR                     NO-UNDO.
-
-    cSet  = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld = ipTHandle:BUFFER-FIELD('MwstId').
-    cFeld = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [Huber].[dbo].[MwstMap] "
-                   + cSet.
-    END.
-    IF ipArt = 0 THEN DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [Huber].[dbo].[MwstMap] "
-                   + cSet
-                   + " WHERE MwstId = '"
-                   + cFeld
-                   + "'".
-    END.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-updateZabMap) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateZabMap Procedure 
-FUNCTION updateZabMap RETURNS LOGICAL
-  ( ipTHandle AS HANDLE, ipArt AS INT ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cSet    AS CHAR                     NO-UNDO.
-    DEF VAR hFeld   AS HANDLE                   NO-UNDO.
-    DEF VAR cFeld   AS CHAR                     NO-UNDO.
-
-    cSet  = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
-    hFeld = ipTHandle:BUFFER-FIELD('ZabId').
-    cFeld = hFeld:BUFFER-VALUE(0).
-
-    IF ipArt = 1 THEN DO:   /*  INSERT  */
-        ODBC-QUERY = "INSERT INTO [Huber].[dbo].[ZabMap] "
-                   + cSet.
-    END.
-    IF ipArt = 0 THEN DO:   /*  UPDATE  */
-        ODBC-QUERY = "UPDATE [Huber].[dbo].[ZabMap] "
-                   + cSet
-                   + " WHERE ZabId = '"
-                   + cFeld
-                   + "'".
-    END.
-
-    ASSIGN  ObjCommand:CommandText = ODBC-QUERY
-            ObjRecordSet           = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
-            NO-ERROR.
-
-    IF ODBC-NULL <> '1' THEN DO:
-        OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
-        PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
-        OUTPUT CLOSE.
-        RETURN FALSE.
-    END.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-
-&IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
-
-&ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure 
-FUNCTION writeLogFile RETURNS LOGICAL
-  ( ipMessage AS CHAR  ) :
-/*------------------------------------------------------------------------------
-  Purpose:  
-    Notes:  
-------------------------------------------------------------------------------*/
-
-    DEF VAR cString         AS CHAR                     NO-UNDO.
-
-    cString = SUBSTITUTE('&1 &2 -> &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), ipMessage).
-    OUTPUT STREAM LogStream TO VALUE(cTempName) APPEND.
-    PUT STREAM LogStream CONTROL cString CHR(10).
-    OUTPUT STREAM LogStream CLOSE.
-
-    RETURN TRUE.
-
-END FUNCTION.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-&ENDIF
-

+ 0 - 193
GUI/SendMailStart.p

@@ -1,193 +0,0 @@
-&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  ************************** */
-
-USING System.Net.*.
-USING OpenEdge.Core.*.
-
-USING System.Net.Mail.*.
-
-{ super/funktionen.i }
-{ incl/ttsendmail.i  }
-{ incl/properties.i  }
-
-DEFINE VARIABLE cMessage      AS CHARACTER NO-UNDO.
-DEFINE VARIABLE lRetVal       AS LOG       NO-UNDO.
-DEFINE VARIABLE cTO           AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cCC           AS CHARACTER NO-UNDO.
-DEFINE VARIABLE iAblauf       AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cFeld         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cWert         AS CHARACTER NO-UNDO.
-DEFINE VARIABLE ix            AS INTEGER   NO-UNDO.
-DEFINE VARIABLE iAnzMail      AS INTEGER   NO-UNDO.
-DEFINE VARIABLE cSendMailProg AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cProgramm     AS CHARACTER NO-UNDO.
-DEFINE VARIABLE cLogFile      AS CHARACTER NO-UNDO.
-
-/* _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  *************************** */
-
-DEFINE BUFFER bASMutation FOR ASMutation.
-
-iAnzMail      = 0.
-cSendMailProg = SEARCH ('sendsmtpmail.p').
-cProgramm     = DYNAMIC-FUNCTION ('makeProgname':U, THIS-PROCEDURE:HANDLE) NO-ERROR.
-cLogFile      = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
-IF cLogFile = ? THEN cLogFile = SESSION:TEMP-DIRECTORY.
-cLogFile      = cLogFile + cProgramm + '.log'.
-
-RUN VALUE(cSendMailProg) ( cProgramm, cLogFile, cSendMailProg ) NO-ERROR.
-
-FOR EACH bASMutation NO-LOCK
-    WHERE bASMutation.MutArt  = 'MAIL'
-    AND   bASMutation.Aktiv   = TRUE
-    AND   bASMutation.cStatus = '' :
-        
-    FIND ASMutation EXCLUSIVE-LOCK
-        WHERE RECID(ASMutation) = RECID(bASMutation) NO-WAIT NO-ERROR.
-    IF NOT AVAILABLE ASMutation THEN NEXT.
-        
-    ASSIGN  
-        ASMutation.cStatus = 'A'.
-    
-    ASSIGN  
-        cTo = ''
-        cCC = ''.
-
-    iAblauf = 0.
-    cFeld   = REPLACE(ASMutation.cFeld_1, ',', ';').
-    DO ix = 1 TO NUM-ENTRIES(cFeld, ';'):
-        cWert   = ENTRY(ix, cFeld, ';').
-        IF cWert BEGINS 'TO:' THEN ASSIGN cWert   = SUBSTRING(cWert,04)
-                iAblauf = 1.
-        IF cWert BEGINS 'CC:' THEN ASSIGN cWert   = SUBSTRING(cWert,04)
-                iAblauf = 2.
-        IF iAblauf = 0 THEN NEXT.
-        
-        CASE iAblauf:
-            WHEN 1 THEN 
-                cTO = cTO
-                    + (IF cTO = '' THEN '' ELSE ';')
-                    + cWert.
-            WHEN 2 THEN 
-                cCC = cCC
-                    + (IF cCC = '' THEN '' ELSE ';')
-                    + cWert.
-        END CASE.
-    END.
-    /*  ----------------------------------  */
-    /*  Für test an eine Feste Mailadresse  */
-    /*  ----------------------------------  */
-    /* MESSAGE cTO SKIP cCC                                         */
-    /*     VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.                */
-    /*     cTO = 'wr@adprime.ch;wariru@hotmail.ch'.                 */
-    /*     cCC = 'walter.riechsteiner@gmail.com;wariru@hotmail.ch'. */
-    EMPTY TEMP-TABLE ttsendmail.
-    CREATE  ttSendMail.
-    ASSIGN  
-        ttsendmail.cFrom         = cMailFromFreigabe
-        ttsendmail.cTo           = cTO
-        ttsendmail.cCC           = cCC
-        ttsendmail.cSubject      = ASMutation.cFeld_2
-        ttsendmail.cBody         = ASMutation.cFeld_3
-        ttsendmail.cMailServer   = cMailServer
-        ttsendmail.cMailPort     = cMailPort
-        ttsendmail.cMailKonto    = cMailKonto
-        ttsendmail.cMailPassw    = cMailPassw
-        ttsendmail.cDomaine      = cMailDomaine
-        ttsendmail.lAuth         = lMailAuth
-        ttSendMail.lSSLEnabled   = lSSLEnabled
-        ttSendMail.cAttachedName = ASMutation.cKey_2
-        ttSendMail.cAttachedFile = ASMutation.cKey_2.
-            
-    RUN VALUE(cSendMailProg) ( httSendMail, OUTPUT cMessage, OUTPUT lRetVal ).
-    
-    IF NOT lRetVal THEN 
-    DO:
-        MESSAGE 'Mailversand gescheitert wegen ' SKIP
-            cMessage
-            VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
-        ASSIGN  
-            ASMutation.cStatus = ''
-            ASMutation.Aktiv   = TRUE.
-        NEXT.
-    END.
-    
-    ASSIGN  
-        ASMutation.cStatus = 'E'
-        ASMutation.Aktiv   = FALSE.
-            
-    iAnzMail = iAnzMail + 1.
-    
-    PAUSE 0.25 NO-MESSAGE.
-    IF iAnzMail < 5 THEN NEXT.
-    PAUSE 5 NO-MESSAGE.
-    iAnzMail = 0.
-END.
-
-/* _UIB-CODE-BLOCK-END */
-&ANALYZE-RESUME
-
-

+ 0 - 1
GUI/TRIGGERS/t-RuestSav-delete.p

@@ -1 +0,0 @@
-TRIGGER PROCEDURE FOR DELETE OF RuestSav.

+ 0 - 171
GUI/TRIGGERS/t-adresse-write.p

@@ -1,171 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF Adresse
-    NEW BUFFER NAdresse
-    OLD BUFFER OAdresse.
-
-    DEF VAR cDiff       AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR hBuffer     AS HANDLE                   NO-UNDO.
-    DEF VAR hFeld1      AS HANDLE                   NO-UNDO.
-    DEF VAR kk          AS INT                      NO-UNDO.
-    DEF VAR cWort       AS CHAR                     NO-UNDO.
-    DEF VAR iArt        AS INT                      NO-UNDO.
-
-    hBuffer = BUFFER NAdresse:HANDLE.
-    /* entfernen von Sonderzeichen */
-    DO kk = 1 TO hBuffer:NUM-FIELDS:
-        IF hBuffer:BUFFER-FIELD(kk):DATA-TYPE <> "CHARACTER" THEN NEXT.
-        IF hBuffer:BUFFER-FIELD(kk):NAME BEGINS  "Bem"       THEN NEXT. /*  Bemerkungsfeld kann/darf cr/lf enthalten */
-        IF hBuffer:BUFFER-FIELD(kk):EXTENT > 0 THEN NEXT.
-    
-        IF INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10)) = 0 AND
-           INDEX(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13)) = 0 THEN NEXT.
-    
-        hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE =
-             REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(10), '').
-        hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE =
-             REPLACE(hBuffer:BUFFER-FIELD(kk):BUFFER-VALUE, CHR(13), '').
-    END.
-    
-    BUFFER-COMPARE  NAdresse
-            EXCEPT  BriefAnr
-                    AdrArt
-                    Anschrift
-                    ErfDat
-                    ErfSb
-                    MutDat
-                    MutSb
-                    Anzeig
-                    Anzeig_br
-                    Cd01 Cd02 Cd03 Cd04 Cd05 Cd06 Cd07 Cd08
-                    Cd09 Cd10 Cd11 Cd12 Cd13 Cd14 Cd15
-                    Funktion
-                    AnschrFix
-                    WortIndex
-            TO      OAdresse
-            SAVE RESULT IN cDiff NO-ERROR.
-    IF cDiff = ?  THEN cDiff = ''.
-    IF cDiff = '' THEN RETURN.
-
-    ASSIGN  cWort             = ''
-            NAdresse.WortIndex = ''.
-    DO kk = 1 TO hBuffer:NUM-FIELDS:
-        hFeld1 = hBuffer:BUFFER-FIELD(kk).
-        IF hFeld1:EXTENT > 0                  THEN NEXT.
-        IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-        IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-        cFeld = hFeld1:NAME.
-        IF cFeld BEGINS 'Erf'                 THEN NEXT.
-        IF cFeld BEGINS 'Mut'                 THEN NEXT.
-        IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-        IF cFeld BEGINS 'Anschr'              THEN NEXT.
-        IF cFeld BEGINS 'Word'                THEN NEXT.
-        IF cFeld BEGINS 'Brief'               THEN NEXT.
-        IF cFeld BEGINS 'Cd'                  THEN NEXT.
-        IF cFeld BEGINS 'Wort'                THEN NEXT.
-        IF cFeld BEGINS 'Bem'                 THEN NEXT.
-        IF cFeld = 'Firma'                    THEN NEXT.
-        iArt = 0.
-        IF cFeld BEGINS 'Tel' THEN iArt = 1.
-        IF cFeld BEGINS 'Nat' THEN iArt = 1.
-        RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-    END.
-    hFeld1 = hBuffer:BUFFER-FIELD('Knr').
-    RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ).
-
-    FOR EACH Ansprech NO-LOCK
-            WHERE Ansprech.Firma = NAdresse.Firma
-            AND   Ansprech.Knr   = NAdresse.Knr :
-        hBuffer = BUFFER Ansprech:HANDLE.
-        DO kk = 1 TO hBuffer:NUM-FIELDS:
-            hFeld1 = hBuffer:BUFFER-FIELD(kk).
-            IF hFeld1:EXTENT > 0                  THEN NEXT.
-            IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-            IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-            cFeld = hFeld1:NAME.
-            IF cFeld BEGINS 'Erf'                 THEN NEXT.
-            IF cFeld BEGINS 'Mut'                 THEN NEXT.
-            IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-            IF cFeld BEGINS 'Anschr'              THEN NEXT.
-            IF cFeld BEGINS 'Word'                THEN NEXT.
-            IF cFeld BEGINS 'Brief'               THEN NEXT.
-            IF cFeld BEGINS 'Cd'                  THEN NEXT.
-            IF cFeld BEGINS 'Wort'                THEN NEXT.
-            IF cFeld BEGINS 'Bem'                 THEN NEXT.
-            IF cFeld = 'Firma'                    THEN NEXT.
-
-            iArt = 0.
-            IF cFeld BEGINS 'Tel' THEN iArt = 1.
-            IF cFeld BEGINS 'Nat' THEN iArt = 1.
-            RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-        END.
-    END.
-    
-    FOR EACH Steuer NO-LOCK
-            WHERE Steuer.Firma   < '9999'
-            AND   Steuer.AdFirma = NAdresse.Firma:
-        IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1
-                            WHERE Debst.Firma = Steuer.Firma
-                            AND   Debst.Knr   = NAdresse.Knr
-                            AND   Debst.Aktiv)
-        THEN DO:
-            RUN BEREINIGEN ( 0, 'XDEBSTX' ).
-        END.
-        IF CAN-FIND ( Liefst NO-LOCK USE-INDEX Liefst-k1
-                             WHERE Liefst.Firma = Steuer.Firma
-                             AND   Liefst.Knr   = NAdresse.Knr
-                             AND   Liefst.Aktiv)
-        THEN DO:
-            RUN BEREINIGEN ( 0, 'XLIEFSTX' ).
-        END.
-    END.
-    
-    NAdresse.WortIndex = cWort.
-    
-    RETURN.
-
-PROCEDURE BEREINIGEN:
-
-    DEF INPUT PARAMETER ipArt    AS INT             NO-UNDO.
-    DEF INPUT PARAMETER ipString AS CHAR            NO-UNDO.
-
-    DEF VAR wString     AS CHAR                     NO-UNDO.
-    DEF VAR xString     AS CHAR                     NO-UNDO.
-    DEF VAR yy          AS INT                      NO-UNDO.
-
-    IF ipString = '' THEN RETURN.
-
-    wString = ipString.
-
-    IF ipArt = 1 THEN DO:
-        wString = REPLACE(wString, ' ', '').
-        wString = REPLACE(wString, '.', '').
-        wString = REPLACE(wString, '/', '').
-        wString = REPLACE(wString, '-', '').
-    END.
-
-    wString = REPLACE(wString, '*' , '' ).
-    wString = REPLACE(wString, '&' , ' ').
-    wString = REPLACE(wString, '+' , '' ).
-    wString = REPLACE(wString, '(' , '' ).
-    wString = REPLACE(wString, ')' , '' ).
-    wString = REPLACE(wString, '!' , '' ).
-    wString = REPLACE(wString, '|' , '' ).
-    wString = REPLACE(wString, '^' , '' ).
-    wString = REPLACE(wString, ';' , '' ).
-    wString = REPLACE(wString, "'" , '' ).
-    wString = REPLACE(wString, ',' , '' ).
-    wString = REPLACE(wString, '  ', ' ').
-    wString = REPLACE(wString, '-' , ' ').
-    wString = TRIM(wString).
-
-    IF wString = '' THEN RETURN.
-    
-    DO yy = 1 TO NUM-ENTRIES(wString, ' '):
-        xString = ENTRY(yy, wString, ' ').
-        IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
-        cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-                      + xString.
-    END.
-
-END PROCEDURE.
-

+ 0 - 121
GUI/TRIGGERS/t-ansprech-delete.p

@@ -1,121 +0,0 @@
-TRIGGER PROCEDURE FOR DELETE OF Ansprech.
-
-    DEF VAR cDiff       AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR hBuffer     AS HANDLE                   NO-UNDO.
-    DEF VAR hFeld1      AS HANDLE                   NO-UNDO.
-    DEF VAR kk          AS INT                      NO-UNDO.
-    DEF VAR cWort       AS CHAR                     NO-UNDO.
-    DEF VAR iArt        AS INT                      NO-UNDO.
-
-    DEF BUFFER bAnsprech    FOR Ansprech.
-    
-    DEF TEMP-TABLE tAnsprech    LIKE Ansprech.
-
-    DISABLE TRIGGERS FOR LOAD OF Adresse.    
-    
-    FIND Adresse
-            WHERE Adresse.Firma = Ansprech.Firma
-            AND   Adresse.Knr   = Ansprech.Knr.
-
-    ASSIGN  hBuffer = BUFFER Adresse:HANDLE
-            cWort             = ''
-            Adresse.WortIndex = ''.
-    DO kk = 1 TO hBuffer:NUM-FIELDS:
-        hFeld1 = hBuffer:BUFFER-FIELD(kk).
-        IF hFeld1:EXTENT > 0                  THEN NEXT.
-        IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-        IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-        cFeld = hFeld1:NAME.
-        IF cFeld BEGINS 'Erf'                 THEN NEXT.
-        IF cFeld BEGINS 'Mut'                 THEN NEXT.
-        IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-        IF cFeld BEGINS 'Anschr'              THEN NEXT.
-        IF cFeld BEGINS 'Word'                THEN NEXT.
-        IF cFeld BEGINS 'Brief'               THEN NEXT.
-        IF cFeld BEGINS 'Cd'                  THEN NEXT.
-        IF cFeld BEGINS 'Wort'                THEN NEXT.
-        
-        iArt = 0.
-        IF cFeld BEGINS 'Tel' THEN iArt = 1.
-        IF cFeld BEGINS 'Nat' THEN iArt = 1.
-        RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-    END.
-    hFeld1 = hBuffer:BUFFER-FIELD('Knr').
-    RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ).
-
-    EMPTY TEMP-TABLE tAnsprech.
-
-    FOR EACH bAnsprech NO-LOCK
-            WHERE bAnsprech.Firma = Ansprech.Firma
-            AND   bAnsprech.Knr   = Ansprech.Knr
-            AND   bAnsprech.Ind  <> Ansprech.Ind:
-        CREATE  tAnsprech.
-        BUFFER-COPY bAnsprech to tAnsprech.
-    END.
-    hBuffer = TEMP-TABLE tAnsprech:DEFAULT-BUFFER-HANDLE.
-    FOR EACH tAnsprech:
-        DO kk = 1 TO hBuffer:NUM-FIELDS:
-            hFeld1 = hBuffer:BUFFER-FIELD(kk).
-            IF hFeld1:EXTENT > 0                  THEN NEXT.
-            IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-            IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-            cFeld = hFeld1:NAME.
-            IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-            IF cFeld BEGINS 'Anschr'              THEN NEXT.
-            IF cFeld BEGINS 'Word'                THEN NEXT.
-            IF cFeld BEGINS 'Brief'               THEN NEXT.
-            IF cFeld BEGINS 'Cd'                  THEN NEXT.
-            IF cFeld BEGINS 'Wort'                THEN NEXT.
-            
-            iArt = 0.
-            IF cFeld BEGINS 'Tel' THEN iArt = 1.
-            IF cFeld BEGINS 'Nat' THEN iArt = 1.
-            RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-        END.
-    END.
-    Adresse.WortIndex = cWort.
-    
-    RETURN.
-
-PROCEDURE BEREINIGEN:
-
-    DEF INPUT PARAMETER ipArt    AS INT             NO-UNDO.
-    DEF INPUT PARAMETER ipString AS CHAR            NO-UNDO.
-
-    DEF VAR wString     AS CHAR                     NO-UNDO.
-    DEF VAR yy          AS INT                      NO-UNDO.
-
-    IF ipString = '' THEN RETURN.
-
-    wString = ipString.
-
-    IF ipArt = 1 THEN DO:
-        wString = REPLACE(wString, ' ', '').
-        wString = REPLACE(wString, '.', '').
-        wString = REPLACE(wString, '/', '').
-        wString = REPLACE(wString, '-', '').
-    END.
-
-    wString = REPLACE(wString, '*' , '' ).
-    wString = REPLACE(wString, '&' , ' ').
-    wString = REPLACE(wString, '+' , '' ).
-    wString = REPLACE(wString, '(' , '' ).
-    wString = REPLACE(wString, ')' , '' ).
-    wString = REPLACE(wString, '!' , '' ).
-    wString = REPLACE(wString, '|' , '' ).
-    wString = REPLACE(wString, '^' , '' ).
-    wString = REPLACE(wString, ';' , '' ).
-    wString = REPLACE(wString, "'" , '' ).
-    wString = REPLACE(wString, ',' , '' ).
-    wString = REPLACE(wString, '  ', ' ').
-    wString = TRIM(wString).
-
-    IF wString = '' THEN RETURN.
-    
-    IF LOOKUP(wString, cWort, ' ') > 0 THEN NEXT.
-    cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-                  + wString.
-
-END PROCEDURE.
-

+ 0 - 156
GUI/TRIGGERS/t-ansprech-write.p

@@ -1,156 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF Ansprech
-    NEW BUFFER NAnsprech
-    OLD BUFFER OAnsprech.
-
-    DEF VAR cDiff       AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR hBuffer     AS HANDLE                   NO-UNDO.
-    DEF VAR hFeld1      AS HANDLE                   NO-UNDO.
-    DEF VAR kk          AS INT                      NO-UNDO.
-    DEF VAR cWort       AS CHAR                     NO-UNDO.
-    DEF VAR iArt        AS INT                      NO-UNDO.
-    
-    DEF TEMP-TABLE tAnsprech    LIKE Ansprech.
-
-    BUFFER-COMPARE  NAnsprech
-            EXCEPT  BriefAnr
-                    AdrArt
-                    Anschrift
-                    Anzeig
-                    Anzeig_br
-                    Cd01 Cd02 Cd03 Cd04 Cd05 Cd06 Cd07 Cd08
-                    Cd09 Cd10 Cd11 Cd12 Cd13 Cd14 Cd15
-            TO      OAnsprech
-            SAVE RESULT IN cDiff NO-ERROR.
-    IF cDiff = ?  THEN cDiff = ''.
-    IF cDiff = '' THEN RETURN.
-    
-    DISABLE TRIGGERS FOR LOAD OF Adresse.    
-    
-    FIND Adresse
-            WHERE Adresse.Firma = NAnsprech.Firma
-            AND   Adresse.Knr   = NAnsprech.Knr.
-
-    ASSIGN  hBuffer = BUFFER Adresse:HANDLE
-            cWort             = ''
-            Adresse.WortIndex = ''.
-    DO kk = 1 TO hBuffer:NUM-FIELDS:
-        hFeld1 = hBuffer:BUFFER-FIELD(kk).
-        IF hFeld1:EXTENT > 0                  THEN NEXT.
-        IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-        IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-        cFeld = hFeld1:NAME.
-        IF cFeld BEGINS 'Erf'                 THEN NEXT.
-        IF cFeld BEGINS 'Mut'                 THEN NEXT.
-        IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-        IF cFeld BEGINS 'Anschr'              THEN NEXT.
-        IF cFeld BEGINS 'Word'                THEN NEXT.
-        IF cFeld BEGINS 'Brief'               THEN NEXT.
-        IF cFeld BEGINS 'Cd'                  THEN NEXT.
-        IF cFeld BEGINS 'Wort'                THEN NEXT.
-        
-        iArt = 0.
-        IF cFeld BEGINS 'Tel' THEN iArt = 1.
-        IF cFeld BEGINS 'Nat' THEN iArt = 1.
-        RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-    END.
-    hFeld1 = hBuffer:BUFFER-FIELD('Knr').
-    RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ).
-
-    EMPTY TEMP-TABLE tAnsprech.
-    CREATE  tAnsprech.
-    BUFFER-COPY NAnsprech to tAnsprech.
-
-    FOR EACH Ansprech NO-LOCK
-            WHERE Ansprech.Firma = NAnsprech.Firma
-            AND   Ansprech.Knr   = NAnsprech.Knr
-            AND   Ansprech.Ind  <> NAnsprech.Ind:
-        CREATE  tAnsprech.
-        BUFFER-COPY Ansprech to tAnsprech.
-    END.
-    hBuffer = TEMP-TABLE tAnsprech:DEFAULT-BUFFER-HANDLE.
-    FOR EACH tAnsprech:
-        DO kk = 1 TO hBuffer:NUM-FIELDS:
-            hFeld1 = hBuffer:BUFFER-FIELD(kk).
-            IF hFeld1:EXTENT > 0                  THEN NEXT.
-            IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT.
-            IF hFeld1:BUFFER-VALUE(0) = ?         THEN hFeld1:BUFFER-VALUE(0) = ''.
-            cFeld = hFeld1:NAME.
-            IF cFeld BEGINS 'Erf'                 THEN NEXT.
-            IF cFeld BEGINS 'Mut'                 THEN NEXT.
-            IF cFeld BEGINS 'Anzeig'              THEN NEXT.
-            IF cFeld BEGINS 'Anschr'              THEN NEXT.
-            IF cFeld BEGINS 'Word'                THEN NEXT.
-            IF cFeld BEGINS 'Brief'               THEN NEXT.
-            IF cFeld BEGINS 'Cd'                  THEN NEXT.
-            IF cFeld BEGINS 'Wort'                THEN NEXT.
-            
-            iArt = 0.
-            IF cFeld BEGINS 'Tel' THEN iArt = 1.
-            IF cFeld BEGINS 'Nat' THEN iArt = 1.
-            RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ).
-        END.
-    END.
-    
-    FOR EACH Steuer NO-LOCK
-            WHERE Steuer.Firma   < '9999'
-            AND   Steuer.AdFirma = Adresse.Firma:
-        IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1
-                            WHERE Debst.Firma = Steuer.Firma
-                            AND   Debst.Knr   = Adresse.Knr
-                            AND   Debst.Aktiv)
-        THEN DO:
-            RUN BEREINIGEN ( 0, 'XDEBSTX' ).
-        END.
-        IF CAN-FIND ( Liefst NO-LOCK USE-INDEX Liefst-k1
-                             WHERE Liefst.Firma = Steuer.Firma
-                             AND   Liefst.Knr   = Adresse.Knr
-                             AND   Liefst.Aktiv)
-        THEN DO:
-            RUN BEREINIGEN ( 0, 'XLIEFSTX' ).
-        END.
-    END.
-    Adresse.WortIndex = cWort.
-    RETURN.
-
-PROCEDURE BEREINIGEN:
-
-    DEF INPUT PARAMETER ipArt    AS INT             NO-UNDO.
-    DEF INPUT PARAMETER ipString AS CHAR            NO-UNDO.
-
-    DEF VAR wString     AS CHAR                     NO-UNDO.
-    DEF VAR yy          AS INT                      NO-UNDO.
-
-    IF ipString = '' THEN RETURN.
-
-    wString = ipString.
-
-    IF ipArt = 1 THEN DO:
-        wString = REPLACE(wString, ' ', '').
-        wString = REPLACE(wString, '.', '').
-        wString = REPLACE(wString, '/', '').
-        wString = REPLACE(wString, '-', '').
-    END.
-
-    wString = REPLACE(wString, '*' , '' ).
-    wString = REPLACE(wString, '&' , ' ').
-    wString = REPLACE(wString, '+' , '' ).
-    wString = REPLACE(wString, '(' , '' ).
-    wString = REPLACE(wString, ')' , '' ).
-    wString = REPLACE(wString, '!' , '' ).
-    wString = REPLACE(wString, '|' , '' ).
-    wString = REPLACE(wString, '^' , '' ).
-    wString = REPLACE(wString, ';' , '' ).
-    wString = REPLACE(wString, "'" , '' ).
-    wString = REPLACE(wString, ',' , '' ).
-    wString = REPLACE(wString, '  ', ' ').
-    wString = TRIM(wString).
-
-    IF wString = '' THEN RETURN.
-    
-    IF LOOKUP(wString, cWort, ' ') > 0 THEN NEXT.
-    cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-                  + wString.
-
-END PROCEDURE.
-

+ 0 - 113
GUI/TRIGGERS/t-artbez-write.p

@@ -1,113 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF Artbez
-    NEW BUFFER NArtbez
-    OLD BUFFER OArtbez.
-
-    DEF VAR cDiff       AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR kk          AS INT                      NO-UNDO.
-    DEF VAR kx          AS INT                      NO-UNDO.
-    DEF VAR cWort       AS CHAR                     NO-UNDO.
-
-    DISABLE TRIGGERS FOR LOAD OF Artst.
-    DISABLE TRIGGERS FOR LOAD OF ArtLief.
- 
-    BUFFER-COMPARE NArtbez EXCEPT WortIndex
-                                  Zustext_Druck
-                                  Bez2_Druck
-                   TO OArtbez
-                   SAVE RESULT IN cDiff.
-    IF cDiff = '' THEN RETURN.
-
-    cWort = ''.
-    RUN BEREINIGEN ( 0, NArtbez.Bez1 ).
-    RUN BEREINIGEN ( 0, NArtbez.Bez2 ).
-    DO kk = 1 TO 10:
-        cFeld = NArtbez.Zustext[kk].
-        IF cFeld = '' THEN NEXT.
-        RUN BEREINIGEN ( 0, cFeld ).
-    END.
-    
-    FIND Artst NO-LOCK OF NArtbez NO-ERROR.
-    IF AVAILABLE Artst THEN DO:
-        RUN BEREINIGEN ( 0, Artst.Suchbe ).
-        RUN BEREINIGEN ( 0, Artst.Strichcode ).
-        RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ).
-        IF Artst.Inhalt > 0 THEN RUN BEREINIGEN ( 0, 'Inhalt=' + TRIM(STRING(Artst.Inhalt,'>>>>>9')) ).
-        IF Artst.Jahr   > 0 THEN RUN BEREINIGEN ( 0, 'Jahr=' + TRIM(STRING(Artst.Jahr  ,'>>>>>9')) ).
-        IF Artst.FremdNr <> '' THEN DO:
-            RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')).
-            RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))).
-        END.
-        FIND KGebinde NO-LOCK
-                WHERE KGebinde.Firma  = Artst.Firma
-                AND   KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
-        IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
-    END.
-        
-    FOR EACH ArtLief NO-LOCK
-            WHERE ArtLief.Firma  = NArtbez.Firma
-            AND   ArtLief.Artnr  = NArtbez.Artnr
-            AND   ArtLief.Inhalt = NArtbez.Inhalt
-            AND   ArtLief.Jahr   = NArtbez.Jahr :
-        RUN BEREINIGEN ( 0, ArtLief.S_Artnr         ).
-        RUN BEREINIGEN ( 0, ArtLief.Strichcode_VGeb ).
-        RUN BEREINIGEN ( 0, ArtLief.Strichcode_KGeb ).
-        /*
-        RUN BEREINIGEN ( 0, ArtLief.S_Bez1  ).
-        RUN BEREINIGEN ( 0, ArtLief.S_Bez2  ).
-        */
-        cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
-        RUN BEREINIGEN ( 0, cFeld  ).
-    END.
-    
-    NArtbez.WortIndex = cWort.
-    RELEASE KGebinde.
-    RELEASE Artst.
-    RELEASE ArtLief.
-    RETURN.
-
-PROCEDURE BEREINIGEN:
-
-    DEF INPUT PARAMETER ipArt    AS INT             NO-UNDO.
-    DEF INPUT PARAMETER ipString AS CHAR            NO-UNDO.
-
-    DEF VAR wString     AS CHAR                     NO-UNDO.
-    DEF VAR xString     AS CHAR                     NO-UNDO.
-    DEF VAR yy          AS INT                      NO-UNDO.
-
-    IF ipString = '' THEN RETURN.
-
-    wString = ipString.
-    
-    IF ipArt = 1 THEN DO:
-        wString = REPLACE(wString, ' ', '').
-        wString = REPLACE(wString, '.', '').
-        wString = REPLACE(wString, '/', '').
-        wString = REPLACE(wString, '-', '').
-    END.
-
-    wString = REPLACE(wString, '*' , '' ).
-    wString = REPLACE(wString, '&' , ' ').
-    wString = REPLACE(wString, '+' , '' ).
-    wString = REPLACE(wString, '(' , '' ).
-    wString = REPLACE(wString, ')' , '' ).
-    wString = REPLACE(wString, '!' , '' ).
-    wString = REPLACE(wString, '|' , '' ).
-    wString = REPLACE(wString, '^' , '' ).
-    wString = REPLACE(wString, ';' , '' ).
-    wString = REPLACE(wString, "'" , '' ).
-    wString = REPLACE(wString, ',' , '' ).
-    wString = REPLACE(wString, '  ', ' ').
-    wString = REPLACE(wString, '-' , ' ').
-    wString = TRIM(wString).
-
-    IF wString = '' THEN RETURN.
-
-    DO yy = 1 TO NUM-ENTRIES(wString, ' '):
-        xString = ENTRY(yy, wString, ' ').
-        IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
-        cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-                      + xString.
-    END.
-
-END PROCEDURE.

+ 0 - 18
GUI/TRIGGERS/t-artlager-delete.p

@@ -1,18 +0,0 @@
-TRIGGER PROCEDURE FOR DELETE OF ArtLager.
-
-    DISABLE TRIGGERS FOR LOAD OF Artst.
- 
-    FIND Artst
-            WHERE Artst.Firma  = ArtLager.Firma
-            AND   Artst.Artnr  = ArtLager.Artnr
-            AND   Artst.Inhalt = ArtLager.Inhalt
-            AND   Artst.Jahr   = ArtLager.Jahr NO-ERROR.
-    IF NOT AVAILABLE Artst THEN RETURN.
-    IF NOT Artst.Lager     THEN RETURN.
-    ASSIGN  Artst.Bestand      = Artst.Bestand      - ArtLager.Bestand
-            Artst.Reserviert   = Artst.Reserviert   - ArtLager.Reserviert
-            Artst.Bestellt     = Artst.Bestellt     - ArtLager.Bestellt
-            Artst.Mind_Bestand = Artst.Mind_Bestand - ArtLager.Mind_Bestand
-            Artst.Soll_Bestand = Artst.Soll_Bestand - ArtLager.Soll_Bestand
-            .
-    RELEASE Artst.

+ 0 - 47
GUI/TRIGGERS/t-artlager-write.p

@@ -1,47 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF ArtLager
-    NEW BUFFER NArtLager
-    OLD BUFFER OArtLager.
-
-    DEF VAR cDiff       AS CHAR                     NO-UNDO.
-    DEF VAR cFeld       AS CHAR                     NO-UNDO.
-    DEF VAR kk          AS INT                      NO-UNDO.
-    DEF VAR kx          AS INT                      NO-UNDO.
-    DEF VAR cWort       AS CHAR                     NO-UNDO.
-    
-    DISABLE TRIGGERS FOR LOAD OF Artst.
- 
-    BUFFER-COMPARE NArtLager USING Bestand  Reserviert
-                                   Bestellt Mind_Bestand Soll_Bestand
-                   TO OArtLager
-                   SAVE RESULT IN cDiff.
-    IF cDiff = '' THEN RETURN.
-    
-    FIND Artst
-            WHERE Artst.Firma  = NArtLager.Firma
-            AND   Artst.Artnr  = NArtLager.Artnr
-            AND   Artst.Inhalt = NArtLager.Inhalt
-            AND   Artst.Jahr   = NArtLager.Jahr NO-ERROR.
-    IF NOT AVAILABLE Artst THEN RETURN.
-    IF NOT Artst.Lager     THEN RETURN.
-    ASSIGN  Artst.Bestand      = NArtLager.Bestand
-            Artst.Reserviert   = NArtLager.Reserviert
-            Artst.Bestellt     = NArtLager.Bestellt
-            Artst.Mind_Bestand = NArtLager.Mind_Bestand
-            Artst.Soll_Bestand = NArtLager.Soll_Bestand
-            .
-    FOR EACH ArtLager NO-LOCK
-            WHERE ArtLager.Firma  = NArtLager.Firma
-            AND   ArtLager.Artnr  = NArtLager.Artnr
-            AND   ArtLager.Inhalt = NArtLager.Inhalt
-            AND   ArtLager.Jahr   = NArtLager.Jahr
-            AND   ArtLager.Lager <> NArtLager.Lager:
-        ASSIGN  Artst.Bestand      = Artst.Bestand      + ArtLager.Bestand
-                Artst.Reserviert   = Artst.Reserviert   + ArtLager.Reserviert
-                Artst.Bestellt     = Artst.Bestellt     + ArtLager.Bestellt
-                Artst.Mind_Bestand = Artst.Mind_Bestand + ArtLager.Mind_Bestand
-                Artst.Soll_Bestand = Artst.Soll_Bestand + ArtLager.Soll_Bestand
-                .
-    END.
-    
-    RELEASE Artst.
- 

+ 0 - 196
GUI/TRIGGERS/t-artlief-write.p

@@ -1,196 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF ArtLief
-    NEW BUFFER NArtLief
-    OLD BUFFER OArtLief.
-    
-DEF VAR cDiff AS CHAR NO-UNDO.
-DEF VAR cFeld AS CHAR NO-UNDO.
-DEF VAR kk    AS INT  NO-UNDO.
-DEF VAR kx    AS INT  NO-UNDO.
-DEF VAR cWort AS CHAR NO-UNDO.
-    
-DEFINE BUFFER bBesze   FOR Besze    .
-DEFINE BUFFER bArtst   FOR Artst    .
-DEFINE BUFFER bArtLief FOR ArtLief  .
-    
-DISABLE TRIGGERS FOR LOAD OF Artbez .
-DISABLE TRIGGERS FOR LOAD OF Artst  .
- 
-IF  NArtLief.S_Artnr <> OArtLief.S_Artnr AND
-    NArtLief.S_Artnr <> ''               THEN 
-DO:
-    FOR EACH Besze NO-LOCK 
-        WHERE Besze.Firma    = NArtLief.Firma
-        AND   Besze.Artnr    = NArtLief.Artnr
-        AND   Besze.Inhalt   = NArtLief.Inhalt
-        AND   Besze.Jahr     = NArtLief.Jahr
-        AND   Besze.Best_Sta < 4
-        AND   Besze.S_Artnr <> NArtLief.S_Artnr,
-        
-        
-        FIRST Besko NO-LOCK 
-        WHERE Besko.Firma = Besze.Firma
-        AND   Besko.Besnr = Besze.Besnr
-        AND   Besko.Knr   = NArtLief.Knr :
-                
-        FIND bBesze EXCLUSIVE-LOCK WHERE RECID(bBesze) = RECID(Besze) NO-WAIT NO-ERROR.
-        IF NOT AVAILABLE bBesze THEN NEXT.
-        bBesze.S_Artnr = NArtLief.S_Artnr.
-        RELEASE bBesze.
-    END.
-END.
-               
-    
-BUFFER-COMPARE NArtLief USING S_Artnr S_Bez1 S_Bez2 S_Preis S_Preis_Frw Strichcode_GGeb Strichcode_VGeb Strichcode_KGeb
-    Min_GGebinde Min_VGebinde Min_KGebinde
-    TO OArtLief
-    SAVE RESULT IN cDiff.
-IF cDiff = '' THEN RETURN.
-
-cWort = ''.
-
-RUN BEREINIGEN ( 0, NArtLief.Strichcode_KGeb ).
-RUN BEREINIGEN ( 0, NArtLief.Strichcode_VGeb ).
-
-FOR EACH bArtLief NO-LOCK   
-    WHERE bArtLief.Firma  = NArtLief.Firma
-    AND   bArtLief.Artnr  = NArtLief.Artnr
-    AND   bArtLief.Inhalt = NArtLief.Inhalt
-    AND   bArtLief.Jahr   = NArtLief.Jahr
-    AND   bArtLief.Knr   <> NArtLief.Knr:
-
-    IF  bArtLief.Min_GGebinde    = NArtLief.Min_GGebinde    AND
-        bArtLief.Min_VGebinde    = NArtLief.Min_VGebinde    AND
-        bArtLief.Min_KGebinde    = NArtLief.Min_KGebinde    AND 
-        bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb AND 
-        bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN NEXT.
-    FIND CURRENT bArtLief EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-    IF ERROR-STATUS:ERROR THEN NEXT.
-    
-    ASSIGN
-        bArtLief.Min_GGebinde    = (IF OArtLief.Min_GGebinde = NArtLief.Min_GGebinde       THEN bArtLief.Min_GGebinde    ELSE NArtLief.Min_GGebinde)
-        bArtLief.Min_VGebinde    = (IF OArtLief.Min_VGebinde = NArtLief.Min_VGebinde       THEN bArtLief.Min_VGebinde    ELSE NArtLief.Min_VGebinde)
-        bArtLief.Min_KGebinde    = (IF OArtLief.Min_KGebinde = NArtLief.Min_KGebinde       THEN bArtLief.Min_KGebinde    ELSE NArtLief.Min_KGebinde)
-        bArtLief.Strichcode_VGeb = (IF OArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb THEN bArtLief.Strichcode_VGeb ELSE NArtLief.Strichcode_VGeb) 
-        bArtLief.Strichcode_KGeb = (IF OArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN bArtLief.Strichcode_KGeb ELSE NArtLief.Strichcode_KGeb).
-        
-    IF bArtLief.Strichcode_KGeb = '' AND NArtLief.Strichcode_KGeb <> '' THEN bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb. 
-    IF bArtLief.Strichcode_VGeb = '' AND NArtLief.Strichcode_VGeb <> '' THEN bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb.
-     
-    RELEASE bArtLief.
-END.
-
-FIND Artbez USE-INDEX Artbez-k1
-    WHERE Artbez.Firma  = NArtLief.Firma
-    AND   Artbez.Artnr  = NArtLief.Artnr
-    AND   Artbez.Inhalt = NArtLief.Inhalt
-    AND   Artbez.Jahr   = NArtLief.Jahr
-    AND   Artbez.Sprcd  = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-IF NOT AVAILABLE Artbez THEN RETURN.
-    
-RUN BEREINIGEN ( 0, Artbez.Bez1 ).
-RUN BEREINIGEN ( 0, Artbez.Bez2 ).
-DO kk = 1 TO 10:
-    cFeld = Artbez.Zustext[kk].
-    IF cFeld = '' THEN NEXT.
-    RUN BEREINIGEN ( 0, cFeld ).
-END.
-    
-FIND Artst NO-LOCK OF NArtLief NO-ERROR.
-IF AVAILABLE Artst THEN 
-DO:
-    RUN BEREINIGEN ( 0, Artst.Suchbe ).
-    RUN BEREINIGEN ( 0, Artst.Strichcode ).
-    RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ).
-    IF Artst.FremdNr <> '' THEN 
-    DO:
-        RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')).
-        RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))).
-    END.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = Artst.Firma
-        AND   KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
-    IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
-    IF  NArtLief.Strichcode_KGeb <> ''                       AND
-        Artst.Strichcode         <> NArtLief.Strichcode_KGeb THEN 
-    DO:
-        FIND bArtst EXCLUSIVE-LOCK WHERE RECID(bArtst) = RECID(Artst) NO-WAIT NO-ERROR.
-        IF AVAILABLE bArtst THEN bArtst.Strichcode = NArtLief.Strichcode_KGeb.
-        RELEASE bArtst.
-    END.   
-END.
-    
-RUN BEREINIGEN ( 0, NArtLief.S_Artnr ).
-RUN BEREINIGEN ( 0, NArtLief.S_Bez1  ).
-RUN BEREINIGEN ( 0, NArtLief.S_Bez2  ).
-cFeld = 'XLIEFSTX' + STRING(NArtLief.Knr,'999999').
-RUN BEREINIGEN ( 0, cFeld  ).
-    
-FOR EACH ArtLief NO-LOCK
-    WHERE ArtLief.Firma  = NArtLief.Firma
-    AND   ArtLief.Artnr  = NArtLief.Artnr
-    AND   ArtLief.Inhalt = NArtLief.Inhalt
-    AND   ArtLief.Jahr   = NArtLief.Jahr
-    AND   ArtLief.Knr   <> NArtLief.Knr :
-    RUN BEREINIGEN ( 0, ArtLief.S_Artnr ).
-    /*
-    RUN BEREINIGEN ( 0, ArtLief.S_Bez1  ).
-    RUN BEREINIGEN ( 0, ArtLief.S_Bez2  ).
-    */
-    cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
-    RUN BEREINIGEN ( 0, cFeld  ).
-END.
-    
-Artbez.WortIndex  = TRIM(cWort).
-RELEASE Artbez.
-RELEASE Artst.
-RELEASE ArtLief.
- 
-RETURN.
-
-
-PROCEDURE BEREINIGEN:
-
-    DEF INPUT PARAMETER ipArt    AS INT             NO-UNDO.
-    DEF INPUT PARAMETER ipString AS CHAR            NO-UNDO.
-
-    DEF VAR wString AS CHAR NO-UNDO.
-    DEF VAR xString AS CHAR NO-UNDO.
-    DEF VAR yy      AS INT  NO-UNDO.
-
-    IF ipString = '' THEN RETURN.
-
-    wString = ipString.
-
-    IF ipArt = 1 THEN 
-    DO:
-        wString = REPLACE(wString, ' ', '').
-        wString = REPLACE(wString, '.', '').
-        wString = REPLACE(wString, '/', '').
-        wString = REPLACE(wString, '-', '').
-    END.
-
-    wString = REPLACE(wString, '*' , '' ).
-    wString = REPLACE(wString, '&' , ' ').
-    wString = REPLACE(wString, '+' , '' ).
-    wString = REPLACE(wString, '(' , '' ).
-    wString = REPLACE(wString, ')' , '' ).
-    wString = REPLACE(wString, '!' , '' ).
-    wString = REPLACE(wString, '|' , '' ).
-    wString = REPLACE(wString, '^' , '' ).
-    wString = REPLACE(wString, ';' , '' ).
-    wString = REPLACE(wString, "'" , '' ).
-    wString = REPLACE(wString, ',' , '' ).
-    wString = REPLACE(wString, '  ', ' ').
-    wString = REPLACE(wString, '-' , ' ').
-    wString = TRIM(wString).
-
-    IF wString = '' THEN RETURN.
-    DO yy = 1 TO NUM-ENTRIES(wString, ' '):
-        xString = ENTRY(yy, wString, ' ').
-        IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
-        cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-            + xString.
-    END.
-
-END PROCEDURE.
-

+ 0 - 135
GUI/TRIGGERS/t-artst-write.p

@@ -1,135 +0,0 @@
-TRIGGER PROCEDURE FOR WRITE OF Artst
-    NEW BUFFER NArtst
-    OLD BUFFER OArtst.
-
-    DEFINE VARIABLE cDiff AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
-    DEFINE VARIABLE kk    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE kx    AS INTEGER   NO-UNDO.
-    DEFINE VARIABLE cWort AS CHARACTER NO-UNDO.
-    
-    DISABLE TRIGGERS FOR LOAD OF Artbez.
-    DISABLE TRIGGERS FOR LOAD OF ArtLief.
-     
-    IF NArtst.Suchbe = '' THEN NArtst.Suchbe = ENTRY(1, NArtst.Bez, ' ').
-        
-    BUFFER-COMPARE NArtst USING Artnr Inhalt Jahr Bez Herst Suchbe FremdNr
-        Strichcode KGeb_Cd VGeb_Cd
-        TO OArtst
-        SAVE RESULT IN cDiff.
-    IF cDiff = '' THEN RETURN.
-    
-    cWort = ''.
-    FIND Artbez USE-INDEX Artbez-k1
-        WHERE Artbez.Firma  = NArtst.Firma
-        AND   Artbez.Artnr  = NArtst.Artnr
-        AND   Artbez.Inhalt = NArtst.Inhalt
-        AND   Artbez.Jahr   = NArtst.Jahr
-        AND   Artbez.Sprcd  = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
-    IF NOT AVAILABLE Artbez THEN RETURN.
-        
-    RUN BEREINIGEN ( 0, Artbez.Bez1 ).
-    RUN BEREINIGEN ( 0, Artbez.Bez2 ).
-    DO kk = 1 TO 10:
-        cFeld = Artbez.Zustext[kk].
-        IF cFeld = '' THEN NEXT.
-        RUN BEREINIGEN ( 0, cFeld ).
-    END.
-        
-    RUN BEREINIGEN ( 0, NArtst.Suchbe ).
-    RUN BEREINIGEN ( 0, NArtst.Strichcode ).
-    RUN BEREINIGEN ( 0, TRIM(STRING(NArtst.Artnr,'>>>>>9')) ).
-    IF NArtst.Inhalt > 0 THEN RUN BEREINIGEN ( 0, 'Inhalt=' + TRIM(STRING(NArtst.Inhalt,'>>>>>9')) ).
-    IF NArtst.Jahr   > 0 THEN RUN BEREINIGEN ( 0, 'Jahr='   + TRIM(STRING(NArtst.Jahr  ,'>>>>>9')) ).
-    IF NArtst.FremdNr <> '' THEN 
-    DO:
-        RUN BEREINIGEN ( 0, STRING(NArtst.FremdNr,'XXXXXX XXXX XXXX')).
-        RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(NArtst.FremdNr,01,06)),'>>>>>9'))).
-    END.
-    FIND KGebinde NO-LOCK
-        WHERE KGebinde.Firma  = NArtst.Firma
-        AND   KGebinde.Geb_Cd = NArtst.KGeb_Cd NO-ERROR.
-    IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ).
-        
-    FOR EACH ArtLief NO-LOCK USE-INDEX ArtLief-k1
-        WHERE ArtLief.Firma  = NArtst.Firma
-        AND   ArtLief.Artnr  = NArtst.Artnr
-        AND   ArtLief.Inhalt = NArtst.Inhalt
-        AND   ArtLief.Jahr   = NArtst.Jahr :
-        RUN BEREINIGEN ( 0, ArtLief.S_Artnr         ).
-        RUN BEREINIGEN ( 0, ArtLief.Strichcode_VGeb ).
-        RUN BEREINIGEN ( 0, ArtLief.Strichcode_KGeb ).
-        /*
-        RUN BEREINIGEN ( 0, ArtLief.S_Bez1  ).
-        RUN BEREINIGEN ( 0, ArtLief.S_Bez2  ).
-        */
-        cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999').
-        RUN BEREINIGEN ( 0, cFeld  ).
-    END.
-    
-    CREATE  ASMutation.
-    ASSIGN  ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
-            ASMutation.MutArt        = 'YBMARTIKEL'
-            ASMutation.Firma         = NArtst.Firma
-            ASMutation.Aktiv         = TRUE 
-            ASMutation.Datum         = TODAY 
-            ASMutation.cStatus       = ''
-            ASMutation.iKey_1        = NArtst.Artnr
-            ASMutation.iKey_2        = NArtst.Inhalt
-            ASMutation.iKey_3        = NArtst.Jahr
-            .
-        
-    Artbez.WortIndex  = TRIM(cWort).
-    RELEASE KGebinde    .
-    RELEASE Artbez      .
-    RELEASE ArtLief     .
-    RELEASE ASMutation  .
-     
-    RETURN.
-    
-    
-    PROCEDURE BEREINIGEN:
-    
-        DEFINE INPUT PARAMETER ipArt    AS INTEGER             NO-UNDO.
-        DEFINE INPUT PARAMETER ipString AS CHARACTER            NO-UNDO.
-    
-        DEFINE VARIABLE wString AS CHARACTER NO-UNDO.
-        DEFINE VARIABLE xString AS CHARACTER NO-UNDO.
-        DEFINE VARIABLE yy      AS INTEGER   NO-UNDO.
-    
-        IF ipString = '' THEN RETURN.
-    
-        wString = ipString.
-    
-        IF ipArt = 1 THEN 
-        DO:
-            wString = REPLACE(wString, ' ', '').
-            wString = REPLACE(wString, '.', '').
-            wString = REPLACE(wString, '/', '').
-            wString = REPLACE(wString, '-', '').
-        END.
-    
-        wString = REPLACE(wString, '*' , '' ).
-        wString = REPLACE(wString, '&' , ' ').
-        wString = REPLACE(wString, '+' , '' ).
-        wString = REPLACE(wString, '(' , '' ).
-        wString = REPLACE(wString, ')' , '' ).
-        wString = REPLACE(wString, '!' , '' ).
-        wString = REPLACE(wString, '|' , '' ).
-        wString = REPLACE(wString, '^' , '' ).
-        wString = REPLACE(wString, ';' , '' ).
-        wString = REPLACE(wString, "'" , '' ).
-        wString = REPLACE(wString, ',' , '' ).
-        wString = REPLACE(wString, '  ', ' ').
-        wString = REPLACE(wString, '-' , ' ').
-        wString = TRIM(wString).
-    
-        IF wString = '' THEN RETURN.
-        DO yy = 1 TO NUM-ENTRIES(wString, ' '):
-            xString = ENTRY(yy, wString, ' ').
-            IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT.
-            cWort = cWort + (IF cWort = '' THEN '' ELSE ' ')
-                + xString.
-        END.
-    
-    END PROCEDURE.

部分文件因为文件数量过多而无法显示