Arquitectura base
Como debe repartirse el sistema
La regla principal es simple: el core del sistema vive en ApplicationDbContext y cada modulo funcional debe ser dueno de sus tablas, su DbContext y su logica.
Principios
Core separado
Usuarios, roles, permisos, empresas, planes y configuracion global no deben mezclarse con negocio ERP.
Maestro comun
ENTIDADES centraliza terceros, fiscal, direcciones, bancos, estados y clasificacion.
Modulos dueños
PROVEEDORES, COMPRAS, FACTURACION y otros deben ser dueños de su operativa.
Resumen rapido
Core
App
Infraestructura del sistema, no logica funcional del ERP.
Maestro
ENT
Cliente, proveedor, contacto y clasificacion viven en el maestro comun.
Perfil
PRV
Proveedor solo guarda datos especificos del perfil proveedor.
Operativa
CMP
Compras, recepciones y facturas proveedor viven en su propio modulo.
Reparto correcto
| Contexto o modulo | Responsabilidad | No debe hacer |
|---|---|---|
| ApplicationDbContext | Empresas, usuarios, roles, permisos, modulos, planes, configuracion global y metadatos comunes | Guardar logica funcional de negocio |
| ENTIDADES | Maestro comun de clientes, proveedores, contactos, direcciones, fiscal, bancos, estados y clasificacion | Operativa de compras o facturacion compleja |
| PROVEEDORES | Perfil proveedor y configuracion especifica enlazada a EntidadId |
Duplicar nombre, email, telefono o direccion base |
| COMPRAS | Pedidos, recepciones, incidencias, facturas proveedor y flujo de compras | Ser dueno de la ficha base del tercero |
| FACTURACION | Series, documentos, lineas, configuracion fiscal y flujo documental | Absorber el maestro de productos o entidades |
Regla de oro
Si una tabla pertenece funcionalmente a un modulo, debe vivir en ese modulo. Si un dato es maestro comun, debe vivir en el maestro comun.
Errores a evitar
Duplicar maestros
No repitas nombre, telefono, email o direccion de la entidad en tablas de perfil.
Meter negocio en core
El core no debe acumular reglas funcionales de ventas, compras o terceros.
Mezclar modulos
Evita que un modulo escriba libremente tablas de otro salvo maestro comun y FKs claras.