mradosta / pragtico

Other
1 stars 2 forks source link

Recibos en excell y en pdf #17

Closed JavierAder closed 7 years ago

JavierAder commented 7 years ago

Buenas. Estoy intentando que los recibos que generar Pragtico sean generados tanto en excel como en pdf (1); veo que la librería que usa Pragtico es PHPExcel (version v1.7.4 2) y soporta la exportación a pdf a través de otra librería que es la que genera el pdf propiamente dicho (tecnicamente creo que es así: PHPExcel convierte de manera nativa el excel a una versión html; la libreria pdf toma este html y genera el pdf). Bueno, planteo un par de preguntas a ver si alguien me puede ayudar o dar sugerencias:

DomPDF mPDF tcPDF

Cual sería la más apropiada para Pragtico? Pros y contras?

1 Actualmente tengo hecha una modificación que el excel generado lo almacena en disco y luego hace un redirección para descargarlo en vez de generarlo y enviarlo al browser directamente; traía problemas tal como estaba (si mal no recuerdo me parece que Cake interfiere en la salida al browser metiendo cosas y uno obtiene excels mal formados) 2 Está versión parece muuuyyy antigua; del 2010-08-26. La actual es 1.8.0, pienso que habría que actualizarla a esta nueva, me da la sensación que no debe haber problemas de compatibilidad.

mradosta commented 7 years ago

Para la proxima sugiero separa el ticken en varios mas pequenos para que sirva de referencia a futuras busquedas. Intento contestarte:

Que libreria de PDF usar? ===> La que funcione mejor con PHPExcel. Yo no conozco esa respuesta, empezaria probando https://github.com/tecnickcom/tc-lib-pdf

En donde debería poner estas librerias? en app/vendors no? ==> SI

Que habría que tocar en Pragtico para que provea esta funcionalidad? ===> Yo pondria una accion mas en cada fila con la opcion de PDF y en ese lugar la logica que coresponda.

1 y 2 ===> Las modificaciones custom a un proyecto Open Source, no suman nada a nadie. Si hiciste una mejora todos te agradecemos que la compartas y no tendrias problemas de compatibilidad con versiones propias.

Si habris un fork y haces las actualizaciones / implementaciones de las libs como sugeris, yo puedo ayudarte e idealmente los mergeamos al Pragtico.

JavierAder commented 7 years ago

Buenas. Disculpa lo de no separar en temas; mi idea era plantear algo general. Te comento lo que vi hasta ahora: La librería PHPExcel actualmente en Pragtico ya soporta exportar a pdf; utiliza implícitamente TCPDF (que es la librería que sugeris), aunque obvio también medio vieja, version 4.8.009 (por alguna razón que por ahora no tengo claro los genera mal; por ej, le erra en la orientación de la hoja e imprime todos los bordes de todas las celdas....). Versiones posteriores de PHPExcel permite usar las otras dos que nombré (mPDF y domPDF) pero eliminaron el soporte directo a TcPDF (hay que instalarla aparte y configurar PHPExcel para que sepa donde la instalaste). Voy a intentar con PHPExcel 1.8.0 y TCPDF 6.2.13 modificando el Helper documento para que la exportación a pdf configure PHPExcel correctamente.

En cuanto al fork, mirá, no la tengo muy clara ni con Git, ni con GitHub y no se si tengo muy claro que me estas sugiriendo jaja; no se ni por donde debería empezar... Vos decís que haga otro proyecto bajo GitHub con otro nombre?

JavierAder commented 7 years ago

Buenas. Comento lo nuevo que intente y un par de cosas más:

$this->helpers[] = 'DocPhpExcel'; (esto lo hago por ej, en imprimir() de liquidaciones controller, para los recibos) si las vistas requieren usar la nueva version, si no, se pone

$this->helpers[] = 'Documento'; (esto lo hago por ej, en reporte_liquidaciones() de liquidaciones controller, para que siga usando la el helper con version de PhpExcel anterior) De esa manera no se rompe el código de las vistas que que no se quieran migrar; solo una linea en las acciones que la invocan. En cuanto a las vistas que quieran migrar , esto se puede hacer facilmente simplemente agregando la siguiente linea al principio: $documento = $docPhpExcel;

asi simplemente, cuando se hace referencia $documento se usa en realidad la nueva versión de PHPExcel.

App::import('Component', 'Formulador'); $this->Formulador = new FormuladorComponent(); $this->Formulador->startup(&$this); //hack necesario para que el formulador se inicialice bien y cargue formulas

En conclusión: una migración completa la veo arriesgada; la migración parcial, manteniendo ambas versiones a la vez, es relativamente "simple"; se requiere un nuevo helper (basicamente una copia del Documento, lo adjunto), modificar los controladores que quieran migrar para que carguen los helpers dinamicamente, y agregar una nueva linea a los vistas de los reportes que migren.