diff --git a/docs/ESTRUCTURA_PROYECTO_MBS.md b/docs/ESTRUCTURA_PROYECTO_MBS.md new file mode 100644 index 0000000..d0e651e --- /dev/null +++ b/docs/ESTRUCTURA_PROYECTO_MBS.md @@ -0,0 +1,84 @@ +# Estructura del proyecto `MBSerp_new3` (Genero 6) + +Cómo organizar grupos y librerías del proyecto GST limpio para la migración. +Reemplaza el `.4pw` viejo (MBSVG240), que tenía nombres de librería duplicados y rutas muertas. + +--- + +## ⚠️ Regla de oro +**Cada librería debe tener un `binaryName` ÚNICO.** El proyecto viejo tenía 4 librerías llamadas +`FORMULARIOS` → colisión (`GS-12528` / `.42x conflicts`) → no compilaba. Sufija siempre por módulo +(`FORMULARIOS_VE`, `FORMULARIOS_CG`, …). + +--- + +## Nivel 1 — Grupo `COMUNES` (lo compartido; se compila una vez) + +| Librería (nombre único) | Contenido | +|---|---| +| `SCHEMA` (o `dabase`) | Esquema de BD: `../DATABASE/smarmotech.4db` (+ los `.4db` que apliquen) | +| `FUNCIONES` | Funciones comunes: `autentificacion.4gl`, `seg000.4gl`, `msg.4gl`, `mensajes.4gl` (mbox_msg/mbox_yn), combos (ano/mes/din), `bancos`, `proveedores`, `zonas`, `paises`, `localidades`, etc. | +| `FUNCIONESREP` | Funciones/plantillas de reportes compartidas | +| `FUNCIONESEMAIL` | Envío de correo (`enviacorreo`, `enviaencuesta`…) | +| `STYLES` | Todos los `.4st`: `mainmenu`, `mainmenu_A/B/C/D`, `formularios`, `mbsStyle` | +| `FORMULARIOSCOM` | Forms compartidos: `mainmenuform`, `inicial`, `cambia`, `MainDisp` | +| **App `MAINMENU`** | `otrodir/MainMenu.4gl` — **deps:** `SCHEMA, FUNCIONES, STYLES, FORMULARIOSCOM` | + +> El `MBSerp_new3` ya trae un CORE inicial (Database, FUNCIONES, STYLES, FORMULARIOS, MAINMENU). +> Solo hay que **completarlo, renombrar con nombres únicos y agruparlo en `COMUNES`**. + +--- + +## Nivel 2 — Un GRUPO por módulo (solo los que tienen programas activos) + +Cada grupo de módulo lleva: +- **`FORMULARIOS_`** → los forms del módulo (nombre único). +- *(opcional)* **`FUNCIONES_`** → funciones propias del módulo, si tiene. +- **Applications** → cada **programa ejecutable** del módulo = un App node con su `.4gl`. + - **deps de cada App:** `SCHEMA, FUNCIONES, STYLES, FORMULARIOS_` + (+ `FUNCIONESREP` si es reporte, + `FUNCIONESEMAIL` si manda correo). + +> Los `.4gl` que son **funciones/combos** (no ejecutables) van en una LIBRERÍA, no como App. + +### Módulos a crear (por reparto) — verifica el `dir` real de cada uno +| Módulo | Carpeta (dir) | Librería de forms | Responsable | +|---|---|---|---| +| Contabilidad General | `cgdir` | `FORMULARIOS_CG` | Jhonny | +| Tesorería | `tedir` | `FORMULARIOS_TE` | Jhonny | +| Activos | `acdir` | `FORMULARIOS_AC` | Jhonny | +| Cheques | *(confirmar)* | `FORMULARIOS_CH` | Jhonny | +| Informática | `sedir`/`otrodir` | `FORMULARIOS_INF` | Jhonny | +| Repuestos | `irdir` (PROYECTOS) | `FORMULARIOS_IR` | Jhonny | +| Cuentas por Pagar | `cpdir` | `FORMULARIOS_CP` | Abel | +| Compras | `codir` | `FORMULARIOS_CO` | Abel | +| Nómina | `nodir` | `FORMULARIOS_NO` | Abel | +| Admin. Personal | `addir` | `FORMULARIOS_AD` | Abel | +| Costos | `ctdir` | `FORMULARIOS_CT` | Jeilyn | +| Liquidación Mercancías | `lqdir` | `FORMULARIOS_LQ` | Jeilyn | +| Producción | `prdir` | `FORMULARIOS_PR` | Jeilyn | +| Materia Prima | `indir` (PROYECTOS) | `FORMULARIOS_IN` | Jeilyn | +| Productos Terminados | `ipdir` (PROYECTOS) | `FORMULARIOS_IP` | Jeilyn | +| Rep. Entradas Productos | *(reportes inv.)* | `FORMULARIOS_REP_IP` | Jeilyn | +| Cuentas por Cobrar | `ccdir` | `FORMULARIOS_CC` | Luis Miguel | +| Ventas | `vedir` | `FORMULARIOS_VE` | Luis Miguel | +| Servicios | `svdir` | `FORMULARIOS_SV` | Luis Miguel | + +*(Ajusta los `dir` que difieran — tú los conoces mejor. El nombre de la librería es lo que debe ser único.)* + +--- + +## Qué NO incluir (para mantenerlo limpio) +- **WEBSERVICES** y **MOVIL401** → proyectos aparte (su propio `.4pw` y deploy). No van aquí. +- **menup, dashboard, ENCUESTAS, DOCUMENTACION, PRESUPUESTOG, PUNTOVENTAS, GERENCIALES** → + solo si tienen programas en el menú activo; si no, **fuera** (se agregan luego si hacen falta). + +--- + +## Cómo poblar (incremental) +1. Crea el **esqueleto**: grupo `COMUNES` (completo) + los grupos de módulo con su `FORMULARIOS_` vacía. +2. Compila y corre **MAINMENU** (debe levantar el menú). +3. Por cada programa migrado (por ticket): **Add Application** en su grupo, agrega el `.4gl` + su form, + pon las dependencias, **Build**. Si el linker dice "function X not found", agrega el `.4gl` que la define. +4. `git commit` + `git push`. + +> Así el proyecto **siempre compila** y crece de forma ordenada, sin el caos del `.4pw` viejo.