Guardar un Informe directamente en una ruta local del servidor

Buenos días,

Actualmente usamos la impresión de informes con el servidor de impresión instalado en el servidor.

Estamos buscando si existe la opción de poder imprimir el informe y que el sistema lo guarde en una ruta por defecto local del servidor, tipo GESDOC o carpetas que pueden crearse como volumenes.

He visto que dentro de destinos es posible crear destinos de Ficheros o Archivado, pero no consigo o no se si realmente es posible configurarlo para que al imprimir, el informe se guarde en una ruta que yo defina.

La idea es crear un evento para cuando contabilice una factura generar ese informe y guardarlo localmente en el servidor en .pdf

Gracias!

  • Suggested

    Buenas tardes,

    Si he entendido bien, lo que necesitáis es que, al contabilizar la factura, se genere automáticamente el PDF en una ruta específica. Esto es posible mediante impresión por código y modificando la ruta de guardado a través de un punto de entrada.

    Por un lado, debéis tener un destino parametrizado con Tipo de salida = Fichero. En mi caso lo he llamado FILE. Como yo genero un Excel, mi formato de exportación es ese; en vuestro caso deberíais configurar el formato como PDF.


    En mi ejemplo, el informe que imprimo es BALAGEHIST y quiero guardarlo en la carpeta \YBALA\. Para ello, lo he duplicado manteniendo la misma configuración y lo he renombrado como YBALAGEHIST.

    En cuanto al código:

    Subprog PRINT_YBALAGEHIST(PS_REP)
      Value Char PS_REP
    
      Local Char TBPAR(150)(150)
      Local Char TBVAL(150)(150)
    
      TBPAR(0)  = "societe"       : TBVAL(0)  = "XXX"
      TBPAR(1)  = "sitedeb"       : TBVAL(1)  = "YYY"
      TBPAR(2)  = "sitefin"       : TBVAL(2)  = "YYY"
      TBPAR(3)  = "coldeb"        : TBVAL(3)  = ""
      TBPAR(4)  = "colfin"        : TBVAL(4)  = ""
      TBPAR(5)  = "grpcol"        : TBVAL(5)  = ""
      TBPAR(6)  = "tiersdeb"      : TBVAL(6)  = ""
      TBPAR(7)  = "tiersfin"      : TBVAL(7)  = ""
      TBPAR(8)  = "borne1"        : TBVAL(8)  = "120"
      TBPAR(9)  = "borne2"        : TBVAL(9)  = "90"
      TBPAR(10) = "borne3"        : TBVAL(10) = "60"
      TBPAR(11) = "borne4"        : TBVAL(11) = "30"
      TBPAR(12) = "borne5"        : TBVAL(12) = "0"
      TBPAR(13) = "ecrisim"       : TBVAL(13) = "1"
      TBPAR(14) = "datref"        : TBVAL(14) = date$
      TBPAR(15) = "sens"          : TBVAL(15) = "1"
      TBPAR(16) = "detpce"        : TBVAL(16) = "2"
      TBPAR(17) = "tri"           : TBVAL(17) = "1"
      TBPAR(18) = "plan"          : TBVAL(18) = ""
      TBPAR(19) = "typetat"       : TBVAL(19) = "BALAGE"
      TBPAR(20) = "impselections" : TBVAL(20) = "1"
      TBPAR(21) = "rep"           : TBVAL(21) = PS_REP
    
      ETAT = "YBALAGEHIST" #Nombre del report
    
      Call ETAT(ETAT,"FILE","",0,"",TBPAR,TBVAL) From AIMP3 # "FILE" es el destino creado.
    
    End

    Con esto se realiza la impresión por código. Para gestionar la ruta, hay que utilizar el punto de entrada IMPRIME del estándar AIMP3:

    $ACTION
      Case ACTION
       When "IMPRIME" : Gosub IMPRIME
      Endcase
    Return
    
    $IMPRIME
      If DESTINATION = 4 and ETAT = "YBALAGEHIST"
        FICHIER = filpath("","","")+"\YBALA\"+[F:YREPY]REPNUM+".xls"
      Endif
    Return
    

    Con la condición IF controlo que el destino sea Fichero y que el informe sea el mío. En ese caso, modifico la variable FICHIER para definir la ruta concreta donde quiero guardar el archivo.

    De esta forma, cada noche ejecuto la impresión del informe y se genera automáticamente en una ruta específica del servidor.

    Espero haberme explicado bien y que os sirva de ayuda Slight smile

    Un saludo.

  • Muchas Gracias por la respuesta.

    Tengo una duda.

    La parte del codigo que me pones, es un Script Especifico que has creado?

    Este Script lo tienes en el informe?

    Gracias.

  • Buenos días,

    La primera parte del código es donde lanzo la importación y la tengo en un proceso que lanzo automáticamente por las noches. En tu caso, debería estar al darle al botón contabilizar, ya que ese código detona la impresión del informe.

    El otro código, es el punto de entrada para determinar la ruta de guardado.

    Espero que te sirva de ayuda.

    Un saludo.

  • Disculpa pero no acabo de entenderte.

    Te refieres a que tengo que modificar el Script Estándar de la funcion de facturas? Para cuando se contabilice una factura, lanzar esta parte del codigo que me has enviado para que genere el report?.

    Gracias.

  • Buenas,

    No, no debes tocar el estándar. Utilizad el punto de entrada de contabilización de facturas (CFMINVMAJ) para detonar la impresión:

    https://online-help.sagex3.com/erp/12/en-us/Content/OBJ/ADC_TRTVENFACV.htm

    Espero que os sirva de ayuda.

    Un saludo.