Entradas

iText + GeneXus : riesgo legal de su uso sin licencia.

Si generás PDFs con GeneXus, seguro te cruzaste con iText (Java) o iTextSharp (.NET). Lo clave: las versiones modernas de iText ya no son gratuitas para uso empresarial salvo que cumplas AGPL ; de lo contrario, requieren licencia comercial . 1) Línea de tiempo (qué fue gratis y desde cuándo se paga) Gratis (para proyectos cerrados) iText 2.1.7 (Java) : bajo MPL/LGPL . Última “antigua”. iTextpdf iTextSharp 4.1.6 (.NET Framework) : última bajo MPL/LGPL . GitHub NuGet Desde iText 5 (7-Dic-2009) : dual AGPL + comercial . Si no podés/querés cumplir AGPL, tenés que licenciar (aplica también a iText 7/8). kb.itextpdf.com AGPL implica obligaciones de compartir código si hay interacción por red con el programa que incorpora iText; para evitarlo, se usa licencia comercial . kb.itextpdf.com 2) GeneXus hoy: por generador Java Default : PDFBox (Apache 2.0, sin costo). docs.genexus.com Opciones : iText (Legacy) = iText 2.x; iText 8 (AGPL/comercial). La posibilida...

La próxima generación de plataformas de desarrollo empresarial basadas en IA

Imagen
Las plataformas actuales de desarrollo requieren que aprendamos su lenguaje: sintaxis, configuraciones, patrones específicos . Pero… ¿qué pasaría si fuera la plataforma la que aprendiera a hablar el idioma empresarial ? La próxima generación de plataformas de IA para desarrollo no solo generará código; también comprenderá, interpretará y traducirá el conocimiento de negocio en aplicaciones completas y funcionales . Problema actual Cuando nos llega un nuevo requerimiento que dice: “ La cuarta medida determina un régimen simplificado de importación en el que se beneficiará una exoneración total de tributos a la importación para determinados productos. Se crea un régimen especial de importación en el que los comercios minoristas, de ramos generales, ubicados a menos de 60 km de la frontera, podrán importar, libres de todo tributo, productos que componen la canasta básica ” (*) Esto se traduce en semanas de trabajo que incluyen: Análisis legal y regulatorio Inte...

Cómo manejar Slow Changing Dimensions (SCD) en GeneXus — Ejemplo práctico con Ventas y Clientes

Imagen
Este es un problema básico en el modelado de sistemas y bases de datos, pero es el causante de algunos inconvenientes en el momento de hacer reportes.  En muchos casos, se decide modelar el modelo operacional de la forma fácil (SCD Tipo 1) y en la plataforma de BI se mantiene la historia con SCD Tipo 2. ** El problema Tenemos tres entidades: Clientes :  ClienteId ,  ClienteNombre ,  TipoClienteId . Ventas :  VentaId ,  ClienteId ,  Fecha ,  Monto . TipoCliente :  TipoClienteId ,  TipoClienteNombre  (Grande, Mediano, Chico). El sistema debe brindar el reporte de Ventas por Tipo de Cliente, para un rango de fechas TipoCliente, Total Vendido Grande         1000 Mediano         700 Chico             1200 Un dia, un cliente pasa de  Mediano  a  Grande . Si el reporte “Ventas por Tipo de Cliente” junta las ventas con el tipo actual del clie...

Extensiones/Asistentes en GeneXus que me gustaría tener

Imagen
  Se viene una nueva versión de GeneXus, que es la primera en incorporar inteligencia artificial en el IDE.  Esto nos abre la posibilidad de tener nuevos asistentes dentro del ide que nos automaticen tareas que en general son aburridas de hacer.  Algunos ejemplos de tareas que llevan mucho tiempo y podrían automatizarse Analizador de Errores de Compilación  Un programa que lea el output de Genexus con errores y proponga soluciones. Muchas veces Genexus tiene errores que se solucionan mandando a especificar forzado algún objeto. Lo que me interesa principalmente es deducir cuales son los objetos que deben forzarse y que los genere automáticamente.  Generar Scripts de CREATE TABLE Dada una tabla, crear un script para crear dicha tabla.  Es común tener que elegir un conjunto de tablas para hacer alguna prueba. Genexus es muy bueno para generar scripts de creación de toda la base de datos para los diferentes DBMS. Pero no es tan bueno para generar solo algunas ...

Por qué es clave actualizar tu versión de GeneXus (aunque duela un poco)

Imagen
En el mundo del desarrollo con GeneXus, trabajar con una versión antigua puede parecer cómodo, pero a la larga es una trampa silenciosa. Las migraciones o actualizaciones de versión no son solo una cuestión técnica: son una decisión estratégica que impacta en productividad, seguridad, mantenimiento y evolución del software.  ¿Por qué actualizar GeneXus? Seguridad y compatibilidad Cada nueva versión de GeneXus mejora el soporte para tecnologías modernas, navegadores actualizados, motores de base de datos y protocolos de seguridad (como OAuth, HTTPS, JWT). Seguir en versiones antiguas te expone a vulnerabilidades y dependencias obsoletas. Mejoras de performance y productividad Desde nuevas estructuras como SD Panels hasta herramientas como los Design Systems, la evolución de GeneXus no solo permite hacer más, sino hacerlo mejor y más rápido. Ignorarlo es perder ventaja competitiva. Soporte oficial y comunidad activa Las versiones antiguas eventualmente quedan sin soporte...

Envío y Recepción de Emails con OAuth desde GeneXus (Gmail / Office 365)

Con el aumento de las medidas de seguridad en servicios como Gmail y Office 365, el uso de usuario/contraseña para enviar correos electrónicos dejó de ser una opción viable. Actualmente, OAuth 2.0 es el estándar para autorizar el acceso a estos servicios. En este post, te muestro cómo integrarlo con GeneXus para enviar y recibir correos de forma segura. Por un tiempo funciono correctamente el generar "application specific passwords" generando y registrando dichas contraseñas, pero estan dejando de funcionar y ya no es tan facil llegar a generar nuevas contraseñas. Por eso, es importante actualizar las aplicationes que necesiten enviar o recibir mail con estos proveedores para que usen OAuth 2.0.  Para esto, se necesita usar el OAuth Module ,  y programar algo asi: &Success = OAuth.v2.RefreshToken( &OAuthAuthorizationConfig , &RefreshToken , &OAuthAccessToken , &DateTimeTokenExpire , &Messages ) if (NOT &Success ) ...

Edición masiva en GeneXus: Cerrar las pestañas References antes de empezar

Imagen
Si tu Knowledge Base contiene miles de objetos, cada Save puede convertirse en una pausa innecesaria: el IDE recalcula de inmediato la información mostrada en las pestañas References y Referenced by. Cuando estás haciendo cambios en serie (ajustes de propiedades, limpieza de variables sin uso, marcar objetos como Not Generated, importar objetos, etc.) ese refresco continuo añade segundos —o minutos— a tu tarea. ¿Qué está pasando en segundo plano? Las pestañas de referencia se alimentan de un grafo que describe todas las dependencias entre objetos. Cada guardado desencadena: Análisis sintáctico del objeto modificado. Re-cálculo de las aristas que cambian en el grafo. Render del resultado en cada pestaña abierta. En KB grandes el paso 2 puede tomar varios segundos. Repetido cientos de veces se vuelve un cuello de botella innecesario. La práctica recomendada 1. Cierra todas las pestañas References/Referenced by antes de iniciar los cambios. Usa el botón × de cada...