Plan de desarrollo y sugerencias de FacturaScripts. Los patrocinadores pueden hacer sugerencias y votarlas, el equipo de desarrollo puede escoger una tarea y encargarse. Consulte la sección colabora (menú comunidad) para colaborar.
Al hacer compras o ventas en una divisa diferente a la predeterminada, convertir los precios en el momento de añadir la línea.
Mostrar en los EditListView el paginador en la parte superior como en los ListView.
Añadir opción de enviar email a los clientes y proveedores notificando las cantidades a declarar en el modelo 347. De esta forma podemos asegurarnos de que no ha habido cambios no notificados o errores. ![ejemplo](https://i.imgur.com/R9WLvgO.png)
Modificar la visualización de logs para hacer los cambios en documentos más legibles, para que quede claro qué se ha cambiado.
Modificar el atributo onclick de los widgets para permitir enlaces externos como este: ``` <column name="web" order="130"> <widget type="text" fieldname="codcliente" onclick="https://www.google.es?q="/> </column> ``` Si...
Poder imprimir un arqueo de caja, o cierre de caja, al momento de hacer el cierre, de preferencia imprimirlo en Ticket y PDF
Añadir una única imagen a las familias de los productos, para poder usarlo por ejemplo en TPVneo y quizás en alguna otra aplicación futura.
Crear el informe 349 para poder presentarlo a hacienda. y poder hacerlo mensualmente. https://sede.agenciatributaria.gob.es/Sede/procedimientoini/GI28.shtml
Al marcar varios documentos de Compra o Venta desde su listado, para generar PDF o enviar por MAIL, no se está mostrando la opción de "Avanzado" para decidir el tipo de exportación, el Formato de impresión y el idioma. Ya que hay ocasiones que nos puede interesar utilizar un formato...
Al cambiar la divisa de un documento, convertir automáticamente los precios a la nueva divisa.
Añadir el campo de observaciones privadas o notaspriv en las facturas, albaranes, pedidos y presupuestos de cliente.
Dotar de la posibilidad de genear un documento para exportar en PDF, CSV, etc; que incluya los presupuestos de venta que estén vinculados en un proyecto. Similar al documento de pedido de venta, el cual incorpora los presupuestos que tiene agrupados. Es decir, en este caso deberá indicar los...
La opción de inventario (conteo) que ofrece el modulo de stock avanzado, veo 2 situaciones que se podrian mejorar relativamente facil. 1.- Cuando se crea un inventario, se deberian asociar articulos al inventario bien por familias o de golpe, indicando 2 formas de insertarlos: que se muestren...
Al crear un cliente se añade automáticamente una dirección de contacto y siempre parte el nombre y coloca la primera parte en el campo nombre y el resto en apellidos. Hay que cambiar este comportamiento para que: - Si es empresa, meter todo en el nombre. - Si no es empresa, hacer explode...
Añadir la posibilidad de imprimir tickets desde Android a una impresora de tickets Bluetooth.
Añadir la opción a la configuración general para indicar el número de caracteres que debe tener la referencia al crear un nuevo producto. Ejemplo: - Al añadir un producto pone por defecto el número 1. - Si ponemos en la configuración que queremos 5 dijitos el resultado sería:...
Añadir/ Corregir soporte para facturas (compras y ventas) con Sujeto pasivo, y salga desglosado en el informe. En ventas se crea una serie aparte sin impuestos la cual deberia salir desglosada en el 303 En compras puede haber una factura con una parte afectada por Sujeto Pasivo y otra que no,...
En el widget money poder añadir la divisa desde el xml y desde el controlador. EN varias ocasiones queremos que aparezca el símbolo que queramos y que no sea el de la configuración general. El widget money busca si el modelo tiene coddivisa si no tiene coge el general, pero en ocasiones el...
En los estados tenemos un único nombre, como "facturar", que tiene sentido en el botón de estado del documento, pero en el listado al ver "facturar" da la impresión de que no se ha facturado todavía. Necesitamos un segundo título, para usar uno para acción y otro para...
Posibilidad de cierre de sesión automático a los x minutos de inactividad. Configurable en el panel de Control.
Añadir columna Saldo a cada línea del asiento contable. Es muy práctico a la hora de puntear una cuenta.
Implementar sistema de detección de bots rastreadores para elevar seguridad y evitar ataques DDOS Ahora mismo cuando un bot chino / ruso intenta atacar una instalacion publica de Facturascripts, al intentar entrar en urls no conodidas da error de...
El campo "operacion" que aparece en el boton "detalles" de los presupuestos/pedidos/albaranes/facturas, actualmente solo tiene la opcion de "intracomunitarias", que aparezcan tambien "extracomunitarias" y "sujeto pasivo"
¿Qué problema hay que solucionar? ¿Qué función hay que añadir o cambiar? ¿Tienes imágenes de ejemplo? Añadelas aquí. ## Sugerencia Que la ficha de cliente incluya un apartado de Factura-e donde incluir los campos de los códigos DIR3 y que cuando se vaya a realizar la factura-e se...
Al descargar un archivo de la biblioteca, usar el nombre original, en lugar del id. O quizás el id + el nombre original. ## Archivos a modificar - https://github.com/NeoRazorX/facturascripts/blob/master/Core/App/AppRouter.php#L139
Añadir numproveedor a los recibos de compra. De forma que aparezca en los listados y se pueda buscar e imprimir.
Mostrar el último precio de venta al cliente cuando se añade un producto, en el campo precio, como hacemos con el stock en la cantidad.
Añadir mensaje de advertencia al crear un cliente o proveedor cuyo cifnif ya existe. Pero dejar crearlo. ## Archivos a modificar - https://github.com/NeoRazorX/facturascripts/blob/master/Core/Model/Cliente.php -...
Al facturar albaranes, bien desde el listado o bien desde el albarán abierto, debería pedir la fecha de factura y, en el caso de compras, el número de la factura del proveedor
Hacer que los menús se desplieguen sin tener que hacer click en ellos sólo con el hover; ahorraríamos un click que a lo largo del día se traduce en miles de clicks.
Opción configurable para que la barra no se oculte automáticamente. Se ahorrarían clics.
En el caso de los **filtros SelectWhere**, como se aplica por defecto la primera opción, habría que **inciar visualmente** de alguna forma que **se está aplicando un filtro**, es decir, que no estás viendo todo. Por ejemplo, en el listado de clientes, por defecto solamente se muestran los...
Añadir posibilidad de ordenar los grupos en los xmlview, cuando haces una extensión de un xmlview y añades un nuevo grupo este se añade siempre al final. Poder tener la posibilidad de ubicarlo en otro orden.
(BUG) Al **cambiar de cliente o proveedor** una factura, albarán, etc, se deben **recalcular las líneas**. ## Motivación - El nuevo cliente puede estar exento de IVA o puede tener recargo de equivalencia.
Al listar (Pantalla y PDF) registros que contienen campos de tipo divisa, y el registro tiene el campo coddivisa, se interpretan todos los campos de tipo divisa del mismo tipo de divisa que el valor de coddivisa. Esto no se cumple cuando el campo es por ejemplo 'TotalEnEuros'. Este...
Agregar la opción a hacer copias de seguridad automáticas mediante el CRON y poder configurar cuantos días atrás de copias de seguridad quiere el usuario. Por ejemplo 7 dias, tambien se podria seleccionar si quiere solo copia deseguridad de base de datos o base de datos + ficheros. Al hacerse...
Imprimir por defecto en el idioma del cliente. ## Implementación La idea es que cuando vendamos fuera de España y tengamos varios idiomas creados o usemos los que ya están por defecto, al pulsar el botón imprimir factura, no tengamos que seleccionar el idioma, sino que directamente se...
Rediseño de los xmlview de listados (ListView): - El **fieldname** (nombre de la columna del modelo) se establece en la **columna**. - Por defecto todas las columnas se añaden como opciones de **ordenación**, salvo que tenga **sort='false'**. - Por defecto todas las columnas se...
Hola, me gustaría que al imprimir una factura o un presupuesto creada desde un servicio, saliera el nombre de la maquinaria y el número de serie. En mi caso, para mi cliente sería Marca del coche y matrícula al ser un taller mecánico. No estaría mal que también saliera la referencia que...
Añadir una pantalla de vision de proyectos en marcha, para que el cliente pueda ver el progreso de nuestro trabajo, crear una nueva tarea o comentar una en curso. ## Implementación Se me ocurre crear una nueva vista de proyectos mediante kanban y gantt, donde el cliente puede realizar un...
Cuando se generá un error se muestra la **pantalla de error** y los botones de **reconstruir** y **desactivar los plugins**. El botón de desactivar plugins solo debería de poder verlo los usuarios administradores. Se han dado casos en los que se genera un error, y el usuario en cuestión no...
Al imprimir un servicio, en la parte de trabajos, poder imprimir el número de horas de diferencias entre la fecha de inicio y la de fin.
Añadir una imagen global y también por formato de impresión para usarla como imagen de marca de agua, también poder añadir la opacidad, el tamaño y la posición.
Añadir columna materialenviado a los documentos de venta, o una nueva columna para el estado del envío. ## Motivación Ya tenemos columnas para indicar la dirección de envío, la agencia de transporte y el código de envío, pero no tenemos nada para filtar lo que ya se ha enviado ¿Cómo...
Cuando se establecen los permisos en los grupos de usuarios no mostrar aquellos que no tienen opción de filtrar los listados de "solo ver lo tuyo". Por ejemplo, el listado de productos no tiene dicha opción y aunque la marques en el grupo seguirás viendo todos los productos y eso...
Mostrar la cola de procesos pendientes de ejecución en segundo plano e incluso poder cancelarlos antes de que empiece su ejecución. **Ojo** para cancelar un proceso se debería de tener en cuenta si va encadenado con otro subproceso, quizás al cancelar un proceso existán otros procesos que...
Permite crear datos de pruebas para usar en demos o...
Permite migrar los datos de FacturaScripts 2017 a la...
Plugin que permite generar cobros y pagos a cuenta. Se...
El Modelo 111 es una declaración trimestral de las...
Permite eliminar todos los datos de la base de datos y...
Añade el campo grupo de clientes a los contactos del...
Plugin: Sincronización de Pedidos PrestaShop a...
Agrega un punto de venta (TPV, Point of Sale) que permite...
Sistema de localización de productos en almacenes para...
Añade plazos a las formas de pago y los aplica en los...
Permite gestionar contactos, listas, notas y...
El Modelo 347 de la hacienda española es un modelo...
Permite importar clientes, proveedores, productos o...
Incluye herramientas para corregir automáticamente...
Permite imprimir etiquetas de códigos de barras de...
Permite asignar un segundo agente comercial a los...
Añade gestión de descuentos de venta, ya sea por...
Permite ver los movimientos de stock de cada producto del...
Permite gestionar servicios (SAT) en negocios como...
Añade un botón email en el listado de facturas de...
Modifica el aspecto de FacturaScripts para usar una barra...
Añade soporte para la factura electrónica española: el...
Este Plugin te permite administrar los informes...
Este plugin está abandonado por el autor, solo se...
Modifica el diario contable para agrupar por cuenta y...
El Modelo 130 es una declaración trimestral del impuesto...
Con este plugin puede crear plantillas de asientos para...
Permite agrupar documentos de distintos almacenes,...
Permite generar etiquetas de envío en base a la...
Añade fecha de proveedor a las facturas de compra e...
Modifica el plugin Servicios y permite añadir varias...
Añade un nueva plantilla al plugin PlantillasPDF. La...
Añade la columna fecha a las líneas de facturas,...
Plugin de Control de Impresión para Documentos Este...
Añade los informes necesarios para el "Suministro...
Plugin que permite administrar textos de uso cotidiano,...
Plugin de conciliación bancaria: - Permite importar los...
Añade un sistema de notificaciones y avisos tanto en el...
Un plugin que permite llevar registro de información...
En el wizard, el paso donde se inicializan todos los modelos, se debe partir en varios pasos, ya que es lento en muchas ocasiones. Convendría cargar primer los modelos de 5 en 5, es decir, cargar 5, recargar la página, cargar los siguientes 5, etc. Para ello se puede usar un offset.
Añadir una página de contacto para que la empresa pueda poner algunas fotos, direcciones, teléfonos, ubicaciones, etc...
Añadir soporte para VERI-FACTU al core. Debe estar implementado antes del 1 de enero de 2025. ## Documentación -...
La clase ExportManager, que combina la generación de PDF, CSV y Excel fue una mala idea. Estos formatos son demasiando diferentes como para unificarlos. En su lugar se deben crear clases independientes para cada uno. Necesitamos una nueva clase ExportPDF que permita: - Poder añadir...
Reemplazar **bootbox**, la librería javascript que utilizamos para mostrar los modal de confirmación y eliminar, por algo nativo. ## Motivación Bootbox es una dependencia que va ligada a bootstrap, y que aporta una funcionalidad que tampoco es demasiado compleja como para hacerla nosotros....
Alguien que tenga conocimientos amplios de contabilidad y que esté dispuesto a añadir soporte para la contabilización de los anticipos recibidos.
Los métodos ``max()`` y ``min()`` de la clase ``DbQuery`` devuelven siempre un float, pero en ocaciones queremos operar con cadenas, fechas o bien horas, por lo que hay que añadir los métodos ``maxString()`` y ``minString()`` que no hagan esta conversión a float que hacen los métodos...
(BUG) al instalar con MySql/Mariadb, nos permite poner mayúsculas en el nombre de la base de datos, lo cual es muy problemático. No debe dejar poner mayúsculas en el nombre de la base de datos en ningún caso.
El proceso de cierre del ejercicio, cuando crea los asientos de regularización, cierre y apertura, no debería tener en cuenta los bloqueos de regularizaciones de impuestos. ## Implementación Habrá que modificar tanto el modelo Asiento o Partida como la clase para cerrar el...
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...
(BUG) Cuando aprobamos un pedido, generamos un albarán, y luego eliminamos una línea del albarán, no se está restaurando el stock (reservado / pendiente) del producto de la línea eliminada. ## Implementación Hay que implementar el correspondiente test unitario. ### Cliente...
Poder agrupar todos los albaranes de un rango de fechas de todos los clientes en sus respectivas facturas en un solo click. Ejemplo, clientes que generan 500 albaranes al mes.
Poder bloquear las variantes de un producto sin bloquear el producto. Esto es necesario porque en ocasiones simplemente se deja de distribuir una variante del producto (color, talla, temporada, etc) pero el producto se sigue vendiendo en otras variantes.
Necesitamos ampliar algunas funciones del logger, así como moverlo fuera de la carpeta Core/Base. La nueva clase se llamará Core/Logger y será una copia del MiniLog, pero con las siguientes funciones adicionales: ### readLast(int $count = 1, string $channel = '', string $level =...
En los ListView y EditListView cuando ejecutamos una acción y estamos en una página o tenemos un filtro aplicado mantener dichos filtros o página activa.
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 la 4100, etc. ##...
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 que marcar...
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 conveniente preguntarse...
(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 asiento de...
Al generar el asiento de la factura, debe generarlo bloqueado, o por lo menos bloquearlo al terminar de generarlo. ## Pruebas 1. Hacer una factura con una línea con precio 100 y cantidad 1. 2. Comprobar que se ha creado un asiento y que está bloqueado. 3. Modificar el precio de la línea....
En ocasiones necesitamos procesar un trabajo rápido, pero dentro de un par de minutos. La cola de trabajo no nos sirve porque procesa los trabajos conforme se crean, sin esperar. Pero podemos hacer que la cola de trabajo pueda gestionar trabajos futuros. ## Solución Al registrar un evento,...
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 Hay que añadir...
(BUG) Cuando tenemos alguna columna con nombre reservado como **user** y además tenemos una clave ajena ahí, en PostgreSQL es necesario poner el nombre de la columna entre comillas dobles, pero en MySQL con comillas tipo acento. Necesitamos poder poner comillas en las constraints del xml de las...
Necesitamos poder establecer una fortaleza mínima para las contraseñas de usuarios, en una constante en el config.php, por ejemplo FS_PASSWORDS_STRENGTH, con valores posibles ``low``, ``medium`` y ``hard``: - low: mínimo 6 caracteres. - medium: mínimo 10 caracteres, con números, letras y...
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) tiene este...
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.
Para reemplazar mc20prinetr podemos probar este programa, que a parte de poder enviar datos a impresoras, también permite recoger datos de básculas y otros dispositivos: - https://qz.io/ Si no funcionase, entonces podemos probar este otro, pero solamente sirve imprimir tickets desde...
(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.
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...
Añadir migración de datos de trazabilidad cuando el plugin Trazabilidad está activado: - https://facturascripts.com/plugins/trazabilidad
Probar [Laravel Prompts](https://laravel.com/docs/10.x/prompts) para solicitar información al usuario: con esta librería podemos diseñar formularios sencillos para el terminal, de forma que sea más amigable e intuitivo su uso. Esta librería **se puede usar de forma independiente**, sin...
(Init.php) Añadir una comprobación para desvincular facturas de retenciones que ya no existen. Ejecutar esta función desde el Init::update() del plugin.
Al añadir líneas a un **documento de compra o venta**, debemos rellenar el **campo orden** con un valor cada vez más alto. De esta forma cuando usamos un plugin como **ProductoPack**, que añade más líneas, las añadirá justo debajo de la original, en lugar de al final del documento.
Añadir el **widget subcuenta**, similar al [widget variante](/publicaciones/widget-variante), pero para seleccionar una subcuenta. En muchas pantallas tenemos campo autocompletar para las subcuentas, pero a veces queremos buscar la subcuenta por el nombre y no podemos. O tenemos cuentas...
Modificar el mod que añade el campo porcomision a las líneas de venta para que en la función map() actualice el valor de porcomision.
Añadir botón convertir en proveedor a la pestaña contacto del agente. Copiar el código de EditContacto que ya tiene un botón similar.
Cuando una factura de venta ya tiene liquidación, modificar el campo totalcomision del pié de página para convertir la etiqueta en un enlace a la comisión, que además tenga un icono de double-check. ![enlace liquidación](https://i.imgur.com/ReAPZlK.png) Es decir, hay que sustituir...
(BUG) varios clientes informan de que los nuevos cálculos no se corresponden con los impuestos reales de la facturación (la suma de los IVAs en las facturas no son iguales a lo que calcula el plugin). ## Historial de cambios Estos son los cambios que se han realizado recientemente. -...
(Posible bug) Comprobar que el plugin tiene en cuenta la fecha de devengo de las facturas.
(Posible bug) al instalar un plugin, consultar la forja para ver la versión máxima del core para ese plugin. Si es menor que la actual, sacar un aviso.
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.
Añadir la columna total_pendiente a las facturas de compra y de venta, para indicar el importe pendiente de pago. Mostrar este campo en los listados y actualizarlo conforme a los recibos. ## Implementación Ya existe una clase que actualiza la factura cuando se modifican los recibos. Hay que...
(BUG) ahora mismo 2 procesos que se ejecuten en paralelo pueden llegar a procesar el mismo evento. Esto es debido al tiempo que pasa entre que se obtiene de la base de datos el siguiente evento a procesar y cuando se bloquea el proceso. En esos milisegundos puede que otro proceso llegue casi a la...
(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 datetime para...
Actualmente el widgetLibrary carga 50 elementos, cuando son imágenes carga la imagen completa, si casualmente caarga 50 imágenes de varios megas cada una relentiza mucho la carga de la página. En el modelo ProductoImagen se usa la función getThumbnail() para reducir el tamaño de las...
Al crear un **cliente o proveedor**, si existe el Plan Contable, **crear subcuenta automáticamente** y relacionarla. Añadir también un botón a la pestaña de subcuentas, en la página del cliente o proveedor, para poder crear la subcuenta del cliente, si no existe.
Añadir el campo **dailyexec** al modelo CronJob para poder almacenar el número de ejecuciones diarias del trabajo. Modificar: - Tabla - Modelo - XMLViews ## CronClass Modificar CronClass::jobDone() para que: - Ponga a 0 dailyexec cuando la fecha de la última ejecución no es de hoy. -...
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 cambio...
Modificar la clases de Core/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). ## Requisito Hay que completar primero la [tarea...