# Novedades de la versión

A continuación pasamos a comentar las novedades de la versión.

## Versión 37.0

### VERP-3201

#### General. Descargar ficheros del FTP siempre en el cliente y ejecutar la importación en 3P

Modificada la importación de ficheros JSON en instalaciones nuevas para que la descarga desde el FTP se realice evitando escribir ficheros en la carpeta de la solución (/Velneo/cajas/vERP\_2/).

Anteriormente, cuando la importación se ejecutaba en el servidor, los JSON se descargaban directamente a la carpeta de la solución. Según las directrices de plataforma, dicha carpeta solo debe contener ficheros declarados como adjuntos.&#x20;

Objetos modificados

* Proyecto aplicacion
  * Procesos DES\_DAT\_JSO
* Proyecto daatos
  * Procesos IMP\_JSO

### VERP-3349

#### vERP. Generación de datos sintéticos con IA

Se añade al menú de utilidades en el menu superior de Configuracion de vERP una nueva opción "Generar datos sintéticos" que solo estará visible para administradores (supervisores).

Objetos del proyecto de datos:

* Nueva tabla TAB\_MEM\_W → Tabla en memoria que se usa para mostrar la lista de tablas a seleccionar para la generación de los datos.

Objetos del proyecto de aplicación:

* Nuevo scripts:
  * Nuevo script vTools/db/generarDatosSinteticosTablas.js → Recibe una lista de tablas y genera los registros con datos sintéticos creados por la IA.
  * Añado en el script vTools/utils.js se ha añadido la función getTableSchema(tablaInfo) que devuelve el esquema de la tabla y sus campos en formato json.
* Nueva carpeta Recursos/vTools/Generador de datos sintéticos.
  * Nuevo formulario GEN\_DAT\_SIN → Formulario de generación de datos sintéticos donde pueden elegir las tablas, ajustar el nº de registros y pulsar el botón generar.
  * Nueva rejilla TAB\_MEM\_W → Se usa para mostrar las tablas de la aplicación a seleccionar.
  * Nuevo proceso GEN\_DAT\_SIN\_TO\_TAB\_MEM → Se usa para mostrar la vista de datos con la rejilla para la selección de tablas.
  * Nuevo proceso GEN\_DAT\_SIN\_2P → Generar los datos sintéticos en 2º plano.
  * Nueva acción GEN\_DAT\_SIN → Generador de datos sintéticos que ejecuta desde el menú Supervisor → Utilidades.
* Menú PRN\_UTI - Utilidades → Se añade la acción GEN\_DAT\_SIN -> Generador de datos sintéticos.

### VERP-3358

#### General. Validación dinámica de formularios

La validación dinámica es una funcionalidad nueva que permite definir en tiempo de ejecución, sin requerir cambios en programación las validaciones a realizar en cualquier formulario que tenga implementado en el manejador previo al botón aceptar la ejecución de la validación.\
\
La opción de configuración está a nivel de supervisor. Toda la configuración se guarda en tablas lo que permite copiarlo entre instancias.

Flujo de configuración:

* Dentro de la configuración de un formulario se selecciona el proyecto y el formulario.
* Haciendo drag\&drop podemos arrastrar desde las lista de controles y campos (si el formulario tiene origen).
* Una vez generada la regla se puede editar directamente en la rejilla las columnas de regla, valor y mensaje.
* Haciendo drag\&drop desde los grupos de usuario podemos asignar que una regla solo se aplique a usuarios de esos grupos.
* Para desasignar un grupo de usuario solo hace falta hacer drag\&drop del grupo a la regla y se eliminará, es decir que funciona como un interruptor.
* Para eliminar una regla hacer drag\&drop desde la rejilla de reglas hacia la lista de controles o campos.

&#x20;Aplicación de la validación dinámica:

* En el manejador de evento asociado a previo al botón aceptar, se pega el siguiente código (que siempre es igual, no requiere personalización)\
  // Rem ( Validaciones )\
  Ejecutar script (filescript) ( (CurrentProject)/js/interface/validacionDinamica.js )\
  If ( NO\_ACE )\
  Set retorno proceso = NO\
  Finalizar proceso
* Al pegarlo se creará la variable local NO\_ACE (booleana, no acpetar) que el JS se encarga de poner a 1 si alguna regla no se cumple.
* Lógicamente, tras pegar ese código debería quitarse la validación de datos que se realice en ese manejador.
* Con vERP se entregarán los JSON de las validaciones existentes en las tabla de objetos y reglas de validación.

Objetos del proyecto de datos:

* Nueva función VAL\_REG\_W\_ACT\_JSN → Actualiza el JSON con las reglas a aplicar en las comprobaciones de un formulario (Lo ejecutan los triggers de las reglas).
* Nueva tabla VAL\_CTL\_MEM\_W → Tabla en memoria que sirve para mostrar los controles de un formulario y los campos de la tabla origen del formulario.
* Nueva tabla VAL\_OBJ\_W → Almacena los formularios configurados para realizar comprobaciones.
* Nueva tabla VAL\_REG\_W → Almacena las reglas de validación de cada formulario.
* Nuevo icono VAL\_OBJ\_W → Icono para la tabla de formularios con validación dinámica configurada.
* Nuevo icono VAL\_REG\_W → Icono para la tabla de reglas de validación dinámica de formularios.
* Nueva tabla estática VAL\_CTL\_CAM → Se usa para diferenciar en la tabla en memoria si el registro pertenece a un control o a un campo.
* Nuevo icono de tabla estática VAL\_CTL\_CAM\_CAM → Campo.
* Nuevo icono de tabla estática VAL\_CTL\_CAM\_CLT → Control.
* Nueva tabla estática VAL\_REG → Reglas de validación a aplicar a un control o campo.
* Nueva tabla estática VAL\_TIP\_DAT → Tipos de datos de los controles y campos.

&#x20;Objetos del proyecto de aplicación:

* Nuevo script js/interfaz/validacionDinamica.js → Es un JS genérico que realiza las comprobaciones basándose en la configuración realizada.
* Función USR\_GRP\_M\_ID\_TO\_NOM → Devuelve los nombres de grupos de usuarios a partir de los id almacenados en un array. Se usa para mostrar los grupos en la rejilla.
* Carpeta Validación dinámica (completa) dentro de la carpeta del módulo de configuración.

### VERP-3388

#### Gestión: Generación de facturas de venta y compra a partir de ingresos o gastos recurrentes con diferentes opciones de periodicidad (mensual, bimensual, trimestral o anual) y con la posibilidad de tener como origen un artículo o una factura (en este caso, se usará la factura como origen para ser duplicada en cada generación de facturas)

**Proyecto de datos**

**Objetos nuevos**

* Tablas:
  * COM\_FAC\_REC
  * VTA\_FAC\_REC
* Tablas estáticas:
  * PER\_FAC
* Dibujos:
  * ANU
  * BIM
  * MEN
  * TRI

**Objetos modificados**

* Tablas:
  * COM\_FAC\_G
  * VTA\_FAC\_G

**Proyecto de aplicación**

**Objetos nuevos**

* Formularios:
  * ART\_M\_COM\_FAC\_G\_REC
  * ART\_M\_VTA\_FAC\_G\_REC
  * COM\_FAG\_G\_REC\_MEN
  * COM\_FAG\_G\_REC
  * COM\_FAG\_G\_REC\_INS
  * DAT\_FCH\_FAC\_REC
  * ENT\_M\_COM\_FAC\_G\_REC
  * ENT\_M\_VTA\_FAC\_G\_REC
  * VTA\_FAG\_G\_REC\_MEN
  * VTA\_FAG\_G\_REC
  * VTA\_FAG\_G\_REC\_INS
* Alternadores:
  * COM\_FAC\_G\_REC
  * COM\_FAC\_G\_REC\_ART
  * COM\_FAC\_G\_REC\_PRV
  * VTA\_FAC\_G\_REC
  * VTA\_FAC\_G\_REC\_ART
  * VTA\_FAC\_G\_REC\_CLT
* Rejillas:
  * COM\_FAC\_G\_REC
  * COM\_FAC\_G\_REC\_ART
  * COM\_FAC\_G\_REC\_PRV
  * VTA\_FAC\_G\_REC
  * VTA\_FAC\_G\_REC\_ART
  * VTA\_FAC\_G\_REC\_CLT
* Búsquedas:
  * COM\_FAC\_G\_REC
  * VTA\_FAC\_G\_REC
* Procesos:
  * COM\_FAC\_G\_REC\_FAC\_3P
  * VTA\_FAC\_G\_REC\_FAC\_3P
  * USR\_VAR\_W\_TO\_COM\_FAC\_REC\_VAC
  * USR\_VAR\_W\_TO\_VTA\_FAC\_REC\_VAC
  * ART\_M\_TO\_VTA\_FAC\_G\_REC
  * ENT\_M\_TO\_COM\_FAC\_G\_REC
  * ENT\_M\_TO\_VTA\_FAC\_G\_REC
* Tubos:
  * COM\_FAC\_G\_REC\_ORI\_TO\_MOV
  * COM\_FAC\_G\_REC\_TO\_MOV
  * VTA\_FAC\_G\_REC\_ORI\_TO\_MOV
  * VTA\_FAC\_G\_REC\_TO\_MOV
* Acciones:
  * COM\_FAC\_G\_REC
  * COM\_FAC\_G\_REC\_SEL
  * COM\_FAC\_G\_REC\_INS
  * COM\_FAC\_G\_REC\_INS\_TAB
  * COM\_FAC\_G\_REC\_MAS\_INS
  * COM\_FAC\_G\_REC\_MAS\_INS\_TAB
  * VTA\_FAC\_G\_REC
  * VTA\_FAC\_G\_REC\_SEL
  * VTA\_FAC\_G\_REC\_INS
  * VTA\_FAC\_G\_REC\_INS\_TAB
  * VTA\_FAC\_G\_REC\_MAS\_INS
  * VTA\_FAC\_G\_REC\_MAS\_INS\_TAB
* Toolbars:
  * COM\_FAC\_G\_REC
  * VTA\_FAC\_G\_REC
* Menús:
  * COM\_FAC\_G\_REC\_TLB\_MAS
  * VTA\_FAC\_G\_REC\_TLB\_MAS
* Menús de botón:
  * Carpetas con los objetos de menús de botón para cliente, artículo, proveedor, serie, factura y factura origen en compras y ventas.&#x20;

**Objetos modificados**

* Formularios:
  * ART\_M
  * ENT\_M\_COM
  * ENT\_M\_VTA
* Rejillas:
  * COM\_FAC\_G
  * VTA\_FAC\_G
* Procesos:
  * COM\_FAC\_G\_NUE
  * VTA\_FAC\_G\_NUE

### VERP-3434

#### Generación de documentos de compras (pedidos) y ventas (presupuestos y pedidos) mediante prompt y voz

Añadida la posibilidad de generar pedidos de compra, presupuesto y pedidos de venta mediante un prompt de voz o texto desde los menús correspondientes.

En las toolbars de pedidos de compra, presupuestos de venta y pedidos de venta, encontraremos una opción para generar los documentos partiendo de un prompt.

Se generarán los datos de la cabecera, pie y las líneas de detalle.

Se localizará en la base de datos el cliente o proveedor por nombre. En el caso de no ser encontrado, se procederá a la creación del mismo de forma automática. Si encuentra más de un registro por aproximación del nombre, nos mostrará un selector para elegirlo.

La misma funcionalidad será realizada con los productos de las líneas de detalle.

### VERP-3501

#### En ejecución web, contemplar la ejecución del marco de escritorio o de móvil

Cuando se ejecuta vERP desde web, se ha modificado para conseguir ejecutar el marco adecuado, para que si se ejecuta desde navegador web en escritorio, o bien desde navegador web en dispositivo móvil, que se ejecute el marco correcto.

Objetos modificados:

* Proceso: ON\_INIT\_CLIENT

### VERP-3577

#### Generación de asientos contables desde prompt de texto o voz

Ahora en Velneo ERP tienes un experto contable que puede ayudarte en la introducción de asiento desde un prompt de texto o voz.

Simplemente escribiendo el tipo de asiento contable que quieres generar, el asistente IA se encargará de generar los apuntes correspondientes, los registros de IVA (si son facturas de compra o venta), generación de la cartera de cobros y pagos, pagos de los vencimientos, …

**Objetos modificados:**

* Tablas: EMP\_M (nuevo campo IA\_GEN\_ASI\_PRO\_DSC)
* Alternadores: ASI\_C (Añadido manejador de evento ASI\_C\_IA\_GEN y su correspondiente conexión de evento)
* Menús: ASI\_C\_TLB\_MAS (Añadida acción ASI\_C\_OPC\_IA\_GEN)
* Formularios: EMP\_M\_CFG\_IA (Añadido subformulario EMP\_M\_CFG\_IA\_GEN\_ASI\_PRO en el pestañador)

**Objetos nuevos:**

* Formularios: EMP\_M\_CFG\_IA\_GEN\_ASI\_PRO
* Procesos: ASI\_C\_IA\_GEN
* Acciones: ASI\_C\_OPC\_IA\_GEN

### VERP-3585

#### General. Campo alfanumérico se rellena con contenido numérico

En el **proceso ENT\_M\_ALT\_MOD en dos instrucciones distintas,** al crear la nueva ficha en la tabla DIR\_M, el campo PRN se rellena a 1, pero este campo es alfanumérico por lo que igual tendría que rellenarse con "1".&#x20;

Objetos modificados

Proyecto de aplicación

* Procesos
  * ENT\_M\_ALT\_MOD
* Rejilla
  * DIR\_M\_ENT

&#x20;Proyecto de datos

* Procesos
  * ENT\_M\_ALT\_MOD

### VERP-3602

#### vERP. Mejoras en la validación dinámica de fórmularios

* Se añade la opción de validación mediante fórmula. La tabla estática VAL\_REG tiene ahora los siguiente valores:
  * 1 - Obligatorio.
  * 2 - Longitud mínima.
  * 3 - Longitud máxima.
  * 4 - Valor mínimo.
  * 5 - Valor máximo.
  * 6 - Contiene.
  * 7 - No contiene.
  * 8 - Fecha no futura.
  * 9 - Expresión regular.
  * 0 - Fórmula.
* En la tabla VAL\_REG\_W (Validación dinámica: Reglas):
  * Se añade el campo FOR de tipo objeto texto que se editará con el control de edición de fórmula asignándole la tabla dinámicamente mediante la nueva función JS.
  * Se modifica el campo MSG\_ERR que pasa de tipo alfabético a objeto texto ya que se editará mediante un control de edición de fórmula. Esto permite que el mensaje de error pueda usar constantes que facilitan el multi-idioma en las aplicaciones.
* Se usa en la edición de fórmulas las nuevas propiedades del control de edición de fórmula para poder editar fórmula de origen de cualquier tabla sin necesidad de crear campos objeto fórmula.
* Se mejora la notificación de errores que ahora:
  * Muestra todos los errores en un único mensaje.
  * El foco se posiciona en el primer control con error.
  * En la lista de errores detectados se muestran los 3 primeros, y se indica en otra línea el nº de mensajes no especificados.

### VERP-3618

#### General. Al crear una nueva forma de pago da error al activar el check de aplicar condiciones especiales

Objetos modificados:

* Proyecto de aplicación
  * Formularios
    * FPG\_M
      * Control TXT\_TPV
      * Manejador SEP\_PES\_CND\_ESP\_SI

### VERP-3654

#### API REST. Nueva versión de ApiRest V3 con nuevas funcionalidades

**Objetos modificados**

* Proyecto de datos
  * Scripts
    * js/api\_rest\_v2/openapi.js
* Proyecto de aplicación
  * Formulario
    * API\_SEG\_W
  * Rejillas
    * API\_SEG\_W
    * API\_SEW\_W\_API\_KEY

&#x20;**Objetos añadidos**

* Proyecto de datos
  * Procesos
    * V3
  * Scripts
    * js/api\_rest\_v3/api\_rest\_funciones\_v3.js
    * js/api\_rest\_v3/openapi\_v3.js
    * js/api\_rest\_v3/\_v3.js
* Proyectos de aplicación
  * Formulario
    * API\_SEG\_W\_IND

### VERP-3655

#### MCP. Nuevo servidor MCP para conectar vERP con asistentes de IA

vERP incorpora un servidor MCP (Model Context Protocol) que permite a cualquier asistente de IA compatible interactuar directamente con los datos y procesos del ERP. El servidor expone procesos, búsquedas y tablas de Velneo como herramientas y recursos accesibles por IA, con autenticación por Bearer token y control de seguridad mediante lista blanca de procesos autorizados.

La configuración se gestiona desde la propia ficha de API Key, donde se pueden habilitar las capacidades MCP y definir los permisos de acceso.

Objetos nuevos:

* Proyecto de datos
  * Scripts js/MCP/MCP.js, js/MCP/mcp\_funciones.js, js/MCP/mcp\_seguridad.js, js/MCP/velneo\_procesos.js, js/MCP/velneo\_busquedas.js, js/MCP/velneo\_tablas.js
  * Procesos MCP
* Proyecto aplicación
  * Formularios API\_KEY\_CFG\_DSC y API\_KEY\_CFG\_GEN

Objetos modificados:

* Proyecto datos
  * Tabla API\_KEY\_W
* Proyecto de aplicación
  * Formularios API\_KEY\_CFG y API\_SEG\_W\_NOT

### VERP-3680

#### General. Generación de dashboards con scripts

Se ha potenciado el uso de los scripts para permitir alojar allí la generación de gráficos/dashboards. Actualmente con la IA y el API de Velneo (vJavascript) se pueden conseguir resultados muy avanzados y profesionales.

Cada script se puede asignar a usuarios. Se ha implementado un menú donde ver los dashboards del usuario. Así mismo, se puede marcar los dashboards que el usuario quiere que se le “disparen” al entrar (iniciar) en la aplicación. Por seguridad también se ha implementado una lista negra de comandos que impiden ejecutar el script (altas/modificaciones/eliminaciones de registros a través de vJavascript API Velneo).

Objetos modificados:

* Proyecto de datos
  * Tabla SCR\_W
* Proyecto de aplicación
  * Formulario SCR\_W
  * Proceso AUTOEXEC\_POS\_INI

Objetos nuevos:

* Proyecto de datos
  * Scripts de la carpeta js/graficos\_Dinamicos
  * Tabla USR\_SCR\_M
  * Función EJE\_SCR
  * Procesos EJE\_SCR y REC\_SCR\_AUT\_GEN
* Proyecto de aplicación
  * Rejilla USR\_SCR\_M\_USR
  * Formularios SCR\_W\_RES y SCR\_W\_USR
  * Carpeta “Dashboards dinámicos con scripts” (está dentro de la carpeta "Maestros")

### VERP-3684

#### General: error en la condición para activar/desactivar la opción de cambiar de instancia al ejecutar la aplicación

Objetos modificados:

* Proyecto de aplicación.
  * Proceso AUTOEXEC\_PRE\_INI

### VERP-3709

#### API REST. Configuración masiva de endpoints de seguridad

Nueva funcionalidad que permite agregar y configurar múltiples tablas a la vez en la seguridad de un API KEY. Selecciona las tablas que necesitas, define los métodos HTTP y permisos, y aplica la configuración de forma masiva. Si el endpoint ya existe, se actualiza automáticamente; si no existe, se crea. Ahorra tiempo y simplifica la gestión de permisos en tu API REST.

* Objetos nuevos:
  * Proyecto de datos
    * Tablas API\_SEG\_MEM\_W
  * Proyecto de aplicación
    * Dibujo ALT\_MAS
    * Formularios API\_SEG\_MEM\_W y API\_SEG\_MEM\_W\_MOD\_ATR\_MAS
    * Rejillas API\_SEG\_MEM\_W
    * Procesos API\_SEG\_MEM\_W\_LST\_VAC y API\_SEG\_ADD\_REG
    * Script js/datos/leerTablasParaAPI.js
* Objetos modificados:
  * Proyecto de aplicación
    * Formulario API\_KEY\_W

### VERP-3714

#### vERP. General añadir columna Empresa división en las rejillas de documentos de venta (presupuestos, pedidos, albaranes y facturas de venta)

Añadida configuración en empresas que permite activar la visualización de una nueva columna en la rejilla de facturas de venta, donde se visualiza la división de la empresa de cada factura. En la empresa se configura para todas las divisiones de la misma en el formulario Varios de configuración.

Objetos modificados:

* Proyecto de datos
  * Tabla EMP\_M
* Proyecto de aplicación.
  * Formulario EMP\_M\_CFG\_VAR
  * Rejillas VTA\_PRE\_G, VTA\_PED\_G, VTA\_ALB\_G y VTA\_FAC\_G
