Sugerencia #2560

Fecha de creación: 14-06-2023 18:12:25 CORE v9999
PRO
neorazorx_1

Autor


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 añaden como filtros, salvo que tenga filter='false'.
  • Por defecto todas las columnas se usan cuando escribimos un texto en el buscador de la pestaña, salvo que la columna tenga search='false'.
  • Se pueden añadir botones en columnas.
  • A las funciones javascript se le puede indicar la columna del modelo (o columnas) a pasar como parámetros. Ejemplo: myJsFunction($this->id)
  • Se pueden añadir totales, filtros y opciones de ordenación desde el xml.
  • Se pueden añadir assets javascript y css desde el xml.
  • Todas las etiquetas principales tienen que tener un name, para poder modificar el contenido desde extensiones.
  • Si hay un modal new, se abre cuando pulsamos el botón nuevo de la pestaña.
  • Si hay un modal delete, se abre cuando pulsamos el botón eliminar de la pestaña.
<?xml version='1.0' encoding='UTF-8'?>
<list>
    <columns>
        <column name='code' fieldname='codigo' order='100'>
            <widget type='text'/>
        </column>
        <column name='description' fieldname='descripcion' order='105'>
            <widget type='text'/>
        </column>
        <column name='state' fieldname='estado' display='center' filter='false' search='false' sort='false' order='110'>
            <widget type='text'>
                <option color='success'>ABIERTO</option>
                <option color='warning'>CERRADO</option>
            </widget>
        </column>
        <column name='info' display='right' order='120'>
            <widget type='buttonJs' label='info' icon='fas fa-info-sign' function='myJsFunction($this->id)'/>
        </column>
    </columns>
    <colors>
        <option name='pending' color='info' fieldname='estado'>Pendiente</option>
        <option name='parcial' color='warning' fieldname='estado'>Parcial</option>
    </colors>
    <totals>
        <total name='invoiced' sql='SUM(total_facturas)'/>
        <total name='pending' sql='SUM(total_pending)'/>
    </totals>
    <search>
        <option name='observaciones'/>
        <option name='codbarras'/>
    </search>
    <filters>
        <filter type='select' name='status' fieldname='estado'/>
    </filter>
    <sort>
        <option name='creationdate' fieldname='creationdate,id'/>
    </sort>
    <buttons>
        <button name='change' icon='fas fa-edit' modal='my-modal'/>
    </buttons>
    <modals>
        <modal name='new'>
            <column name='code' fieldname='codigo' order='100'>
                <widget type='text' required='true'/>
            </column>
            <column name='description' fieldname='descripcion' order='105'>
                <widget type='text' required='true'/>
            </column>
            <buttons>
                <button name='new' type='submit'/>
            </buttons>
        </modal>
        <modal name='my-modal' btnlabel='change'>
            <column name='state' order='100'>
                <widget type='text'>
                    <value>ABIERTO</option>
                    <value>CERRADO</option>
                </widget>
            </column>
            <buttons>
                <button name='change' type='submit'/>
            </buttons>
        </modal>
    </modals>
    <assets>
        <asset name='my-js' type='js' src='Dinamic/Assets/JS/xxx.js'/>
    </assets>
</list>

columns

Dentro de la etiqueta columns tendríamos una etiqueta column para cada columna. El fieldname iría en la columna. Todas las columnas se añadirían como opciones de búsqueda, filtros y ordenación, salvo que se incluya search='false' o filter='false' o sort='false'.

onhover

También es interesante añadir la opción de onhover, para poder definir una función javascript que se ejecutará cuando se ponga el ratón encima del widget, de esta forma podríamos mostrar el típico tooltip con más detalles.

onclick

Al hacer clic en la fila o la columna, ejecutar una determinada función javascript.

colors

Podemos definir la configuración de colores dentro de la etiqueta colors, en lugar de usar un row status como ahora. Así es más intuitivo.

totals

Dentro de la etiqueta totals definimos los totales que vamos a mostrar y cómo se calculan. La idea es que podamos hacer cálculos más complejos como la media de valores o multiplicar los valores de columnas.

search

Dentro de la etiqueta search añadimos las columnas adicionales que queremos usar para el buscador del listado. Por defecto ya se usarán todas las columnas definidas dentro de la etiqueta columns, salvo que tengan search='false'.

filters

Colocamos una etiqueta filter por cada filtro que queramos añadir. Estos serán filtros adicionales a los generados automáticamente, es decir, para cada columna dentro de la etiqueta columns se añadirá el correspondiente filtro, salvo que la columna tenga filter='false'.

También es interesante el mostrar botones de filtrar en las columnas, como se hacía en la versión 2017, donde al ver el listado de facturas aparecía un + al lado del nombre del clente para poder filtrar por cliente en ese mismo listado.

filtro columna

Quizás podríamos conseguir esto poniendo la propiedad linkfilter='nombre-filtro' en la etiqueta column o widget. Así podemos indicar cual es el filtro relacionado y también nos sirve para ponerlo solamente en las columnas que queramos.

sort

Dentro de la etiqueta sort añadimos una etiqueta options por cada columna que queramos añadir como opción de ordenación. Por defecto ya se añaden todas las que hay que columns, salvo que tengan sort='false'.

buttons

Aquí podemos añadir botones que aparecerán arriba a la izquierda, al lado del botón nuevo.

modals

Aquí definimos los modals que vayamos a usar, pero con la etiqueta modal en lugar de group como ahora. Además de que podemos definir los botones a mostrar.

Es importante tener alguna propiedad en el modal para indicar cuando queremos que sea un formulario independiente y cuando no. En ocasiones querremos que al pulsar el botón del modal se envíen solamente los datos del modal y no el resto de campos de los filtros del listado o de otros modals. Pero en otras ocasiones podemos querer que al enviar el modal se envíe también el resto de información de filtros del listado. Por eso podríamos poner una propiedad form='new' o form='same', por ejemplo.

assets

Aquí podemos definir archivos javascript o css que haya que cargar cuando se está mostrando este listado.

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 #3596

En ocasiones tenemos trabajos en segundo plano que pueden tardar varios segundos y es mejor que los procese el cron (el cron ejecuta hasta 1000 eventos de la cola de trabajos), pero no queremos un cronjob porque no se va a ejecutar todos los días, solamente cuando se dispare...

CORE - Pendiente 03-10-2024
Tarea #3571

Añadir bootstrap icons y combinar todo el CSS en un único archivo. AssetManager El AssetManager permite ahora combinar todo el CSS en un único archivo. Para ello simplemente hay que reemplazar la carga de archivos CSS en la plantilla twig de esto: {% block css %} ...

CORE - Pendiente 01-10-2024
Tarea #3569

Eliminación de clases obsoletas: Core/App/AppSettings.php Core/Base/CronClass.php Core/Base/DivisaTools.php Core/Base/InitClass.php Core/Base/NumberTools.php Core/Base/ToolBox.php Core/Base/Translator.php

CORE - Pendiente 01-10-2024
Tarea #3566

Hay que mover la generación de tokens a la clase Session. Ahora mismo la generación de tokens se realiza en Core/Lib/MultiRequestProtection. Pero debería realizarse en la case Core/Session, que es la que tiene la información del usuario que está ejecutando la petición....

CORE - Pendiente 01-10-2024
Tarea #3568

Hay que crear la nueva clase Controller, que será la base de los nuevos controladores. Su ubicación será Core/Template/Controller. Abandono de privateCore() y publicCore() Esta nueva clase debe abandonar el enfoque de tener un método para cuando el usuario ha iniciado...

CORE - Pendiente 01-10-2024
Tarea #3552

Hay que rediseñar la clase que maneja la base de datos para implementarla con PDO, soportar SQLite y permitir conectar a varias bases de datos. Implementación La nueva clase debe ser Core/DB y debe crear el objeto PDO para conectar a la base de datos y disponer de una serie...

CORE - Pendiente 27-09-2024
Tarea #3542

Añadir a las facturas la fecha de vencimiento. Este campo corresponde realmente a los recibos, pero podemos copiarlo a las facturas simplemente para poder verla en los listados y filtrar. Objetivo Poder ver desde el listado las fechas de vencimiento de las facturas....

CORE - Pendiente 25-09-2024
Tarea #3499

Modificar el widget select para ponerle un color warning o alguna advertencia cuando el valor guardado no está en la lista.

CORE - Pendiente 10-09-2024
Tarea #3448

Al cambiar el estado de un documento, cuando ese nuevo estado genera otro documento (por ejemplo al marcar un albarán como facturado), debería mostrar un modal donde poder seleccionar la fecha del nuevo documento. De esta forma al aprobar un albarán de compra podemos...

CORE - Pendiente 03-07-2024
Tarea #3447

(BUG) cuando tenemos una factura impagada y emitida, es decir, bloqueada. Si la marcamos como pagada nos aparece el modal donde seleccionar forma de pago y fecha, pero los campos aparecen bloqueados. Nunca deben estar bloqueados. Implementación Originalmente se usó...

CORE - Pendiente 03-07-2024
Tarea #3425

Necesitamos poder filtrar por país, provincia y ciudad en los listados de venta (facturas, albaranes, pedidos y presupuestos). Para ello hay que añadir esos filtros: Selector de país. Autocomplete de provincia. Autocomplete de ciudad.

CORE - Pendiente 19-06-2024
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 #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 #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 #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 #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 #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 #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 #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 #1334

Rediseñar la clase Model para reemplazar a ModelClass. La nueva versión que se colocaría en la carpeta Template, de acuerdo a la nueva estructura de carpetas del Core. La versión original permanecería en Core/Model/Base para mantener compatibilidad durante unos meses....

CORE - Pendiente 22-07-2022
Tarea #3558

(API) Necesitamos poder obtener los tokens para los archivos de myfiles. Hay que añadir un endpoint a la API para obtener rápidamente el token y la url completa, con token incluído, para un archivo de MyFiles. Ejemplo de uso En ocasiones leemos la lista de producto de la...

CORE - Pendiente 30-09-2024
Tarea #3399

(BUG) al aprobar documentos de compra, no debería copiar el campo numproveedor al siguiente documento, ya que si apruebas el albarán 123, puede que la factura no sea la 123.

CORE - Pendiente 28-05-2024
Tarea #3601

Añadir el método getLogo() al modelo Empresa, para que devuelva el AttachedFile del logotipo vinculado en el campo idlogo.

CORE - Pendiente 04-10-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 #2934

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

CORE - Pendiente 29-11-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 #1833

Al agrupar documentos, en el formulario, hay que poner tabindex="-1" en los campos desactivados, para que al pulsar tabulador para moverse entre campos, que no se mueva a esos campos desactivados.

CORE - Pendiente 16-11-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 #1745

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

CORE - Pendiente 21-10-2022
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 #2173

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.

CORE - Pendiente 14-02-2023
Tarea #3855

Cuando un plugin añade columnas a los formularios de edición de facturas (albranes, etc), cuando nos movemos con el tabulador, no sigue el orden de los campos. Hay que rellenar correctamente el tabindex o solucionarlo de alguna forma para que el tabulador se mueva de forma...

CORE - Pendiente 04-02-2025
Tarea #3822

Añadir el filtro de empresas a los listados de recibos (cuando hay más de una empresa). Como sucede en los listados de facturas.

CORE - Pendiente 13-01-2025
Tarea #3809

Añadir opción de establecer la serie para rectificativas, al igual que hacemos con la serie para las ventas.

CORE - Pendiente 02-01-2025
Tarea #3806

Añadir en el informe de productos cuando vemos el listado de ventas poder filtrar por agente, si es posible añadir mñas filtros tanto a compras como ventas.

CORE - Pendiente 30-12-2024
Tarea #3784

(BUG) Al sacar un listado de recibos, la suma total que aparece debajo de los recibo la muestra sin decimales.

CORE - Pendiente 12-12-2024
Tarea #3782

El listado de productos tiene un filtro para buscar por familia, y dentro de cda familia se pueden ver los productos de la familia. Hasta aquí correcot, pero escaso. ListProducto: Buscar la forma de añadir un filtro extra para que al filtrar por familia poder decir que...

CORE - Pendiente 12-12-2024
Tarea #3781

Añadir a los documentos de venta un filtro para buscar por país, ahora mismo se puede buscar por dirección pero n oes lo mismo, lo que se pretende es sacar todas las facturas de X país, o todas las facturas de esta fecha de este país, y actualmente no se puede.

CORE - Pendiente 12-12-2024
Tarea #3629

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

CORE - Pendiente 16-10-2024
Tarea #3771

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

CORE - Pendiente 03-12-2024
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...

CORE - Pendiente 24-06-2022
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 28-06-2022
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 21-06-2022
Tarea #3587

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

CORE - Pendiente 01-10-2024
Tarea #3277

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.

CORE - Pendiente 26-03-2024
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 #3455

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

CORE - Pendiente 09-07-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 #3162

Añadir el widget subcuenta, similar al 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 distintas en cada...

CORE - Pendiente 23-02-2024
Tarea #2650

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

CORE - Pendiente 24-07-2023
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-2025 FacturaScripts
0.21827s

Soporte