# UI Mobile Layout (shipment)

## Objetivo

El layout de `shipment` se gestiona por empresa en `Maincompany.uiMobileLayouts`, con una politica dual:

- **Empresa base (`id=1`)**: define la plantilla base global (solo `PLATFORM_ADMIN`).
- **Empresas distintas de `id=1`**: pueden guardar su plantilla personalizada por company (usuarios no-POBOX con permisos de edicion de recibos).

## Endpoints

Base route: `/api/ui-mobile-layout`

- `GET /get?screen=shipment`
- `PATCH /update`
- `DELETE /delete?screen=shipment`

Rutas y payloads se mantienen sin cambios.

## Permisologia

Aplicada por `UIMobileLayoutVoter::MANAGE_UI_MOBILE_LAYOUT`:

- Deniega siempre usuarios `POBOX`.
- Si la empresa del usuario es `id=1`, permite solo usuario tipo `ADMIN`.
- Si la empresa es distinta de `id=1`, permite roles:
  - `ROLE_ADMIN_RECEIPT`
  - `ROLE_ADMIN`
  - `ROLE_ADMIN_PACK`
  - `ROLE_ADMIN_STATUS`

## Resolucion del layout efectivo

Para consumo en `/api/user/profile`, `uiConfigMobile` se resuelve con esta cascada por pantalla:

1. Layout personalizado de la empresa actual.
2. Layout base de la empresa plataforma `id=1`.
3. Layout hardcoded del backend.

El objeto sigue la misma forma que `Maincompany.uiMobileLayouts` (`{ screens: [...] }`).
