Exportar a CSV y enviar por correo

Buenos días a todos, a ver si podéis orientarme los más expertos.

Actualmente puedo exportar los registros de mi rejilla a un CSV. Y también uso vSendMail para poder enviar correos con adjunto si le digo la senda de este.

Lo que necesito es que desde un boton pueda exportar ese CSV y seguidamente que lo envie por correo, pero el problema es que en la exportación pregunta donde quieres exportarlo ( cada usuario lo pondrá en una carpeta diferente) y no se como recuperar ese archivo para enviarlo posteriormente.

La exportación a CSV es el método nativo que usa vERP por lo que sólo llamo a exportar_rejilla_a_csv(";"); para hacerlo.

Alguna ayuda por favor??

Muchas gracias

Yo utilizo dos estrategias, según la necesidad de control de ficheros que tengas:

  • La simple: generar dos copias del csv, una con la senda que decida el usuario y otra en la caché de vClient. Es esta última la que envío por email
  • La ‘compleja’, cuando necesito control total sobre los ficheros: mantengo una tabla FICHEROS y una carpeta en Datos que se llama ALMACEN. Todos los ficheros que se tratan (de entrada o salida) se graban en la tabla FICHEROS y se copian en ALMACEN. En FICHEROS guardo la senda original o la de destino, según sean de entrada o salida. En ALMACÉN los ficheros tienen como nombre el ID en FICHEROS y como extensión algo que indica si son de entrada o salida (n.ENT, n.SAL, n.IN, n.OUT.
    En tu caso tirarías de ALMACÉN para adjuntar el fichero, que enviarías con el nombre que tiene en la senda original

Espero que te sirva

Guillermo García

Hola,

Depende de que estas usando para enviar los mails, te escribo por si usas el plugin de vsendgrid, en este caso mirando el codigo puedes ver que para la parte de adjuntos lo que se hace es tomar la senda del fichero, leer el contenido y meterlo en vByteArray, en tu caso como tu mismo produces lo que deseas como adjunto bien podrias modificar un poco el codigo para que le puedas tomar tu texto llevarlo a vbyteArra t adjuntarlo al mail a enviar.

un saludo,

Hola franpino.

Ante semejante problema, solo tienes 2 soluciones:

  • Crear tu propio sistema de exportación a csv
  • o adaptar el código javascript de vERP a tus necesidades

La segunda opción parece la más lógica, ya que el código javascript utilizado en vERP es nuy sencillo, aunque como siempre muy poco documentado.

  • Tienes la función ExportarRejilla(rejilla, inicioCampo, finCampo, inicioFila, finFila, callback)
  • Verás que en _export_rejilla_csv.jstienes se define el método “ExportarRejilla.prototype.toCsv(sendaFicheroCsv)” que recibe como parámetro el path del fichero csv.
  • Por lo tanto puedes ejecutar directamente ExportarRejilla.toCsv(sendaFicheroCsv))

Con unos mínimos conocimientos de javascript podrás adaptar el código de vERP a tu gusto.
Saludos
Paco Satué

[quote quote=52108]Hola franpino.

Ante semejante problema, solo tienes 2 soluciones:
– Crear tu propio sistema de exportación a csv
– o adaptar el código javascript de vERP a tus necesidades

La segunda opción parece la más lógica, ya que el código javascript utilizado en vERP es nuy sencillo, aunque como siempre muy poco documentado.

– Tienes la función ExportarRejilla(rejilla, inicioCampo, finCampo, inicioFila, finFila, callback)
– Verás que en _export_rejilla_csv.jstienes se define el método “ExportarRejilla.prototype.toCsv(sendaFicheroCsv)” que recibe como parámetro el path del fichero csv.
– Por lo tanto puedes ejecutar directamente ExportarRejilla.toCsv(sendaFicheroCsv))

Con unos mínimos conocimientos de javascript podrás adaptar el código de vERP a tu gusto.
Saludos
Paco Satué[/quote]

Buenas tardes, intento modificar en javascript el código para que después que el cliente guarde su copia exportada, me haga una segunda copia, y funciona más o menos, pero intento que me lo guarde en la cacheRun y no doy con la función para localizar el Path correspondiente, sabes como sacar dicho ubicación?

Gracias a todos por las respuestas.

Perdón he querido decir en la cache del vClient.

Serviría tanto en Windows como en Mac?

Hola franpino.

Usa la función clientCachePath() de theApp.

Saludos
Paco Satué

Gracias Paco, lo he solucionado con eso, perdona la tardanza en contestar.