Files
MBS/docs/ESTRUCTURA_PROYECTO_MBS.md
T

85 lines
4.3 KiB
Markdown

# 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_<xx>`** → los forms del módulo (nombre único).
- *(opcional)* **`FUNCIONES_<xx>`** → 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_<xx>`
(+ `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_<xx>` 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.