# Gastos Fijos Integral (Contabilidad)

## Alcance implementado

- Esquema de `gastos_fijos` migrado a base `contabilidad`.
- Gestión completa de catálogo y periodos mensuales (crear, editar, borrar, cerrar, reabrir, ajustar).
- Presupuesto mensual por ítem (`monto_presupuestado`).
- Cálculo de ejecución con gastos reales (`contabilidad.gastos`) + ajustes manuales.
- Sincronización de nómina mensual desde `nominasP.nomi_general.sueldo`.
- Control de acceso por nivel y RBAC por acción en APIs.

## Migración de base de datos

Ejecutar:

- `admin/migracion_gastos_fijos_contabilidad.sql`

Este script:

1. Crea tablas nuevas en `contabilidad`:
   - `gastos_fijos_catalogo`
   - `gastos_fijos_periodos`
   - `gastos_fijos_ajustes`
   - `gastos_fijos_auditoria`
2. Migra datos desde:
   - `admin.gastos_fijos_catalogo`
   - `admin.gastos_fijos_periodos`
   - `admin.gastos_fijos_ajustes`
   - `admin.gastos_fijos` (legacy)
3. Crea índice en `contabilidad.gastos (grupo, fecha)` y en `contabilidad.tasas_dolar (fecha)` si no existen.
4. Crea/actualiza ítem `nomina_mensual` con presupuesto del mes actual.

## APIs de gastos fijos

### Catálogo

- `GET /admin/api/gastos_fijos/catalogo.php`
- `POST /admin/api/gastos_fijos/catalogo.php`
- `PATCH /admin/api/gastos_fijos/catalogo.php?id={id}`
- `DELETE /admin/api/gastos_fijos/catalogo.php?id={id}`

### Periodos

- `GET /admin/api/gastos_fijos/periodos.php?periodo=YYYY-MM`
- `POST /admin/api/gastos_fijos/periodos.php`
  - Crear/actualizar presupuesto:
    - payload: `{ "catalogo_id": 1, "periodo": "2026-02", "monto_presupuestado": 1200 }`
  - Sincronizar nómina:
    - payload: `{ "action": "sync_nomina", "periodo": "2026-02", "solo_activos": true }`
- `PATCH /admin/api/gastos_fijos/periodos.php?id={id}`
  - cerrar/reabrir/ajustar/editar presupuesto
- `DELETE /admin/api/gastos_fijos/periodos.php?id={id}`
  - solo si el periodo no está cerrado

### Resumen

- `GET /admin/api/gastos_fijos/resumen.php?mode=detalle&periodo=YYYY-MM&exec_mode=mixto`
- `GET /admin/api/gastos_fijos/resumen.php?mode=global&exec_mode=mixto`

`exec_mode` soporta: `ajustes`, `gastos`, `mixto`.

## Permisos

Módulo RBAC usado por APIs: `/admin/gastos_fijos.php`

Acciones:

- `view`
- `create`
- `edit`
- `delete`
- `close`
- `reopen`
- `adjust`
- `sync_nomina`

El SQL de inserción sugerido de permisos está en el bloque final del script de migración.
