PDA

Ver la Versión Completa : Duplex con Fastreports


afxe
16-04-2010, 16:53:22
Hola Señores:

D7, FB2 y FastReport 4

Voy a abordar la impresión de una factura compuesta de un conjunto de albaranes, cuyos cuales han sido escaneados una vez que el cliente los ha firmado para dar su conformidad.

La idea es la siguiente, imaginemos que resulta una factura de 2 páginas con el detalle de los albaranes y los productos facturados, seguida de otras dos páginas con cuatro miniaturas de los albaranes escaneados cada página. (Esto lo consigo en FastReport usando dos reportes (PAGES) con sus respectivos masterdata).

De esta forma se obtienen cuatro páginas de impresión: 1,2,3,4 pero, deseo que se impriman DUPLEX: por la cara A la factura con los detalles, y por la cara B los albaranes, con la opción frxReport.PrintOptions.PageNumbers asigno 1,3,2,4 y se imprime correctamente.:cool:

¿Cual es el problema? Pues cuando existe una factura de 3 páginas (1,2,3), por ejemplo pero con 1 sóla página de albaranes escaneados (la nº 4), se debería imprimir de la siguiente forma:
Folio 1 Cara A Primera página de la factura
Folio 1 Cara B Página con albaranes escaneados
Folio 2 Cara A Segunda página de la factura
Folio 2 Cara B No imprimir nada
Folio 3 Cara A Tercera (última) página de la factura
Folio 3 Cara B No imprimir nada.

Una vez preparado el report con las cuatro páginas, la opción de PageNumbers tendría que indicar 1,4,2,-,3,- y no sé como indicar que deje el hueco (salte página) una vez preparado el report y obtenido la cantidad de paginas a imprimir.

Espero haberme explicado. :confused:

movorack
16-04-2010, 20:09:03
y si dejas una pagina en blanco en el lugar de la pagina que no deseas imprimir? así siempre tendrias paginas pares... digo... tengo dolor de cabeza. :(

Chris
16-04-2010, 20:31:18
Pues te has explicado muy bien. Lo suficiente para entender que tienes un problema díficil.

Por el momento, estoy viendo la solución por este lado: Pre-Configura la propiedad "PageNumbers" de la impresión, para que se imprima en el orden esperado. Esto te evitaría que tengas que hacer esta configuración a mano cada vez que vallas a imprimir.

Saludos,
Chris

movorack
16-04-2010, 20:40:24
Insisto en dejar una pagina en blanco... no se aveces una solución sencilla salva todo la fiesta... a lo bien solo intenta a ver.

Chris
16-04-2010, 20:54:03
Insisto en dejar una pagina en blanco... no se aveces una solución sencilla salva todo la fiesta... a lo bien solo intenta a ver.

Disculpame, pero para mí un programa que me imprima una página en blanco intercalada en una o varias partes de la impresión, es algo deficiente y lo veo como algo que no sirve o de muy mala calidad. Uno de los principios para hacer un buen software es evitar que los usuarios terminen resolviendo los problemas que tú no pudiste resolver.

Saludos,
Chris

movorack
16-04-2010, 22:17:42
I'm sorry... Cuando me refiero a una hoja en blanco es por otra situación...

Hace varios años (2000) trabajé en una empresa de telefonia... el desarrollador de allá habia diseñado su reporte para colocar unos detalles de llamada en la parte de atrás de la hoja... así se mandó a la immprenta... pues...

la impresora era duplex y cuando la impresión de esos detalles se pasaba el enviaba una hoja en blanco... como el reporte se imprimia sobre una base de imprenta llevaba el slogan de la compañia y todo... pero terminaba coincidiendo luego con la impresión por detrás en el lugar correspondiente.

Tu disculpa... no di mas detalles antes de porque una respuesta tan simplona... pero en realidad... tengo un furte dolor de cabeza... espero haberme hecho entender ahora.

afxe
18-04-2010, 11:34:11
Gracias por vuestra aportación....

Efectivamente, Chris tiene parte de razón, pero movorack (y su dolor de cabeza) lo ha entendido perfectamente. El cliente tiene folios con membrete. En una de la cara del folio tiene un precioso anagrama con un montón de información fiscal y sanitaria. Cuando se imprime una factura normal, se imprime en esta cara la información de los datos del cliente y el detalle de los artículos facturados que se le han ido sirviendo a lo largo de un periodo (un mes, normalmente) en varios pedidos o albaranes. La parte de atrás del folio se deja en blanco. Hasta ahí todo claro. Sin embargo, los clientes desean que se le adjunte una copia de los albaranes que se le han ido sirviendo a lo largo del mes para cotejarlo con la factura. Imaginaros 1250 facturas mensuales, tener que buscar en las carpetas los albaranes de cada factura (7 ú 8) y adjuntárselos a cada factura, mucho trabajo, mucho personal y mucho papel gastado. La idea: aprovechar la parte de atrás de las facturas (actualmente en blanco) para imprimir miniaturas de los albaranes que previamente se han escaneado y reconocido y están almacenados en una base de datos. La factura se debe seguir imprimiendo igual, en la parte del papel membretada, y se generarán tantas páginas como haga falta. Ahora bien, hasta 4 albaranes escaneados se imprimirán en la parte de atrás de la primera página, hasta 8 usará la parte de atrás de 2 páginas, y así sucesivamente. como comenté, el problema viene cuando hay menos página de albaranes que de facturas, o viceversa.

La solución de Chris está bien cuando hay más páginas de facturas que de albaranes escaneados. tendré que estudiarlo para cuando hay más albaranes escaneados que páginas de factura.

Espero no haber acrecentado el dolor de cabeza de los leyentes. Estoy estudiando una posible solución que colocaré aquí en cuanto logre que funcione, pero valoraría mucho vuestros consejos.

Gracias.

afxe
19-04-2010, 18:21:53
Al final lo he solucionado generando páginas en blanco para que me deje las páginas pares vacías si no hay albaranes escaneados que imprimir y uso el PrintOptions.PageNumbers para seleccionar el orden de impresión. Iva a intentar utilizar el evento OnManualBuild, pero tengo tal cantidad de bandas asociadas a la factura que era muy complicado (para mi y mi poca experiencia con FR) manejar la ocultación y activación de bandas por página.

Gracias por vuestras sugerencias.