Asistente y modernización de un ERP de escritorio
Aplicación de escritorio que se acopla en vivo al ERP heredado para configurar empresas, contabilizar, facturar y migrar sus datos a la nube.
8
años de evolución continua
x64
migración sin downtime
0
pérdida de datos
Un ERP contable con años en producción y cientos de empresas encima seguía funcionando sobre una base de escritorio de generación anterior. Reescribirlo no era una opción —esas empresas facturan todos los días con él— pero tampoco podía quedarse quieto: hacían falta funcionalidades nuevas (nómina electrónica, facturación electrónica, informes, migración a la nube) y los componentes de 32 bits dejaron de funcionar en equipos modernos.
Una aplicación de escritorio en arquitectura por capas estricta que actúa como asistente del sistema heredado: se acopla a la instancia que el usuario ya tiene abierta y opera sobre ella. Cubre configuración inicial de empresas, terceros, inventarios, contabilización, nómina, facturación electrónica, informes y la migración de los datos históricos a la nube. En paralelo, la migración de los módulos afectados a 64 bits, actualizadores que llevan cada instalación a la versión correcta sin visita técnica y un servicio que vigila la disponibilidad y deja registro.
No reemplazar el sistema: acoplarse a él. La aplicación se adjunta en tiempo de ejecución a la instancia viva del ERP mediante interoperabilidad de componentes, lee y escribe sobre su base heredada y a la vez opera contra el motor de datos moderno. El usuario ve una sola herramienta; por dentro conviven dos generaciones de tecnología. Cada cambio se aísla al módulo afectado y se entrega con un actualizador reversible, porque en un ERP contable una migración fallida no es un error: es una empresa que mañana no puede facturar.
Funcionalidad nueva entregada durante años sobre un sistema que nunca dejó de operar, instalaciones corriendo en equipos modernos y datos históricos migrados a la nube sin pérdida ni interrupción del servicio.
Cómo se ve por dentro
Ejemplos ilustrativos de los patrones aplicados, con la razón de cada decisión.
Acoplarse al sistema que ya está abierto
private const uint OBJID_NATIVEOM = 0xFFFFFFF0;
public static Application? ObtenerInstanciaViva(IntPtr ventana)
{
var iid = typeof(Application).GUID;
var resultado = AccessibleObjectFromWindow(ventana, OBJID_NATIVEOM, ref iid, out var obj);
// Sin instancia abierta no se inventa una: el llamador decide qué hacer.
return resultado == 0 ? obj as Application : null;
}En lugar de abrir su propia sesión y competir por los bloqueos del archivo, la aplicación localiza la ventana del ERP en ejecución y obtiene su objeto de automatización. Trabaja sobre la instancia que el usuario ya tiene abierta, con sus datos y sus permisos.
Ejemplo ilustrativo del patrón aplicado; no es código de ningún producto.Stack del proyecto
¿Necesitas algo parecido?
Cuéntame tu caso y te digo con franqueza si es viable y cuánto toma.
Hablemos