Bproc de Eventos
¿Qué es?
Un tipo de Bproc el cual permite integrar el sistema GO con aplicaciones especiales propias o con servicios de terceros. Su ejecución se lleva a cabo a partir de eventos (onChange, onExit y onClick) asociados a un campo de un formulario.
¿Cómo funciona?
Permite a los usuarios configurar reglas de negocio personalizadas directamente desde la interfaz de formularios, sin necesidad de programar código. El Bproc permitirá definir una URL para colocar un microservicio que se ejecute ante ciertos eventos (onChange, onExit y onClick).
Pasos a seguir
Crear un BProc de Evento:
- Acceder al maestro de BProcs (donde están todos los BProcs)
- Una vez en la pantalla de BProc, elegir la acción “Nuevo”
- Completar los campos (sección general): Una vez seleccionado para crear un nuevo BProc, completar los campos correspondientes:
- Nombre: Nombre del BProc
- Código: Código de identificación del BProc
- Activo: Estado del BProc, si es activo o inactivo.
- Tipo: Tipo de BProc, seleccionamos “Evento”.
- Aplicación: Seleccionar la aplicación a la que pertenezca nuestro BProc.
- Descripción: Descripción del BProc.
- URL: La url del microservicio que ejecutara el Bproc.

Una vez configurado el Bproc, nos dirigimos al formulario al cual queremos vincular el Bproc. Hacer click en el botón “Formato” (hoja que incluye una A) ubicado en la barra de herramientas del formulario (Para configurar el formato en maestros primero hay que ingresar en Administrar, por el lado de las transacciones podemos hacerlo desde una nueva o al ingresar a una ya cargada en el sistema).

Esto abrirá una nueva vista con el formato del formulario, donde podremos configurar el formulario, seleccionando la “Edición manual”, “Agregar Tab” y “Agregar widget”.
Al hacer click derecho en un campo del formulario se abrirá un desplegable con la opción “Configurar widget”
Al hacer click en “Configurar widget” se abrirá un pop-up en el cual podremos editar dicho campo.
En la parte inferior del pop-up se dispone la Configuración de Eventos, donde se presentan 2 columnas, una para el tipo de evento, donde se disponen 3 opciones; “OnChange”, “OnExit” y “OnClick“
El evento OnChange se dispara al realizar un cambio en el widget/campo (disponible para selectores y checkbox)
El evento OnExit se dispara al hacer foco en el widget/campo y luego salir haciendo click en otra parte del formulario (disponible para inputs)
El evento Onclick se dispara al hacer click en el widget/campo (disponible para botones)
Por otro lado, la columna para el Bproc de evento, donde a través de un selector que despliega las opciones posibles (Bproc de eventos disponibles), podremos elegir un Bproc de evento y asociarlo al tipo de evento.
Nota Importante:
- El tipo de evento estara limitado por el widget al cual se desea configurar un evento, es decir, los widgets de tipo selector solo habilitan eventos de tipo OnChange, mientras que los widgets de tipo input solo habilitan eventos de tipo OnExit mientras que los widgets de tipo boton solo habilitan eventos de tipo OnClick (esto esta ligado a la logica de su ejecucion)
- Solo es posible configurar un evento por widget, pero se pueden configurar varios eventos en diferentes widgets del formulario.
Caso de Uso
Vamos a analizar la estructura del siguiente script, su objetivo principal es recibir los datos de un formulario (o una petición), verificar si se seleccionó a un cliente/organización en particular (“Bruce Wayne”), y si es así, asignarle automáticamente una lista de precios específica antes de devolver los datos.
finnegans.scripting: Es una librería propia del sistema. Importa request (para leer la información que entra al script, como los datos que el usuario llenó en pantalla) y HTTPResponse (para enviar una respuesta de vuelta al sistema).
json: Sirve para convertir texto en formato JSON a diccionarios de Python (y viceversa), permitiendo manipular los datos fácilmente.
Todo el código está dentro de una función main().
El bloque try/except es una red de seguridad. Le dice al programa: “Intenta ejecutar el código principal. Si algo falla, no te rompas, salta al bloque except y maneja el error de forma controlada”.
- Esta funcion primero verifica que la estructura de datos sea la esperada preguntando si existe “widgets” y, dentro de este, “Organizacion”. Esto evita que el código arroje errores si recibe un formulario diferente.
- Extrae el valor actual de la Organización seleccionada.
- Verifica si el
idde esa organización es exactamente644y si su nombre (caption) es"Bruce Wayne". Ambas deben cumplirse. - Si la condición del paso anterior se cumplió (es decir, el cliente es Bruce Wayne), el script interviene los datos. Al campo
"ListaPrecio"le inyecta un nuevo valor por la fuerza: le asigna el ID30y el nombre"ListaPruebaCM".
(Estos datos coinciden con maestros activos en la bd) - Devuelve un
HTTPResponsecon el código200(que significa que se completo correctamente) y el nuevo cuerpo del mensaje. El sistema Finnegans tomará esto para actualizar la pantalla o guardar el registro. - Si en algún punto anterior hubo un error de programación o de formato de datos, el código llega aquí. Ingresa al bloque
excepty devuelve un código500(Error Interno del Servidor), para que el sistema sepa que el script no pudo terminar su trabajo con éxito.
A partir de este script podemos configurar un Evento de tipo OnChange en el widget “Cliente” en una factura de venta, para completar de forma automatica con una lista de precios por defecto.
Al disparar el evento se ejecuta el script, el cual obtiene el json con el formulario de la transacción, necesario para que el script pueda realizar los cambios configurados en el.
Nota: Es necesario especificar correctamente en la funcion los campos value de los widgets que se quieran modificar al disparar el evento





