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().

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 new 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');

Sugerencia

Esto es una sugerencia a debatir. Está abierta a comentarios, votación y debate en la reunión semanal. Si se aprueba pasará a estado pendiente.

Comentarios

Solamente autorizados y patrocinadores pueden comentar.

Tarea #511

En los listados de facturas, si hay facturas sin asientos, añadir un botón para generar los asientos de esas facturas. Subtareas Añadir a los controladores ListFacturaCliente y ListFacturaProveedor (o bien a ListBusinessDocument) una función que devuelva true si hay facturas...

CORE - Pendiente
Tarea #1436

Repasar todos los reportes en huntr.dev para comprobar que no reintroducimos vulnerabilidades con el cambio de core: https://huntr.dev/repos/neorazorx/facturascripts

CORE - Pendiente
Tarea #1345

Automatizar la publicación de release de github e imágenes de docker cuando se sube una nueva versión del core.

CORE - Pendiente
Tarea #1215

En algunos casos tenemos pestañas que se añaden en base a nombres configurados por el usuario, como en las oportunidades del CRM. Puede suceder que los títulos de las pestañas sean demasiado largos. Por este motivo es necesario limitar el título a mostrar a 15 caracteres,...

CORE - Pendiente
Tarea #688

Añadir soporte para facturas intracomunitarias (al generar el asiento). Archivos a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Core/Lib/Accounting/InvoiceToAccounting.php

CORE - Pendiente
Tarea #1201

En las opciones de colores de row status necesitamos poder comparar el valor de un campo con otro. Ejemplo: poner la fila en amarillo cuando el último comentario es del autor de la issue: <rows> <row type="status"> <option color="warning"...

CORE - Pendiente
Tarea #1177

(TEST) comprobar qué sucede cuando creamos un estado que genera el mismo tipo de documento. Si es problemático, impedir que un estado genere el mismo tipo de documento y añadir la comprobación al correspondiente test unitario.

CORE - Pendiente
Tarea #1152

Resolver bug con postgresql al inicializar modelos con datos predefinidos en data. Problema Se están importando correctamente los datos de data, pero no se están actualizando la secuencias. Eso produce errores al añadir nuevos registros. Se han tenido que modificar los tests...

CORE - Pendiente
Tarea #1175

(ListProducto) si el usuario no tiene permiso para ver la columna fabricante, no mostrar el filtro de fabricantes.

CORE - Pendiente
Tarea #1110

Modificar el javascript que envía el los datos por ajax en la edición de asientos, compras y ventas para modificar el token en cada petición. Posteriormente añadir la validación de token en los respectivos controladores. Token de formulario El token (input multireqtoken)...

CORE - Pendiente
Tarea #1111

Al generar el asiento de la factura, debe generarlo bloqueado, o por lo menos bloquearlo al terminar de generarlo. Pruebas Hacer una factura con una línea con precio 100 y cantidad 1. Comprobar que se ha creado un asiento y que está bloqueado. Modificar el precio de la línea....

CORE - Pendiente
Tarea #1112

Restaurar las cuentas 4000, 4100 y 4300 del plan contable de España. Solamente estas cuentas tienen que tener la cuenta especial de clientes, proveedores y acreedores, para que al crear clientes, se cree una subcuenta dentro de la 4300, al crear un proveedor lo haga dentro de...

CORE - Pendiente
Tarea #1142

Modificar el asistente de copiar documentos, controlador CopyModel, para añadir los campos de descuento global 1 y 2, para poder cambiar los descuentos al copiar el documento. Pruebas Crear un pedido con una línea con precio 100, descuento global de 10% y guardar. Pulsar el...

CORE - Pendiente
Tarea #998

Actualizar los modelos de Dinamic, ya que estará desactualizado con respecto a Core. Pasos Desactivar todos los plugins. Modificar el .gitignore para quitar la línea de Dinamic Ir al menú administrador, plugins y pulsar el botón reconstruir. Añadir los cambios en...

CORE - Pendiente
Tarea #986

Añadir buscador al listado de plugins del menú administrador, plugins. Tanto en el listado de plugins instalados como en el de más plugins: Motivación Cuando tenemos un montónd e plugins instalados se tarda demasiado en localizar. Cada vez tenemos más plugins disponibles y se...

CORE - Pendiente
Tarea #987

(AdminPlugins) en el listado de plugins instalados, debajo de la descripción, mostrar los plugins requieridos por ese plugins. Por ejemplo, el plugin PlantillaDetallada requiere el plugin PlantillasPDF. Archivos a modificar...

CORE - Pendiente
Tarea #983

Añadir permisos: Solmante modificar lo suyo: el usuario solamente podrá modificar el modelo si este tiene su nick o codagente. Solamente eliminar lo suyo: el usuario solamente podrá eliminar el modelo si este tiene su nick o codagente. Motivación Ya existe un permiso para...

CORE - Pendiente
Tarea #1408

(ListView) Añadir la función addColor() para poder añadir una opción o configuración de coloreado al row status desde el controlador. Ejemplo $this->views[$viewName]->addColor('pagada', '1', 'success', 'paid'); Colores por estado Modificar el modelo EstadoDocumento para...

CORE - Pendiente
Tarea #1409

(SendMail) Usar las notificaciones de email a la hora de elegir el asunto y texto predeterminado cuando se envía un email desde un listado. Ejemplo: abrimos una factura y hacemos clic en imprimir, email. Ahora mismo se está usando una traducción:...

CORE - Pendiente
Tarea #957

No permitir crear estados predeterminados y no editables. Que un estado no editable sea predeterminado, significa que los nuevos documentos que se creen serán no editables desde el mismo momento de su creación, y dado que primero hay que crear el documento para poder añadir...

CORE - Pendiente
Tarea #1405

Modificar los estados de documentos para poder vincular un "color" (más bien una clase css para el color): danger dark info light primary secondary success warning Modificar los listados de facturas, albaranes, pedidos y presupuestos para recorrer los estados de ese...

CORE - Pendiente
Tarea #1301

Modificar la configuración del email para configurar la opción de responder al email del usuario. Hay que añadir un selector (replytouseremail) con tres opciones: 1 - (por defecto si) Cuando mandamos un email la casilla de "Las respuestas a este email irán a...

CORE - Pendiente
Tarea #862

Añadir extensión a PDFDocument. Con los nuevos formularios de compras y ventas desde la versión 2022, varios plugins pueden añadir columnas y no hay problema en ello. Pero lo normal sería querer poder mostrar seguramente dichas columnas en el pdf al imprimir. Dichas columnas...

CORE - Pendiente
Tarea #860

Añadir las traducciones cortas save-ok, save-error, delete-ok y delete-error para usarlas al mostrar los mensajes al guardar o eliminar registros.

CORE - Pendiente
Tarea #1270

Modificar la clase calculator para sumar los costes de las líneas en el totalcoste del documento. Motivación Ahora que ya tenemos los costes guardados por línea y la columna totalcoste en los documentos de venta, hay que modificar el Calculator para calcular precisamente este...

CORE - Pendiente
Tarea #775

Crear un test unitario para las secuencias de documentos. Comprobar Se puede crear y eliminar una secuencia. Eliminar todas las secuencias de presupuestos de cliente. Crear un presupuesto de cliente, comprobar que le asigna número 1 y que se crea una secuencia que inicia en 1...

CORE - Pendiente
Tarea #1173

(EditCliente) ocultar la pestaña de facturas si el usuario no tiene permiso para ver EditFactura. Lo mismo para albaranes, pedidos, presupuestos...

CORE - Pendiente
Tarea #954

En los formularios de venta, en el modal de detalles, hacer no editable (readonly) el campo agente, cuando el usuario solamente tiene permiso para ver lo suyo. Archivos a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Core/Base/AjaxForms/SalesHeaderHTML.php...

CORE - Pendiente
Tarea #708

Copiar enlaces a archivos adjuntos al aprobar un albarán, pedido o presupuesto.

CORE - Pendiente
Tarea #710

Al eliminar un contacto, desvincularlo de clientes y proveedores. Los clientes están vinculados con contactos a través de las columnas idcontactofact e idcontactoenv, que son respectivamente la dirección de facturación principal y la dirección de envío principal. No es...

CORE - Pendiente
Tarea #721

En los listview, ocultar el botón de guardar filtros cuando no es un list controller, por ejemplo con una opción en el settings de la vista: Pruebas Ir al menú ventas, clientes, pestaña grupos, crear un grupo y guardar. En la parte de abajo pulsar el botón filtros y...

CORE - Pendiente
Tarea #561

Añadir permisos independientes de importación y exportación para los grupos de usuarios (roles), de forma que si no tienes permiso de exportación en el listado de productos, por ejemplo, no podrías imprimir o exportar el listado de excel o csv. Motivación Autorizar solamente...

CORE - Pendiente
Tarea #707

Añadir columna numdocs a albaranes, facturas, pedidos y presupuestos, para guardar el número de documentos adjuntos. Añadir también el correspondiente filtro a los listados: Filtro checkbox "tiene adjuntos". Al añadir un adjunto, aumentar el numdocs del modelo. Al...

CORE - Pendiente
Tarea #1413

Añadir las columnas coddivisa y netoeuros al modelo ProductoProveedor, para guardar el precio de compra a cada proveedor en la divisa del documento. Al guardar la línea de un documento de compra y actualizar el producto de proveedor, hay que guardar con la divisa del...

CORE - Pendiente
Tarea #674

Añadir calendario full-calendar al dashboard, para mostrar recibos.

CORE - Pendiente
Tarea #665

Descomprimir automáticamente los archivos zip de la carpeta Plugins, cuando ejecutamos el controlador AdminPlugins. Archivo a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Core/Controller/AdminPlugins.php

CORE - Pendiente
Tarea #1179

En los documentos de compra o venta, cuando el documento ha sido aprobado parcialmente, en la columna cantidad de cada línea debería mostrar el restante, en lugar del servido: restante = cantidad - servido. Pruebas Crear un presupuesto de cliente con 3 líneas y cantidad 5 en...

CORE - Pendiente
Tarea #605

(Posible BUG) Comprobar por qué motivo se puede asignar más cantidad de la disponible en el asistente para agrupar o partir documentos. Pruebas Crear un presupuesto con una línea y cantidad 5. Agrupar o partir el presupuesto, seleccionar cantidad 6 en la línea y generar un...

CORE - Pendiente
Tarea #633

Modificar el exportAction del PanelController para que cuando se imprime desde una pestaña (listado) se imprima solamente de esa pestaña y no el resto. Actualmente no se muestran los botones de imprimir en los listados de los panel y edit controllers (editar cliente, editar...

CORE - Pendiente
Tarea #641

Añadir al panel de control la opción de definir cómo se calcula o usa el margen de una variante, sobre el coste o sobre el precio. Siempre se va a usar para calcular el precio, pero ponerlo de una forma u otra es para que sea más intuitivo saber qué descuento máximo se puede...

CORE - Pendiente
Tarea #644

Añadir botón “pagar en fecha vencimiento” al listado de recibos, para marcarlos como pagados con la fecha de vencimiento. Como se hace al aprobar albaranes con su misma fecha.

CORE - Pendiente
Tarea #1430

(BUG) al renumerar los asientos, si hay varios asiento con fecha del 1 de enero, no está colocando el asiento de apertura en primera posición. El asiento de apertura tiene la el valor A en el campo operación. Probablemente bastaría con ordenar por fecha y operación para que...

CORE - Pendiente
Tarea #1426

Modificar las secuencias para poder indicar que queremos usar el último número disponible, pero sin cambiar la fecha. Ejemplo El último albarán es el 100. Aprobamos un pedido para convertirlo en albarán, pero no hay suficiente stock. Añadimos el stock. Aprobamos de nuevo el...

CORE - Pendiente
Tarea #515

Añadir subcuentas separadas para el recargo de equivalencia en los impuestos, para así separar esos importes y partidas en subcuentas distintas. Subtareas Añadir al modelo de impuesto las columnas para las correspondientes subcuentas de compras y ventas para el recargo de...

CORE - Pendiente
Tarea #958

Modificar el modelo Variante para no permitir valores nulos en coste, precio o margen. Añadir las correspondientes funciones en el test unitario del modelo. Archivos a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Test/Core/Model/ProductoTest.php...

CORE - Pendiente
Tarea #647

Añadir imágenes a los productos. Crear un modelo para poder asignar imagenes a productos y variantes (imágenes se ha escrito mal a propósito para facilitar las búsquedas). Modelo: ProductImage Tabla: productosimg idimage: serial idproducto: integer idvariante: integer idfile:...

CORE - Pendiente
Tarea #735

El proceso de importación del plan contable en CSV debe devolver false cuando falla la creación del alguna cuenta o subcuenta. Ahora no lo hace. Archivos a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Core/Lib/Accounting/AccountingPlanImport.php...

CORE - Pendiente
Tarea #1453

(BUG) al actualizar falla al intentar ejecutar Translator::reload() cuando todavía no se ha cargado el nuevo traductor. Habría que comprobar si la clase tiene ese método antes de llamarlo.

CORE neorazorx_1 Completado
Tarea #1044

Añadir filtro por operación al listado de asientos, para poder filtrar los asientos por operación: Archivos a modificar https://github.com/NeoRazorX/facturascripts/blob/master/Core/Controller/ListAsiento.php

CORE neorazorx_1 Completado
Tarea #852

Alinear columnas de cantidad, precio, etc a la derecha en los formularios de compra y venta.

CORE neorazorx_1 Completado
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-2022 FacturaScripts

Soporte