Tarea #1331

CORE v2023

Necesitamos rediseñar el ExportManager para que cumpla las siguientes funciones:

  • Poder añadir clases para modelos concretos. Por ejemplo, un programador puede necesitar que cuando se imprima un producto, se imprima de cierta manera, para ello podría crearse su clase de impresión de productos y decirle al ExportManager que use esta nueva clase cada vez que haya que imprimir un producto.
  • Poder saltar de página con newPage().
  • Poder guardar el resultado en un archivo.
  • Poder añadir fragmentos o secciones nuevas cuando se imprime un modelo.
  • Poder añadir imágenes con addImage().
  • Poder añadir tecto con addText().
  • Poder establecer el idioma con setLang().
  • Poder establecer la orientación con setOrientation().
  • Poder establecer el tamaño con setSize().
  • Poder establecer la empresa con setComany().
  • Poder establecer cualquier otro dato genérico con setData($key, $value).

Nueva versión

Para ofrecer compatibilidad podemos marcar la clase ExportManager como deprecated y crear otra (Exporter) para reemplazarla:

  • La nueva clase iría directamente en la carpeta Core, dado su uso habitual.
  • Las implementaciones para PDF, Excel y CSV irían en la carpeta Bridge.
  • La interfaz o contrato a implementar por las clases iría en la carpeta Contract.
// devuelve el contenido del pdf de una factura
return Exporter::create('pdf')
    ->addModel($factura)
    ->output();

// genera y guarda en pdf una factura
Exporter::create('pdf')
    ->addModel($factura)
    ->save('factura_1230');

// devuelve un pdf con dos tablas de datos que tenemos en dos arrays, un texto y una imagen
return Exporter::create('pdf')
    ->addTable($data1)
    ->addTable($data2)
    ->newPage()
    ->addText('bla, bla, bla..')
    ->addImage($imagePath)
    ->output();

// genera la factura en inglés
Exporter::create('pdf')
    ->setLang('en_EN')
    ->addModel($factura)
    ->save('factura_1230');

Sin envío de emails

Creo que fue un error mezclar el envío de emails con la exportación, de la forma en que lo hicimos, es decir, poniendo email como una opción de exportación. El envío de emails debería ser un botón independiente en los formularios y no una opción de exportación.

Sin embargo, si que necesitamos una herramienta potente para el envío de emails que cubra nuestras necesidades. Más detalles.

Personalizar la exportación de un modelo

Del mismo modo que hacemos con la clase Calculator y con los AjaxForms, deberíamos poder añadir mods al Exporter, para poder reemplazar algunas llamadas o ejecutar código tras ciertas llamadas.

Exporter::addMod(new MyCustomExporterMod());

Exporter::create('pdf')
    ->addModel($fproduct)
    ->save('producto_1230');

Personalizaciones posibles:

  • Plantillas distintas para cada tipo de documento.
  • Plantillas distintas para cada serie.
  • Plantillas distintas para cada empresa.
  • Plantillas distintas para algunos clientes o grupos de clientes.
  • Personalizar la cabecera.
  • Personalizar el pié de página.
  • Personalizar la impresión de modelos concretos.
  • Adjuntar una página personalizada junto a cada presupuesto.
  • Añadir una sección tras la cabecera de la factura.
  • Añadir una sección tras los datos del cliente de la factura.
  • Añadir una sección tras las líneas de la factura.
  • Añadir una sección tras los totales de la factura.
  • Añadir una marca de agua.

Poder desactivar cabecera o pié de página

Necesitamos poder desactivar, en algunos casos, la cabecera o el pié de página.

Exporter::create('pdf')
    ->disableHeader()
    ->disableFooter()
    ->addText('bla, bla, bla..')
    ->addTable($data1)
    ->output();

Nuevo diseño de factura

nuevo diseño factura

PRO
neorazorx_1

Asignado neorazorx_1

España, 11 años, nivel 100

Fecha de inicio: 11-11-2023, Puntos de soporte +25

Comentarios

daniel89fg_739

08-11-2023 13:02:28 daniel89fg_739

Poder establecer un diseño de plantilla diferente para la empresa, tipo de documento, proveedor o cliente.
estrategicos_11919

08-11-2023 14:17:09 estrategicos_11919

Poder establecer un diseño distinto para cada Serie de Facturacion, a veces una empresa tiene diferentes marcas.(SERIES). Veo que esta dentro de las personalizaciones posibles.
No se si es una locura pero yo propongo: establecer un parámetro genérico como el de ->addText() para poder incluir datos que vengan de un plugin o personalizacion, de forma que si personalizamos el footer de una factura o extendemos un cliente con un dato específico podamos establecer la impresion de ese dato como si de una variable general se tratara. (Mierda nos pisariamos unos a otros?)
daniel89fg_739

29-02-2024 12:01:03 daniel89fg_739

Podría ser interesante dejar añadir una cabecera o pie de página diferente para cada página. Por ejemplo la página 1 no tiene cabecera ni footer, pero el resto de páginas si, e incluso que cada página pueda ser diferente, o viceversa.
Solamente autorizados y patrocinadores pueden comentar.

Tarea #3363

Tenemos textos traducibles para facturas, albaranes, pedidos y presupuestos, pero no para el resto. El controlador SendMail debería crear textos predeterminados para cualquier modelo, así los podemos personalizar.

CORE - Pendiente 08-05-2024
Tarea #3356

En la tabla de productosprov es posible añadir varios productos con la misma referencia del proveedor al mismo proveedor, y eso no se debería de poder hacer. Se debe añadir un restricción única sobre las columnas codproveedor y refproveedor.

CORE - Pendiente 06-05-2024
Tarea #3305

Necesitamos poder tener textos distintos para cada idioma en las notificaciones de email. Para ello hay que añadir la columna lang al modelo, y modificar la función para enviar las notificaciones de forma que podamos especificar un idioma (opcional). Prioridades Si...

CORE - Pendiente 09-04-2024
Tarea #3304

En las notificaciones de email tenemos unos parámetros disponibles siempre: fecha, nombre, etc. Y luego tenemos una serie de parámetros que son exclusivos de la notificación (instance_uuid, price...). Hay que añadirle la columna (param_list) al modelo para poder apuntar la...

CORE - Pendiente 09-04-2024
Tarea #3285

Añadir la opción de generar un historial de cambios: tendremos un modelo de historial, un worker para rellenarlo, un trait para mostrar la pestaña de historial en los controladores que queramos, la pestaña de listado de ListLogMessages y el correspondiente EditController....

CORE - Pendiente 02-04-2024
Tarea #3282

(BUG) al hacer un asiento de venta (pasa lo mismo en compras), en ocasiones tenemos líneas a 0 en la cuenta 700.0. Esto es porque en la instalación hay una 700.1 y todos los productos vinculados a ella, pero cuando hacemos una compra o venta y metemos alguna líne de texto,...

CORE - Pendiente 29-03-2024
Tarea #3155

En ocasiones tenemos documentos de compra que tienen ligeros cambios en la forma de calcular los impuestos, con variaciones de un céntimo en neto, IVA o ambos. Para estos casos la solución es modificar una de las líneas y añadirle o restarle medio céntimo hasta cuadrar...

CORE - Pendiente 21-02-2024
Tarea #3059

Modificar el instalador para poder leer los datos de configuración de variables de entorno. Issue relacionada https://github.com/truecharts/charts/issues/16824

CORE - Pendiente 20-01-2024
Tarea #3000

Necesitamos poder marcar una factura como pagada desde la API. Ahora mismo si desde la API modificamos el campo pagada a true, lo vuelve a dejar a false, ya que ese campo se actualiza al guardar, comprobando que los recibos de la factura estén pagados. Hay que añadir un...

CORE - Pendiente 11-01-2024
Tarea #2996

Añadir al ejercicio un botón para copiar las cuentas y subcuentas de otro ejercicio. Al hacer clic debe mostrar un modal para seleccionar el ejercicio del que copiar los datos.

CORE - Pendiente 10-01-2024
Tarea #3281

(BUG) al guardar filtros, cuando tenemos un filtro de periodo, se guardan las fechas, en lugar de guardar solamente el selector y calcular las fechas cada vez. Ejemplo Cuando en el listado de facturas filtramos las de 'el mes pasado' y guardamos el filtro, lo que se espera es...

CORE - Cancelado 29-03-2024
Tarea #2962

Al enviar un email con la clase NewMail no se vacían las listas de direcciones de correos, por lo que si queremos enviar el mismo correo a miles de emails, nos toca hacerlo varias veces. Si añadimos funciones para vaciar las direcciones de correo, podemos reducir código....

CORE - Pendiente 19-12-2023
Tarea #2955

Añadir a los balances un botón imprimir para genera el PDF con la librería del core, en lugar de PlantillasPDF (si está activado). Implementación Llamar al exportManager del core en lugar del dinamic.

CORE - Pendiente 12-12-2023
Tarea #2947

Necesitamos poder filtrar los asientos que no tienen un canal, es decir, que el canal es cero. Implementación Ahora mismo hay un filtro select, quizás es mejor un filtro select where donde pongamos que "ningún canal" o "canal 0" muestre efectivamente los...

CORE - Pendiente 12-12-2023
Tarea #2940

Añadir un cron para generar cada diario y almacenarlo en MyFiles. Así ver el diario, si tenemos este archivo ya generado, podemos descargar este archivo en lugar de generarlo al momento.

CORE - Pendiente 05-12-2023
Tarea #2937

En el nuevo TabCalendar hay que poder dar de alta varias fuentes de eventos, ya sean urls o calendarios de google. Requiere Este cambio requiere los nuevos controladores UI.

CORE - Pendiente 01-12-2023
Tarea #2934

Modificar la clases de Core/Base/AjaxForms para poner la mayoría de métodos estáticos como públicos, para poder llamarlos desde fuera en los mods (para cuando solamente queremos añadir algo después, o modificar levemente el html).

CORE - Pendiente 29-11-2023
Tarea #2933

(Posible bug) Parece que se puede hacer una devolución de la misma línea varias veces, es decir, tienes una línea con cantidad 1, haces la rectificativa de eso y vuelves a hacerla igual. Te deja.

CORE - Pendiente 28-11-2023
Tarea #2932

En la página del plugin, en la pestaña de zips, añadir el campo observaciones a los zips, para poder anutar ahí algo, de cara al propio programador.

CORE - Pendiente 28-11-2023
Tarea #2896

Añadir al asistente para agrupar o partir la opción de agrupar líneas (por referencia y descripción) de forma que si tienes 50 líneas del producto 1, te genere una sola línea con la cantidad sumada de las 50.

CORE - Pendiente 13-11-2023
Tarea #2762

Añadir la opción de evitar añadir la descripción de atributos al añadir una variante a un documento. Motivación En ocasiones usamos atributos que luego no queremos que se impriman sus nombres o valores.

CORE - Pendiente 25-09-2023
Tarea #2749

Necesitamos poder añadir una imagen por familia de productos, para cuando es la misma imagen para todos los productos de la familia.

CORE - Pendiente 19-09-2023
Tarea #2392

Al añadir líneas a un asiento, se coloca automáticamente en el debe o el haber el resto correspondiente, es decir, si has añadido una línea con 50 en el debe, al añadir la segunda línea colocará 50 en el haber. Problema: si estás añadiendo varias alíneas con debe,...

CORE - Pendiente 13-04-2023
Tarea #2370

En ocasiones es necesario hacer facturas a cero, por distintos motivos. El problema es que estas facturas no están generando asientos y por tanto no aparecen en los informes de impuestos, ni los modelos fiscales. Hay que dar soporte a este tipo de facturas para que si...

CORE - Pendiente 05-04-2023
Tarea #2172

Modificar el widget Money para que, cuando el nombre del campo contine la palabra euro, mostrarlo en euros.

CORE - Pendiente 14-02-2023
Tarea #2968

Añadir un worker para actualizar el saldo, debe y haber de las cuentas, cuando se modifica una subcuenta.

CORE - Cancelado 19-12-2023
Tarea #878

Modificar el actualizador para que la acción de actualizar, una vez se ha descargado el zip, sea una llamada ajax, al igual que la acción de actualizar el dinamic. Motivación Hay que mejorar la tolerancia a errores del actualizador. No puede ser que cada vez que hagamos un...

CORE - Pendiente 19-04-2022
Tarea #2273

Las miniaturas de imágenes de productos tienen mala resolución al incluirlas en los PDF (PlantillasPDF). Necesitamos aumentar la calidad de las miniaturas. Cliente interesado [email protected]

CORE - Pendiente 17-03-2023
Tarea #2233

Parece que hay un problema al calcular el importe del asiento de cierre del ejercicio. Issue relacionada https://facturascripts.com/issues/6286

CORE - Pendiente 07-03-2023
Tarea #2186

Necesitamos controlar cuando la devolución es por rotura y no queremos que se devuelva al stock.

CORE - Pendiente 20-02-2023
Tarea #1996

Modificar el informe de impuestos para incluir la columna País, para poder saber de qué país viene cada factura (para las ventas).

CORE - Pendiente 09-01-2023
Tarea #1893

Hay que definir claramente en los modelos de documentos de compras y ventas qué campos son realmente no editables, para que no se permita modificar esos, peri el resto.

CORE - Pendiente 13-12-2022
Tarea #1892

Al pasar una factura de venta a emitida, ya no se debería volver a pasar a boceto, es decir, al pasar a emitida hay que marcar internamente la factura para no dejar cambiarla, ni eliminarla después.

CORE - Pendiente 13-12-2022
Tarea #1682

Modificar el modelo Partida para poder desactivar la comprobación de si el asiento o el ejercicio está bloqueado. Necesitamos poder modificar el saldo de una partida independientemente de si el asiento está bloqueado. Nota No es toy seguro de si el modelo está comprobando...

CORE - Pendiente 11-10-2022
Tarea #1676

Crear un test unitario para el modelo Impuesto. Comprobar Se puede crear un impuesto y borrarlo. Se pueden crear dos impuestos con el mismo iva. Si se crea un impuesto de tipo porcentaje y 10 de iva, al hacer una compra con una línea con ese impuesto, cantidad 2 y precio 50,...

CORE - Pendiente 10-10-2022
Tarea #2944

(Bug) el widget datetime en safari no rellena automáticamente la hora y minutos. Además, si el usuario cambia la fecha con el teclado, puede pulsar intro y enviar el formulario sin rellenar completamente la fecha. Posible solución Añadir una función onchange() al input...

CORE - Pendiente 11-12-2023
Tarea #2493

Añadir el régimen especial para agricultores a la lista de regímenes de IVA. Y modificar el Calculator para soportar este nuevo régimen. Test Añadir el correspondiente test unitario.

CORE - Pendiente 18-05-2023
Tarea #3183

Modificar el tablero (controlador Dashboard) para sacar un mensaje cuando hay actualizaciones disponibles, junto a un botón para ir al actualizador. Añadir también el mensaje de actualizaciones disponibles al listado de plugins. Detectar actualizaciones Podemos saber si hay...

CORE - Pendiente 01-03-2024
Tarea #3374

En TPVneo, si añades una línea en negativo y otra en positivo, con el mismo importe. (Típico caso de cambio de producto). El botón de cobrar desaparece. Si lo haces a la inversa. Es decir, primero añades el positivo y luego negativo, funciona correctamente. Sería...

CORE - Pendiente 14-05-2024
Tarea #851

Modificar el formulario de devoluciones para poder indicar al crear si las 2 facturas (la rectificada y la nueva) se van a marcar como pagadas y con qué forma de pago. Motivación Cuando te devuelven una factura entera que no te han pagado, además de la rectificativa tienes...

CORE - Pendiente 12-04-2022
Tarea #2209

A la hora de visualizar una Factura rectificativa de una factura previa es muy facil confundirse ya que el titulo sigue llamándose Factura y debería llamarse Factura Rectificativa. Lo unico que la diferencia es que sale un boton en amarillo con dos << delante que no...

CORE - Pendiente 24-02-2023
Tarea #2724

En los asientos se está colocando un enlace para abrir el documento relacionado solamente cuando es factura, pero tenemos asientos que son de recibos, asientos que son de remesas, etc. En todos estos casos deberíamos poder ir igualmente al modelo original. Implementación...

CORE - Pendiente 28-08-2023
Tarea #2585

Necesitamos una función para asignar una fecha a la factura siempre que no haya facturas con fechas anteriores, para mantener la correlación. Motivación Al importar pedidos desde tiendas online, marketplaces, etc, nos encontramos que puede que el pedio a facturar tenga...

CORE - Pendiente 27-06-2023
Tarea #2533

(BUG) al poner una fecha de pago para la cual todavía no existe ejercicio, se genera el pago, pero no se genera el asiento porque el ejercicio no existe. La única forma de solucionar esto es por sql. Necesitamos poder hacerlo desde la interfaz. Necesitamos Poder generar el...

CORE - Pendiente 05-06-2023
Tarea #2501

(BUG) en los recibos de las facturas. Creas una factura con una serie X, guardas. Se crean los recibos y se rellena el campo codigofactura. Cambias la serie de la factura y guardas. No se actualiza el campo codigofactura del recibo

CORE - Pendiente 25-05-2023
Tarea #2519

Añadir al test de los documentos de compra y venta, la comprobación del idempresa de la forma de pago con el idempresa del almacen. No se puede añadir una forma de pago con un idempresa diferente al idempresa del almacen del documento. Tests Añadir el correspondiente test...

CORE - Pendiente 30-05-2023
Tarea #1613

Invertir la forma en que un contacto se convierte en cliente o proveedor. Ahora mismo coge los campos del contacto manualmente y los pone en el cliente o proveedor. Si un cliente añade campos al contacto, al convertirlo en cliente no arrastra dichos campos, y para poder...

CORE - Pendiente 27-09-2022
Tarea #1272

Actualizar bootstrap a la versión 5 (ahora mismo estamos usando la versión 4). Objetivo Disfrutar de las mejoras de la nueva versión. Problemas Hay que revisar todas las plantillas twig y modificar lo que sea necesario. Aunque en principio el cambio de la versión 4 a la 5...

CORE - Pendiente 12-07-2022
Tarea #3210

Las facturas con importe 0 se están marcando como recibo impagado. Deberían estar excluídas. Test Añadir el correspondiente test unitario para los modelos FacturaScliente y FacturaProveedor.

CORE - Pendiente 06-03-2024
Tarea #3056

Poder cerrar ejercicio sin plan contable. Para cuando no usamos la contabilidad. Cliente interesado [email protected]

CORE - Pendiente 19-01-2024
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2024 FacturaScripts
0.14235s

Soporte