GeneXus - Como guardar mis reportes

   
Vista:

Como guardar mis reportes

Publicado por Arlex Franco (101 intervenciones) el 19/03/2011 18:28:11
Buen dia, estoy trabajando con generador .net en ambiente win con gx9.0, dsd la transaccion factura yo genero mi factura, y luego en aftercomplete me llama un reporte donde muestro la factura con encabezado y detalle, ahora en el reporte en la rule output_file("factura",pdf) y tngo configurada la opcion de only to screen, y eso me guarda un pdf fisicamente en mi raiz del modelo, como hago para que guarde los pdf en una carpeta dentro del modelo, ya probe poniendo en la regla output_file asi:
output_file("\temp\FACTURA ","PDF);

alguna sujerencia, cuando lo pongo asi parece que no genera nada porque no me abre un pdf en ejecucion, cuando lo tenia solamente output_file("factura",pdf) si lo hacia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 20/03/2011 06:38:06
Primero, prueba agregando a la ruta del archivo la letra de la unidad eg. c:, d:, etc.
La otra, desde el objeto que llama al Procedure, antes llama a un Wkp en el que pida la carpeta de destino:

En el Wkp debería haber este evento:

Event 'Generar en PDF'
&Ext = '.PDF'
Call('gxSelDir', &Ruta, &RutaOld, 'Seleccione la carpeta de destino')
&XlsFileName = concat(CliNom ,trim(str(PedId)) ,' ')
&XlsFileName = concat('PRUEBA Factura' ,&XlsFileName ,' ')
&XlsFileName = concat(&Ruta, &XlsFileName ,'\')
&XlsFileName = concat(&XlsFileName, &Ext ,'')
&Archivo.Source = &XlsFileName // 6XlsFileName -> Char(255)
if &Archivo.Exists()
&Archivo.Delete()
endif
PGeneraPdf.call(SedId ,PedId ,&FreightPedId ,&XlsFileName ,0 ,&Usr ) // Generar en PDF
EndEvent // 'Generar en PDF'

Nota: Si no está claro algo postea nuevamente!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Arlex Franco (101 intervenciones) el 22/03/2011 03:12:30
muchas gracias Julio siempre ayudandome, logre pasar de ahi en mi proyecto, es mi primer proyecto genexus a penas lo vengo descubriendo, ahora me he encontrado con otra cosa aun mas problematica, imagina, tengo dos transacciones una de factura y otra de orden de pedido, en mi proyecto las ordenes de pedido se generan como P de pendientes en un campo status, luego cuando el usuario lo decida estas ordenes de pedido se convertiran en una factura, ambas transacciones son de dos niveles, ya sabes encabezados y detalle, en la transaccion factura se disparan algunas reglas como por ejemplo rebajar del stock con substract, sumar un contador de ventas para cada vendedor y algunas otras, ahora mi pregunta es: es posible mandar como parametro de la transaccion ordenDePedido los campos que necesito a la transaccion Factura y que me cree una nueva factura a partir de esos datos unicamente proporcionandole yo el nombre del vendedor? hay alguna mejor forma de hacerlo? recuerda que son transacciones de dos niveles!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 22/03/2011 17:41:19
Veamos si estoy claro con lo que tienes, primero tienes una orden de pedido, luego si esta se acepta se convertirá en una factura? al convertirse a factura se deberá hacer el débito de los artículos, incrementar ventas por vendedor, etc.
No tengo claro desde donde quieres enviar los parámetros, si es directo desde la trn pedido a la Trn factura, si es así como lo quieres creo que te estás complicando innecesariamente, recuerda que la programación debe ser lo más sencilla posible para guardar claridad.
Yo tendría primero un Wkp desde donde administro los pedidos, colocando en este wkp botones como por ejemplo Crear (Pedido), Modificar, Anular, Generar Factura. En este último punto y cuando presione este botón yo llamaría a un Proc al que le envío el Id de la facura y que el Proc cree la factura, debite los arctículo, etc. y todo lo demás, muy fácil y sencillísimo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 22/03/2011 17:43:53
Arlex, corrijo el último párrafo que puse:
En este último punto y cuando presione este botón yo llamaría a un Proc al que le envío el Id del PEDIDO y que el Proc cree la factura, debite los arctículo, etc. y todo lo demás, muy fácil y sencillísimo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Arlex (101 intervenciones) el 22/03/2011 17:56:55
Gracias Julio, lo hare de esa forma si el wp ya lo tenia donde me listaba todos los pedidos con status P (o sea pendientes) y en el evento enter intento llamar un procedure mandandole el Id de orden de pedido para que de alli coja datos y llene los datos de la trn factura que de hecho son casi similares, solo le agrego el vendedor atraves de un dinamic combo box, pero ahi surge otra interrogante, mi logica me indica que debo anidar una sentencia NEW para escribir en la Trn de Dos niveles, algo asi:

antes te menciono que mis campos OrdenId y FacturaId son autonumericos

rules: parm(in:OrdenId,VendedorId);

Source:

for each //orden
defined by OrdenId
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 22/03/2011 18:01:48
Continúa, tu lógica está por buen camino, solo probando aprederás...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Arlex (101 intervenciones) el 22/03/2011 18:05:10
oops! le di Back sin querer al navegador, continuo:


new //facturas
Clienteid = ClienteId
FacturaFecha = OrdenFechaEntrega
VendedorId = &VendedorId (este viene de parm)
endnew

for each defined by OrdenLineaId (id de la grilla, es autonumerico serializado con un artt de la tabla sup)
new
FacturaLineaId = OrdenLineaId
FacturaLineaQ = OrdenLineaQ
ProductoId = ProductoId
endnew
endfor
endfor

tambien hago las formulas como precio x cantidad = total linea y un contador de ese ultimo para el total.

la pregunta del millon es: Recuerda que la tabla FacturaLinea fisicamente se guarda con clave compuesta, conformada por los 2 att (algo asi entiendo) y siempre la guarda como 0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 22/03/2011 18:23:37
Pruébalo de esta manera:

//Parm(in:PedidoId ,in:&VendedorId);

for each PedidoId // Cabecera de Pedido
<TAB>new // Cabecera de factura
<TAB><TAB><Attributos>
<TAB>endnew // Cabecera de factura
<TAB>for each PedidoId OrdenLineaId
<TAB><TAB>new // Detalle de factura
<TAB><TAB><TAB><Attributos>
<TAB><TAB>endnew // Detalle de factura
<TAB>endfor
endfor // Cabecera de Pedido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Arlex Franco (101 intervenciones) el 23/03/2011 19:40:02
ME FUNCIONA! pero solo una cosa:

cuando esta haciendo el segundo foreach (cuando esta recorriendo las lineas de la factura) necesito que me reste la cantidad, del stock del producto (el atributo esta presente en la trn factura) y cuando coloco:

ProductoStock = ProductoStock - FacturaLineaQ

me da el siguiente errror al especificar, no relationship found among atributes in group starting at line 13. atributes : (los de la trn Orden) are incopatible with (los de la trn Cliente)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 24/03/2011 00:35:41
Modificando el Proc, que tal así:

for each PedidoId // Cabecera de Pedido
<TAB>new // Cabecera de factura
<TAB><TAB><Attributos>
<TAB>endnew // Cabecera de factura
<TAB>for each PedidoId OrdenLineaId // Detalle de Pedido
<TAB><TAB>new // Detalle de factura
<TAB><TAB><TAB><Attributos>
<TAB><TAB>endnew // Detalle de factura
&ArticuloId = ProductoId
&ArticuloCantidad = ProductoCantidad
do 'Debitar artículos'
<TAB>endfor // Detalle de Pedido
endfor // Cabecera de Pedido

Sub 'Debitar artículos'
for each ArticuloId // Tabla de artículos
where ArticuloId = &ArticuloId
ArticuloStock -= &ArticuloCantidad
endfor // Tabla de artículos
EndSub // 'Debitar artículos'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Arlex Franco (101 intervenciones) el 24/03/2011 00:50:26
GRANDE SOS UN CAPO! GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Aroldo (103 intervenciones) el 15/11/2013 15:58:45
Que tal Julio y Arlex, una consulta, con el procedimiento que plantea Julio sobre guardar los PDF tambien lo abre en pantalla despues de guardar o no?, yo estoy trabajando una aplicacion donde necesito que se abra un recibo en pantalla (ya lo tengo hecho) el cual esta generado en pdf, pero tambien necesito que automaticamente se guarde en una carpeta en C, sin que el usuario haga nada mas que generar el recibo, no se si sea posible..

Uso Genexus 9 Genero para .Net Ambiente Web y Sql Server 2005 .

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como guardar mis reportes

Publicado por Julio (301 intervenciones) el 16/11/2013 00:04:01
Para que se guarde automáticamente el PDF en una ubicación fija agrega esto:
&XlsFileName = concat('c:\<ruta>\', <NombreArchivo>','')

Ahora, si además deseas que te lo muestre en pantalla, después de la línea que invoca al PDF añade:

PGeneraPdf.call(SedId ,PedId ,&FreightPedId ,&XlsFileName ,0 ,&Usr ) // Invocación para generar PDF
&FacturaExcel.Open(&XlsFileName )
&FacturaExcel.Show()
&FacturaExcel.Unbind() // Esto es para que Excel se desligue de la aplicación

Deberás crear una variable llamada FacturaExcel de tipo ExcelDocument
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar