# Arquitectura

## Modelo general

Gravimex corre sobre Vtiger CRM 8.4.0, un monolito PHP modular con MVC propio. El front controller principal es `admin/index.php`.

## Bootstrap

1. `index.php` valida `vendor/autoload.php`.
2. Carga `config.php`, `vendor/autoload.php`, `include/Webservices/Relation.php`, `vtlib/Vtiger/Module.php` e `includes/main/WebUI.php`.
3. Instancia `Vtiger_WebUI`.
4. Procesa `Vtiger_Request($_REQUEST, $_REQUEST)`.
5. `WebUI` inicia sesion, CSRF, usuario, idioma, modulo y handler.
6. `Vtiger_Loader` resuelve action/view/model con fallback al modulo `Vtiger`.

## Capas

- `includes/`: runtime moderno Vtiger, HTTP, session, controller, viewer, loader.
- `include/`: utilidades legacy, database, webservices, events, query generator.
- `modules/`: modulos funcionales y personalizaciones.
- `layouts/`: templates Smarty/TPL, recursos JS/CSS y skins.
- `vtlib/`: registro de modulos, campos, links, paquetes, eventos y cron.
- `vendor/`: dependencias Composer.
- `libraries/`: librerias embebidas/legacy.

## Componentes criticos

No modificar sin backup y pruebas: `config*.php`, `index.php`, `includes/`, `include/`, `modules/Vtiger`, `modules/Users`, `modules/Settings`, `vtlib/`, `vendor/`, `layouts/v7`, `user_privileges/`, `storage/`, `cron/`.
