# Corrección de contexto fiscal CukPOS en API FE

## Causa

La API estaba resolviendo la API key contra un resolvedor legacy que usa:

- `api_keys.api_key`
- `sucursales.cod_sucursal`
- `sucursales.cod_terminal`
- `sucursales.cliente_id`
- `mh_credenciales.client_id`

Ese esquema corresponde a una estructura fiscal anterior. En CukPOS la tabla `sucursales` usa `codigo_fiscal`, y la terminal real está en `terminales_fiscales.cod_sucursal` / `terminales_fiscales.cod_terminal`.

Por eso la emisión fallaba con:

```text
Unknown column 'sucursales.cod_sucursal' in 'SELECT'
```

## Corrección

Archivo afectado:

```text
appife/app/Http/Middleware/InjectBranchContext.php
```

Cambios:

1. El resolvedor CukPOS ahora se ejecuta antes que el resolvedor legacy `api_keys`.
2. Los resolvedores legacy validan columnas obligatorias antes de ejecutar SELECT.
3. Se encapsulan los resolvedores en `safeResolve()` para que una tabla legacy parcial no tumbe la emisión con error 500.
4. Se mantiene compatibilidad con esquemas `fe_*` existentes.
5. Se agrega soporte para descifrar credenciales con `CUKPOS_PANEL_APP_KEY` o `PANEL_APP_KEY` cuando el APP_KEY de la API difiere del panel.

## Recomendación si las credenciales MH fueron cifradas desde appanel

En `.env` de appife, si el panel y la API tienen APP_KEY diferente, agregar:

```env
CUKPOS_PANEL_APP_KEY=valor_APP_KEY_del_panel
```

Luego ejecutar:

```bash
php artisan optimize:clear
php artisan config:clear
```

## Validación esperada

El log ya no debe mostrar consultas a:

```text
sucursales.cod_sucursal
sucursales.cod_terminal
sucursales.cliente_id
```

Debe resolver por:

```text
api_keys.key_hash
terminales_fiscales.cod_sucursal
terminales_fiscales.cod_terminal
sucursales_fiscales.codigo_sucursal
negocios.identificacion
mh_credenciales.negocio_id
```
