# 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.