# Arquitectura del Sistema

La aplicacion usa una arquitectura modular propia de Vtiger CRM.

## Componentes localizados

- Controllers: `includes/runtime/Controller.php`, `includes/main/WebUI.php`, `modules/*/controllers/` y acciones `modules/*/actions/`.
- Models: `modules/*/models/`, `includes/runtime/BaseModel.php`, entidades principales `modules/*/*.php`.
- Views: `modules/*/views/` y plantillas TPL bajo `layouts/`.
- Services/Webservices: `include/Webservices/`, `webservice.php`, `modules/CustomerPortal/api.php`, `modules/Mobile/api.php`.
- Repositories: no se detecta patron repository formal; el acceso a datos esta encapsulado en modelos, `CRMEntity`, `PearDatabase` y utilidades Vtiger.
- Jobs/Queues: `vtigercron.php`, `cron/`, `vtlib/Vtiger/Cron.php`, `vtlib/Vtiger/Mailer.php` con cola de correo, workflows en `modules/com_vtiger_workflow/`.
- Events/Listeners: `include/events/`, `modules/*/handlers/`, `VTEventHandler` y handlers por modulo.
- Middleware: no hay middleware tipo Laravel; el equivalente funcional esta en `EntryPoint`, `WebUI`, permisos y validaciones de request.
- Policies/ACL: `user_privileges/`, `modules/Users/`, `Settings/Profiles`, `Settings/Roles`, `Settings/SharingAccess`.
- Traits: no se observo organizacion por traits como capa arquitectonica principal.
- Helpers: `modules/*/helpers/`, `include/utils/`, `Vtiger/helpers/`.
- Commands/Console: `vtlib/tools/console.php`, scripts shell/bat en `cron/` y `pkg/bin/`.
- Providers: `SMSNotifier/providers/`, conectores Google/PBX/ExtensionStore/WSAPP.
- Cron Jobs: `cron/vtigercron.sh`, `cron/executecron.sh`, `admin/vtigercron.php`, `cron/modules/*`.

## Interaccion

`index.php` inicializa configuracion y autoload, crea `Vtiger_WebUI`, transforma `$_REQUEST` en `Vtiger_Request`, resuelve modulo/vista/accion, valida sesion/permisos, carga modelo, ejecuta accion/controlador y renderiza una vista Smarty/TPL o devuelve respuesta Ajax/API.
