diff --git a/README.md b/README.md
index 1b7f5c3..14207a2 100644
--- a/README.md
+++ b/README.md
@@ -1,49 +1,60 @@
-# Starlight Starter Kit: Basics
+# Manual de usuario de Eréndira
-[](https://starlight.astro.build)
+Sitio de documentación en español, construido con el Astro y Starlight existentes en este repositorio.
-```
-npm create astro@latest -- --template starlight
+## Contenido
+
+- Inicio con accesos a los siete roles de compras confirmados por la organización.
+- Menú de tareas para Solicitante, Comprador, Autorizador, Almacén, Contabilidad, Proveedor y Administrador.
+- Campos, requisitos, filtros, acciones y conexiones entre pantallas.
+- Solicitudes, concursos, cotizaciones, pedidos, autorizaciones, recepciones, evidencias, contratos, facturas, pagos y catálogos.
+- Inventario de 60 vistas Vue, 38 componentes, 46 controladores Laravel y 35 plantillas Blade, con relación a sus guías.
+
+Las guías son archivos editables en `src/content/docs/`. `astro.config.mjs` define los menús y `src/styles/manual.css` los estilos. `analysis/inventario.json` guarda las fuentes y sus huellas para mantenimiento.
+
+## Ejecutar
+
+Usa una versión de Node compatible con el proyecto. La compilación se verificó con Node 22.23.2 y las dependencias del lockfile existente.
+
+```bash
+npm ci
+npm run dev -- --background --host 127.0.0.1
+npm run astro -- dev status
+npm run astro -- dev logs
+npm run astro -- dev stop
```
-> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
+En el entorno de creación, Node está instalado en `~/.local/share/nvm/v22.23.2/bin`; si no está en el PATH de la terminal:
-## 🚀 Project Structure
-
-Inside of your Astro + Starlight project, you'll see the following folders and files:
-
-```
-.
-├── public/
-├── src/
-│ ├── assets/
-│ ├── content/
-│ │ └── docs/
-│ └── content.config.ts
-├── astro.config.mjs
-├── package.json
-└── tsconfig.json
+```bash
+export PATH="$HOME/.local/share/nvm/v22.23.2/bin:$PATH"
```
-Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.
+La dirección local habitual es `http://127.0.0.1:4321/`. El servidor informa la dirección efectiva al arrancar.
-Images can be added to `src/assets/` and embedded in Markdown with a relative link.
+## Compilar y verificar
-Static assets, like favicons, can be placed in the `public/` directory.
+```bash
+npm run build
+python3 scripts/verificar-enlaces.py
+```
-## 🧞 Commands
+El resultado estático queda en `dist/`, con búsqueda Pagefind. Para publicar, configura el dominio real en `site` dentro de `astro.config.mjs` y sirve `dist/` desde la raíz del dominio. No se configuró un dominio ficticio. Si se publica en una subcarpeta, hay que adaptar `base` y los enlaces absolutos.
-All commands are run from the root of the project, from a terminal:
+## Actualizar el inventario
-| Command | Action |
-| :------------------------ | :----------------------------------------------- |
-| `npm install` | Installs dependencies |
-| `npm run dev` | Starts local dev server at `localhost:4321` |
-| `npm run build` | Build your production site to `./dist/` |
-| `npm run preview` | Preview your build locally, before deploying |
-| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
-| `npm run astro -- --help` | Get help using the Astro CLI |
+```bash
+python3 scripts/inventario.py ../compras
+```
-## 👀 Want to learn more?
+Este comando actualiza la tabla de cobertura y las huellas; **no actualiza las instrucciones funcionales**. Revisa primero el cambio en Vue/Laravel y edita la guía correspondiente. Los mapeos están en el script para identificar archivos nuevos y asignarles su documentación.
-Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
+## Alcance de la revisión
+
+Se trabajó con el código local el 28 de septiembre de 2026. La organización confirmó los siete roles y el flujo de recepciones parciales: evidencia de servicios por Solicitante y de materiales por Almacén. No se ejecutaron operaciones contra una base de datos de compras ni se modificó el proyecto de origen.
+
+Las diferencias entre frontend y backend, pantallas sin ruta y dependencias de configuración están documentadas en `src/content/docs/referencia/observaciones.md`. Los controles de los tableros externos no forman parte del repositorio de compras.
+
+## Referencias del sitio
+
+La estructura de contenido usa las [colecciones de Astro](https://docs.astro.build/en/guides/content-collections/) y la navegación sigue la [configuración de Starlight](https://starlight.astro.build/reference/configuration/). El contenido operativo procede del proyecto local de compras.
diff --git a/analysis/inventario.json b/analysis/inventario.json
new file mode 100644
index 0000000..dffebf7
--- /dev/null
+++ b/analysis/inventario.json
@@ -0,0 +1,1484 @@
+{
+ "proyecto": "compras",
+ "vistas_vue": [
+ {
+ "archivo": "erendira_frontend/src/views/HomeView.vue",
+ "guia": "operacion/listados",
+ "sha256": "216ff0895aa231e42d119e643679d625809ee5c418382c047bfb6e37dad21323",
+ "rutas": [
+ "/partidas/:tipo/:status"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/InicioView.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "308801aacb5f9e3f16d83654faaf0d9ee649db6bb0bda16c9e8f37a4608b8c2d",
+ "rutas": [
+ "/inicio"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/Login.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "3dc158d65b1cfd4309f28fb28f68c11b9ddf2d04b5748faf7c844591a10dacdb",
+ "rutas": [
+ "/login"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/RecuperarContrasena.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "59f8d0de6d2ceedea9715b387e97980dc2c84a41092a24cc14a20e835c3461cb",
+ "rutas": [
+ "/recuperarContrasena"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/Registro.vue",
+ "guia": "finanzas/expediente",
+ "sha256": "b09ba573dcc6ea901576bdace573694f66eab9692885541f7ca998d3f021cef4",
+ "rutas": []
+ },
+ {
+ "archivo": "erendira_frontend/src/views/RegistroExitoso.vue",
+ "guia": "finanzas/expediente",
+ "sha256": "ec709e79bb204456d7680a7d658511484df5c4cd98d374e4fda040f180f6da59",
+ "rutas": []
+ },
+ {
+ "archivo": "erendira_frontend/src/views/RestablecerContrasena.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "5b4a766bf8730d8f4ed4a53943d587778c6512583fef8a4f00eb0ceb47f6e077",
+ "rutas": [
+ "/restablecerContrasena"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/aspectos/AspectosCrear.vue",
+ "guia": "administracion/aspectos",
+ "sha256": "c5dcc6f32c63205af878bf1052d18244680be96f2d6ef1532d3d5a770fe4f972",
+ "rutas": [
+ "/aspectos/:aspecto_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/aspectos/AspectosLista.vue",
+ "guia": "administracion/aspectos",
+ "sha256": "5a7e06bb19257a4209f063f6eea7fb709a5c5ae1dbaaa0cc8527bd19c27394dd",
+ "rutas": [
+ "/aspectos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/autorizaciones/Autorizaciones.vue",
+ "guia": "administracion/reglas",
+ "sha256": "cf39765e3bded72fd580c2bfca5b24a4ac1d008efbf2e75507370cf1abf81f9e",
+ "rutas": [
+ "/autorizaciones"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/catalogos/Catalogos.vue",
+ "guia": "administracion/catalogos",
+ "sha256": "c9599ad134532fbbae8f396224da91821fd4aa3ba4234526aab4fb79e2661e63",
+ "rutas": [
+ "/catalogos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/categoria_productos/CategoriaProductosCrear.vue",
+ "guia": "administracion/categorias-productos",
+ "sha256": "dfbca47f1d673c37b9f039e8c7c0c1a17fd04fc8da22af266e82c821f871d625",
+ "rutas": [
+ "/categoria_productos/:categoria_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/categoria_productos/CategoriaProductosLista.vue",
+ "guia": "administracion/categorias-productos",
+ "sha256": "5287686f85d8d846e3236439d96f4addf2573991805be4c0541e81deaf54a0b8",
+ "rutas": [
+ "/categoria_productos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/categorias/CategoriasCrear.vue",
+ "guia": "administracion/grupos",
+ "sha256": "43fac7feb1a14f86b9b8a352e1431ab93f61975283d8846e5865cbdf374c7088",
+ "rutas": [
+ "/grupos/categorias/:categoria_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/categorias/CategoriasLista.vue",
+ "guia": "administracion/grupos",
+ "sha256": "72980895529d6d033625fc08d4878609649e08bfc5145ab079c8fa2806a46481",
+ "rutas": [
+ "/categorias"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/centros_costo/CentrosCostoDetalle.vue",
+ "guia": "administracion/centros",
+ "sha256": "cc08b7e92fb3672e7fc294d8b1a60f499292a2384352dd7ab7db8723f437a54f",
+ "rutas": [
+ "/centros_costo/detalle/:centro_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/centros_costo/CentrosCostoLista.vue",
+ "guia": "administracion/centros",
+ "sha256": "ebac93057d813477ff291cd737bd8a4c7a98591bb147243f44ccb327e922d7b0",
+ "rutas": [
+ "/centros_costo"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/clasificaciones/ClasificacionesCrear.vue",
+ "guia": "administracion/clasificaciones",
+ "sha256": "2a9805f2b7c20a6f04d9c379c21b95daeb2b9fd2360b951f7c4dfe1833f3214e",
+ "rutas": [
+ "/clasificaciones/crear/:clasificacion_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/clasificaciones/ClasificacionesLista.vue",
+ "guia": "administracion/clasificaciones",
+ "sha256": "0967737f7fe953c12c0e37fdf3f6bfc8b4339c00c622d0b8ff785b6d480a4f28",
+ "rutas": [
+ "/clasificaciones"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/configuraciones/Configuraciones.vue",
+ "guia": "administracion/reglas",
+ "sha256": "6def74a5422a8d715493405a21ce1cac249566027097c6ef7ed7c6a3e1eae2cc",
+ "rutas": [
+ "/configuraciones"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/configuracionesSat/ConfiguracionesSat.vue",
+ "guia": "administracion/configuracion-sat",
+ "sha256": "4ed78a0d36a7d79707cd28d0b86dd8bb9745b5ff47b0fa779d81c9d62f5be143",
+ "rutas": [
+ "/configuraciones_sat"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/contratos/ContratosCrear.vue",
+ "guia": "operacion/contratos",
+ "sha256": "c752b0ea3fddf871bfa6999d6cb499ee60ef5b48ef0a0bf74080e5c5d8e48f11",
+ "rutas": [
+ "/contratos/crear/:contrato_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/contratos/ContratosLista.vue",
+ "guia": "operacion/contratos",
+ "sha256": "835a7c9a45d3a0befbc8289243072aff683e961f5d9d7befd7bb8760fe9a6490",
+ "rutas": [
+ "/contratos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/contratos/ContratosPartida.vue",
+ "guia": "operacion/contratos",
+ "sha256": "a17ad0b47bb5aac0278e6ee49ba93d169be8b595020749d02884bff9a4b6ea00",
+ "rutas": [
+ "/contratos_partidas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/contratos/ContratosVer.vue",
+ "guia": "operacion/contratos",
+ "sha256": "f7ca71740a2b9e2ac353dc9e6be7237601fbaa25c0336230087403640aa6f174",
+ "rutas": [
+ "/contratos/ver/:contrato_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/cotizaciones/CotizacionesAtender.vue",
+ "guia": "operacion/cotizaciones",
+ "sha256": "4f9bacf80c79429b9ce78fbd4b0909c219fc4301e19128792ccbd9fd07f1ade9",
+ "rutas": [
+ "/cotizaciones/ver/:cotizacion_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/cotizaciones/CotizacionesLista.vue",
+ "guia": "operacion/cotizaciones",
+ "sha256": "318a2bcf48827a53a265e7b92e65dcfb7fab79ad3ed423c28fafb2e11ac65a15",
+ "rutas": [
+ "/cotizaciones/listado/:invitacion_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/cuentas/CuentasCrear.vue",
+ "guia": "administracion/cuentas",
+ "sha256": "fd4eda56d41c71679ffeedb2d1fea71e9c9397624cdf6aaacebd2ff6feca15b4",
+ "rutas": [
+ "/cuentas/crear/:cuenta_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/cuentas/CuentasLista.vue",
+ "guia": "administracion/cuentas",
+ "sha256": "31b3f756f6630c16cef9e8a35575800833d20a39e5b5ebebdca1d2d4fa4a339f",
+ "rutas": [
+ "/cuentas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/empresas/EmpresasCrearEditar.vue",
+ "guia": "administracion/empresas",
+ "sha256": "213c46674a96ec5d26a7ee2ff20733cbdb39dea0cc12a12d0526e3ed6bf88dca",
+ "rutas": [
+ "/empresas/crear",
+ "/empresas/editar/:empresa_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/empresas/EmpresasLista.vue",
+ "guia": "administracion/empresas",
+ "sha256": "d433bd5502e20ca4df5c004d72e1bf52942abe024d44f46b1d6c21aa8994ddfe",
+ "rutas": [
+ "/empresas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/entregas/EntregasCrear.vue",
+ "guia": "operacion/recepciones",
+ "sha256": "4acf2122cfafb8c800edccbd95e4590a628aa5e276c9cb6db9d14634702cb197",
+ "rutas": [
+ "/entregas/crear/:entrega_id/:codigo"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/entregas/EntregasLista.vue",
+ "guia": "operacion/recepciones",
+ "sha256": "7915a1f6a88f0190d34654b18488677390da0b8a3b044addb749307f438a6474",
+ "rutas": [
+ "/entregas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/facturas/FacturasLista.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "501b2b51f2c94fef2b9f11fc897ef259187781bc827b3c04851883483ecb3795",
+ "rutas": [
+ "/facturas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/facturas/FacturasMultiple.vue",
+ "guia": "finanzas/cargar-factura",
+ "sha256": "af6576dd9eabff29e139d61c1b880502e1c07b2c379bdf9dd4ff88e5ec036a5d",
+ "rutas": [
+ "/facturas/multiple"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/invitaciones/InvitacionesLista.vue",
+ "guia": "operacion/concursos",
+ "sha256": "391c0a25901dd8a7401ccbe9214291c7d2966a0b2ce396e28ea4ff3336bc8f5a",
+ "rutas": [
+ "/invitaciones/:tipo"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/invitaciones/InvitacionesVer.vue",
+ "guia": "operacion/concursos",
+ "sha256": "05494739b1f9487d68a973c57e51810156f3826b0437161347732832af1c3554",
+ "rutas": [
+ "/invitaciones/:invitacion_id/:rfq_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/ordenes/OrdenesDetallle.vue",
+ "guia": "operacion/ordenes",
+ "sha256": "f20e9f5e39472626b6118cae4f2ce2642afe8332e2f543868cd9c3c95074f155",
+ "rutas": [
+ "/ordenes/detalle/:orden_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/ordenes/OrdenesLista.vue",
+ "guia": "operacion/ordenes",
+ "sha256": "a2541fb1ef633b90dfdb985e9a2cb7b7abe0f37c5a4a43b9709c1a637a8935f8",
+ "rutas": [
+ "/ordenes"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/ordenes/OrdenesProveedor.vue",
+ "guia": "operacion/proveedor-pedidos",
+ "sha256": "ea4b2fc38255670fe54610b9774244bbfbe5144812acd8ae7de0d8f442fa9cfe",
+ "rutas": [
+ "/mis_ordenes/:tipo"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/ordenes/OrdenesVer.vue",
+ "guia": "operacion/ordenes",
+ "sha256": "39aa0b629cdffb4eadc4093803ce55e0bfa3a1fe7983a78c84dffd362d404de4",
+ "rutas": [
+ "/ordenes/ver/:orden_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/pagos/Pagos.vue",
+ "guia": "finanzas/pagos",
+ "sha256": "1d8571e7f1ac7edbd289e10dc3314caeae302ed8ed5abd234bf8ae912a2d2da3",
+ "rutas": [
+ "/Pagos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/plantas/PlantasCrear.vue",
+ "guia": "administracion/almacenes",
+ "sha256": "d321b5ad3e9b4219222f30e92026f7ca332b4979a3a3dec6104fd9880d7fd83f",
+ "rutas": [
+ "/plantas/crear/:planta_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/plantas/PlantasLista.vue",
+ "guia": "administracion/almacenes",
+ "sha256": "e66a60cdd1e43de29cfedc4a9c532e078ba5e0c8ccba0215fe62600883fc8c80",
+ "rutas": [
+ "/plantas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/productos/ProductosCrear.vue",
+ "guia": "administracion/items",
+ "sha256": "7fa865f476ae1a5def31bb7bfc3a5ac3a7e3a2b84cbb639dead5d7aedf7e1bd5",
+ "rutas": [
+ "/productos/:producto_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/productos/ProductosLista.vue",
+ "guia": "administracion/items",
+ "sha256": "c32e559803ba2f8b20cda8fe1f5253fdd0a13b01fba4b007703484ec189e2fea",
+ "rutas": [
+ "/productos"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/proveedores/OrdenesVer.vue",
+ "guia": "operacion/proveedor-pedidos",
+ "sha256": "c92e0717edfc9ef88395156b6701d2d17269bb18ff858afef743d10537eea948",
+ "rutas": [
+ "/proveedor/ordenes/ver/:orden_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/proveedores/ProovedoresExpediente.vue",
+ "guia": "finanzas/expediente",
+ "sha256": "7a5de9c25f35aac4fe4e0ddd622e6fb9eb5d4145a8d0dc10fb4f9a9bee961410",
+ "rutas": [
+ "/proveedores/:proveedor_id/expediente",
+ "/expediente/:usuario_id/"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/proveedores/ProveedoresCrear.vue",
+ "guia": "administracion/proveedores",
+ "sha256": "1ae1ff644bddf30e51e8066a90cfd0bb8218955726985057c7a8bd7a41f4baf0",
+ "rutas": [
+ "/proveedores/:proveedor_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/proveedores/ProveedoresLista.vue",
+ "guia": "administracion/proveedores",
+ "sha256": "0f14e89a36f7c14739ee51ca113ddb9fb61e231d02f266f82458f3a724ae50d5",
+ "rutas": [
+ "/proveedores"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/reportes/Entregas.vue",
+ "guia": "operacion/reportes",
+ "sha256": "9447912729caab34319a4a37db6de234b7bb0092f0d1c6aba3a86c462ca90c2e",
+ "rutas": [
+ "/reportes/entregas"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/reportes/Ordenes.vue",
+ "guia": "operacion/reportes",
+ "sha256": "8831f2865ceef9fc6cff06be0272ba480309e57ec9035f1ef1fdfddcb02d84d2",
+ "rutas": [
+ "/reportes/ordenes"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/solicitudes/SolicitudesCrear.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "e3b34fec89b9ddf898caff0f974725b7ede55b95662e0c9a849e65cfbd12af25",
+ "rutas": [
+ "/solicitudes/crear/:solicitud_id/:rfq_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/solicitudes/SolicitudesLista.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "4a64ff28dd851bf1a37bfa82692026e44d092c4e3c1920829909b5f928300bad",
+ "rutas": [
+ "/solicitudes/:tipo"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/solicitudes/SolicitudesVer.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "bd938ded6e7b0d721b3c72fb7e8db749ec81a8739a2891862c573de78ec8be46",
+ "rutas": [
+ "/solicitudes/ver/:solicitud_id/:rfq_id/:status"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/subclasificaciones/SubclasificacionesCrear.vue",
+ "guia": "administracion/subclasificaciones",
+ "sha256": "2702c585da52e67d86343cd534af35de4cb0128249bf2208b18c546a0d2d9dcc",
+ "rutas": [
+ "/subclasificaciones/crear/:subclasificacion_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/subclasificaciones/SubclasificacionesLista.vue",
+ "guia": "administracion/subclasificaciones",
+ "sha256": "9071b1a80417748c4613f38f8127a5aa57ed271df0e2fd6bce4fef75ad115eb9",
+ "rutas": [
+ "/subclasificaciones"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/usuarios/MiCuenta.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "489cac8de9daaaae31f75f1aa7e9ee74149b37c53b37f9007d95fab0c755126d",
+ "rutas": [
+ "/mi_cuenta/:usuario_id/"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/usuarios/UsuariosCrear.vue",
+ "guia": "administracion/usuarios",
+ "sha256": "ce58f95d1b07b3fc656b38e3e5a6460361f18ea5d80887a154aef0e29ecc9a76",
+ "rutas": [
+ "/usuarios/:usuario_id"
+ ]
+ },
+ {
+ "archivo": "erendira_frontend/src/views/usuarios/UsuariosLista.vue",
+ "guia": "administracion/usuarios",
+ "sha256": "1295080bba62962058723f70f7d9d648cce80a3d33273a35251baf45be9c1e7d",
+ "rutas": [
+ "/usuarios"
+ ]
+ }
+ ],
+ "componentes_vue": [
+ {
+ "archivo": "erendira_frontend/src/components/ConfiguracionesSat/DocumentListEdit.vue",
+ "guia": "administracion/configuracion-sat",
+ "sha256": "3b59ed8afd0e0995c092bc8ab67ac722b73848bd7f08f8a955e16d5509ffe107"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/Expedinete/cumplimineto-upload.vue",
+ "guia": "finanzas/expediente",
+ "sha256": "4220680bdb1d22389a44572844775f200c71e5a87a8b109cb4807ec32d9c71c6"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/Expedinete/doc-view.vue",
+ "guia": "finanzas/expediente",
+ "sha256": "210a491353f4f6bf71fc71d0e90a0e40a7a4852168524367ac603871f01a86df"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/detallePO.vue",
+ "guia": "operacion/ordenes",
+ "sha256": "8f66531d173826d9d1413db27fd6a0412ddf2e91395b1347d0f3c48412e5972d"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/SubirFactura.vue",
+ "guia": "finanzas/cargar-factura",
+ "sha256": "44991f8a5466c3de5c10da08c58df57e8c29f3337529a983ee94e298574e4a63"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerAutorizacion.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "904548a3a60e939b5756cf78b978cffd4e0fcedfd28caac871bc01bc43504d39"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerConfirmar.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "b7b7d5a10512517bd6e2d1ae522183b094259c4d2885af8b784da4e03c7056e8"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerEliminar.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "40d8bfc99839f6447027f2b5c6008e3c51d87a61eb6b1299088321bd0a8d6798"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerPO.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "7df1aba9727b7fea34755a36375cd640a16dadb9dd47b80a8cdb4f7d4699ab80"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerPagar.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "f7311fc1e4ec53e876b3bd4d28f278272442ac41a678d566bc8a4a73c2792b2a"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerPagos.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "29104358a6e54d84f0472a0655df18b01b19b4ca43f0b812bba9c71145f51033"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerProgramar.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "13bd1d9e2bed274ac97c88dd8990f59a7a8bd66fe5a2b59c6ce10d9204c456b9"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/factura/VerResumenPagos.vue",
+ "guia": "finanzas/facturas",
+ "sha256": "09cc4f81c6cce1a3c432eee3eb45cf76b68d1aa8d20e13aa4ca8fb4e3565f1f8"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/home/MainLogo.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "c691bb930af7a40b4b104621ec047f6aaa03722ad1180c24fae408baebe26f88"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/home/MainMenu.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "65b79fe92a1cc4d17c31f69adc52ffb21088a53a695805332991331518a64a50"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/invitaciones/CuadroComparativo.vue",
+ "guia": "operacion/concursos",
+ "sha256": "24e559776d731adb86245038588eeb3e30ff4ec8b1f333fd42fe6d336193759e"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/notificaciones/TrackedMailList.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "1241cbaddbd6b148a81bc191ed0e64d278445338f6473590c8060272d0e95e6f"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/ordenes/CargarEvidencia.vue",
+ "guia": "operacion/evidencias",
+ "sha256": "38aecb34d96aef069083152fa77b00aeb869b0152225416436572e93f07fdb0e"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/solicitudes/ModalItems.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "4b94e3e2717785fdeb2a6fd033fc35fd3c599459fbedd4489e5c858ae3fe0cb2"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/solicitudes/VerAutorizaciones.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "9640524d43298c6ce1d365666c5026360a0a8866a59b67dd0d355800be8dc198"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/solicitudes/VerEntregas.vue",
+ "guia": "operacion/solicitudes",
+ "sha256": "22ff783492732239790510b10aecaf11947516089555b8f281663a0c8835b388"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/solicitudes/VerFacturas.vue",
+ "guia": "operacion/evidencias",
+ "sha256": "d785fe55f09be7beda71f7037edd3801171c28f8b5e159e150a7d31dd81ece0c"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/AtencionInvitacion.vue",
+ "guia": "operacion/concursos",
+ "sha256": "735557a4deaa287696c6acf950e6c98775cd35d3e62b1427f279a8633886fcb9"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/DatePicker.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "910b66f5a38e359c9b56a7a3849339fd05feea38415145b6ab6143add868b908"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/EstatusItem.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "359cdb74c5e3c54f687fd6bbd9fb786ec3aaddfbd3f48eb008e235ebfcb31c85"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/Fecha.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "9ae3de456187d6bf61f37cc8c970fd6d09e5f628f4d6340eb5fdcd69145a5d18"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/FechaFormato.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "b3db970295692edfb044d536e8ff6a1b2bbdbfe43719e23afb5fe0900419b67f"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/FlashAlert.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "ea44bc0ca42182372413b604ff36176c5a2e42f22568865eed88792fdc12e6db"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/FormError.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "2c08fdde947302e830ef14dee531b921d19858014c93e2f8841992abbd7cabf5"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/LabelTextCounter.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "607815e3335afaf46b6f7ad993165d5c1279f95d2b9c58f4ef2f4d45c0d0cadb"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/Mensaje.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "686f1c8bd59a2907531d4b6068487ea15cd71bc6f13ae8a25270615adaaac464"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/Modal.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "c8083e822053febbe6373c6d53fdeb292164b46fb1e433aca77d55509f54f891"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/Money.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "33103a64843d329edb6b3b1516aca5c7ce957950f12af1b7794f5ddf998a2a3a"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/OrdenCompra.vue",
+ "guia": "operacion/ordenes",
+ "sha256": "4f496d24312d0d8cd5299fedee68802e2acf56358e9bca5a8ae1549af34f406e"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/Paginador.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "b2ce7525a351b0e6e0b3a758fdcc3ceb276d07484c625e7dbfe400d88bfd9173"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/PaginadorComposition.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "6b625fc994faf7913eb715150f35c006c31227e6d5c23de3c75a0df1a9e21d42"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/SelectorEmpresa.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "2acb8e0fd20c42e43c37e11199f7f9503caa3b7f803b18695f03ce669dd8fcfa"
+ },
+ {
+ "archivo": "erendira_frontend/src/components/utils/document-upload.vue",
+ "guia": "guias/primeros-pasos",
+ "sha256": "868372be204cb1a8c2a513051673f3b3e761ad3b246c0f968f6ece9ecbdd62f7"
+ }
+ ],
+ "controladores_laravel": [
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/AspectoController.php",
+ "guia": "administracion/aspectos",
+ "sha256": "48d0033b7406ddca7afe63d2f5818eed5f27e31eae42928c65a2a9c567a733ff",
+ "metodos": [
+ "store",
+ "index",
+ "show",
+ "getTiposAspecto",
+ "destroy",
+ "update",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/AutorizacionController.php",
+ "guia": "administracion/reglas",
+ "sha256": "807e5a38b934cfd548ef5f18996dd356ffb29d8e5d0412b52063b88bb45bc3ec",
+ "metodos": [
+ "index",
+ "store",
+ "calificar",
+ "getAutorizacionActiva",
+ "notificar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CatalogosMonedasController.php",
+ "guia": "finanzas/cargar-factura",
+ "sha256": "f9c27fc4ad4cf280caed2b5d76c06549ba7b3b0961151f2eba96114a9f478f4f",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CategoriaController.php",
+ "guia": "administracion/grupos",
+ "sha256": "27db39b4da14c1c220b04b3d7e05f8477a3dede1e923722c7425775533ea9f30",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CategoriaProductoController.php",
+ "guia": "administracion/categorias-productos",
+ "sha256": "37f006486db279c563cffbfcb996a7ea3dad783b0a1418d0d63bb99291980429",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CentroCostoController.php",
+ "guia": "administracion/centros",
+ "sha256": "12940345beee4d65be2065176d537d1463dc1a307b1a9fefd5df646798f32ffd",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "destroy",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ClasificacionController.php",
+ "guia": "administracion/clasificaciones",
+ "sha256": "03870f428e0064e8868ccac3d44939cd7540a27bc80e052f5437d8a964a6c1a2",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ClasificacionGastoController.php",
+ "guia": "referencia/observaciones",
+ "sha256": "3172194ae26b41e19b5aa6bbbefb7dd84dfb8e7493e3835edec30c3b08b31ff1",
+ "metodos": [
+ "index",
+ "get",
+ "create",
+ "createEdit",
+ "eliminar",
+ "getByEmpresa",
+ "getUltimaClasificacion",
+ "clasificarGasto"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CompraController.php",
+ "guia": "finanzas/cargar-factura",
+ "sha256": "fc054d503aafa8ea334a9aeed8f73f00548a52e0b20341b385772ec11ad639f9",
+ "metodos": [
+ "store"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ConfiguracionController.php",
+ "guia": "administracion/reglas",
+ "sha256": "d4f6d02b37979e671fc6493e6c90720717b472c79a829a66ea341d7d5c0ff791",
+ "metodos": [
+ "index",
+ "store",
+ "byMonto"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ConfiguracionesController.php",
+ "guia": "administracion/configuracion-sat",
+ "sha256": "9e3318b9538b6e82de063e21e62b996d643a7b250e47edf4fcfd6c034122386c",
+ "metodos": [
+ "index",
+ "save",
+ "getConfiguracionPersonal"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ContratosMarcoController.php",
+ "guia": "operacion/contratos",
+ "sha256": "f980b22dc6f26e76458435a69a948e23caf59e7332c23515dd5d18e75a256cfb",
+ "metodos": [
+ "index",
+ "store",
+ "show",
+ "buildArchivos"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ContratosProductosMarcoController.php",
+ "guia": "operacion/contratos",
+ "sha256": "81158516f36247a9414fa4da1b6ec8a11815c7a16cf28b02fb96c0829830555d",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CotizacionController.php",
+ "guia": "operacion/cotizaciones",
+ "sha256": "b73fdde4aa45e2d2d21ea7933a2de37eeede4f5e0c43fc73705ab5a8105131b2",
+ "metodos": [
+ "index",
+ "getTiposAspecto",
+ "show",
+ "store",
+ "rechazar",
+ "reactivar",
+ "getArchivo",
+ "actualizarEstatusInvitacion",
+ "getCotizacionByProveedor",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/CuentaController.php",
+ "guia": "administracion/cuentas",
+ "sha256": "2204ffc91bfae425fd66fd016b24ce0eea84686d56f95f9544082328b45c783a",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/DashboardController.php",
+ "guia": "operacion/listados",
+ "sha256": "5ff4dd7acdaabd2c1ed30dfebe828a0d310b139d22549349a628e35d8dd7abb5",
+ "metodos": [
+ "index",
+ "store",
+ "generarPDF"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/EmpresaController.php",
+ "guia": "administracion/empresas",
+ "sha256": "2b9c27abebeb3d447fa20cca44565bed209c887aefc56c2713898b9fcbbef5af",
+ "metodos": [
+ "index",
+ "getSucursales",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/EntregaController.php",
+ "guia": "operacion/recepciones",
+ "sha256": "0e5e651d45b805ba6915971d1be817eaea8398923982a0ce59cc1d60c010cdba",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "actualizarMontosEntrega",
+ "getArchivo",
+ "getEvidencia",
+ "update",
+ "actualizar",
+ "extraerUUID",
+ "getEntris",
+ "getAtributo",
+ "cancelarEntrega",
+ "validarFactura",
+ "consultarUUID",
+ "getFacturas",
+ "agregarAdicional",
+ "subirEvidencia"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ExpedientesController.php",
+ "guia": "finanzas/expediente",
+ "sha256": "0d4d4e7100e2e3ab7630e948a4b30c0da3313cc7618a62f80201234eb4c77ae2",
+ "metodos": [
+ "getDocumentos",
+ "uploadDocument",
+ "saveText",
+ "getHistorial",
+ "uploadOpinion",
+ "file_get_contents_ssl",
+ "buscar",
+ "descargarArchivo"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/FacturasController.php",
+ "guia": "finanzas/facturas",
+ "sha256": "2e0f56535011df17d0d80bee2914637fb4d58bc2def675c6f521c373f8d78a9a",
+ "metodos": [
+ "index",
+ "resubirEvidencia",
+ "confirmarFactura",
+ "imagen",
+ "evidenciaDisponible",
+ "resolverEvidenciaFactura",
+ "verificarExportacionFacturas",
+ "descargarFacturas",
+ "subir",
+ "lista",
+ "get",
+ "getPagos",
+ "getRutasFacturas",
+ "verificarDescargaMultiple",
+ "descargaMasiva",
+ "validacionMasiva",
+ "cancelarFacturas",
+ "actualizarFacturaSolicitud",
+ "cancelacionPeticiones",
+ "save",
+ "validarSubirFacturas",
+ "resumen",
+ "getResumen",
+ "Stand_Deviation",
+ "download",
+ "validar",
+ "getAutorizaciones",
+ "programarFacturas",
+ "pagarFacturas",
+ "comentar",
+ "filtrarFacturas",
+ "autorizarPago",
+ "autorizarPagoPorEmpresa",
+ "descargarPo",
+ "descargaMasivaPorFiltro",
+ "verificarDescargaFacturas",
+ "getFacturasDescarga",
+ "verPdf",
+ "eliminar",
+ "multiple",
+ "getConfig",
+ "descargaMasivaPagosPorFiltro",
+ "verificarDescargaPagos",
+ "getPagosDescarga",
+ "eliminarPago",
+ "facturasSinComplemento",
+ "getFacturasSinComplemento",
+ "resumenPagos",
+ "listaCliente",
+ "getProveedoresByCliente",
+ "notificarASolicitante",
+ "obtenerExtensionEvidencia"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/FormasPagoController.php",
+ "guia": "finanzas/pagos",
+ "sha256": "55360ecee7d49ac0710bc024dea251561255c41740eda3bb3c3dfa81ca482692",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/GrupoController.php",
+ "guia": "administracion/subclasificaciones",
+ "sha256": "09dde02ec0d9d9ad005e987fb8d60c3279013b5ce455d3263b9963d0ae18fb4c",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/InicioController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "a88db0912d4b756614270aa4a3d773a2454518b4b47b18151431752e0e60b1d6",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/InvitacionController.php",
+ "guia": "operacion/concursos",
+ "sha256": "ba074ffd3826017c98945317e4cf52e7670cd2b65bb5c44600e319d00330609e",
+ "metodos": [
+ "index",
+ "show",
+ "buildInfoProveedores",
+ "buildComparativo",
+ "invitar",
+ "asignar",
+ "terminar",
+ "cerrar",
+ "notificarPO",
+ "convertir",
+ "buildOrdenes",
+ "imprimir",
+ "buildProductosUnicos",
+ "getEntrega",
+ "getArchivo"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/MailController.php",
+ "guia": "referencia/observaciones",
+ "sha256": "fbaea9464bf4c1f4e5be2f5c67ddaceef1e99319116f853169d2abe327b8bec7",
+ "metodos": []
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/MotivoController.php",
+ "guia": "operacion/solicitudes",
+ "sha256": "3b849aa507c4337da3cc23b454320d560ec27e2d21656b23d575b1a81eff340a",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/MotivoRechazoController.php",
+ "guia": "operacion/solicitudes",
+ "sha256": "fa0b3232cf464d9fd850c1e84cd85da7f4162c06d4463e8bd31ea3277ac7f642",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/NotificacionesController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "7ed2aaaa2c99746629c175be3cb83eca0a450bee45c95900bc08b3e892db7227",
+ "metodos": [
+ "index",
+ "markAsRead",
+ "markAllasRead",
+ "unreadNotifications"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/OrdenCompraController.php",
+ "guia": "operacion/ordenes",
+ "sha256": "f98557e447ad43d00975629821caf495c80d6991f4043b63d9d4c0199001417b",
+ "metodos": [
+ "index",
+ "show",
+ "buildArchivos",
+ "store",
+ "buildItems",
+ "buildEntregas",
+ "buildAutorizaciones",
+ "buildInfoFactura",
+ "xml",
+ "imprimir",
+ "generarPdf",
+ "edit",
+ "save",
+ "insertAutorizaciones",
+ "postGuardado",
+ "getArchivo",
+ "destroy",
+ "rechazo_por_comprador",
+ "notificar",
+ "subirArchivos",
+ "actualizarTipoReferencia",
+ "notificarSolicitante",
+ "notificarProveedores",
+ "calificarOrden",
+ "confirmarOrden",
+ "actualizarOrdenesConcurso",
+ "rechazarOrden",
+ "getOrdenpublic",
+ "getPOById",
+ "cerrar",
+ "subirEvidencia"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/PagoManualController.php",
+ "guia": "finanzas/pagos",
+ "sha256": "6cb367bf440a76a0962e1065c3b97e2081ac25cfd1fb2c070042d87753b54dca",
+ "metodos": [
+ "get",
+ "getPago",
+ "vistaPreviaImagen",
+ "editarFacturas",
+ "validarComplemento",
+ "importarPagosManuales",
+ "generar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/PlantaController.php",
+ "guia": "administracion/almacenes",
+ "sha256": "41a01097c95f953307532ffdc0ab44c03da126c744b0284a194cc06b4c53abba",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ProductoController.php",
+ "guia": "administracion/items",
+ "sha256": "8e7a34e2d68548bb798838bffccdd9d1d655f0a1ec565cf026e8b7ce6ba74863",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "activarDesactivar",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ProveedorController.php",
+ "guia": "administracion/proveedores",
+ "sha256": "8a86a44fdb2891103f5c53e75c1d6e3d5ee939e0a49ab6cdad741233f39367c6",
+ "metodos": [
+ "index",
+ "getProveedoresEFOS",
+ "store",
+ "show",
+ "destroy",
+ "update",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/RegisterController.php",
+ "guia": "finanzas/expediente",
+ "sha256": "f2cb48d3537747f4b7f59fa5778be80de685b749b2b5fe68fb95e0415afb6033",
+ "metodos": [
+ "__construct",
+ "validator",
+ "create",
+ "register",
+ "getDocuments",
+ "uploadDocument"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/ReporteController.php",
+ "guia": "operacion/reportes",
+ "sha256": "fe121e70a91b29d6b05f5296f653259a2f70ae3757c1e2a2fa042e6adf3664fd",
+ "metodos": [
+ "ordenes",
+ "entregas"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/SeguridadController.php",
+ "guia": "operacion/solicitudes",
+ "sha256": "32391d8ab065dda8aa0873f4cd51445669e4feb9ad1458e649ad1bb28523e29c",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/SolicitudController.php",
+ "guia": "operacion/solicitudes",
+ "sha256": "9578ded7b20b39c65ddfc9854ff56ce83bbbfa24872d91a7e14ab53dead73b3c",
+ "metodos": [
+ "index",
+ "store",
+ "confirmarInterno",
+ "saveOrUpdateItemCentro",
+ "notificarAutorizacion",
+ "confirmar",
+ "autorizar",
+ "rechazar",
+ "eliminar",
+ "show",
+ "buildInvitaciones",
+ "getArchivo",
+ "generarContrato",
+ "update",
+ "cambiarCategoria",
+ "destroy",
+ "reiniciar",
+ "cerrar",
+ "buildArchivos"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/TipoController.php",
+ "guia": "operacion/solicitudes",
+ "sha256": "6ae62d86cecc2d32950cc62b73ef5adae0253bc6b7a807ffb5a40ca01887f1d1",
+ "metodos": [
+ "index"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/TrackedMailController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "d6e3e6da212cd3c1c986f688dcfdea47ab71cfdd3ef93c52678678d761c10017",
+ "metodos": [
+ "webhook",
+ "get"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/UserController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "e38750741f1be03f8bfecadbad7de9ddc7dd0e56a0bd1957fce03253d3ffdc65",
+ "metodos": [
+ "index",
+ "changePassword",
+ "changeClaveAutorizacion",
+ "sanctumToken",
+ "checkSession"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/UsuarioController.php",
+ "guia": "administracion/usuarios",
+ "sha256": "317f45b8f52f4c4370c6b899f621070d9c6389f5a3d1eb817e117be280f6ed98",
+ "metodos": [
+ "index",
+ "show",
+ "store",
+ "guardarMisDatos",
+ "destroy",
+ "update",
+ "getTiposUsuario",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Api/UtilController.php",
+ "guia": "referencia/estados",
+ "sha256": "f8b01372ba7832211182a822ca75f60b2996c34a4fbcf88a04d46f04a54b353b",
+ "metodos": [
+ "getTiposAspecto",
+ "getEstatusSolicitud",
+ "getEstatusInvitacion",
+ "getEstatusCotizacion",
+ "getEstatusEntrega",
+ "getEstatusOrden",
+ "getTipoSolicitud",
+ "getNiveles",
+ "getUnidades",
+ "getMonedas",
+ "getOrdenes",
+ "actualizarOrden",
+ "getTipoCambio",
+ "getToken",
+ "getUsos",
+ "getFormas",
+ "getMetodos",
+ "getTipoReferencia",
+ "getVersion",
+ "getLifeTime",
+ "refreshSesion",
+ "getComprobanteByUUID",
+ "getUsuarios",
+ "getTiposOrden",
+ "getUUIDFromPDF"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/Controller.php",
+ "guia": "referencia/observaciones",
+ "sha256": "03b82a5051ca8dd75ed2833cf29cd1747358972471d24c36f74648aaf05b5e8f",
+ "metodos": []
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/HomeController.php",
+ "guia": "operacion/listados",
+ "sha256": "2c78543322abf3bb48bda2a411f2fc30886c2127a270f31ea2fe3f7d95f24667",
+ "metodos": [
+ "index",
+ "exportar"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/LoginController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "2cb9173bf7be18a71d48b496f0a41f6fd2bf2196d11110fcb89b4c2cc2be26f2",
+ "metodos": [
+ "authenticate"
+ ]
+ },
+ {
+ "archivo": "erendira_backend/app/Http/Controllers/UserController.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "50c9d3853e23f22f8d2d6ff4c7ecfcf38d66515614968f27a89b597b2066a379",
+ "metodos": []
+ }
+ ],
+ "plantillas_blade": [
+ {
+ "archivo": "erendira_backend/resources/views/app.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "4f6005446fcf30e614ab04553179895530d7293c5d578592fbabada74fc005a7"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/auth/restablecer_pass.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "581876a87d5ac12d06e0219486c5977e98d1a3d7ddcde174f82cf1bc8c558b2b"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/comentario.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "e7e85a79b5efc50d7225fe67426998b33d9434b8bc350ceff54efb5f5c7dc126"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/pago.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "6c5b21fa159cea253d0c69f46f95b713bb17f5726b65377cd8b76ef704e542b2"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/pago_cancelado.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "b06d8debffbd70a1baf7f81cc3bfa81e358f8ce4470c3caa967300fc875be76d"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/programacion.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "b70561b6f825dc905e0ccd2b0ec4a9a7bd8ac0d227906016b8fd457c29a34890"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/rechazo_pago.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "9f80ad287f57387fbcb5cb2bf096b236aafbf7b2578fd0750d16f875071f4921"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/facturas/validacion.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "eaeba5faa251911b96a06b394d806bee1b6190cd4034c3bdb8521cad871cd6b5"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/actividades_pendientes.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "338d46821bacccd26fdd481dcd13d415352d06163412801d701f5b166e758597"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/efos_encontrados.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "830ad5a7d8031f1aa11f8c56498a068b109a283df1486ab39ac3d370d61b9ef5"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/info_erendira.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "4c85d6df3365853b008c489f59425d206365c2c5c62ff22b2e56bf06770aac0f"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/notificacion.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "3b672b4e2b3ed4f01295d3c90c0fe09c6d0394b9fd2781deac928f61e26a07ca"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/opinion_cumplimiento.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "e89979ab3a41c3c2132c5a86d4acb98274ca11b26100eb7c3ad738aa1e90886d"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/mensajes/proveedores_incumplidos.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "8e2b16bca0053a68b9f2839f0d1f630a2fc3127766d7c47ef091f87defe916d5"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/usuarios/activacion.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "29b4e0d9a7e9d19131687f98e79dc74a4be0b60578d26c8c93227cbd3a5d1e23"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/email/usuarios/registro_nuevo.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "03885b9900766161264598ed0c6db99ba0fcbcd359f0ea06950a6bdfb3e09621"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/layouts/app.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "492d2256fb1f909a717298a7f5433a4f0306a7f74d0df76e0fb8d23a776ae35a"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/layouts/mail.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "f0d052b00cb0bcedd669f5c6639d4ab9e8ada9ca0314ebd9655a865511559f01"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/mails/cotizacion.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "ad003218441cb9ab3cf2ef3a9e0668fcb4602a4c1fd8163e7622316d4de5ea1e"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/mails/factura.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "e4bfcfa2fccb53e4811c2e685fb9235f5f551c2b39d319d7890540f5edd14220"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/mails/po.blade.php",
+ "guia": "operacion/ordenes",
+ "sha256": "692a21635f9eaf0633964856e71092df4d8ffed3ca1cc162fe99dc2180ada661"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/mails/recordatorio_firmas.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "c6635acb57e92f1bab807c897374e8453d68b52064331ba0f8ecbbf2f885fb6a"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/orden_compra_pdf.blade.php",
+ "guia": "operacion/ordenes",
+ "sha256": "bdadcac4d99d1daa54f904b43e53eee958a3ddb23408890cfc6168fc0a9d5474"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/cuadroComparativo.blade.php",
+ "guia": "operacion/concursos",
+ "sha256": "d9ee4a9bbc2eea82318c312f307c491c4f20ba14aec976e2cd5d6e5a43b0fcdb"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/facturaPdf.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "89fe8733a701376bf62f888501cbec832e795aaeeca0548704a6a5cd66b3caed"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/pagoPdf.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "0c05aaaff0883863dad635b44774485830a76e4db213205c7588ceb00a4ccbcc"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/pagoRelacionado.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "757f85db809cc0be582e45ebe4a72a0c52744a95c0b7803a96c8960306523388"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/pagosPdf.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "4d2b8021adeab1f64b2e92a85b7825237a123a7678cfa6662f066c01304a7ff3"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/partials/conceptos.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "6a8debb710318a53a30f8829c4bbd49a33198511b8ce9ff4769771f968bba4a0"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/partials/encabezado.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "2f3c25f4b0c53e50229c06a09824ef8b343229c79c292229831f55da0223cf70"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/partials/pie.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "dd2cb287955a94b15530e72265b64f1024522bbadb6c524e3dc5051efbd6d36b"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/pdfs/partials/styles.blade.php",
+ "guia": "finanzas/facturas",
+ "sha256": "5e8d0e2dad6c7e9840e03c43555c925da7558cde2e8d9b00f6b962f60119f17b"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/solpes.blade.php",
+ "guia": "operacion/listados",
+ "sha256": "404c12d5164b87d98b9ab7a3e8f7cdd051c370d2cff01b2afaf926c02500e12b"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/vendor/notifications/email.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "937f148a27c259d041c10a82ee665634245676574ce6bc6882427fa2c27f7000"
+ },
+ {
+ "archivo": "erendira_backend/resources/views/welcome.blade.php",
+ "guia": "guias/primeros-pasos",
+ "sha256": "24ae62e3c7db7fb26d5c579bca7a7f2027b0fe8fe433b80c319a2f888bee8d6d"
+ }
+ ]
+}
diff --git a/astro.config.mjs b/astro.config.mjs
index 69b83b3..1792ea9 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -2,25 +2,318 @@
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
-// https://astro.build/config
export default defineConfig({
- integrations: [
- starlight({
- title: 'My Docs',
- social: [{ icon: 'github', label: 'GitHub', href: 'https://github.com/withastro/starlight' }],
- sidebar: [
- {
- label: 'Guides',
- items: [
- // Each item here is one entry in the navigation menu.
- { label: 'Example Guide', slug: 'guides/example' },
- ],
- },
- {
- label: 'Reference',
- items: [{ autogenerate: { directory: 'reference' } }],
- },
- ],
- }),
- ],
+ integrations: [starlight({
+ title: 'Eréndira · Manual de usuario',
+ description: 'Guías de compras por rol, campos y recorridos entre pantallas.',
+ defaultLocale: 'root',
+ locales: { root: { label: 'Español', lang: 'es' } },
+ customCss: ['./src/styles/manual.css'],
+ sidebar: [
+ {
+ "label": "Inicio del manual",
+ "slug": ""
+ },
+ {
+ "label": "Primeros pasos",
+ "items": [
+ {
+ "autogenerate": {
+ "directory": "guias"
+ }
+ }
+ ]
+ },
+ {
+ "label": "Solicitante",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Solicitante",
+ "slug": "roles/solicitante"
+ },
+ {
+ "label": "Crear y corregir solicitudes",
+ "slug": "operacion/solicitudes"
+ },
+ {
+ "label": "Consultar partidas y pedidos",
+ "slug": "operacion/listados"
+ },
+ {
+ "label": "Consultar recepciones",
+ "slug": "operacion/recepciones"
+ },
+ {
+ "label": "Cargar evidencia de servicios",
+ "slug": "operacion/evidencias"
+ }
+ ]
+ },
+ {
+ "label": "Comprador",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Comprador",
+ "slug": "roles/comprador"
+ },
+ {
+ "label": "Solicitudes por confirmar y aceptadas",
+ "slug": "operacion/solicitudes"
+ },
+ {
+ "label": "Concursos e invitaciones",
+ "slug": "operacion/concursos"
+ },
+ {
+ "label": "Revisar cotizaciones",
+ "slug": "operacion/cotizaciones"
+ },
+ {
+ "label": "Registrar y seguir pedidos",
+ "slug": "operacion/ordenes"
+ },
+ {
+ "label": "Registrar recepciones",
+ "slug": "operacion/recepciones"
+ },
+ {
+ "label": "Contratos marco",
+ "slug": "operacion/contratos"
+ },
+ {
+ "label": "Reportes",
+ "slug": "operacion/reportes"
+ },
+ {
+ "label": "Consultar catálogos",
+ "slug": "administracion/catalogos"
+ }
+ ]
+ },
+ {
+ "label": "Autorizador",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Autorizador",
+ "slug": "roles/autorizador"
+ },
+ {
+ "label": "Solicitudes por aprobar",
+ "slug": "operacion/solicitudes"
+ },
+ {
+ "label": "Pedidos pendientes y autorización",
+ "slug": "operacion/ordenes"
+ },
+ {
+ "label": "Buscar documentos",
+ "slug": "operacion/listados"
+ }
+ ]
+ },
+ {
+ "label": "Almacén",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Almacén",
+ "slug": "roles/almacen"
+ },
+ {
+ "label": "Registrar y consultar recepciones",
+ "slug": "operacion/recepciones"
+ },
+ {
+ "label": "Cargar evidencia de materiales",
+ "slug": "operacion/evidencias"
+ },
+ {
+ "label": "Consultar pedidos",
+ "slug": "operacion/listados"
+ },
+ {
+ "label": "Crear solicitudes",
+ "slug": "operacion/solicitudes"
+ }
+ ]
+ },
+ {
+ "label": "Contabilidad",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Contabilidad",
+ "slug": "roles/contabilidad"
+ },
+ {
+ "label": "Consultar solicitudes",
+ "slug": "operacion/solicitudes"
+ },
+ {
+ "label": "Consultar pedidos",
+ "slug": "operacion/listados"
+ },
+ {
+ "label": "Consultar recepciones y referencias",
+ "slug": "operacion/recepciones"
+ },
+ {
+ "label": "Facturas, validación y pago",
+ "slug": "finanzas/facturas"
+ },
+ {
+ "label": "Pagos y complementos",
+ "slug": "finanzas/pagos"
+ },
+ {
+ "label": "Administrar proveedores",
+ "slug": "administracion/proveedores"
+ },
+ {
+ "label": "Expedientes",
+ "slug": "finanzas/expediente"
+ },
+ {
+ "label": "Empresas y sucursales",
+ "slug": "administracion/empresas"
+ }
+ ]
+ },
+ {
+ "label": "Proveedor",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Proveedor",
+ "slug": "roles/proveedor"
+ },
+ {
+ "label": "Responder cotizaciones",
+ "slug": "operacion/cotizaciones"
+ },
+ {
+ "label": "Consultar y confirmar pedidos",
+ "slug": "operacion/proveedor-pedidos"
+ },
+ {
+ "label": "Cargar factura o complemento",
+ "slug": "finanzas/cargar-factura"
+ },
+ {
+ "label": "Consultar facturas y saldo",
+ "slug": "finanzas/facturas"
+ },
+ {
+ "label": "Consultar pagos",
+ "slug": "finanzas/pagos"
+ },
+ {
+ "label": "Completar expediente",
+ "slug": "finanzas/expediente"
+ }
+ ]
+ },
+ {
+ "label": "Administrador",
+ "collapsed": true,
+ "items": [
+ {
+ "label": "Menú de Administrador",
+ "slug": "roles/administrador"
+ },
+ {
+ "label": "Solicitudes",
+ "slug": "operacion/solicitudes"
+ },
+ {
+ "label": "Concursos",
+ "slug": "operacion/concursos"
+ },
+ {
+ "label": "Cotizaciones",
+ "slug": "operacion/cotizaciones"
+ },
+ {
+ "label": "Pedidos y autorizaciones",
+ "slug": "operacion/ordenes"
+ },
+ {
+ "label": "Recepciones",
+ "slug": "operacion/recepciones"
+ },
+ {
+ "label": "Evidencias",
+ "slug": "operacion/evidencias"
+ },
+ {
+ "label": "Contratos marco",
+ "slug": "operacion/contratos"
+ },
+ {
+ "label": "Facturas",
+ "slug": "finanzas/facturas"
+ },
+ {
+ "label": "Pagos",
+ "slug": "finanzas/pagos"
+ },
+ {
+ "label": "Catálogos y usuarios",
+ "slug": "administracion/catalogos"
+ },
+ {
+ "label": "Reportes",
+ "slug": "operacion/reportes"
+ }
+ ]
+ },
+ {
+ "label": "Todas las guías de operación",
+ "collapsed": true,
+ "items": [
+ {
+ "autogenerate": {
+ "directory": "operacion"
+ }
+ }
+ ]
+ },
+ {
+ "label": "Facturación y pagos",
+ "collapsed": true,
+ "items": [
+ {
+ "autogenerate": {
+ "directory": "finanzas"
+ }
+ }
+ ]
+ },
+ {
+ "label": "Administración y catálogos",
+ "collapsed": true,
+ "items": [
+ {
+ "autogenerate": {
+ "directory": "administracion"
+ }
+ }
+ ]
+ },
+ {
+ "label": "Referencia y cobertura",
+ "collapsed": true,
+ "items": [
+ {
+ "autogenerate": {
+ "directory": "referencia"
+ }
+ }
+ ]
+ }
+]
+ })],
});
diff --git a/scripts/inventario.py b/scripts/inventario.py
new file mode 100644
index 0000000..c57dcfa
--- /dev/null
+++ b/scripts/inventario.py
@@ -0,0 +1,90 @@
+"""Actualiza el inventario de fuentes; no genera instrucciones operativas.
+Uso: python3 scripts/inventario.py [ruta/al/proyecto/compras]
+"""
+from pathlib import Path
+import hashlib, json, re, sys
+ROOT = Path(__file__).resolve().parents[1]
+SOURCE = Path(sys.argv[1]).resolve() if len(sys.argv) > 1 else ROOT.parent / 'compras'
+FRONT = SOURCE / 'erendira_frontend/src'
+BACK = SOURCE / 'erendira_backend'
+FOLDERS = {'aspectos':'administracion/aspectos','autorizaciones':'administracion/reglas','catalogos':'administracion/catalogos','categoria_productos':'administracion/categorias-productos','categorias':'administracion/grupos','centros_costo':'administracion/centros','clasificaciones':'administracion/clasificaciones','configuraciones':'administracion/reglas','configuracionesSat':'administracion/configuracion-sat','contratos':'operacion/contratos','cotizaciones':'operacion/cotizaciones','cuentas':'administracion/cuentas','empresas':'administracion/empresas','entregas':'operacion/recepciones','facturas':'finanzas/facturas','invitaciones':'operacion/concursos','ordenes':'operacion/ordenes','pagos':'finanzas/pagos','plantas':'administracion/almacenes','productos':'administracion/items','proveedores':'administracion/proveedores','reportes':'operacion/reportes','solicitudes':'operacion/solicitudes','subclasificaciones':'administracion/subclasificaciones','usuarios':'administracion/usuarios'}
+OVERRIDES = {'HomeView.vue':'operacion/listados','Registro.vue':'finanzas/expediente','RegistroExitoso.vue':'finanzas/expediente','usuarios/MiCuenta.vue':'guias/primeros-pasos','ordenes/OrdenesProveedor.vue':'operacion/proveedor-pedidos','proveedores/OrdenesVer.vue':'operacion/proveedor-pedidos','proveedores/ProovedoresExpediente.vue':'finanzas/expediente','facturas/FacturasMultiple.vue':'finanzas/cargar-factura'}
+CONTROLLERS = {
+'Aspecto':'administracion/aspectos','Autorizacion':'administracion/reglas','CatalogosMonedas':'finanzas/cargar-factura','Categoria':'administracion/grupos','CategoriaProducto':'administracion/categorias-productos','CentroCosto':'administracion/centros','Clasificacion':'administracion/clasificaciones','ClasificacionGasto':'referencia/observaciones','Compra':'finanzas/cargar-factura','Configuracion':'administracion/reglas','Configuraciones':'administracion/configuracion-sat','ContratosMarco':'operacion/contratos','ContratosProductosMarco':'operacion/contratos','Cotizacion':'operacion/cotizaciones','Cuenta':'administracion/cuentas','Dashboard':'operacion/listados','Empresa':'administracion/empresas','Entrega':'operacion/recepciones','Expedientes':'finanzas/expediente','Facturas':'finanzas/facturas','FormasPago':'finanzas/pagos','Grupo':'administracion/subclasificaciones','Inicio':'guias/primeros-pasos','Invitacion':'operacion/concursos','Mail':'referencia/observaciones','Motivo':'operacion/solicitudes','MotivoRechazo':'operacion/solicitudes','Notificaciones':'guias/primeros-pasos','OrdenCompra':'operacion/ordenes','PagoManual':'finanzas/pagos','Planta':'administracion/almacenes','Producto':'administracion/items','Proveedor':'administracion/proveedores','Register':'finanzas/expediente','Reporte':'operacion/reportes','Seguridad':'operacion/solicitudes','Solicitud':'operacion/solicitudes','Tipo':'operacion/solicitudes','TrackedMail':'guias/primeros-pasos','User':'guias/primeros-pasos','Usuario':'administracion/usuarios','Util':'referencia/estados','Home':'operacion/listados','Login':'guias/primeros-pasos','Controller':'referencia/observaciones'}
+def clean(s):
+ return re.sub(r'|/\*.*?\*/', '', s, flags=re.S)
+def entry(path, guide):
+ s=path.read_text()
+ return {'archivo':str(path.relative_to(SOURCE)), 'guia':guide, 'sha256':hashlib.sha256(s.encode()).hexdigest()}
+def link(guide):
+ return f'[Abrir guía](/{guide}/)'
+router=(FRONT/'router/index.js').read_text()
+imports=dict(re.findall(r"import\s+(\w+)\s+from\s+['\"](?:\.\./|@/)views/([^'\"]+)",router))
+routes={}
+for match in re.finditer(r"path:\s*['\"]([^'\"]+)['\"]",router):
+ chunk=router[match.end():]; end=re.search(r"\n\s*path:",chunk); chunk=chunk[:end.start()] if end else chunk
+ lazy=re.search(r"component:\s*\(\)\s*=>\s*import\(['\"]\.\./views/([^'\"]+)",chunk)
+ named=re.search(r'component:\s*(\w+)',chunk)
+ file=lazy.group(1) if lazy else imports.get(named.group(1)) if named else None
+ # Stop at the next route object: redirects have no component.
+ if file and 'redirect:' not in chunk[:chunk.find('component:')]: routes.setdefault(file,[]).append(match.group(1))
+rows=[]
+for p in sorted((FRONT/'views').rglob('*.vue')):
+ name=str(p.relative_to(FRONT/'views')); folder=name.split('/')[0]
+ guide=OVERRIDES.get(name,FOLDERS.get(folder,'guias/primeros-pasos'))
+ x=entry(p,guide); x['rutas']=routes.get(name,[]);rows.append(x)
+controllers=[]
+for p in sorted((BACK/'app/Http/Controllers').rglob('*.php')):
+ key=p.stem.removesuffix('Controller') or 'Controller'
+ if key not in CONTROLLERS: raise ValueError(f'Falta revisar controlador: {p}')
+ x=entry(p,CONTROLLERS[key]);s=clean(p.read_text())
+ x['metodos']=re.findall(r'\bfunction\s+(\w+)\s*\(',s)
+ controllers.append(x)
+components=[]
+for p in sorted((FRONT/'components').rglob('*.vue')):
+ name=str(p.relative_to(FRONT/'components')); folder=name.split('/')[0]
+ if folder=='factura': guide='finanzas/cargar-factura' if p.stem=='SubirFactura' else 'finanzas/facturas'
+ elif folder=='Expedinete': guide='finanzas/expediente'
+ elif folder=='ConfiguracionesSat': guide='administracion/configuracion-sat'
+ elif folder=='invitaciones' or p.stem=='AtencionInvitacion': guide='operacion/concursos'
+ elif folder=='ordenes' or p.stem=='VerFacturas': guide='operacion/evidencias'
+ elif folder=='solicitudes': guide='operacion/solicitudes'
+ elif p.stem in ('detallePO','OrdenCompra'): guide='operacion/ordenes'
+ else: guide='guias/primeros-pasos'
+ components.append(entry(p,guide))
+blades=[]
+for p in sorted((BACK/'resources/views').rglob('*.blade.php')):
+ name=str(p.relative_to(BACK/'resources/views'))
+ if 'cuadroComparativo' in name: guide='operacion/concursos'
+ elif 'orden_compra' in name or name=='mails/po.blade.php': guide='operacion/ordenes'
+ elif 'solpes' in name: guide='operacion/listados'
+ elif name.startswith('pdfs/'): guide='finanzas/facturas'
+ else: guide='guias/primeros-pasos'
+ blades.append(entry(p,guide))
+for x in rows+controllers+components+blades:
+ if not (ROOT/'src/content/docs'/f"{x['guia']}.md").exists(): raise ValueError(x)
+data={'proyecto':'compras','vistas_vue':rows,'componentes_vue':components,'controladores_laravel':controllers,'plantillas_blade':blades}
+(ROOT/'analysis').mkdir(exist_ok=True)
+(ROOT/'analysis/inventario.json').write_text(json.dumps(data,ensure_ascii=False,indent=2)+'\n')
+out='''---
+title: "Inventario de pantallas y controladores"
+description: "Trazabilidad entre el código de compras y las guías del manual."
+---
+
+Este inventario permite mantener el manual cuando cambie la aplicación. Las rutas con `:parametro` son patrones de la aplicación, no enlaces del manual. Una guía puede documentar varias pantallas del mismo proceso.
+
+'''
+out+=f'Cobertura: **{len(rows)} vistas Vue**, **{len(components)} componentes Vue**, **{len(controllers)} controladores Laravel** y **{len(blades)} plantillas Blade**. El inventario registra archivos y guías; no sustituye una prueba con usuarios y datos de producción.\n\n'
+out+='## Pantallas Vue\n\n| Archivo de vista | Ruta de aplicación | Documentación |\n| --- | --- | --- |\n'
+for x in rows:
+ out+=f"| `{x['archivo'].split('/views/')[1]}` | "+ ('
'.join('`'+r+'`' for r in x['rutas']) or 'Sin ruta Vue registrada')+f" | {link(x['guia'])} |\n"
+out+='\n## Controladores Laravel\n\nLos controladores de catálogos, documentos y acciones se relacionan con su guía. Utilidades, notificaciones y catálogos auxiliares no siempre tienen una pantalla independiente. `MailController`, el controlador base y `Http/Controllers/UserController` no contienen acciones operativas propias; `ClasificacionGastoController` contiene funciones heredadas sin vista dedicada en este frontend.\n\n| Controlador | Acciones identificadas | Documentación |\n| --- | --- | --- |\n'
+for x in controllers:
+ out+=f"| `{x['archivo'].split('Controllers/')[1]}` | "+', '.join('`'+m+'`' for m in x['metodos'])+f" | {link(x['guia'])} |\n"
+out+='\n## Componentes y diálogos\n\nLos componentes de formulario se explican dentro de su pantalla de origen. Los componentes de presentación (fechas, importes, paginación y mensajes) no requieren datos adicionales.\n\n| Componente | Guía relacionada |\n| --- | --- |\n'
+for x in components: out+=f"| `{x['archivo'].split('/components/')[1]}` | {link(x['guia'])} |\n"
+out+='\n## Plantillas del backend\n\nLas plantillas Blade son salidas de impresión, correos o estructuras de presentación. No son formularios adicionales de captura del frontend Vue. Se revisaron como soporte de notificaciones y documentos descargables.\n\n| Plantilla | Guía relacionada |\n| --- | --- |\n'
+for x in blades: out+=f"| `{x['archivo'].split('/views/')[1]}` | {link(x['guia'])} |\n"
+out+='\n## Mantenimiento\n\nEl repositorio del manual incluye `analysis/inventario.json` con huellas SHA-256 de los archivos revisados y `scripts/inventario.py` para actualizar el inventario. Actualiza primero las instrucciones funcionales si cambia una pantalla; regenerar la tabla no actualiza el contenido del manual.\n'
+(ROOT/'src/content/docs/referencia/cobertura.md').write_text(out)
+print(f'Inventario: {len(rows)} vistas, {len(components)} componentes, {len(controllers)} controladores, {len(blades)} plantillas.')
diff --git a/scripts/verificar-enlaces.py b/scripts/verificar-enlaces.py
new file mode 100644
index 0000000..3d11929
--- /dev/null
+++ b/scripts/verificar-enlaces.py
@@ -0,0 +1,47 @@
+"""Comprueba enlaces y anclas del HTML compilado, sin dependencias externas."""
+from html.parser import HTMLParser
+from pathlib import Path
+from urllib.parse import unquote, urlsplit
+
+ROOT = Path(__file__).resolve().parents[1] / 'dist'
+class Document(HTMLParser):
+ def __init__(self, source):
+ super().__init__()
+ self.ids = set()
+ self.links = []
+ self.feed(source)
+ def handle_starttag(self, tag, attrs):
+ attrs = dict(attrs)
+ if 'id' in attrs:
+ self.ids.add(attrs['id'])
+ if tag == 'a' and 'href' in attrs:
+ self.links.append(attrs['href'])
+
+pages = {p: Document(p.read_text()) for p in ROOT.rglob('*.html')}
+if ROOT / 'index.html' not in pages:
+ raise SystemExit('Primero ejecuta npm run build.')
+errors = set()
+count = 0
+for page, document in pages.items():
+ for href in document.links:
+ url = urlsplit(href)
+ if url.scheme or url.netloc:
+ continue
+ dest = (ROOT / unquote(url.path.lstrip('/')) if url.path.startswith('/')
+ else page.parent / unquote(url.path) if url.path else page)
+ if dest.is_dir():
+ dest /= 'index.html'
+ dest = dest.resolve()
+ count += 1
+ if not dest.exists():
+ errors.add(f'{page.relative_to(ROOT)} → {href}: archivo ausente')
+ elif url.fragment and dest in pages and unquote(url.fragment) not in pages[dest].ids:
+ errors.add(f'{page.relative_to(ROOT)} → {href}: ancla ausente')
+expected = {'administrador', 'solicitante', 'comprador', 'autorizador', 'almacen', 'contabilidad', 'proveedor'}
+actual = {x.strip('/').split('/')[1] for x in pages[ROOT / 'index.html'].links if x.startswith('/roles/')}
+if actual != expected:
+ errors.add(f'Los accesos de inicio no coinciden con los siete roles: {actual}')
+print(f'{len(pages)} páginas HTML; {count} enlaces internos; {len(errors)} errores.')
+for error in sorted(errors):
+ print(error)
+raise SystemExit(bool(errors))
diff --git a/src/content/docs/administracion/almacenes.md b/src/content/docs/administracion/almacenes.md
new file mode 100644
index 0000000..1b96591
--- /dev/null
+++ b/src/content/docs/administracion/almacenes.md
@@ -0,0 +1,40 @@
+---
+title: "Almacenes"
+description: "Almacenes — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Almacenes. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene este catálogo. Los almacenes aparecen en la solicitud; son obligatorios cuando así lo configura la empresa.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio; hasta 10 caracteres. |
+| Nombre | Obligatorio; hasta 200 caracteres. |
+| Horario | Opcional; hasta 200 caracteres. Indica el horario de recepción. |
+| Dirección | Opcional; hasta 200 caracteres. Ubicación de entrega. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/aspectos.md b/src/content/docs/administracion/aspectos.md
new file mode 100644
index 0000000..ff298e7
--- /dev/null
+++ b/src/content/docs/administracion/aspectos.md
@@ -0,0 +1,28 @@
+---
+title: "Aspectos de cotización"
+description: "Aspectos de cotización — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Aspectos de cotización. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+El catálogo permite crear, editar, activar e inactivar aspectos según permisos. Los aspectos de sistema pueden tener restricciones de eliminación. Revisa la ponderación conjunta antes de guardar porque influye en la comparación de ofertas.
+
+El listado muestra los aspectos disponibles; no presenta filtros de captura en esta vista.
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Obligatorio; hasta 200 caracteres. Identifica el criterio del comparativo. |
+| Ponderación | Indica el peso del criterio. El servidor impide superar el total de 100%. |
+| Sentido / ¿Tiene dirección ascendente? | Define cómo interpretar el criterio en la comparación, según el interruptor mostrado. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/catalogos.md b/src/content/docs/administracion/catalogos.md
new file mode 100644
index 0000000..5ff4f9d
--- /dev/null
+++ b/src/content/docs/administracion/catalogos.md
@@ -0,0 +1,31 @@
+---
+title: "Menú de administración"
+description: "Menú de administración — Manual de usuario de Eréndira."
+---
+
+Desde **Administración → Catálogos**, abre el catálogo que necesitas. El menú aparece para Administrador, Comprador y Contabilidad; cada acción conserva sus permisos propios. Poder consultar un catálogo no significa que puedas modificarlo.
+
+## Estructura de la organización
+
+- [Empresas y sucursales](/administracion/empresas/).
+- [Almacenes](/administracion/almacenes/).
+- [Centros de costo y macrocentros](/administracion/centros/).
+- [Cuentas](/administracion/cuentas/).
+- [Usuarios, niveles y asignaciones](/administracion/usuarios/).
+
+## Clasificación de las compras
+
+1. [Clasificaciones](/administracion/clasificaciones/).
+2. [Subclasificaciones](/administracion/subclasificaciones/).
+3. [Grupos de compras](/administracion/grupos/).
+
+Las [categorías de productos](/administracion/categorias-productos/) clasifican los [items](/administracion/items/); son un catálogo diferente de los grupos de compras.
+
+## Proveedores y reglas
+
+- [Proveedores](/administracion/proveedores/) y su [expediente](/finanzas/expediente/).
+- [Aspectos de cotización](/administracion/aspectos/).
+- [Autorizaciones y número de cotizaciones](/administracion/reglas/).
+- [Configuraciones SAT y documentos](/administracion/configuracion-sat/).
+
+Esta pantalla es un menú sin campos de captura. Cada opción abre su listado o formulario; **Catálogos** permite volver desde esas pantallas.
diff --git a/src/content/docs/administracion/categorias-productos.md b/src/content/docs/administracion/categorias-productos.md
new file mode 100644
index 0000000..434e240
--- /dev/null
+++ b/src/content/docs/administracion/categorias-productos.md
@@ -0,0 +1,38 @@
+---
+title: "Categorías de productos"
+description: "Categorías de productos — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Categorías de productos. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene este catálogo, utilizado para clasificar y buscar items. Comprueba los datos exportados: la vista de listado llama a la exportación de categorías/grupos, una diferencia que requiere revisión técnica.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Captura el código de la categoría. La regla explícita del servidor revisado no lo marca obligatorio. |
+| Descripción | Obligatoria; hasta 200 caracteres. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/centros.md b/src/content/docs/administracion/centros.md
new file mode 100644
index 0000000..7dac302
--- /dev/null
+++ b/src/content/docs/administracion/centros.md
@@ -0,0 +1,43 @@
+---
+title: "Centros de costo y macrocentros"
+description: "Centros de costo y macrocentros — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Centros de costo y macrocentros. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene los centros. **Quitar** elimina una fila de distribución antes de guardar. El sistema impide eliminar centros que siguen vinculados como macrocentro o subcentro. Se utilizan en aprobación, cuentas y distribución del gasto de las partidas.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Macrocentro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Obligatorio; hasta 255 caracteres. |
+| Código | Obligatorio; hasta 40 caracteres. |
+| Empresa | Obligatoria. Selecciona la empresa propietaria del centro. |
+| Es macro-centro | Indicador obligatorio del formulario; activa para distribuir en subcentros. |
+| Agregar sub-centro | Si es macrocentro, selecciona al menos un centro. |
+| Porcentaje por subcentro | Obligatorio para cada subcentro. La suma debe ser exactamente 100%. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/clasificaciones.md b/src/content/docs/administracion/clasificaciones.md
new file mode 100644
index 0000000..62351a9
--- /dev/null
+++ b/src/content/docs/administracion/clasificaciones.md
@@ -0,0 +1,37 @@
+---
+title: "Clasificaciones"
+description: "Clasificaciones — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Clasificaciones. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene este catálogo. Después crea las subclasificaciones que dependen de la clasificación.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio y único; hasta 20 caracteres. |
+| Descripción | Obligatoria; hasta 200 caracteres. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/configuracion-sat.md b/src/content/docs/administracion/configuracion-sat.md
new file mode 100644
index 0000000..a34d8a2
--- /dev/null
+++ b/src/content/docs/administracion/configuracion-sat.md
@@ -0,0 +1,39 @@
+---
+title: "Configuraciones SAT y documentos requeridos"
+description: "Configuraciones SAT y documentos requeridos — Manual de usuario de Eréndira."
+---
+
+## Editar una configuración
+
+**Anterior:** Catálogos → Configuraciones SAT. **Siguiente:** el mismo listado actualizado o Catálogos. Acceso del Administrador.
+
+Las opciones se obtienen del servidor y se agrupan por nombre. Los interruptores se guardan al cambiarlos; otras opciones abren **Editar**, donde se confirma con **Guardar** o se sale con **Cancelar**.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Valor de texto | Captura el texto de la opción mostrada; su significado depende del nombre y descripción de la configuración. |
+| Valor numérico | Para opciones numéricas se exige un entero mayor o igual a cero. |
+| Valor sí/no | Activa o desactiva el interruptor de la regla. |
+| Seleccionar imagen | Adjunta la imagen cuando la opción sea de ese tipo. |
+
+
+## Lista de documentos
+
+En una configuración documental usa **Agregar** para incluir requisitos y **Eliminar** para retirar una fila. Completa cada documento antes de guardar:
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Obligatorio. Nombre que verá el proveedor. |
+| Tipo | Obligatorio. Define si se solicita archivo u otro dato admitido. |
+| Aplica para proveedores de tipo | Obligatorio. Selecciona los tipos a los que se solicitará. |
+| Aplica para proveedores de categoría | Obligatorio. Selecciona su aplicación según REPSE/categoría. |
+| Aplica para el tipo de contribuyente | Obligatorio. Define los contribuyentes a los que aplica. |
+| El documento vence automáticamente | Obligatorio en la definición. Selecciona la regla de vencimiento. |
+| Pedir al registrar | Indica si se solicita durante el registro cuando dicho flujo está habilitado. |
+| Obligatorio | Indica si el proveedor debe completarlo. |
+| Historial | Indica si se conservan y muestran registros históricos. |
+
+
+Después de guardar, revisa el [expediente del proveedor](/finanzas/expediente/) al que aplica la configuración. Los nombres concretos de todas las opciones dependen de los datos de la instalación y no pueden enumerarse completamente desde el código.
diff --git a/src/content/docs/administracion/cuentas.md b/src/content/docs/administracion/cuentas.md
new file mode 100644
index 0000000..8cfe4c0
--- /dev/null
+++ b/src/content/docs/administracion/cuentas.md
@@ -0,0 +1,40 @@
+---
+title: "Cuentas"
+description: "Cuentas — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Cuentas. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene las cuentas. Comprueba sus centros asociados porque las partidas de solicitud requieren una cuenta y centro válidos.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Centro de beneficio | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio; hasta 10 caracteres. |
+| Nombre | Obligatorio; hasta 200 caracteres. |
+| Centros de costo | Selecciona los centros asociados; puedes quitar una selección antes de guardar. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/empresas.md b/src/content/docs/administracion/empresas.md
new file mode 100644
index 0000000..43c2ff2
--- /dev/null
+++ b/src/content/docs/administracion/empresas.md
@@ -0,0 +1,60 @@
+---
+title: "Empresas"
+description: "Empresas — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Empresas. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador y Contabilidad pueden crear y editar empresas. **Agregar sucursal** incorpora sus datos al mismo formulario. Las empresas se utilizan en solicitudes, pedidos, facturas y asignaciones de usuarios.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Obligatorio; hasta 255 caracteres. |
+| Código | Obligatorio; hasta 40 caracteres. |
+| Planta obligatoria | Interruptor. Exige seleccionar almacén en las solicitudes de esta empresa. |
+| Calle | Opcional; hasta 255 caracteres. |
+| Colonia | Opcional; hasta 255 caracteres. |
+| Ciudad | Opcional; hasta 255 caracteres. |
+| Estado | Opcional; hasta 255 caracteres. |
+| Código postal | Opcional; hasta 255 caracteres en esta validación. |
+| Teléfono | Opcional; hasta 10 caracteres. |
+| Encargado | Selecciona al responsable de la empresa. |
+| Tipo | Obligatorio. Selecciona el tipo de empresa disponible. |
+| RFC | Obligatorio, único y válido; 12–13 caracteres. |
+| Régimen fiscal | Hasta 5 caracteres; selecciona la clave correspondiente. |
+| Razón social | Obligatoria; hasta 100 caracteres. |
+| Contacto para soporte | Opcional; hasta 100 caracteres. |
+| Teléfono de contacto | Opcional; de 7 a 100 caracteres si se proporciona. |
+| Correo electrónico de contacto | Opcional; hasta 100 caracteres. Utiliza una dirección válida. |
+| Archivo .cer | Opcional; archivo con extensión .cer, hasta 1024 KB. |
+| Archivo .key | Opcional; archivo con extensión .key, hasta 1024 KB. |
+| Contraseña del certificado | Opcional; hasta 50 caracteres. Debe corresponder a los archivos seleccionados. |
+| Sucursal: Nombre | Obligatorio al agregar una sucursal; hasta 250 caracteres. |
+| Sucursal: Encargado | Selecciona al responsable de esa sucursal. |
+| Sucursal: ¿Autoriza pagos? | Activa si el responsable de la sucursal debe autorizar pagos. |
+| Sucursal: ID externo | Opcional; hasta 100 caracteres. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/grupos.md b/src/content/docs/administracion/grupos.md
new file mode 100644
index 0000000..e428624
--- /dev/null
+++ b/src/content/docs/administracion/grupos.md
@@ -0,0 +1,40 @@
+---
+title: "Grupos de compras"
+description: "Grupos de compras — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Grupos de compras. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene los grupos. Aunque los archivos se llaman Categorías, la navegación los presenta como Grupos de compra. Se seleccionan en la solicitud y en las asignaciones del comprador.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Subclasificación | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio y único; hasta 20 caracteres. |
+| Descripción | Obligatoria; hasta 200 caracteres. |
+| Clasificación (selector de grupo) | Obligatoria. La pantalla etiqueta así el selector; sus opciones proceden de las subclasificaciones/grupos del catálogo. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/items.md b/src/content/docs/administracion/items.md
new file mode 100644
index 0000000..c5d36a1
--- /dev/null
+++ b/src/content/docs/administracion/items.md
@@ -0,0 +1,48 @@
+---
+title: "Items y productos"
+description: "Items y productos — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Items y productos. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador crea y mantiene items. **Es por contrato** es un filtro del listado. Al guardar, el formulario envía además datos internos; no se deben capturar fuera de la pantalla. Los productos quedan disponibles en el selector de items de solicitudes y contratos.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Cuenta | Selecciona el valor que quieres consultar. |
+| Es por contrato | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio y único; hasta 20 caracteres. |
+| Descripción | Obligatoria; hasta 200 caracteres. |
+| Unidad de medida | Obligatoria. Selecciona la unidad del catálogo. |
+| Serie | Opcional; hasta 200 caracteres. |
+| Modelo | Opcional; hasta 200 caracteres. |
+| Color | Opcional; hasta 200 caracteres. |
+| Cantidad mínima | Define el límite inferior permitido en solicitudes cuando corresponda. |
+| Cantidad máxima | Define el límite superior permitido en solicitudes cuando existe mínimo configurado. |
+| Cuenta | Selecciona la cuenta relacionada al item. |
+| Categoría | Selecciona la categoría de productos. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/proveedores.md b/src/content/docs/administracion/proveedores.md
new file mode 100644
index 0000000..72ea42e
--- /dev/null
+++ b/src/content/docs/administracion/proveedores.md
@@ -0,0 +1,64 @@
+---
+title: "Administrar proveedores"
+description: "Administrar proveedores — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Proveedores. **Siguiente:** **Registrar proveedor**, **Editar** o **Expediente**. Administrador y Contabilidad pueden mantener los proveedores y acceder a su expediente por este menú.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| RFC | Escribe el dato del documento o registro que buscas. |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Correo electrónico | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Sincronizado | Selecciona el valor que quieres consultar. |
+| Retraso en documentos | Selecciona el valor que quieres consultar. |
+| Documentos completos | Selecciona el valor que quieres consultar. |
+| Complemento de pago faltante | Selecciona el valor que quieres consultar. |
+| Activo | Selecciona el valor que quieres consultar. |
+
+
+**Exportar** descarga la consulta. Los indicadores de documentos ayudan a localizar proveedores que tienen bloqueada la carga de comprobantes.
+
+## Crear o editar proveedor
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Obligatorio; hasta 200 caracteres. |
+| RFC | Obligatorio, válido y sin duplicados; máximo 13 caracteres. Debe corresponder a sus comprobantes. |
+| Contraseña | Hasta 20 caracteres. Completa la contraseña cuando se crea acceso con correo; revisa cualquier error de obligatoriedad del formulario. |
+| Nombre comercial | Obligatorio; hasta 255 caracteres. |
+| Días de pago | Opcionales; entero de 1 a 31, cuando se proporciona. |
+| Empresas asociadas para pagos | Selecciona las empresas con las que se relacionará el proveedor. |
+| Es REPSE | Activa cuando corresponda a su categoría documental. |
+| Es externo | Define el tratamiento del proveedor según la configuración de la instalación. |
+| Correo electrónico | Opcional en la regla general; hasta 200 caracteres. Usa una dirección válida si tendrá acceso o recibirá avisos. |
+| Correos electrónicos para notificaciones | Agrega las direcciones adicionales; cada una debe ser válida. |
+| Usar configuración específica | Activa para utilizar reglas particulares de este proveedor. |
+| Obligatoriedad PDF | Define si debe adjuntar PDF al cargar factura o pago. |
+| Validación de evidencia | Define si la evidencia debe validarse en facturación. |
+| Validar orden de compra (PO) | Define si debe relacionarse la factura con una orden. |
+| Opinión de cumplimiento mensual | Define si se requiere la opinión vigente en el expediente. |
+| Validar complementos de pago | Define si se revisan los complementos de facturas pagadas. |
+| Generar complemento automático | Habilita la generación conforme a los pagos señalados por el cliente, si el flujo está configurado. |
+| Día de inicio de opinión | Día del mes a partir del cual se puede cargar la opinión. |
+| Día límite de opinión | Día del mes hasta el que se admite la carga conforme a la configuración. |
+| Calle | Opcional; hasta 200 caracteres. |
+| Colonia | Opcional; hasta 200 caracteres. |
+| Ciudad | Opcional; hasta 200 caracteres. |
+| Estado | Opcional; hasta 200 caracteres. |
+| Código postal | Opcional; hasta 7 caracteres. |
+| Código por empresa | Obligatorio en cada relación de proveedor-empresa enviada; hasta 20 caracteres. |
+| Crédito por empresa | Opcional, numérico, hasta 2000. |
+
+
+Pulsa **Guardar** para volver al listado. **Inactivar/Activar** requiere confirmar el cambio. **Expediente** abre los documentos del proveedor. Las reglas particulares afectan la [carga de facturas](/finanzas/cargar-factura/); revisa su alcance antes de modificarlas.
diff --git a/src/content/docs/administracion/reglas.md b/src/content/docs/administracion/reglas.md
new file mode 100644
index 0000000..defbae8
--- /dev/null
+++ b/src/content/docs/administracion/reglas.md
@@ -0,0 +1,34 @@
+---
+title: "Autorizaciones y configuración de cotizaciones"
+description: "Autorizaciones y configuración de cotizaciones — Manual de usuario de Eréndira."
+---
+
+## Niveles de autorización
+
+**Anterior:** Catálogos → Autorizaciones. **Siguiente:** Catálogos y asignación de niveles en [Usuarios](/administracion/usuarios/). Esta pantalla está reservada al Administrador.
+
+Pulsa **Agregar** para incluir una fila; **Quitar** retira la fila antes de guardar.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre del nivel | Obligatorio; hasta 200 caracteres. |
+| Límite inferior | Obligatorio y numérico. Solo el primer rango puede iniciar en cero. |
+| Límite superior | Obligatorio, numérico y mayor que cero; debe ser mayor que el inferior. |
+
+
+Pulsa **Guardar**. Las órdenes usan el monto y las asignaciones de centro/nivel para construir su secuencia de aprobación. Revisa la configuración completa antes de cambiarla; no basta con crear el nivel sin asignar autorizadores.
+
+## Configuraciones: número de cotizaciones
+
+**Anterior:** Catálogos → Configuraciones. **Siguiente:** Catálogos y [invitación a proveedores](/operacion/concursos/#invitar-a-proveedores).
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Límite inferior | Obligatorio y numérico. Solo el primer rango puede iniciar en cero. |
+| Límite superior | Obligatorio, numérico, mayor que cero y mayor que el inferior. |
+| Número | Cantidad de cotizaciones/proveedores requeridos para el rango; obligatoria, numérica y mayor que cero. |
+
+
+Agrega o quita rangos y pulsa **Guardar**. El precio estimado de la invitación determina la cantidad mínima de proveedores que la pantalla solicitará. No presupongas que siempre se requieren tres cotizaciones.
diff --git a/src/content/docs/administracion/subclasificaciones.md b/src/content/docs/administracion/subclasificaciones.md
new file mode 100644
index 0000000..8ba0aa6
--- /dev/null
+++ b/src/content/docs/administracion/subclasificaciones.md
@@ -0,0 +1,39 @@
+---
+title: "Subclasificaciones"
+description: "Subclasificaciones — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Subclasificaciones. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Administrador mantiene este catálogo. En el servidor estas subclasificaciones se almacenan como grupos; en el manual se conserva el nombre visible al usuario. Después vincula los grupos de compras.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Clasificación | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Obligatorio y único; hasta 20 caracteres. |
+| Descripción | Obligatoria; hasta 200 caracteres. |
+| Clasificación | Obligatoria. Selecciona la clasificación superior. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/administracion/usuarios.md b/src/content/docs/administracion/usuarios.md
new file mode 100644
index 0000000..32180f9
--- /dev/null
+++ b/src/content/docs/administracion/usuarios.md
@@ -0,0 +1,47 @@
+---
+title: "Usuarios"
+description: "Usuarios — Manual de usuario de Eréndira."
+---
+
+## Listado
+
+**Anterior:** Administración → Catálogos → Usuarios. **Siguiente:** **Crear/Registrar** un registro o **Editar** uno existente.
+
+Solo Administrador crea y administra usuarios. Revisa las asignaciones antes de guardar: determinan qué solicitudes y niveles atiende cada persona. **Agregar nivel** añade una fila; **Quitar** retira la asignación. **Inactivar/Activar** solicita confirmación y afecta el acceso. El alta asigna internamente un perfil financiero; las opciones de facturas deben comprobarse con la cuenta real.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Nombre | Escribe el dato del documento o registro que buscas. |
+| Correo electrónico | Escribe el dato del documento o registro que buscas. |
+| Tipo | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+Usa **Exportar** cuando esté disponible para descargar el listado. **Catálogos** vuelve al menú de administración.
+
+## Crear o editar
+
+Completa los campos y pulsa **Guardar**. Corrige los errores señalados y espera la confirmación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Tipo | Obligatorio. Selecciona uno de los roles de compras disponibles. |
+| Nombre | Obligatorio; hasta 200 caracteres. |
+| Usuario | Obligatorio y único; hasta 200 caracteres. Es el identificador de acceso. |
+| Correo electrónico | Obligatorio, válido y único; hasta 200 caracteres. |
+| Contraseña | Obligatoria en este formulario; hasta 20 caracteres. |
+| Centro de costos | Selecciona el centro de referencia del usuario cuando aparezca. |
+| Nivel | Para autorizadores. Agrega el nivel de autorización y sus centros. El servidor exige nivel y al menos un centro por fila; las filas deben usar un mismo nivel. |
+| Centros de costo por nivel | Selecciona los centros en los que podrá autorizar el usuario. |
+| Grupos de compras | Selecciona los grupos asignados cuando se muestre esta configuración. |
+| Empresa por grupo | Selecciona la empresa para cada asignación de grupo de compras. |
+
+
+**Pantalla posterior:** listado del catálogo tras guardar, excepto los formularios que permanecen en detalle para continuar editando. **Regresar** vuelve sin enviar cambios pendientes. **Inactivar/Activar**, si aparece, abre una confirmación; revisa el registro antes de confirmar.
diff --git a/src/content/docs/finanzas/cargar-factura.md b/src/content/docs/finanzas/cargar-factura.md
new file mode 100644
index 0000000..fb9e92f
--- /dev/null
+++ b/src/content/docs/finanzas/cargar-factura.md
@@ -0,0 +1,42 @@
+---
+title: "Cargar factura, invoice y complemento"
+description: "Cargar factura, invoice y complemento — Manual de usuario de Eréndira."
+---
+
+## Desde un pedido o desde Facturas
+
+**Anterior:** [pedidos del proveedor](/operacion/proveedor-pedidos/), detalle del pedido o [Facturas](/finanzas/facturas/). **Siguiente:** listado de facturas actualizado; recepción y validación posteriores.
+
+1. Pulsa **Subir factura**, **Subir invoice** o **Subir pago**.
+2. Comprueba la empresa y el pedido seleccionados.
+3. Adjunta los documentos y completa los datos visibles.
+4. Pulsa **Subir** y espera el resultado. Si aparece una diferencia entre subtotal de factura y pedido, revisa la relación antes de confirmar.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| XML | Obligatorio para factura CFDI o complemento de pago; hasta 2 MB. Debe corresponder al tipo de comprobante elegido. |
+| PDF | Obligatorio u opcional según la configuración mostrada; hasta 2 MB. Debe ser PDF. |
+| Invoice | Documento PDF obligatorio cuando se carga una invoice; la interfaz indica máximo 2 MB. |
+| Folio | Obligatorio para Invoice: de 1 a 10 caracteres. No repitas un folio ya registrado. |
+| Fecha de expedición | Obligatoria para Invoice: fecha válida, no posterior a mañana según el servidor; registra la fecha real del comprobante. |
+| Monto total | Obligatorio para Invoice: importe numérico de 0 a 999999999. |
+| Moneda | Obligatoria para Invoice: selecciona la moneda del importe. |
+| Orden de compra | Selecciona el pedido cuando aparezca el selector; si vienes del pedido, revisa la asociación precargada. |
+| Fecha de envío | Obligatoria para material. Indica cuándo se envía la mercancía. |
+| Fecha de arribo | Obligatoria para material. Indica cuándo se espera o realizó el arribo. |
+| Medio de envío | Obligatorio para material; hasta 255 caracteres. |
+| Referencia / Comentarios de la entrega | Obligatorio para material; opcional en la regla general de otras cargas. Hasta 255 caracteres. Para materiales se presenta como comentarios de entrega. |
+
+
+## Validaciones y bloqueos
+
+El sistema revisa que el XML sea un CFDI, no esté duplicado y corresponda al RFC del proveedor y a la empresa receptora. También puede exigir período vigente, PDF, orden, opinión de cumplimiento, expediente completo y complementos pendientes según la configuración.
+
+Si aparece **Debes subir tu opinión de cumplimiento para poder cargar más documentos**, completa primero [Expediente](/finanzas/expediente/). Si el UUID ya existe, consulta la factura registrada antes de intentar cargarla otra vez.
+
+## Carga múltiple
+
+La pantalla de carga múltiple permite arrastrar comprobantes y revisar sus resultados por archivo. Selecciona primero **Empresa relacionada con los documentos**. Selecciona **Sucursal** si está habilitada y requerida en la instalación, agrega los archivos y revisa la **Referencia** de cada factura. Revisa los indicadores XML, PDF, Evidencia y PO de cada factura: deben estar completos según las reglas activadas. La referencia de cada fila admite hasta 255 caracteres. Abre **Ver errores** para consultar fallos de carga y retira con **Eliminar** los archivos que no correspondan. La carga utiliza las validaciones de factura del servidor. **Regresar** vuelve a Facturas.
+
+Esta pantalla tiene ruta propia, pero su enlace puede depender de los permisos y de la versión de la interfaz; no todos los perfiles muestran carga masiva.
diff --git a/src/content/docs/finanzas/expediente.md b/src/content/docs/finanzas/expediente.md
new file mode 100644
index 0000000..beec428
--- /dev/null
+++ b/src/content/docs/finanzas/expediente.md
@@ -0,0 +1,34 @@
+---
+title: "Expediente del proveedor"
+description: "Expediente del proveedor — Manual de usuario de Eréndira."
+---
+
+## Acceder al expediente
+
+**Anterior:** menú de usuario del proveedor o **Catálogos → Proveedores → Expediente** para personal autorizado. **Siguiente:** consulta de documentos o regreso a la carga de facturas.
+
+La pantalla muestra el proveedor, información de desempeño y documentos configurados para su tipo y categoría. No hay una lista fija de documentos para todas las cuentas.
+
+## Completar documentos
+
+1. Localiza el documento solicitado.
+2. Si es archivo, pulsa **Subir / Cambiar** y selecciona el comprobante.
+3. Si es texto, captura el dato en el campo y pulsa **Guardar**.
+4. Usa **Datos extra**, **Registros** o **Descargar** para consultar información e historial cuando estén disponibles.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Documento | Archivo según el requisito mostrado. La carga general admite JPG, JPEG, PNG y PDF; el límite del endpoint general es 35500 KB, pero algunos flujos de alta/opinión limitan a 2500 KB. Respeta el límite mostrado por el cargador utilizado. |
+| Texto del documento | Obligatorio para completar un requisito de tipo texto. Escribe el dato solicitado por el nombre del documento. |
+| Opinión de cumplimiento | Carga el archivo del período actual y del RFC del proveedor. El sistema comprueba su lectura y validación. |
+| Constancia de situación fiscal | Debe corresponder al RFC de la cuenta y ser legible por el sistema. |
+
+
+La opinión puede rechazarse por período incorrecto, RFC distinto, documento ilegible o indisponibilidad del servicio de validación. Corrige el archivo o solicita revisión de la validación según el mensaje. Una vez actualizado el expediente, vuelve a [cargar la factura](/finanzas/cargar-factura/).
+
+## Registro de proveedor
+
+Existen pantallas de **Registro** y **Registro exitoso** en el proyecto, pero no están registradas en el router Vue revisado. No se presenta un enlace de registro público como parte del recorrido normal.
+
+Si tu instalación habilita ese formulario por otro acceso, solicita **Tipo de proveedor**, indicador **Es REPSE**, **Correo electrónico**, **RFC** nacional o **NIF** extranjero, **Razón social**, **Nombre comercial**, **Contraseña**, **Confirmar contraseña** y los documentos configurados. Correo válido; RFC de 12–13 caracteres; NIF de 9–20; contraseña de al menos 6 caracteres con confirmación; razón social y nombre comercial hasta 255. Tras **Registrarse**, consulta el resultado de registro y utiliza **Volver**.
diff --git a/src/content/docs/finanzas/facturas.md b/src/content/docs/finanzas/facturas.md
new file mode 100644
index 0000000..58b6143
--- /dev/null
+++ b/src/content/docs/finanzas/facturas.md
@@ -0,0 +1,81 @@
+---
+title: "Consultar, validar y autorizar facturas"
+description: "Consultar, validar y autorizar facturas — Manual de usuario de Eréndira."
+---
+
+## Acceso y listado
+
+**Anterior:** menú **Facturas**, pedido o recepción. **Siguiente:** carga, validación, autorización de pago, programación, pago o consulta de comprobantes.
+
+Las acciones financieras dependen del **perfil de facturación** de la cuenta además de su rol de compras. Consulta [Roles y permisos](/referencia/permisos/).
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Proveedor | Selecciona el valor que quieres consultar. |
+| Folio | Escribe el dato del documento o registro que buscas. |
+| UUID | Escribe el dato del documento o registro que buscas. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Fecha de la factura (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Estatus de autorización de pago | Selecciona el valor que quieres consultar. |
+| Fecha de carga (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Método de pago | Selecciona el valor que quieres consultar. |
+| Complemento de pago | Selecciona el valor que quieres consultar. |
+| Estatus de pago | Selecciona el valor que quieres consultar. |
+| Fecha de programación de pago (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Fecha de pago (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Estatus de cancelación | Selecciona el valor que quieres consultar. |
+| Estatus de evidencia | Selecciona el valor que quieres consultar. |
+| Fecha de descarga (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Subida por proveedor | Selecciona el valor que quieres consultar. |
+| Recepción | Selecciona el valor que quieres consultar. |
+
+
+El selector de **ordenamiento** cambia el orden de los resultados. Las tarjetas/filas muestran folio, referencia, UUID, fechas, total y saldo. Abre los iconos de PDF/XML, PO y pagos para revisar sus documentos relacionados.
+
+## Cargar y descargar
+
+**Subir factura**, **Subir pago** y **Subir invoice** abren la [carga de comprobantes](/finanzas/cargar-factura/), según el perfil. **Descargar facturas** y **Descargar pagos** utilizan la selección o filtros de la acción mostrada; verifica el alcance antes de descargar. El servidor puede informar que no hay documentos coincidentes.
+
+## Validación de factura y evidencia
+
+Abre el diálogo de confirmación/validación, revisa el comprobante y utiliza **Aceptar** o **Rechazar**. Si se necesita corregir evidencia, **Elegir documento de evidencia para validación** permite seleccionar el archivo y **Subir** lo reemplaza.
+
+El estado de factura, la evidencia y la autorización de pago son controles diferentes. Comprueba cada uno antes de programar o pagar.
+
+## Autorizar el pago
+
+Abre la autorización de pago de la factura, consulta el historial y captura **Comentario**. El comentario de este diálogo admite hasta 500 caracteres en la interfaz; explica tu decisión. Pulsa **Autorizar** o **Rechazar** según tu asignación. La disponibilidad también depende de empresa/sucursal y de sus responsables.
+
+## Programar y pagar
+
+1. Selecciona las facturas que vas a atender.
+2. Para programar, elige la fecha en la acción de **Programación de pago** y verifica el diálogo antes de pulsar **Programar**. La fecha es obligatoria y no puede ser anterior a hoy.
+3. Para registrar un pago, abre **Pagar** y revisa las facturas seleccionadas.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Facturas seleccionadas | Selecciona los documentos correctos. Deben estar validados y tener autorización de pago cuando se exige. |
+| Importe a pagar por factura | Mayor que cero y no superior al saldo de la factura. Permite registrar pagos parciales. |
+| Fecha de pago | Obligatoria. La validación de este formulario admite hasta mañana; registra la fecha real del pago. |
+| Forma de pago | Obligatoria. Selecciona la forma utilizada. |
+| Comprobante | Adjunta una imagen o PDF cuando corresponda, máximo 2 MB. |
+
+
+Pulsa **Pagar** para registrar el evento. Consulta después **Pagos** para revisar los importes y documentos relacionados. El complemento fiscal se gestiona por separado: registrar un evento de pago no sustituye subir o generar el complemento.
+
+## Consultas y acciones complementarias
+
+- **PO:** muestra la orden relacionada; sin campos nuevos de captura.
+- **CFDI Pagos / Eventos de pagos:** consulta complementos, parcialidades y eventos registrados. La eliminación, si aparece, pide confirmación.
+- **Resumen de pagos:** muestra el resumen disponible para el proveedor; no requiere captura.
+- **Aceptar/Rechazar cancelación:** resuelve una petición de cancelación cuando el perfil tiene permiso.
+- **Eliminar:** abre un diálogo de confirmación sobre la factura seleccionada. Revisa el folio y UUID antes de confirmar.
+
+Las pantallas de facturación contienen acciones heredadas cuya disponibilidad depende de la instalación; las diferencias detectadas se registran en el [alcance de la revisión](/referencia/observaciones/).
diff --git a/src/content/docs/finanzas/pagos.md b/src/content/docs/finanzas/pagos.md
new file mode 100644
index 0000000..ba6d921
--- /dev/null
+++ b/src/content/docs/finanzas/pagos.md
@@ -0,0 +1,63 @@
+---
+title: "Pagos y complementos"
+description: "Pagos y complementos — Manual de usuario de Eréndira."
+---
+
+## Listado de pagos
+
+**Anterior:** menú **Facturas → Pagos** o consulta de pagos de una factura. **Siguiente:** detalle, edición, validación del complemento o generación.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Fecha de creación (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Fecha de pago (desde/hasta) | Selecciona el valor que quieres consultar. |
+| Forma de pago | Selecciona el valor que quieres consultar. |
+| Emisor | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+
+
+## Consultar y editar un pago
+
+Abre el pago para revisar las facturas incluidas y su comprobante. Las acciones dependen del perfil de facturación.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Factura seleccionada | Selecciona la factura que agregarás o revisarás dentro del pago. |
+| Monto por factura | Debe ser mayor que cero y no superar el saldo disponible. |
+| Monto del proveedor | Dato editable en la conciliación cuando aparece; debe ser positivo y no superar el saldo validado. |
+| Factura correcta | Confirma si la relación de la factura es correcta en el diálogo de revisión. |
+| Comprobante | Imagen/PDF de soporte; la interfaz indica máximo 2 MB. |
+| Fecha de pago | Obligatoria; en la edición de pagos manuales no debe ser posterior a hoy. |
+| Forma de pago | Obligatoria. Selecciona la forma utilizada. |
+
+
+Pulsa **Aceptar** para guardar los cambios del diálogo. **Validar / Invalidar** cambia la validación del complemento seleccionado; revisa sus facturas antes de hacerlo.
+
+## Generar un complemento
+
+Si la cuenta y la configuración permiten generación automática, abre la acción de generación, marca las facturas que se incluirán y confirma **Aceptar**. Revisa después el resultado y sus documentos. Esta función depende de la configuración del proveedor.
+
+## Importar pagos
+
+La opción **Importar** recibe un archivo de pagos para los perfiles autorizados. El servidor utiliza estas columnas:
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| UUID | Exactamente 36 caracteres si se utiliza. Obligatorio cuando no se proporciona FACTURA. |
+| FACTURA | Referencia alternativa; obligatoria cuando no se proporciona UUID. |
+| FECHA | Obligatoria. Fecha del pago. |
+| BENEFICIARIO | Obligatorio. Identifica al beneficiario. |
+| MONTO | Debe ser mayor que cero. Se revisa contra la factura y su saldo. |
+
+
+Usa el formato de importación autorizado por tu organización; el código revisado no aporta una plantilla descargable completa. Revisa los errores de cada fila antes de volver a importar. Las facturas deben estar validadas y autorizadas para pago cuando aplica.
+
+**Después:** consulta el pago y el saldo en [Facturas](/finanzas/facturas/). Para subir un CFDI de pago ya emitido utiliza [Subir pago](/finanzas/cargar-factura/).
diff --git a/src/content/docs/guias/ayuda.md b/src/content/docs/guias/ayuda.md
new file mode 100644
index 0000000..68b4364
--- /dev/null
+++ b/src/content/docs/guias/ayuda.md
@@ -0,0 +1,23 @@
+---
+title: "Resolver problemas frecuentes"
+description: "Resolver problemas frecuentes — Manual de usuario de Eréndira."
+---
+
+| Situación | Qué revisar | Continuar |
+| --- | --- | --- |
+| No puedo iniciar sesión | Usuario, contraseña y activación de la cuenta. | [Acceso](/guias/primeros-pasos/) |
+| No aparece un botón | Rol, permisos, asignaciones de centro/nivel y estado del documento. | [Permisos](/referencia/permisos/) |
+| No se guarda una solicitud | Campos obligatorios, item válido, centro y cuenta por partida, precio, almacén requerido y archivos. | [Solicitudes](/operacion/solicitudes/) |
+| Solicitud rechazada | Lee los comentarios; el rechazo para corrección vuelve a Borrador. | [Solicitudes](/operacion/solicitudes/) |
+| No permite generar una orden | La solicitud debe estar aceptada; revisa partidas ya utilizadas o pendientes en otras órdenes. | [Pedidos](/operacion/ordenes/) |
+| Pedido sin folio definitivo | Comprueba si sigue en Aprobacion. El folio se asigna al terminar la autorización. | [Autorización](/operacion/ordenes/#autorizar-un-pedido) |
+| Pedido Pendiente | Requiere confirmación del proveedor si esa opción está activa. | [Confirmación](/operacion/proveedor-pedidos/) |
+| No se encuentra la orden para recibir | Revisa el código y si continúa en autorización. | [Recepciones](/operacion/recepciones/) |
+| Orden atendida al 100% | Revisa las recepciones acumuladas antes de crear otra. | [Recepciones](/operacion/recepciones/) |
+| Factura no corresponde al proveedor | Verifica UUID y RFC del comprobante frente al pedido. | [Carga de factura](/finanzas/cargar-factura/) |
+| Quedó Entregado y falta Recibida | Revisa la firma; servicios la aporta Solicitante y materiales Almacén. | [Evidencia](/operacion/evidencias/) |
+| No puedo cargar facturas | Revisa opinión vigente, expediente, complementos pendientes y requisitos configurados. | [Expediente](/finanzas/expediente/) |
+| No puedo programar o pagar | Revisa validación de factura, autorización de pago, fecha e importe respecto al saldo. | [Facturas](/finanzas/facturas/) |
+| No carga un reporte | El tablero es externo; solicita revisión de su configuración y acceso. | [Reportes](/operacion/reportes/) |
+
+Al pedir soporte, indica el código del documento, la acción intentada y el mensaje de error. Conserva el formulario abierto mientras corriges los campos; espera la confirmación antes de repetir un envío.
diff --git a/src/content/docs/guias/flujo.md b/src/content/docs/guias/flujo.md
new file mode 100644
index 0000000..73217f3
--- /dev/null
+++ b/src/content/docs/guias/flujo.md
@@ -0,0 +1,47 @@
+---
+title: "De la solicitud al pago"
+description: "De la solicitud al pago — Manual de usuario de Eréndira."
+---
+
+## Recorrido principal
+
+| Paso | Responsable | Acción y resultado | Continuar en |
+| --- | --- | --- | --- |
+| 1 | Solicitante o usuario con permiso | Guarda un borrador o publica la solicitud: **Creada**. | [Crear solicitud](/operacion/solicitudes/#crear-o-editar-una-solicitud) |
+| 2 | Autorizador / Administrador | Autoriza la solicitud: **Liberada**. | [Revisar solicitud](/operacion/solicitudes/#revisar-autorizar-y-confirmar) |
+| 3 | Comprador / Administrador | Confirma la solicitud: **Aceptada**. Se crea la invitación o concurso asociado. | [Concursos](/operacion/concursos/) |
+| 4 | Comprador y proveedores | Si requiere cotización, invita, recibe propuestas y compara. Una solicitud aceptada también permite preparar la orden desde sus partidas disponibles. | [Cotizaciones](/operacion/cotizaciones/) |
+| 5 | Comprador / Administrador | Genera la orden con proveedor y partidas: **Aprobacion**. Puede haber varias órdenes para una solicitud. | [Pedidos](/operacion/ordenes/) |
+| 6 | Autorizadores por nivel | Aprueban en secuencia conforme al monto y centro. La última aprobación libera la orden y genera su código. | [Autorizar pedidos](/operacion/ordenes/#autorizar-un-pedido) |
+| 7 | Proveedor, cuando se solicita | Si está activo **Proveedor confirma PO**, queda **Pendiente**; confirmar con días de entrega la pasa a **Transito**. Si no se requiere confirmación, la última autorización la pasa a **Transito**. | [Confirmación del proveedor](/operacion/proveedor-pedidos/) |
+| 8 | Almacén / Comprador / Administrador | Registra las cantidades o montos recibidos. Puede haber varias recepciones por orden. | [Recepciones](/operacion/recepciones/) |
+| 9 | Solicitante en servicios; Almacén en materiales; Administrador | Adjunta la evidencia firmada en el documento/factura correspondiente. | [Evidencia](/operacion/evidencias/) |
+| 10 | Proveedor y personal con perfil de facturación | Carga y valida factura, autoriza y programa pago, registra pago y complemento cuando corresponde. | [Facturas](/finanzas/facturas/) |
+
+La factura y la recepción están relacionadas por el UUID. La factura puede existir antes del registro de recepción: no es obligatorio esperar al final de toda la compra para cargarla.
+
+## Cómo se relacionan los documentos
+
+**Solicitud → invitación/concurso → cotizaciones → orden(es) → recepción(es) → factura(s) → pago(s).**
+
+Cada partida conserva su origen. Una solicitud puede distribuir sus partidas entre proveedores; revisa cuáles siguen pendientes antes de generar otra orden. La solicitud pasa a **Colocada** cuando se completa la asignación y no quedan invitaciones pendientes según el proceso de guardado. Esto no significa que ya se hayan recibido los bienes o pagado las facturas.
+
+## Entregado y Recibida
+
+Al registrar una recepción, el sistema calcula el avance acumulado:
+
+- Menos del 100%: recepción **Parcial** y orden **Transito**.
+- 100% sin evidencia: recepción y orden **Entregado**.
+- 100% con evidencia: recepción y orden **Recibida**.
+
+La carga posterior de evidencia también actualiza estados. Verifica cantidades, facturas y firma antes de interpretar **Recibida** como cierre operativo: el botón de evidencia realiza una actualización de estado por su cuenta.
+
+## Correcciones y rechazos
+
+- **Rechazar solicitud** la devuelve a **Borrador**, con comentarios para corregir y publicar de nuevo.
+- **Rechazar solicitud definitivamente** la deja **Rechazada**.
+- El rechazo de una orden por Compras o en su autorización permite volver a trabajar la solicitud **Aceptada**.
+- **Cancelar entrega** conserva el registro cancelado y devuelve la orden a **Transito**. Revisa los saldos antes de registrar una recepción de reemplazo.
+- **Cerrar orden** es una acción manual distinta del registro de una recepción; cambia el estado a **Entregado**. Confirma que corresponde al cierre que deseas hacer.
+
+Los contratos marco permiten reutilizar condiciones y partidas en una nueva solicitud. Consulta [Contratos marco](/operacion/contratos/).
diff --git a/src/content/docs/guias/primeros-pasos.md b/src/content/docs/guias/primeros-pasos.md
new file mode 100644
index 0000000..85afb5e
--- /dev/null
+++ b/src/content/docs/guias/primeros-pasos.md
@@ -0,0 +1,59 @@
+---
+title: "Acceso, cuenta e inicio"
+description: "Acceso, cuenta e inicio — Manual de usuario de Eréndira."
+---
+
+## Iniciar sesión
+
+**Pantalla anterior:** acceso al portal. **Pantalla siguiente:** listado de solicitudes o pedidos/facturas del proveedor, según su cuenta.
+
+1. Abre la dirección del portal proporcionada por tu organización.
+2. Escribe **Usuario** y **Contraseña** y pulsa **Iniciar sesión**.
+3. Comprueba tu nombre y rol en el menú lateral. Una cuenta inactiva debe ser habilitada por Administración.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Usuario | Obligatorio. Identificador asignado a tu cuenta; la etiqueta visible es Usuario. |
+| Contraseña | Obligatoria. Respeta mayúsculas y minúsculas. |
+
+
+### Recuperar y restablecer contraseña
+
+Desde **¿Olvidaste tu contraseña?**, escribe el **Email** registrado y pulsa **Enviar correo**. Desde el enlace recibido, captura **Contraseña** y **Confirmar contraseña**, con el mismo valor, y pulsa **Restablecer contraseña**. Al terminar vuelve a iniciar sesión. El enlace aporta los datos de recuperación; no se capturan manualmente.
+
+Las pantallas existen en Vue; los servicios de recuperación deben estar habilitados en la instalación. Si no llega el correo, solicita la revisión de tu cuenta.
+
+## Inicio
+
+Abre **Inicio** para consultar las actividades pendientes disponibles para tu cuenta. **Actualizar** recarga la información; las tarjetas y **Ver documento** abren la solicitud u orden correspondiente. **Subir evidencia** abre la carga de firma y **Anterior/Siguiente** recorren las actividades. No se capturan datos de compra en esta pantalla.
+
+## Mi cuenta
+
+Abre **Mi cuenta** desde el menú de usuario. El nombre, usuario y asignaciones se muestran como referencia; las opciones editables dependen de tu tipo de cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Correo electrónico | Captura un correo válido y único, hasta 200 caracteres, si el campo aparece editable. |
+| Contraseña | El formulario envía la contraseña al guardar; máximo 20 caracteres en este flujo. No compartas el valor. |
+| Correos electrónicos para notificaciones | Agrega o quita direcciones válidas para recibir avisos. Revisa cada dirección antes de guardar. |
+
+
+Pulsa **Guardar** y espera la confirmación. Las asignaciones de nivel, empresa y centros se administran en [Usuarios](/administracion/usuarios/).
+
+## Notificaciones y cierre de sesión
+
+La campana muestra los avisos pendientes. Abre un aviso para leerlo o utiliza **Marcar todas como leídas**. Los avisos pueden llevarte al documento que requiere atención. **Cerrar sesión** devuelve al acceso. Si la sesión vence, inicia sesión de nuevo antes de continuar.
+
+## Cómo leer este manual
+
+- **Obligatorio:** el formulario o el servidor exigen el dato.
+- **Condicional:** aparece o se exige según el tipo de documento, configuración o permiso.
+- **Consulta:** el sistema lo obtiene de otro documento; no debes volver a capturarlo.
+- Los botones se habilitan por permisos y estado. Si no aparecen, revisa el rol y el estado del documento con Administración.
+- Las rutas indicadas en el [inventario](/referencia/cobertura/) pertenecen a la aplicación; los enlaces de este manual abren instrucciones.
+
+## Selector de empresa y sucursal
+
+En las pantallas financieras que lo muestran, selecciona **Empresa relacionada con los documentos** antes de cargar o consultar. **Sucursal** aparece cuando está habilitada; puede ser obligatoria según la configuración. La selección define a qué empresa pertenecen los comprobantes.
diff --git a/src/content/docs/guides/example.md b/src/content/docs/guides/example.md
deleted file mode 100644
index ebd0f3b..0000000
--- a/src/content/docs/guides/example.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: Example Guide
-description: A guide in my new Starlight docs site.
----
-
-Guides lead a user through a specific task they want to accomplish, often with a sequence of steps.
-Writing a good guide requires thinking about what your users are trying to do.
-
-## Further reading
-
-- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework
diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
index 338ac89..a15aac9 100644
--- a/src/content/docs/index.mdx
+++ b/src/content/docs/index.mdx
@@ -1,40 +1,50 @@
---
-title: Bienvenido al Manual de Eréndira
-description: Get started building your docs site with Starlight.
-template: splash # Remove or comment out this line to display the site sidebar on this page.
+title: Manual de usuario de Eréndira
+description: Guías por rol para solicitudes, pedidos, recepciones, facturas y pagos.
+template: splash
hero:
- tagline: Congrats on setting up a new Starlight project!
- image:
- file: ../../assets/houston.webp
+ title: Tu guía para cada paso de la compra
+ tagline: Elige tu rol y encuentra qué hacer, qué datos capturar y cómo continuar con el siguiente documento.
actions:
- - text: Example Guide
- link: /guides/example/
+ - text: Conocer el proceso completo
+ link: /guias/flujo/
icon: right-arrow
- - text: Read the Starlight docs
- link: https://starlight.astro.build
- icon: external
- variant: minimal
+ - text: Primeros pasos
+ link: /guias/primeros-pasos/
+ variant: secondary
---
-import { Card, CardGrid } from '@astrojs/starlight/components';
+import { CardGrid, LinkCard } from '@astrojs/starlight/components';
-## Next steps
+## ¿Cuál es tu rol?
-
-
- Edit `src/content/docs/index.mdx` to see this page change.
-
-
- Delete `template: splash` in `src/content/docs/index.mdx` to display a
- sidebar on this page.
-
-
- Add Markdown or MDX files to `src/content/docs` to create new pages.
-
-
- Edit your `sidebar` and other config in `astro.config.mjs`.
-
-
- Learn more in [the Starlight Docs](https://starlight.astro.build/).
-
+
+
+
+
+
+
+
+
+
+## Sigue el documento de principio a fin
+
+
+
+Cada guía explica los campos obligatorios y condicionales, las acciones disponibles y la pantalla desde la que llegas o a la que debes continuar.
+
+## Encuentra una respuesta
+
+
+
+
+
+
+Usa la búsqueda para localizar un campo o una acción. El manual documenta las pantallas del proyecto y el flujo de entrega confirmado por la organización. Consulta el [alcance de la revisión](/referencia/cobertura/).
diff --git a/src/content/docs/operacion/concursos.md b/src/content/docs/operacion/concursos.md
new file mode 100644
index 0000000..0a58cab
--- /dev/null
+++ b/src/content/docs/operacion/concursos.md
@@ -0,0 +1,60 @@
+---
+title: "Concursos e invitación a proveedores"
+description: "Concursos e invitación a proveedores — Manual de usuario de Eréndira."
+---
+
+## Listado de concursos e invitaciones
+
+**Anterior:** solicitud confirmada o menú **Concursos**. **Siguiente:** detalle del concurso, invitación, cotizaciones o pedido. El menú usa la [bandeja por partidas](/operacion/listados/). El listado de invitaciones por documento dispone de:
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Comprador | Selecciona el valor que quieres consultar. |
+| Empresa | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Solicitante | Selecciona el valor que quieres consultar. |
+| Proveedor asignado | Selecciona el valor que quieres consultar. |
+| Orden de compra | Escribe el dato del documento o registro que buscas. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Fecha de entrega estimada | Selecciona el valor que quieres consultar. |
+
+
+## Detalle del concurso
+
+Pulsa **Ver** para revisar las partidas solicitadas, datos del solicitante, alcance, especificaciones, requisitos y archivos heredados. **Ver cotizaciones** abre las propuestas vinculadas. **Regresar** vuelve al listado.
+
+Cuando aparece **Crear solicitud de pedido** en una consulta de precios, confirma **Convertir**: el sistema crea una solicitud en borrador con sus partidas. La consulta de precios tiene rutas reutilizadas, pero su acceso está comentado en el menú actual; no la busques como una opción habitual del menú.
+
+## Invitar a proveedores
+
+Desde la solicitud o el concurso, pulsa **Invitar a proveedores**. El diálogo tiene pestañas **Items**, **Proveedores** y **Archivos**.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Comentarios para proveedor por item | Opcionales; hasta 200 caracteres. Aclara lo que debe cotizar cada proveedor. |
+| Comentarios sobre la invitación | Opcionales; hasta 1000 caracteres. |
+| Precio estimado | Revisa el monto de referencia; determina cuántos proveedores se deben invitar según la configuración. |
+| Proveedores a invitar | Obligatorio. Selecciona al menos la cantidad indicada en pantalla; no hay un número fijo para todas las compras. |
+| Nombre del proveedor nuevo | Captura el nombre al utilizar Agregar proveedor. Los proveedores del catálogo ya muestran sus datos. |
+| Correo electrónico del proveedor nuevo | Captura la dirección a la que se enviará la invitación. |
+| Archivos de solicitud | Documentos heredados. Comprueba cuáles se compartirán con el proveedor. |
+| Archivos de invitación | Opcionales. La interfaz admite PDF e imágenes y limita cada archivo a 2 MB. |
+
+
+**Guardar borrador** conserva la preparación. **Guardar y solicitar cotizaciones** publica y envía las solicitudes de cotización. Si un proveedor ya cotizó, la pantalla lo advierte al volver a invitarlo. **Cancelar** cierra el diálogo.
+
+## Cuadro comparativo
+
+Consulta precio y aspectos de las cotizaciones, expande **Ver más cotizaciones** y usa **Generar PDF** si necesitas el comparativo. Los aspectos y ponderaciones proceden del catálogo de Administración.
+
+**Terminar proceso de cotización / Cerrar cuadro** cierra la recepción de propuestas según la acción mostrada. **Generar orden de compra** abre la preparación del pedido para el proveedor seleccionado. Si eliges una propuesta distinta de la ganadora, captura **Justificación** en el pedido, hasta 200 caracteres.
+
+**Siguiente:** [crear el pedido](/operacion/ordenes/). Antes de continuar verifica qué partidas se asignarán; una solicitud puede originar varias órdenes.
diff --git a/src/content/docs/operacion/contratos.md b/src/content/docs/operacion/contratos.md
new file mode 100644
index 0000000..04ec7da
--- /dev/null
+++ b/src/content/docs/operacion/contratos.md
@@ -0,0 +1,43 @@
+---
+title: "Contratos marco"
+description: "Contratos marco — Manual de usuario de Eréndira."
+---
+
+## Listado de contratos y partidas
+
+**Anterior:** menú **Contratos marco**. **Siguiente:** **Ver**, **Editar**, **Crear contrato marco** o selección de partidas desde una solicitud.
+
+El listado filtra por **Empresa, Código, Proveedor y Registro**. La vista **Partidas** añade **Descripción**. Todos son filtros opcionales. Pulsa **Buscar** o **Limpiar**; **Ver** muestra condiciones, partidas y archivos sin pedir nueva captura.
+
+## Crear o editar
+
+1. Selecciona empresa, proveedor y vigencia.
+2. Agrega items desde **Catálogo de Items** y completa sus condiciones.
+3. Pulsa **Guardar borrador** o **Guardar y publicar**. Revisa el mensaje de resultado antes de salir.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Empresa | Obligatoria. Empresa que celebrará el contrato. |
+| Proveedor | Obligatorio. Selecciona el proveedor del catálogo. |
+| Fecha de inicio | Obligatoria. Inicio de la vigencia. |
+| Fecha de término | Obligatoria. Fin de la vigencia. |
+| Moneda | Selecciona la moneda del contrato; se exige según la condición de contrato enviada por el formulario. |
+| Método de pago | Obligatorio. Selecciona la condición de pago. |
+| Tipo de facturación | Obligatorio. Selecciona el comprobante esperado. |
+| Días de crédito | Obligatorios, numéricos y al menos 1. |
+| Tipo de cambio | Obligatorio si la moneda no es MXN. |
+| Descripción de partida | Obligatoria; hasta 300 caracteres. El item debe existir en catálogo. |
+| Cantidad | Obligatoria, numérica y al menos 1. |
+| UM | Unidad de medida obligatoria. |
+| MOQ | Cantidad mínima de compra obligatoria, numérica y al menos 1. Condiciona solicitudes posteriores. |
+| Empaquetado | Obligatorio, numérico y al menos 1. |
+| Entrega (días) | Indica el plazo de entrega de la partida. |
+| PU | Precio unitario obligatorio, numérico y al menos 0. Revisa cantidad × precio. |
+| Comentarios | Opcionales; hasta 200 caracteres. |
+| Archivos de apoyo | Opcionales. PDF, PNG, JPG o JPEG, menores de 2 MB cada uno. |
+
+
+## Utilizar el contrato
+
+Abre [Crear solicitud](/operacion/solicitudes/#crear-o-editar-una-solicitud) y selecciona **Contratos marco** para agregar partidas. Revisa moneda, precio y MOQ heredados. El contrato es el origen de las condiciones; la solicitud y el pedido continúan con su seguimiento propio.
diff --git a/src/content/docs/operacion/cotizaciones.md b/src/content/docs/operacion/cotizaciones.md
new file mode 100644
index 0000000..b4254ac
--- /dev/null
+++ b/src/content/docs/operacion/cotizaciones.md
@@ -0,0 +1,54 @@
+---
+title: "Responder y consultar cotizaciones"
+description: "Responder y consultar cotizaciones — Manual de usuario de Eréndira."
+---
+
+## Listado de solicitudes de cotización
+
+**Anterior:** menú **Solicitudes de cotización**, notificación o detalle del concurso. **Siguiente:** **Llenar/Ver** la propuesta. El proveedor consulta las cotizaciones asignadas a su cuenta; Compras revisa las propuestas disponibles.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Empresa | Selecciona el valor que quieres consultar. |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Descripción | Escribe el dato del documento o registro que buscas. |
+| Proveedor | Selecciona el valor que quieres consultar. |
+| Solicitante | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+
+
+## Llenar una cotización
+
+1. Abre **Llenar**. Lee los items, archivos, alcance y requisitos del comprador.
+2. Captura precios, cantidades y los aspectos solicitados.
+3. Guarda un borrador si aún estás preparando la propuesta.
+4. Pulsa **Publicar y enviar cotización** cuando esté completa. El sistema regresa al listado; la propuesta enviada queda disponible para el comparativo de Compras.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Moneda | Obligatoria al publicar. Selecciona la moneda de la oferta. |
+| Tipo de cambio | Obligatorio si la moneda no es MXN. |
+| Artículo y/o servicio a cotizar | Descripción/comentario de la partida ofertada, obligatorio; hasta 200 caracteres. |
+| Cantidad | Obligatoria, numérica y al menos 0.01. |
+| Unidad medida | Obligatoria. Selecciona la unidad de la oferta. |
+| Precio unitario | Obligatorio, numérico y al menos 0.01. El importe total debe ser positivo. |
+| Aspectos de la cotización y de cada partida | Completa los campos dinámicos solicitados. Los aspectos de partida se validan y, cuando corresponde, deben ser enteros positivos. |
+| Comentarios | Obligatorios al publicar; hasta 200 caracteres. |
+| Vigencia de la cotización (días) | Obligatoria, numérica, de 0.01 a 2000 según la validación del servidor. |
+| Condiciones de pago | Opcionales; hasta 200 caracteres. |
+| Condiciones de entrega | Opcionales; hasta 200 caracteres. |
+| Archivos | Adjunta el soporte solicitado; PDF, PNG, JPG o JPEG, menores de 2 MB cada uno. |
+| Comentarios de rechazo | Obligatorios para Rechazar cotización. Usa hasta 200 caracteres conforme al contador visible; el servidor admite 250. |
+
+
+**Rechazar cotización** informa que no presentarás la propuesta. **Reactivar cotización**, cuando está disponible para Administración, la devuelve a solicitada. **Regresar** vuelve al listado.
+
+**Pantalla posterior del comprador:** [cuadro comparativo](/operacion/concursos/#cuadro-comparativo) y [pedido](/operacion/ordenes/).
diff --git a/src/content/docs/operacion/evidencias.md b/src/content/docs/operacion/evidencias.md
new file mode 100644
index 0000000..4c14423
--- /dev/null
+++ b/src/content/docs/operacion/evidencias.md
@@ -0,0 +1,29 @@
+---
+title: "Evidencia y firma de recepción"
+description: "Evidencia y firma de recepción — Manual de usuario de Eréndira."
+---
+
+## Dónde se carga
+
+Desde **Inicio**, la bandeja de pedidos o el listado de recepciones, utiliza **Subir evidencia / Subir firma**. Se abre **Carga de firma**, con las facturas relacionadas al documento seleccionado.
+
+**Anterior:** orden, recepción o actividad pendiente. **Siguiente:** el mismo listado actualizado, con la evidencia disponible para consulta y validación.
+
+1. Localiza la factura correcta en el diálogo.
+2. Pulsa **Subir evidencia** o **Cambiar evidencia** en esa factura.
+3. Selecciona el **PDF de la factura firmada** y espera a que termine la carga.
+4. Revisa el nuevo estado del documento y consulta el PDF cargado.
+
+| Campo | Requisito |
+| --- | --- |
+| Factura | Selecciona la fila que corresponde a la entrega. No adjuntes una firma a otra factura. |
+| Evidencia | Obligatoria para realizar la carga; el servidor exige PDF. |
+
+## Responsables
+
+- **Servicios:** Solicitante y Administrador tienen el permiso para aportar evidencia.
+- **Materiales:** Almacén y Administrador tienen el permiso para aportar evidencia.
+
+La carga puede cambiar la orden y sus recepciones a **Recibida**. Comprueba que el PDF acredita la recepción correspondiente. La validación de evidencia de factura, cuando está habilitada, es un paso posterior que se realiza en [Facturas](/finanzas/facturas/).
+
+Si el diálogo no presenta la factura esperada, revisa primero que el UUID esté correctamente asociado en la [recepción](/operacion/recepciones/). La carga de evidencia exige una orden o factura identificada y un archivo seleccionado.
diff --git a/src/content/docs/operacion/listados.md b/src/content/docs/operacion/listados.md
new file mode 100644
index 0000000..bc2b8f4
--- /dev/null
+++ b/src/content/docs/operacion/listados.md
@@ -0,0 +1,52 @@
+---
+title: "Bandejas y búsqueda de partidas"
+description: "Bandejas y búsqueda de partidas — Manual de usuario de Eréndira."
+---
+
+## Solicitudes, concursos y pedidos
+
+El menú abre un listado de **partidas**. Cambia de bandeja desde el menú lateral:
+
+- **Solicitudes por aprobar:** solicitudes creadas para revisión.
+- **Solicitudes por confirmar:** solicitudes liberadas.
+- **Solicitudes aceptadas:** disponibles para continuar la compra.
+- **Listado de solicitudes**, **Listado de concursos** y **Listado de pedidos:** seguimiento general.
+- **Pedidos pendientes:** órdenes en aprobación.
+
+**Anterior:** menú del rol o Inicio. **Siguiente:** **Editar/Ver** solicitud, **Ver** concurso, **Ver/Generar orden** o **Subir firma**, según la fila y los permisos.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Empresa | Selecciona el valor que quieres consultar. |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Descripción | Escribe el dato del documento o registro que buscas. |
+| Proveedor | Selecciona el valor que quieres consultar. |
+| Solicitante | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Fecha de entrega | Selecciona el valor que quieres consultar. |
+| No. Solicitud | Escribe el dato del documento o registro que buscas. |
+| Grupo de compras | Selecciona el valor que quieres consultar. |
+| Cuentas | Selecciona el valor que quieres consultar. |
+| Centros de costo | Selecciona el valor que quieres consultar. |
+| Nivel de autorización | Selecciona el valor que quieres consultar. |
+| Tipo de orden | Escribe el dato del documento o registro que buscas. |
+| Solo mostrar entregas atrasadas | Selecciona el valor que quieres consultar. |
+| Prioritarias | Selecciona el valor que quieres consultar. |
+
+
+No todos los filtros aparecen en todas las bandejas. **Solo mostrar entregas atrasadas** y **Prioritarias** son interruptores; desactívalos para incluir el resto.
+
+## Acciones
+
+Pulsa **Buscar** después de ajustar los filtros. Abre el código o **Ver** para consultar el documento. **Editar** lleva al formulario cuando el estado lo admite. **Generar orden** utiliza las partidas disponibles de la solicitud. **Subir firma** abre las facturas relacionadas para adjuntar evidencia.
+
+**Exportar**, **Generar PDF** y **Notificar órdenes pendientes** aparecen según los permisos. La última acción envía avisos: úsala cuando quieras solicitar la atención de los pendientes.
+
+También existen listados por documento para solicitudes, invitaciones y órdenes. Sus filtros propios se describen en las páginas de cada módulo.
diff --git a/src/content/docs/operacion/ordenes.md b/src/content/docs/operacion/ordenes.md
new file mode 100644
index 0000000..6b0081b
--- /dev/null
+++ b/src/content/docs/operacion/ordenes.md
@@ -0,0 +1,83 @@
+---
+title: "Registrar, autorizar y seguir pedidos"
+description: "Registrar, autorizar y seguir pedidos — Manual de usuario de Eréndira."
+---
+
+## Listados de pedidos
+
+En **Pedidos → Listado de pedidos**, usa la [bandeja de partidas](/operacion/listados/). **Pedidos pendientes** muestra las órdenes en aprobación. Existe además el listado por documento con filtros **Solicitante, Comprador, Empresa, Estatus, Proveedor asignado, Orden de compra y Fecha de registro**; todos son opcionales.
+
+**Anterior:** solicitud aceptada, cuadro comparativo o menú **Registrar pedido**. **Siguiente:** pedido en aprobación → confirmación del proveedor, si aplica → recepción.
+
+## Registrar un pedido
+
+1. Abre **Generar orden de compra** desde la solicitud/comparativo o **Registrar pedido** desde el menú.
+2. En registro manual captura **Solicitud** y pulsa **Buscar**. Debe existir y estar aceptada con partidas disponibles.
+3. Selecciona proveedor, condiciones y partidas. Revisa las cantidades heredadas y elimina con **Quitar** las que no correspondan a esta orden.
+4. Pulsa **Guardar**. Se crea la orden en **Aprobacion** y se generan las autorizaciones necesarias.
+
+El folio definitivo puede aparecer como pendiente hasta la última autorización. No generes otra orden solo porque aún no tenga código.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Solicitud | Obligatoria para buscar el origen en registro manual. Escribe el código de la solicitud aceptada. |
+| Proveedor | Obligatorio. Debe existir, tener RFC y superar las validaciones del sistema. |
+| Moneda | Obligatoria. Revisa su correspondencia con la cotización. |
+| Tipo de cambio | Obligatorio y numérico en el guardado de la orden. |
+| Tipo de orden | Selecciona material o servicio; influye en la entrega y en quién aporta la evidencia. |
+| Proveedor confirma PO | Interruptor. Si está activo, al terminar las autorizaciones se solicitará confirmación al proveedor. |
+| Prioritaria | Interruptor para identificar pedidos prioritarios en el listado. |
+| Cantidad de partida | Revisa la cantidad de la solicitud o cotización utilizada; el formulario reutiliza las partidas disponibles. |
+| Descripción/comentarios de partida | Obligatorios en el guardado; hasta 300 caracteres. Verifica el texto editable de cada item. |
+| Precio unitario de partida | Obligatorio, numérico y mayor que cero. |
+| Archivo de partida | Opcional. PDF, PNG, JPG o JPEG, hasta 2048 KB. |
+| Comentarios internos | Opcionales; hasta 200 caracteres. Información para la gestión interna. |
+| Comentarios externos | Opcionales; hasta 200 caracteres. Instrucciones para el proveedor. |
+| Justificación | Obligatoria si se elige una cotización distinta de la ganadora; hasta 200 caracteres. |
+| Uso de CFDI | Selecciona la clave aplicable del catálogo mostrado. |
+| Forma de pago | Selecciona la clave que corresponda a las condiciones pactadas. |
+| Método de pago | Selecciona la opción del catálogo mostrado. |
+| Tipo de facturación | Obligatorio. Define el comprobante esperado; por ejemplo, CFDI o Invoice según el catálogo. |
+| Días de entrega | Obligatorios cuando la orden es editable; valor numérico de al menos 1. |
+| Días de crédito | Obligatorios cuando la orden es editable; valor numérico de al menos 1. |
+| Archivos generales | Agrega los documentos de soporte que compartirás en el pedido. Espera la confirmación de Subir archivos. |
+
+
+## Autorizar un pedido
+
+Abre **Pedidos pendientes → Ver**. Revisa las partidas y el historial de autorizaciones. Solo el nivel habilitado puede resolver la aprobación correspondiente.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Resultado del nivel | Se establece al pulsar Autorizar orden o Rechazar orden para la autorización habilitada. |
+| Comentarios de autorización | Obligatorios para el nivel habilitado; hasta 200 caracteres. Describe el motivo de la decisión. |
+
+
+Pulsa **Autorizar orden** o **Rechazar orden** según corresponda. Si faltan niveles, permanece esperando la siguiente autorización. La última aprobación asigna folio y deja la orden **Pendiente** si requiere confirmación del proveedor, o **Transito** si no la requiere. El rechazo de autorización deja la orden rechazada y devuelve la solicitud a aceptada.
+
+## Detalle y seguimiento
+
+El detalle muestra solicitud de origen, solicitante, comprador, empresa, centro, cuenta, moneda, fechas, proveedor, importes, facturas, recepciones y autorizaciones. Los campos deshabilitados son de consulta.
+
+- **Registrar entrega:** abre [Recepciones](/operacion/recepciones/) con el pedido.
+- **Confirmar orden:** en una orden pendiente, captura días de entrega y confirma. Consulta [confirmación del proveedor](/operacion/proveedor-pedidos/).
+- **Rechazar orden:** requiere comentarios, hasta 200 caracteres. El rechazo por Compras permite volver a trabajar la solicitud.
+- **Volver a notificar PO asignada:** envía nuevamente el aviso al proveedor cuando tengas el permiso.
+- **Cerrar orden:** confirma el cierre manual; cambia la orden a Entregado.
+- **Tipo de facturación:** el servidor solo admite cambiarlo cuando la orden está en Transito.
+- **Subir factura:** disponible según perfil y requisitos documentales; abre [Carga de factura](/finanzas/cargar-factura/).
+
+## Calificar producto y servicio
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Calificación del producto | Cuando esté disponible, indica un valor entre 1 y 5 y pulsa Guardar calificación. |
+| Comentarios del producto | Opcionales; el servidor admite hasta 2048 caracteres. |
+| Calificación del servicio | Cuando esté disponible, indica un valor entre 1 y 5 y pulsa Guardar calificación. |
+| Comentarios del servicio | Opcionales; hasta 200 caracteres. |
+
+
+**Regresar** vuelve al listado. Para cerrar el recorrido de entrega consulta [Evidencia y firma](/operacion/evidencias/).
diff --git a/src/content/docs/operacion/proveedor-pedidos.md b/src/content/docs/operacion/proveedor-pedidos.md
new file mode 100644
index 0000000..7313009
--- /dev/null
+++ b/src/content/docs/operacion/proveedor-pedidos.md
@@ -0,0 +1,33 @@
+---
+title: "Pedidos del proveedor y confirmación"
+description: "Pedidos del proveedor y confirmación — Manual de usuario de Eréndira."
+---
+
+## Consultar tus pedidos
+
+**Anterior:** menú de proveedor, **Sube tu factura** o aviso recibido. **Siguiente:** detalle del pedido, confirmación o carga de factura.
+
+El listado del proveedor tiene filtros opcionales **Empresa**, **Orden de compra**, **Fecha de registro** y **Estatus**. Pulsa **Buscar**, abre **Ver** y comprueba partidas, importes, moneda y condiciones. **Subir factura** abre la carga vinculada al pedido; una opinión de cumplimiento pendiente puede bloquearla según la configuración.
+
+El detalle muestra código, solicitud, solicitante, comprador, empresa, proveedor, fechas, tipo, tipo de cambio, estado y condiciones. Estos datos se consultan; no sustituyen una modificación del pedido por Compras.
+
+## Confirmar o rechazar
+
+Cuando el pedido requiere respuesta del proveedor, debe estar **Pendiente**.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Días de entrega | Obligatorios al confirmar; entero de al menos 1. La interfaz indica días naturales. |
+| Comentarios de rechazo | Obligatorios al rechazar; hasta 200 caracteres. Explica por qué no puedes atender el pedido. |
+
+
+Pulsa **Confirmar** para aceptar: el pedido pasa a **Transito** y se establece la fecha estimada. Pulsa **Rechazar** con el motivo para dejar constancia de que no lo atenderás.
+
+## Confirmación desde correo
+
+El enlace abre una vista específica para proveedor con los datos del pedido y el diálogo de confirmación. El enlace incluye una clave de acceso que valida el servidor; utiliza el enlace completo del correo. No escribas ni cambies esa clave.
+
+Si el enlace falla o la orden ya no está pendiente, consulta con Compras. Si tienes sesión abierta, el portal puede redirigirte al área autenticada; utiliza allí el detalle del pedido.
+
+**Después:** realiza la entrega convenida y [carga la factura](/finanzas/cargar-factura/) cuando corresponda. El registro interno de recepción se explica en [Recepciones](/operacion/recepciones/).
diff --git a/src/content/docs/operacion/recepciones.md b/src/content/docs/operacion/recepciones.md
new file mode 100644
index 0000000..2f9395c
--- /dev/null
+++ b/src/content/docs/operacion/recepciones.md
@@ -0,0 +1,69 @@
+---
+title: "Registrar y consultar recepciones"
+description: "Registrar y consultar recepciones — Manual de usuario de Eréndira."
+---
+
+## Listado de recepciones
+
+**Anterior:** menú **Recepciones**, Inicio o un pedido. **Siguiente:** **Registrar nueva recepción**, **Ver** una existente o **Subir firma**.
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Empresa | Selecciona el valor que quieres consultar. |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Orden de compra | Escribe el dato del documento o registro que buscas. |
+| Descripción | Escribe el dato del documento o registro que buscas. |
+| Usuario | Selecciona el valor que quieres consultar. |
+| Proveedor | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Estatus UUID | Escribe el dato del documento o registro que buscas. |
+
+
+**Exportar** descarga la consulta. **Generar journal** genera el archivo de seguimiento contable cuando se dispone del permiso. El filtro **Estatus UUID** ayuda a localizar referencias de factura incorrectas.
+
+## Registrar una recepción
+
+1. Abre **Registrar recepción**. Introduce la **Orden de compra** y pulsa **Buscar**.
+2. Comprueba solicitante, comprador, proveedor, moneda, importe y partidas pendientes. Una orden aún en autorización no se puede recibir por este flujo.
+3. Selecciona la factura o carga su CFDI para obtener el UUID. Revisa emisor, receptor, folio y monto mostrados.
+4. Captura únicamente lo recibido en esta ocasión, por cantidad o por monto.
+5. Adjunta el soporte disponible y pulsa **Registrar entrega**. La firma se carga desde **Subir firma** en el listado.
+6. El sistema vuelve al listado. Revisa el porcentaje acumulado y el estado antes de registrar otra entrega.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Orden de compra | Necesaria para buscar las partidas. Utiliza el código del pedido liberado. |
+| Factura (UUID general) | La interfaz la marca requerida; el servidor de registro limita el UUID a 36 caracteres y verifica el proveedor si encuentra la factura. Completa la referencia para vincular correctamente recepción y factura. |
+| Seleccionar factura | Abre el listado de facturas relacionadas; elige la que corresponde a esta recepción. |
+| Subir CFDI | Selecciona el XML para extraer su UUID. Comprueba los datos obtenidos antes de continuar. |
+| Asignar UUID a todos los items | Copia la referencia general a todas las partidas. Úsalo solo si comparten factura. |
+| Cantidad por partida | Indica lo recibido ahora. Debe existir al menos una partida con entrega; revisa el pendiente para no duplicar recepciones. |
+| Entregar por monto | Activa el modo por importe. El campo Monto es obligatorio cuando se usa este modo y hay entrega; la interfaz calcula la cantidad equivalente y muestra total, pendiente y avance. |
+| Anticipo | Marca la partida si corresponde a un anticipo. Comprueba su aplicación antes de guardar. |
+| Factura por partida | UUID específico, hasta 36 caracteres. Úsalo cuando cada partida corresponde a una factura distinta. |
+| Adjuntos | Un archivo de soporte, PDF o imagen; la interfaz limita la selección a un archivo menor de 2 MB. |
+| Firma del usuario | Dato de consulta: aparece un enlace cuando ya existe evidencia. Para cargarla utiliza Subir firma en el listado o documento asociado. |
+| Incluir factura en el journal aunque el monto sea el incorrecto | Excepción visible al consultar ciertas recepciones Parcial o Entregado. Actívala únicamente cuando corresponde conservar esa relación contable. |
+| Adicional: Concepto | Describe el cargo adicional desde el botón Adicional de la partida. |
+| Adicional: Importe | Captura el importe del adicional y confirma Agregar. |
+
+
+## Recepciones parciales y completas
+
+Una recepción parcial deja la orden en **Transito**. Al completar el 100%, el registro queda **Entregado** si no tiene evidencia, o **Recibida** si la tiene. El sistema impide registrar otra recepción cuando detecta una entrega acumulada al 100%.
+
+Ejemplo: un pedido tiene 10 unidades. Registra 4 en la primera recepción; al llegar las restantes registra 6 en una nueva recepción. Revisa el acumulado antes de guardar la segunda.
+
+## Consultar, editar o cancelar
+
+Desde **Ver** se abre el mismo formulario con el registro existente. **Guardar cambios** actualiza los datos permitidos y devuelve al listado. **Cancelar entrega → Confirmar** marca la recepción como cancelada y devuelve la orden a Transito; verifica sus saldos y referencias antes de continuar.
+
+**Siguiente:** [cargar la firma](/operacion/evidencias/) o [revisar la factura](/finanzas/facturas/). **Regresar** devuelve al listado de recepciones.
diff --git a/src/content/docs/operacion/reportes.md b/src/content/docs/operacion/reportes.md
new file mode 100644
index 0000000..a8696c9
--- /dev/null
+++ b/src/content/docs/operacion/reportes.md
@@ -0,0 +1,16 @@
+---
+title: "Reportes de órdenes y entregas"
+description: "Reportes de órdenes y entregas — Manual de usuario de Eréndira."
+---
+
+## Reporte de órdenes
+
+Desde **Reportes → Órdenes**, se carga un tablero externo incrustado con la información de pedidos. Comprador y Administrador tienen acceso al menú de reportes.
+
+## Reporte de entregas
+
+Desde **Reportes → Entregas**, se carga el tablero externo de recepciones.
+
+**Anterior:** menú del rol. **Siguiente:** vuelve al menú y abre el listado de pedidos o recepciones para trabajar un documento.
+
+Las dos vistas de Vue no definen campos de captura ni filtros propios: los controles dentro del tablero pertenecen al servicio externo y no se incluyen en el repositorio. Si queda vacío, solicita revisión del acceso y configuración del tablero. No se puede confirmar desde este código qué filtros o descargas ofrece ese servicio.
diff --git a/src/content/docs/operacion/solicitudes.md b/src/content/docs/operacion/solicitudes.md
new file mode 100644
index 0000000..14d7ba8
--- /dev/null
+++ b/src/content/docs/operacion/solicitudes.md
@@ -0,0 +1,106 @@
+---
+title: "Solicitudes de pedido"
+description: "Solicitudes de pedido — Manual de usuario de Eréndira."
+---
+
+## Listado de solicitudes
+
+**Anterior:** menú **Solicitudes de pedido**. **Siguiente:** **Crear**, **Editar** o **Ver**. El menú principal usa la [bandeja por partidas](/operacion/listados/); el listado por documento añade estos filtros:
+
+
+### Filtros de consulta
+
+Son opcionales. Combina los necesarios y pulsa **Buscar**. Los rangos de fecha restringen el período consultado. **Limpiar**, cuando aparece, restablece la búsqueda. Los resultados también dependen de las empresas y centros asignados a tu cuenta.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Solicitante | Selecciona el valor que quieres consultar. |
+| Código | Escribe el dato del documento o registro que buscas. |
+| Empresa | Selecciona el valor que quieres consultar. |
+| Estatus | Selecciona el valor que quieres consultar. |
+| Fecha de registro | Selecciona el valor que quieres consultar. |
+| Fecha de entrega estimada | Selecciona el valor que quieres consultar. |
+| Almacén | Selecciona el valor que quieres consultar. |
+| Centro de beneficio | Selecciona el valor que quieres consultar. |
+| Cuenta | Selecciona el valor que quieres consultar. |
+| Clasificación | Selecciona el valor que quieres consultar. |
+
+
+## Crear o editar una solicitud
+
+Abre **Crear solicitud de pedido**. Para corregir un borrador, localízalo y pulsa **Editar**.
+
+1. Completa los datos de cabecera.
+2. Agrega partidas desde **Items**, **Solicitudes** anteriores o **Contratos marco**. También puedes utilizar **Agregar partida**.
+3. Revisa la distribución por centros, cantidades, precios y fecha requerida.
+4. Pulsa **Guardar borrador** para continuar después, o **Guardar y publicar** para iniciar la aprobación. Ambos guardados pasan por validaciones; un borrador no permite omitir todos los datos.
+5. El sistema devuelve al listado y muestra el código de solicitud.
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Tipo | Obligatorio. Selecciona el tipo de solicitud del catálogo; determina las opciones adicionales. |
+| Motivo | Condicional para los tipos que lo muestran. Selecciona el motivo de la compra. |
+| Hoja de seguridad | Condicional para solicitudes de seguridad. Selecciona el documento del catálogo. |
+| Empresa | Obligatoria. Define a qué empresa corresponde la compra. |
+| Almacén | Obligatorio si la empresa tiene activada Planta obligatoria. Selecciona el lugar de entrega. |
+| Configuración | Define si los centros se capturan por partida. Revisa la distribución resultante. |
+| Centro de beneficio para aprobación | Obligatorio. Determina el centro utilizado en las autorizaciones. |
+| Grupo de compras | Obligatorio. Selecciona el grupo que atenderá la compra. |
+| Cuenta de cabecera | Selecciona la cuenta cuando se muestre; comprueba que cada partida tenga su cuenta asignada. |
+| Moneda | Selecciona la moneda de los importes. Es exigida explícitamente para contratos. |
+| Tipo de cambio | Requerido cuando la moneda es distinta de MXN. Escribe la conversión aplicable. |
+| MOC | Opcional; hasta 10 caracteres. |
+| Num. Inversión | Opcional; hasta 10 caracteres. |
+| Comentarios | Opcionales; hasta 200 caracteres. Explica el contexto de la solicitud. |
+| Alcance | Obligatorio si la solicitud es de proyecto; hasta 200 caracteres. |
+| Especificaciones y/o detalles del trabajo o actividad | Obligatorios para proyecto. Describe el trabajo solicitado. |
+| Requerimientos técnicos, de calidad o normas aplicables | Obligatorios para proyecto. Indica los requisitos que deberá atender la propuesta. |
+| Fecha de entrega requerida | Obligatoria. Selecciona la fecha en que necesitas la compra. |
+| Precio estimado | Importe de referencia mostrado o capturado según el tipo; revisa su moneda. |
+| Archivos de apoyo | Opcionales. PDF, PNG, JPG o JPEG; utiliza archivos menores de 2 MB cada uno. |
+
+
+### Campos de cada partida
+
+
+| Campo | Cuándo se requiere y cómo llenarlo |
+| --- | --- |
+| Centro de costos | Obligatorio por partida; puede heredarse de la cabecera. Selecciona el centro al que se cargará el gasto. |
+| Cuenta | Obligatoria por partida. Selecciona una cuenta válida para el centro. |
+| Item | Obligatorio. Selecciona un producto del catálogo. |
+| Descripción | Obligatoria; hasta 200 caracteres. Explica exactamente lo requerido. |
+| Cantidad | Obligatoria, numérica y al menos 0.001. Respeta mínimos y máximos configurados para el producto y el MOQ del contrato. |
+| Unidad medida | Obligatoria. Usa la unidad asociada al item. |
+| PU (estimado) | Obligatorio. Cuando no se solicita cotización debe ser mayor que cero. Revisa que cantidad × precio unitario coincida con el total. |
+| Archivo de partida | Opcional. PDF, PNG, JPG o JPEG, máximo 2048 KB. |
+| UUID factura | Opcional; hasta 36 caracteres. Vincula la referencia de factura cuando ya existe. |
+| Distribución de centros de costo | Condicional. Revisa el centro, porcentaje y monto de cada destino antes de aceptar; todos los porcentajes deben ser mayores que cero y sumar exactamente 100%. En macrocentros se hereda la distribución y sus campos quedan deshabilitados. |
+
+
+### Seleccionar items, solicitudes o contratos
+
+En **Items**, filtra por **Nombre** y **Categoría**, marca las partidas y pulsa **Agregar**. En **Solicitudes**, captura **Solicitud previa**, pulsa **Buscar**, selecciona las partidas y confirma **Agregar**. En **Contratos marco**, selecciona las partidas vigentes disponibles y verifica cantidades, precios y condiciones heredadas. **Quitar** elimina la partida del formulario antes del guardado.
+
+## Revisar, autorizar y confirmar
+
+Desde **Ver**, consulta cabecera, partidas, archivos, concursos, autorizaciones, entregas y facturas asociadas. Los datos de proyecto se muestran para consulta. **Regresar** devuelve a la bandeja de origen.
+
+| Acción | Quién y qué ocurre |
+| --- | --- |
+| Autorizar solicitud | Autorizador o Administrador. Confirma la revisión y la solicitud pasa a **Liberada**. |
+| Confirmar solicitud | Comprador o Administrador. La solicitud pasa a **Aceptada** y se prepara la invitación asociada. |
+| Cambiar grupo de compras | Selecciona el nuevo grupo en el diálogo y confirma. |
+| Rechazar solicitud | Captura el motivo y confirma. Vuelve a **Borrador** para corrección. |
+| Rechazar solicitud definitivamente | Captura el motivo y confirma. Pasa a **Rechazada**. |
+| Reiniciar solicitud | Confirma el diálogo; vuelve a **Creada**. |
+| Cerrar solicitud | Confirma el diálogo; el controlador la marca **Colocada**. No registra una recepción. |
+| Invitar a proveedores | Abre la [invitación](/operacion/concursos/#invitar-a-proveedores). |
+| Generar orden de compra | Abre el [pedido](/operacion/ordenes/) con las partidas disponibles. |
+
+**Comentarios de rechazo:** obligatorios al rechazar. La interfaz usa 200 caracteres como referencia; el servidor acepta hasta 250. Utiliza hasta 200 para mantener el texto dentro de lo mostrado por la pantalla.
+
+## Si no puedes continuar
+
+Corrige primero los errores bajo cada campo. Revisa empresa/almacén, centros y cuentas de todas las partidas, precios y anexos. Una solicitud aún no aceptada o con partidas ya asignadas puede impedir generar otra orden. Los tipos de seguridad tienen una validación que requiere revisión de Administración si aparece un error aun habiendo seleccionado sus datos.
diff --git a/src/content/docs/reference/example.md b/src/content/docs/reference/example.md
deleted file mode 100644
index 0224f09..0000000
--- a/src/content/docs/reference/example.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-title: Example Reference
-description: A reference page in my new Starlight docs site.
----
-
-Reference pages are ideal for outlining how things work in terse and clear terms.
-Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting.
-
-## Further reading
-
-- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework
diff --git a/src/content/docs/referencia/cobertura.md b/src/content/docs/referencia/cobertura.md
new file mode 100644
index 0000000..ecc1cb3
--- /dev/null
+++ b/src/content/docs/referencia/cobertura.md
@@ -0,0 +1,217 @@
+---
+title: "Inventario de pantallas y controladores"
+description: "Trazabilidad entre el código de compras y las guías del manual."
+---
+
+Este inventario permite mantener el manual cuando cambie la aplicación. Las rutas con `:parametro` son patrones de la aplicación, no enlaces del manual. Una guía puede documentar varias pantallas del mismo proceso.
+
+Cobertura: **60 vistas Vue**, **38 componentes Vue**, **46 controladores Laravel** y **35 plantillas Blade**. El inventario registra archivos y guías; no sustituye una prueba con usuarios y datos de producción.
+
+## Pantallas Vue
+
+| Archivo de vista | Ruta de aplicación | Documentación |
+| --- | --- | --- |
+| `HomeView.vue` | `/partidas/:tipo/:status` | [Abrir guía](/operacion/listados/) |
+| `InicioView.vue` | `/inicio` | [Abrir guía](/guias/primeros-pasos/) |
+| `Login.vue` | `/login` | [Abrir guía](/guias/primeros-pasos/) |
+| `RecuperarContrasena.vue` | `/recuperarContrasena` | [Abrir guía](/guias/primeros-pasos/) |
+| `Registro.vue` | Sin ruta Vue registrada | [Abrir guía](/finanzas/expediente/) |
+| `RegistroExitoso.vue` | Sin ruta Vue registrada | [Abrir guía](/finanzas/expediente/) |
+| `RestablecerContrasena.vue` | `/restablecerContrasena` | [Abrir guía](/guias/primeros-pasos/) |
+| `aspectos/AspectosCrear.vue` | `/aspectos/:aspecto_id` | [Abrir guía](/administracion/aspectos/) |
+| `aspectos/AspectosLista.vue` | `/aspectos` | [Abrir guía](/administracion/aspectos/) |
+| `autorizaciones/Autorizaciones.vue` | `/autorizaciones` | [Abrir guía](/administracion/reglas/) |
+| `catalogos/Catalogos.vue` | `/catalogos` | [Abrir guía](/administracion/catalogos/) |
+| `categoria_productos/CategoriaProductosCrear.vue` | `/categoria_productos/:categoria_id` | [Abrir guía](/administracion/categorias-productos/) |
+| `categoria_productos/CategoriaProductosLista.vue` | `/categoria_productos` | [Abrir guía](/administracion/categorias-productos/) |
+| `categorias/CategoriasCrear.vue` | `/grupos/categorias/:categoria_id` | [Abrir guía](/administracion/grupos/) |
+| `categorias/CategoriasLista.vue` | `/categorias` | [Abrir guía](/administracion/grupos/) |
+| `centros_costo/CentrosCostoDetalle.vue` | `/centros_costo/detalle/:centro_id` | [Abrir guía](/administracion/centros/) |
+| `centros_costo/CentrosCostoLista.vue` | `/centros_costo` | [Abrir guía](/administracion/centros/) |
+| `clasificaciones/ClasificacionesCrear.vue` | `/clasificaciones/crear/:clasificacion_id` | [Abrir guía](/administracion/clasificaciones/) |
+| `clasificaciones/ClasificacionesLista.vue` | `/clasificaciones` | [Abrir guía](/administracion/clasificaciones/) |
+| `configuraciones/Configuraciones.vue` | `/configuraciones` | [Abrir guía](/administracion/reglas/) |
+| `configuracionesSat/ConfiguracionesSat.vue` | `/configuraciones_sat` | [Abrir guía](/administracion/configuracion-sat/) |
+| `contratos/ContratosCrear.vue` | `/contratos/crear/:contrato_id` | [Abrir guía](/operacion/contratos/) |
+| `contratos/ContratosLista.vue` | `/contratos` | [Abrir guía](/operacion/contratos/) |
+| `contratos/ContratosPartida.vue` | `/contratos_partidas` | [Abrir guía](/operacion/contratos/) |
+| `contratos/ContratosVer.vue` | `/contratos/ver/:contrato_id` | [Abrir guía](/operacion/contratos/) |
+| `cotizaciones/CotizacionesAtender.vue` | `/cotizaciones/ver/:cotizacion_id` | [Abrir guía](/operacion/cotizaciones/) |
+| `cotizaciones/CotizacionesLista.vue` | `/cotizaciones/listado/:invitacion_id` | [Abrir guía](/operacion/cotizaciones/) |
+| `cuentas/CuentasCrear.vue` | `/cuentas/crear/:cuenta_id` | [Abrir guía](/administracion/cuentas/) |
+| `cuentas/CuentasLista.vue` | `/cuentas` | [Abrir guía](/administracion/cuentas/) |
+| `empresas/EmpresasCrearEditar.vue` | `/empresas/crear`
`/empresas/editar/:empresa_id` | [Abrir guía](/administracion/empresas/) |
+| `empresas/EmpresasLista.vue` | `/empresas` | [Abrir guía](/administracion/empresas/) |
+| `entregas/EntregasCrear.vue` | `/entregas/crear/:entrega_id/:codigo` | [Abrir guía](/operacion/recepciones/) |
+| `entregas/EntregasLista.vue` | `/entregas` | [Abrir guía](/operacion/recepciones/) |
+| `facturas/FacturasLista.vue` | `/facturas` | [Abrir guía](/finanzas/facturas/) |
+| `facturas/FacturasMultiple.vue` | `/facturas/multiple` | [Abrir guía](/finanzas/cargar-factura/) |
+| `invitaciones/InvitacionesLista.vue` | `/invitaciones/:tipo` | [Abrir guía](/operacion/concursos/) |
+| `invitaciones/InvitacionesVer.vue` | `/invitaciones/:invitacion_id/:rfq_id` | [Abrir guía](/operacion/concursos/) |
+| `ordenes/OrdenesDetallle.vue` | `/ordenes/detalle/:orden_id` | [Abrir guía](/operacion/ordenes/) |
+| `ordenes/OrdenesLista.vue` | `/ordenes` | [Abrir guía](/operacion/ordenes/) |
+| `ordenes/OrdenesProveedor.vue` | `/mis_ordenes/:tipo` | [Abrir guía](/operacion/proveedor-pedidos/) |
+| `ordenes/OrdenesVer.vue` | `/ordenes/ver/:orden_id` | [Abrir guía](/operacion/ordenes/) |
+| `pagos/Pagos.vue` | `/Pagos` | [Abrir guía](/finanzas/pagos/) |
+| `plantas/PlantasCrear.vue` | `/plantas/crear/:planta_id` | [Abrir guía](/administracion/almacenes/) |
+| `plantas/PlantasLista.vue` | `/plantas` | [Abrir guía](/administracion/almacenes/) |
+| `productos/ProductosCrear.vue` | `/productos/:producto_id` | [Abrir guía](/administracion/items/) |
+| `productos/ProductosLista.vue` | `/productos` | [Abrir guía](/administracion/items/) |
+| `proveedores/OrdenesVer.vue` | `/proveedor/ordenes/ver/:orden_id` | [Abrir guía](/operacion/proveedor-pedidos/) |
+| `proveedores/ProovedoresExpediente.vue` | `/proveedores/:proveedor_id/expediente`
`/expediente/:usuario_id/` | [Abrir guía](/finanzas/expediente/) |
+| `proveedores/ProveedoresCrear.vue` | `/proveedores/:proveedor_id` | [Abrir guía](/administracion/proveedores/) |
+| `proveedores/ProveedoresLista.vue` | `/proveedores` | [Abrir guía](/administracion/proveedores/) |
+| `reportes/Entregas.vue` | `/reportes/entregas` | [Abrir guía](/operacion/reportes/) |
+| `reportes/Ordenes.vue` | `/reportes/ordenes` | [Abrir guía](/operacion/reportes/) |
+| `solicitudes/SolicitudesCrear.vue` | `/solicitudes/crear/:solicitud_id/:rfq_id` | [Abrir guía](/operacion/solicitudes/) |
+| `solicitudes/SolicitudesLista.vue` | `/solicitudes/:tipo` | [Abrir guía](/operacion/solicitudes/) |
+| `solicitudes/SolicitudesVer.vue` | `/solicitudes/ver/:solicitud_id/:rfq_id/:status` | [Abrir guía](/operacion/solicitudes/) |
+| `subclasificaciones/SubclasificacionesCrear.vue` | `/subclasificaciones/crear/:subclasificacion_id` | [Abrir guía](/administracion/subclasificaciones/) |
+| `subclasificaciones/SubclasificacionesLista.vue` | `/subclasificaciones` | [Abrir guía](/administracion/subclasificaciones/) |
+| `usuarios/MiCuenta.vue` | `/mi_cuenta/:usuario_id/` | [Abrir guía](/guias/primeros-pasos/) |
+| `usuarios/UsuariosCrear.vue` | `/usuarios/:usuario_id` | [Abrir guía](/administracion/usuarios/) |
+| `usuarios/UsuariosLista.vue` | `/usuarios` | [Abrir guía](/administracion/usuarios/) |
+
+## Controladores Laravel
+
+Los controladores de catálogos, documentos y acciones se relacionan con su guía. Utilidades, notificaciones y catálogos auxiliares no siempre tienen una pantalla independiente. `MailController`, el controlador base y `Http/Controllers/UserController` no contienen acciones operativas propias; `ClasificacionGastoController` contiene funciones heredadas sin vista dedicada en este frontend.
+
+| Controlador | Acciones identificadas | Documentación |
+| --- | --- | --- |
+| `Api/AspectoController.php` | `store`, `index`, `show`, `getTiposAspecto`, `destroy`, `update`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/aspectos/) |
+| `Api/AutorizacionController.php` | `index`, `store`, `calificar`, `getAutorizacionActiva`, `notificar` | [Abrir guía](/administracion/reglas/) |
+| `Api/CatalogosMonedasController.php` | `index` | [Abrir guía](/finanzas/cargar-factura/) |
+| `Api/CategoriaController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/grupos/) |
+| `Api/CategoriaProductoController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/categorias-productos/) |
+| `Api/CentroCostoController.php` | `index`, `show`, `store`, `destroy`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/centros/) |
+| `Api/ClasificacionController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/clasificaciones/) |
+| `Api/ClasificacionGastoController.php` | `index`, `get`, `create`, `createEdit`, `eliminar`, `getByEmpresa`, `getUltimaClasificacion`, `clasificarGasto` | [Abrir guía](/referencia/observaciones/) |
+| `Api/CompraController.php` | `store` | [Abrir guía](/finanzas/cargar-factura/) |
+| `Api/ConfiguracionController.php` | `index`, `store`, `byMonto` | [Abrir guía](/administracion/reglas/) |
+| `Api/ConfiguracionesController.php` | `index`, `save`, `getConfiguracionPersonal` | [Abrir guía](/administracion/configuracion-sat/) |
+| `Api/ContratosMarcoController.php` | `index`, `store`, `show`, `buildArchivos` | [Abrir guía](/operacion/contratos/) |
+| `Api/ContratosProductosMarcoController.php` | `index` | [Abrir guía](/operacion/contratos/) |
+| `Api/CotizacionController.php` | `index`, `getTiposAspecto`, `show`, `store`, `rechazar`, `reactivar`, `getArchivo`, `actualizarEstatusInvitacion`, `getCotizacionByProveedor`, `exportar` | [Abrir guía](/operacion/cotizaciones/) |
+| `Api/CuentaController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/cuentas/) |
+| `Api/DashboardController.php` | `index`, `store`, `generarPDF` | [Abrir guía](/operacion/listados/) |
+| `Api/EmpresaController.php` | `index`, `getSucursales`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/empresas/) |
+| `Api/EntregaController.php` | `index`, `show`, `store`, `actualizarMontosEntrega`, `getArchivo`, `getEvidencia`, `update`, `actualizar`, `extraerUUID`, `getEntris`, `getAtributo`, `cancelarEntrega`, `validarFactura`, `consultarUUID`, `getFacturas`, `agregarAdicional`, `subirEvidencia` | [Abrir guía](/operacion/recepciones/) |
+| `Api/ExpedientesController.php` | `getDocumentos`, `uploadDocument`, `saveText`, `getHistorial`, `uploadOpinion`, `file_get_contents_ssl`, `buscar`, `descargarArchivo` | [Abrir guía](/finanzas/expediente/) |
+| `Api/FacturasController.php` | `index`, `resubirEvidencia`, `confirmarFactura`, `imagen`, `evidenciaDisponible`, `resolverEvidenciaFactura`, `verificarExportacionFacturas`, `descargarFacturas`, `subir`, `lista`, `get`, `getPagos`, `getRutasFacturas`, `verificarDescargaMultiple`, `descargaMasiva`, `validacionMasiva`, `cancelarFacturas`, `actualizarFacturaSolicitud`, `cancelacionPeticiones`, `save`, `validarSubirFacturas`, `resumen`, `getResumen`, `Stand_Deviation`, `download`, `validar`, `getAutorizaciones`, `programarFacturas`, `pagarFacturas`, `comentar`, `filtrarFacturas`, `autorizarPago`, `autorizarPagoPorEmpresa`, `descargarPo`, `descargaMasivaPorFiltro`, `verificarDescargaFacturas`, `getFacturasDescarga`, `verPdf`, `eliminar`, `multiple`, `getConfig`, `descargaMasivaPagosPorFiltro`, `verificarDescargaPagos`, `getPagosDescarga`, `eliminarPago`, `facturasSinComplemento`, `getFacturasSinComplemento`, `resumenPagos`, `listaCliente`, `getProveedoresByCliente`, `notificarASolicitante`, `obtenerExtensionEvidencia` | [Abrir guía](/finanzas/facturas/) |
+| `Api/FormasPagoController.php` | `index` | [Abrir guía](/finanzas/pagos/) |
+| `Api/GrupoController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/subclasificaciones/) |
+| `Api/InicioController.php` | `index` | [Abrir guía](/guias/primeros-pasos/) |
+| `Api/InvitacionController.php` | `index`, `show`, `buildInfoProveedores`, `buildComparativo`, `invitar`, `asignar`, `terminar`, `cerrar`, `notificarPO`, `convertir`, `buildOrdenes`, `imprimir`, `buildProductosUnicos`, `getEntrega`, `getArchivo` | [Abrir guía](/operacion/concursos/) |
+| `Api/MailController.php` | | [Abrir guía](/referencia/observaciones/) |
+| `Api/MotivoController.php` | `index` | [Abrir guía](/operacion/solicitudes/) |
+| `Api/MotivoRechazoController.php` | `index` | [Abrir guía](/operacion/solicitudes/) |
+| `Api/NotificacionesController.php` | `index`, `markAsRead`, `markAllasRead`, `unreadNotifications` | [Abrir guía](/guias/primeros-pasos/) |
+| `Api/OrdenCompraController.php` | `index`, `show`, `buildArchivos`, `store`, `buildItems`, `buildEntregas`, `buildAutorizaciones`, `buildInfoFactura`, `xml`, `imprimir`, `generarPdf`, `edit`, `save`, `insertAutorizaciones`, `postGuardado`, `getArchivo`, `destroy`, `rechazo_por_comprador`, `notificar`, `subirArchivos`, `actualizarTipoReferencia`, `notificarSolicitante`, `notificarProveedores`, `calificarOrden`, `confirmarOrden`, `actualizarOrdenesConcurso`, `rechazarOrden`, `getOrdenpublic`, `getPOById`, `cerrar`, `subirEvidencia` | [Abrir guía](/operacion/ordenes/) |
+| `Api/PagoManualController.php` | `get`, `getPago`, `vistaPreviaImagen`, `editarFacturas`, `validarComplemento`, `importarPagosManuales`, `generar` | [Abrir guía](/finanzas/pagos/) |
+| `Api/PlantaController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/almacenes/) |
+| `Api/ProductoController.php` | `index`, `show`, `store`, `activarDesactivar`, `exportar` | [Abrir guía](/administracion/items/) |
+| `Api/ProveedorController.php` | `index`, `getProveedoresEFOS`, `store`, `show`, `destroy`, `update`, `exportar` | [Abrir guía](/administracion/proveedores/) |
+| `Api/RegisterController.php` | `__construct`, `validator`, `create`, `register`, `getDocuments`, `uploadDocument` | [Abrir guía](/finanzas/expediente/) |
+| `Api/ReporteController.php` | `ordenes`, `entregas` | [Abrir guía](/operacion/reportes/) |
+| `Api/SeguridadController.php` | `index` | [Abrir guía](/operacion/solicitudes/) |
+| `Api/SolicitudController.php` | `index`, `store`, `confirmarInterno`, `saveOrUpdateItemCentro`, `notificarAutorizacion`, `confirmar`, `autorizar`, `rechazar`, `eliminar`, `show`, `buildInvitaciones`, `getArchivo`, `generarContrato`, `update`, `cambiarCategoria`, `destroy`, `reiniciar`, `cerrar`, `buildArchivos` | [Abrir guía](/operacion/solicitudes/) |
+| `Api/TipoController.php` | `index` | [Abrir guía](/operacion/solicitudes/) |
+| `Api/TrackedMailController.php` | `webhook`, `get` | [Abrir guía](/guias/primeros-pasos/) |
+| `Api/UserController.php` | `index`, `changePassword`, `changeClaveAutorizacion`, `sanctumToken`, `checkSession` | [Abrir guía](/guias/primeros-pasos/) |
+| `Api/UsuarioController.php` | `index`, `show`, `store`, `guardarMisDatos`, `destroy`, `update`, `getTiposUsuario`, `exportar` | [Abrir guía](/administracion/usuarios/) |
+| `Api/UtilController.php` | `getTiposAspecto`, `getEstatusSolicitud`, `getEstatusInvitacion`, `getEstatusCotizacion`, `getEstatusEntrega`, `getEstatusOrden`, `getTipoSolicitud`, `getNiveles`, `getUnidades`, `getMonedas`, `getOrdenes`, `actualizarOrden`, `getTipoCambio`, `getToken`, `getUsos`, `getFormas`, `getMetodos`, `getTipoReferencia`, `getVersion`, `getLifeTime`, `refreshSesion`, `getComprobanteByUUID`, `getUsuarios`, `getTiposOrden`, `getUUIDFromPDF` | [Abrir guía](/referencia/estados/) |
+| `Controller.php` | | [Abrir guía](/referencia/observaciones/) |
+| `HomeController.php` | `index`, `exportar` | [Abrir guía](/operacion/listados/) |
+| `LoginController.php` | `authenticate` | [Abrir guía](/guias/primeros-pasos/) |
+| `UserController.php` | | [Abrir guía](/guias/primeros-pasos/) |
+
+## Componentes y diálogos
+
+Los componentes de formulario se explican dentro de su pantalla de origen. Los componentes de presentación (fechas, importes, paginación y mensajes) no requieren datos adicionales.
+
+| Componente | Guía relacionada |
+| --- | --- |
+| `ConfiguracionesSat/DocumentListEdit.vue` | [Abrir guía](/administracion/configuracion-sat/) |
+| `Expedinete/cumplimineto-upload.vue` | [Abrir guía](/finanzas/expediente/) |
+| `Expedinete/doc-view.vue` | [Abrir guía](/finanzas/expediente/) |
+| `detallePO.vue` | [Abrir guía](/operacion/ordenes/) |
+| `factura/SubirFactura.vue` | [Abrir guía](/finanzas/cargar-factura/) |
+| `factura/VerAutorizacion.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerConfirmar.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerEliminar.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerPO.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerPagar.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerPagos.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerProgramar.vue` | [Abrir guía](/finanzas/facturas/) |
+| `factura/VerResumenPagos.vue` | [Abrir guía](/finanzas/facturas/) |
+| `home/MainLogo.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `home/MainMenu.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `invitaciones/CuadroComparativo.vue` | [Abrir guía](/operacion/concursos/) |
+| `notificaciones/TrackedMailList.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `ordenes/CargarEvidencia.vue` | [Abrir guía](/operacion/evidencias/) |
+| `solicitudes/ModalItems.vue` | [Abrir guía](/operacion/solicitudes/) |
+| `solicitudes/VerAutorizaciones.vue` | [Abrir guía](/operacion/solicitudes/) |
+| `solicitudes/VerEntregas.vue` | [Abrir guía](/operacion/solicitudes/) |
+| `solicitudes/VerFacturas.vue` | [Abrir guía](/operacion/evidencias/) |
+| `utils/AtencionInvitacion.vue` | [Abrir guía](/operacion/concursos/) |
+| `utils/DatePicker.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/EstatusItem.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/Fecha.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/FechaFormato.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/FlashAlert.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/FormError.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/LabelTextCounter.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/Mensaje.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/Modal.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/Money.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/OrdenCompra.vue` | [Abrir guía](/operacion/ordenes/) |
+| `utils/Paginador.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/PaginadorComposition.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/SelectorEmpresa.vue` | [Abrir guía](/guias/primeros-pasos/) |
+| `utils/document-upload.vue` | [Abrir guía](/guias/primeros-pasos/) |
+
+## Plantillas del backend
+
+Las plantillas Blade son salidas de impresión, correos o estructuras de presentación. No son formularios adicionales de captura del frontend Vue. Se revisaron como soporte de notificaciones y documentos descargables.
+
+| Plantilla | Guía relacionada |
+| --- | --- |
+| `app.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/auth/restablecer_pass.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/comentario.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/pago.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/pago_cancelado.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/programacion.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/rechazo_pago.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/facturas/validacion.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/actividades_pendientes.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/efos_encontrados.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/info_erendira.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/notificacion.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/opinion_cumplimiento.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/mensajes/proveedores_incumplidos.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/usuarios/activacion.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `email/usuarios/registro_nuevo.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `layouts/app.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `layouts/mail.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `mails/cotizacion.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `mails/factura.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `mails/po.blade.php` | [Abrir guía](/operacion/ordenes/) |
+| `mails/recordatorio_firmas.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `orden_compra_pdf.blade.php` | [Abrir guía](/operacion/ordenes/) |
+| `pdfs/cuadroComparativo.blade.php` | [Abrir guía](/operacion/concursos/) |
+| `pdfs/facturaPdf.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/pagoPdf.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/pagoRelacionado.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/pagosPdf.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/partials/conceptos.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/partials/encabezado.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/partials/pie.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `pdfs/partials/styles.blade.php` | [Abrir guía](/finanzas/facturas/) |
+| `solpes.blade.php` | [Abrir guía](/operacion/listados/) |
+| `vendor/notifications/email.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+| `welcome.blade.php` | [Abrir guía](/guias/primeros-pasos/) |
+
+## Mantenimiento
+
+El repositorio del manual incluye `analysis/inventario.json` con huellas SHA-256 de los archivos revisados y `scripts/inventario.py` para actualizar el inventario. Actualiza primero las instrucciones funcionales si cambia una pantalla; regenerar la tabla no actualiza el contenido del manual.
diff --git a/src/content/docs/referencia/estados.md b/src/content/docs/referencia/estados.md
new file mode 100644
index 0000000..35d8bbd
--- /dev/null
+++ b/src/content/docs/referencia/estados.md
@@ -0,0 +1,52 @@
+---
+title: "Estados y términos del sistema"
+description: "Estados y términos del sistema — Manual de usuario de Eréndira."
+---
+
+## Solicitudes
+
+| Estado | Cómo interpretarlo |
+| --- | --- |
+| Borrador | Preparación o devolución para corregir. |
+| Creada | Publicada para comenzar su revisión. |
+| Liberada | Autorizada; sigue confirmación de Compras. |
+| Aceptada | Confirmada; permite continuar con concurso o pedido. |
+| Colocada | Partidas asignadas conforme al proceso o cierre manual de solicitud. No equivale a entrega ni pago. |
+| Rechazada | Rechazo definitivo de solicitud. |
+| Cancelada | Estado de cancelación presente en el sistema. |
+| Cerrada | Estado definido en el catálogo; el botón Cerrar solicitud revisado asigna Colocada. |
+
+## Pedidos
+
+| Estado | Cómo interpretarlo |
+| --- | --- |
+| Aprobacion | Espera los niveles de autorización. El código final puede estar pendiente. |
+| Pendiente | Espera confirmación del proveedor cuando se requiere. |
+| Transito | Pedido liberado/confirmado; puede incluir recepciones parciales. |
+| Entregado | Entrega completa sin evidencia en el flujo habitual, o cierre manual. |
+| Recibida | Se registró la evidencia de recepción. |
+| Rechazado | Pedido rechazado por el flujo correspondiente. |
+| Colocado, Parcial, Cancelado, Facturado, Programado, Pagado | También existen en el catálogo de estados. Su presencia no significa que cada orden recorra todos ellos en secuencia. |
+
+## Recepciones
+
+**Parcial:** avance menor al total. **Entregado:** entrega completa pendiente de evidencia. **Recibida:** evidencia registrada. **Cancelado:** recepción cancelada, excluida del cálculo que consulta recepciones activas.
+
+El flujo de recepciones parciales y el responsable de evidencia fueron confirmados por la organización: Solicitante para servicios y Almacén para materiales.
+
+## Glosario
+
+| Término | Significado en este manual |
+| --- | --- |
+| SOLPE | Solicitud de pedido. |
+| PO / pedido / orden de compra | Documento que asigna la compra al proveedor. |
+| Item / partida | Línea de producto o servicio dentro de un documento. |
+| Recepción / entrega | Registro interno de lo recibido contra una orden. |
+| UUID | Identificador del comprobante fiscal; relaciona factura y recepción. |
+| CFDI | Comprobante fiscal que se carga en XML, con PDF cuando se requiere. |
+| Invoice | Comprobante admitido por el tipo de facturación correspondiente. |
+| PU | Precio unitario. |
+| UM | Unidad de medida. |
+| MOQ | Cantidad mínima de compra establecida en un contrato. |
+| Journal | Archivo de seguimiento contable generado desde las recepciones. |
+| Macrocentro | Centro que distribuye porcentajes entre subcentros. |
diff --git a/src/content/docs/referencia/observaciones.md b/src/content/docs/referencia/observaciones.md
new file mode 100644
index 0000000..ceca5fb
--- /dev/null
+++ b/src/content/docs/referencia/observaciones.md
@@ -0,0 +1,36 @@
+---
+title: "Alcance y diferencias detectadas"
+description: "Alcance y diferencias detectadas — Manual de usuario de Eréndira."
+---
+
+## Base del manual
+
+Revisión del código local de `compras/erendira_frontend` y `compras/erendira_backend`, realizada el 28 de septiembre de 2026. Se contrastaron rutas, menú, formularios, componentes de diálogo, validaciones y cambios de estado de los controladores.
+
+La organización confirmó dos decisiones:
+
+1. Usar únicamente los siete roles de compras para los menús del manual.
+2. Documentar recepciones parciales y el paso de Entregado a Recibida con evidencia: Solicitante para servicios y Almacén para materiales.
+
+## Límites de la revisión
+
+No se inició una sesión contra una base de datos operativa ni se registraron compras, recepciones o pagos reales. Los valores de catálogos, configuraciones y tableros externos dependen de la instalación. Los reportes incrustados no incluyen su interfaz interna en este repositorio.
+
+## Diferencias relevantes para mantenimiento
+
+| Hallazgo | Efecto sobre las instrucciones |
+| --- | --- |
+| Hay roles de compras y perfiles internos de facturación separados. | Se conservan siete menús; no se promete que el rol de compras por sí solo habilite todos los botones financieros. |
+| `Registro.vue` y `RegistroExitoso.vue` no están en el router; las rutas API de registro están comentadas. | Se documentan como pantallas presentes sin acceso operativo confirmado; no se ofrece un enlace de alta pública. |
+| El menú de consultas de precios está comentado. | Se explica la conversión solo cuando la pantalla se alcanza desde un acceso habilitado. |
+| El menú padre de Pedidos exige `ordenes.menu`, cuya matriz no incluye Proveedor; el proveedor sí tiene accesos por el flujo de factura y rutas propias. | Se documentan sus pedidos desde los accesos disponibles, sin asegurar que vea el mismo menú de Pedidos que un usuario interno. |
+| Proveedores marcados externos pierden algunos permisos de órdenes. | Las opciones dependen de la configuración concreta del proveedor. |
+| Cerrar solicitud asigna Colocada; Cerrar orden asigna Entregado. | Se explican los estados reales y se distinguen de registrar una recepción. |
+| Los contadores de rechazo de solicitudes/cotizaciones muestran 200; algunos controladores aceptan 250. | Se recomienda usar el límite visible de 200. |
+| En solicitudes de seguridad, las condiciones de validación de motivo/seguridad resultan inconsistentes. | Un error persistente con los campos completos requiere revisión técnica; no se propone omitir el dato. |
+| Categoría de productos llama al exportador de categorías/grupos. | Se indica revisar el contenido exportado. |
+| Una acción de cancelación de factura contiene una URL de plantilla Laravel dentro de Vue. | Su funcionamiento debe comprobarse en la instalación antes de depender de ella. |
+| Carga de evidencia y registro de recepción tienen transiciones propias. | Se pide comprobar cantidades y factura al completar la firma; el estado por sí solo no describe todo el historial. |
+| Firma del usuario se muestra como enlace en el formulario de recepción. | La carga operativa se documenta desde Subir firma, en el listado/documento asociado. |
+
+Estas observaciones describen el código revisado. No se modificó la aplicación de compras durante la elaboración del manual.
diff --git a/src/content/docs/referencia/permisos.md b/src/content/docs/referencia/permisos.md
new file mode 100644
index 0000000..01c5bfd
--- /dev/null
+++ b/src/content/docs/referencia/permisos.md
@@ -0,0 +1,38 @@
+---
+title: "Roles y alcance de los permisos"
+description: "Roles y alcance de los permisos — Manual de usuario de Eréndira."
+---
+
+## Los siete roles utilizados
+
+La organización confirmó que utiliza **Solicitante, Comprador, Autorizador, Almacén, Contabilidad, Administrador y Proveedor**. El inicio del manual tiene un acceso para cada uno.
+
+| Acción de compras | Roles habilitados en la matriz |
+| --- | --- |
+| Crear solicitudes | Administrador, Solicitante, Comprador, Autorizador, Almacén, Contabilidad |
+| Autorizar solicitudes | Administrador, Autorizador |
+| Confirmar solicitudes | Administrador, Comprador |
+| Preparar concursos y contratos | Administrador, Comprador |
+| Responder cotizaciones | Proveedor |
+| Crear pedidos | Administrador, Comprador |
+| Ver pedidos pendientes | Administrador, Comprador, Autorizador, sujeto al estado y alcance |
+| Registrar recepciones | Administrador, Comprador, Almacén |
+| Consultar recepciones | Administrador, Comprador, Almacén, Contabilidad, Solicitante |
+| Evidencia de servicio | Administrador, Solicitante |
+| Evidencia de material | Administrador, Almacén |
+| Menú de catálogos | Administrador, Comprador, Contabilidad |
+| Mantener usuarios, items, centros, cuentas y almacenes | Administrador |
+| Mantener empresas y proveedores | Administrador, Contabilidad |
+| Reportes de compras | Administrador, Comprador |
+
+La autorización de pedidos depende además de **nivel, centro y turno de aprobación**. Consulta las asignaciones en Usuarios.
+
+## Facturas y pagos
+
+El código conserva una segunda clasificación interna para habilitar funciones financieras. No se crean menús adicionales para esos perfiles porque no forman parte de los roles operativos confirmados. Los nuevos usuarios internos se guardan con perfil financiero de operador en el controlador de usuarios.
+
+Por esa razón, el nombre del rol de compras por sí solo no permite asegurar qué botones de facturas verá cada cuenta. El manual describe las acciones y señala su disponibilidad por permiso; Administración debe revisar la cuenta si falta una acción esperada.
+
+## Alcance de los datos
+
+Las consultas pueden restringirse por solicitante, proveedor, empresa, centro y asignaciones. No cambies de usuario para intentar realizar una acción que falta; solicita que se revise la asignación y el estado del documento.
diff --git a/src/content/docs/roles/administrador.md b/src/content/docs/roles/administrador.md
new file mode 100644
index 0000000..6da495e
--- /dev/null
+++ b/src/content/docs/roles/administrador.md
@@ -0,0 +1,31 @@
+---
+title: "Menú de Administrador"
+description: "Administra usuarios, catálogos y reglas, y supervisa el proceso de compras."
+---
+
+Administra usuarios, catálogos y reglas, y supervisa el proceso de compras.
+
+Configura empresas, centros, cuentas, items, grupos, usuarios y niveles antes de operar. Comprueba los permisos y asignaciones cuando una persona no ve un documento o no puede autorizarlo. La respuesta de cotizaciones pertenece al proveedor; el administrador dispone de funciones de consulta, rechazo y reactivación según el caso.
+
+## Tus tareas
+
+- [Solicitudes](/operacion/solicitudes/).
+- [Concursos](/operacion/concursos/).
+- [Cotizaciones](/operacion/cotizaciones/).
+- [Pedidos y autorizaciones](/operacion/ordenes/).
+- [Recepciones](/operacion/recepciones/).
+- [Evidencias](/operacion/evidencias/).
+- [Contratos marco](/operacion/contratos/).
+- [Facturas](/finanzas/facturas/).
+- [Pagos](/finanzas/pagos/).
+- [Catálogos y usuarios](/administracion/catalogos/).
+- [Reportes](/operacion/reportes/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/almacen.md b/src/content/docs/roles/almacen.md
new file mode 100644
index 0000000..ad56d07
--- /dev/null
+++ b/src/content/docs/roles/almacen.md
@@ -0,0 +1,24 @@
+---
+title: "Menú de Almacén"
+description: "Registra la recepción de bienes y aporta su evidencia."
+---
+
+Registra la recepción de bienes y aporta su evidencia.
+
+Busca el pedido liberado y registra solo las cantidades o montos recibidos en esa ocasión. Puedes registrar varias recepciones parciales. Adjunta la evidencia de materiales para completar el estado Recibida.
+
+## Tus tareas
+
+- [Registrar y consultar recepciones](/operacion/recepciones/).
+- [Cargar evidencia de materiales](/operacion/evidencias/).
+- [Consultar pedidos](/operacion/listados/).
+- [Crear solicitudes](/operacion/solicitudes/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/autorizador.md b/src/content/docs/roles/autorizador.md
new file mode 100644
index 0000000..19bb0d0
--- /dev/null
+++ b/src/content/docs/roles/autorizador.md
@@ -0,0 +1,23 @@
+---
+title: "Menú de Autorizador"
+description: "Revisa solicitudes y resuelve los niveles de autorización de pedidos."
+---
+
+Revisa solicitudes y resuelve los niveles de autorización de pedidos.
+
+Revisa primero las solicitudes creadas. Después atiende las órdenes pendientes en el nivel y centros que tengas asignados. Autorizar la solicitud y autorizar el pedido son pasos distintos. También puedes crear solicitudes si necesitas registrar una compra.
+
+## Tus tareas
+
+- [Solicitudes por aprobar](/operacion/solicitudes/).
+- [Pedidos pendientes y autorización](/operacion/ordenes/).
+- [Buscar documentos](/operacion/listados/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/comprador.md b/src/content/docs/roles/comprador.md
new file mode 100644
index 0000000..c74f775
--- /dev/null
+++ b/src/content/docs/roles/comprador.md
@@ -0,0 +1,28 @@
+---
+title: "Menú de Comprador"
+description: "Confirma solicitudes, solicita cotizaciones y prepara pedidos."
+---
+
+Confirma solicitudes, solicita cotizaciones y prepara pedidos.
+
+Comienza en Solicitudes por confirmar. Tras confirmar, invita proveedores o prepara el pedido con las partidas disponibles. Supervisa las autorizaciones y la confirmación del proveedor. El acceso a catálogos no concede todas las acciones de mantenimiento.
+
+## Tus tareas
+
+- [Solicitudes por confirmar y aceptadas](/operacion/solicitudes/).
+- [Concursos e invitaciones](/operacion/concursos/).
+- [Revisar cotizaciones](/operacion/cotizaciones/).
+- [Registrar y seguir pedidos](/operacion/ordenes/).
+- [Registrar recepciones](/operacion/recepciones/).
+- [Contratos marco](/operacion/contratos/).
+- [Reportes](/operacion/reportes/).
+- [Consultar catálogos](/administracion/catalogos/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/contabilidad.md b/src/content/docs/roles/contabilidad.md
new file mode 100644
index 0000000..0d28183
--- /dev/null
+++ b/src/content/docs/roles/contabilidad.md
@@ -0,0 +1,28 @@
+---
+title: "Menú de Contabilidad"
+description: "Consulta compras y recepciones y atiende la documentación financiera."
+---
+
+Consulta compras y recepciones y atiende la documentación financiera.
+
+Revisa la relación entre factura, UUID y recepción. El rol de compras permite consultar recepciones y mantener empresas/proveedores. La disponibilidad de las acciones financieras depende también de la configuración interna de la cuenta.
+
+## Tus tareas
+
+- [Consultar solicitudes](/operacion/solicitudes/).
+- [Consultar pedidos](/operacion/listados/).
+- [Consultar recepciones y referencias](/operacion/recepciones/).
+- [Facturas, validación y pago](/finanzas/facturas/).
+- [Pagos y complementos](/finanzas/pagos/).
+- [Administrar proveedores](/administracion/proveedores/).
+- [Expedientes](/finanzas/expediente/).
+- [Empresas y sucursales](/administracion/empresas/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/proveedor.md b/src/content/docs/roles/proveedor.md
new file mode 100644
index 0000000..289abaa
--- /dev/null
+++ b/src/content/docs/roles/proveedor.md
@@ -0,0 +1,26 @@
+---
+title: "Menú de Proveedor"
+description: "Responde cotizaciones, confirma pedidos y carga tus comprobantes."
+---
+
+Responde cotizaciones, confirma pedidos y carga tus comprobantes.
+
+Atiende las invitaciones recibidas y confirma los pedidos pendientes cuando se solicite. Mantén vigente tu expediente para cargar facturas. Tus documentos se consultan dentro del alcance de tu cuenta.
+
+## Tus tareas
+
+- [Responder cotizaciones](/operacion/cotizaciones/).
+- [Consultar y confirmar pedidos](/operacion/proveedor-pedidos/).
+- [Cargar factura o complemento](/finanzas/cargar-factura/).
+- [Consultar facturas y saldo](/finanzas/facturas/).
+- [Consultar pagos](/finanzas/pagos/).
+- [Completar expediente](/finanzas/expediente/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/content/docs/roles/solicitante.md b/src/content/docs/roles/solicitante.md
new file mode 100644
index 0000000..8a23819
--- /dev/null
+++ b/src/content/docs/roles/solicitante.md
@@ -0,0 +1,24 @@
+---
+title: "Menú de Solicitante"
+description: "Crea solicitudes y da seguimiento a lo que necesita tu área."
+---
+
+Crea solicitudes y da seguimiento a lo que necesita tu área.
+
+Empieza por crear la solicitud. Cuando Compras coloque el pedido, consulta su avance. En servicios, aporta la evidencia firmada para completar la recepción. Puedes consultar tus recepciones; registrar una recepción requiere el permiso de Almacén, Compras o Administración.
+
+## Tus tareas
+
+- [Crear y corregir solicitudes](/operacion/solicitudes/).
+- [Consultar partidas y pedidos](/operacion/listados/).
+- [Consultar recepciones](/operacion/recepciones/).
+- [Cargar evidencia de servicios](/operacion/evidencias/).
+
+## Accesos comunes
+
+- [Acceso, Inicio y Mi cuenta](/guias/primeros-pasos/).
+- [Flujo completo: solicitud → pedido → recepción → pago](/guias/flujo/).
+- [Resolver problemas frecuentes](/guias/ayuda/).
+- [Volver a los menús por rol](/).
+
+Los botones disponibles dependen del estado del documento y de los permisos de tu cuenta. Este menú reúne las instrucciones correspondientes a tu trabajo; no modifica los permisos del sistema.
diff --git a/src/styles/manual.css b/src/styles/manual.css
new file mode 100644
index 0000000..3b6b241
--- /dev/null
+++ b/src/styles/manual.css
@@ -0,0 +1,16 @@
+
+:root { --sl-color-accent-low: #122e40; --sl-color-accent: #16859a; --sl-color-accent-high: #a5e4ef; --sl-content-width: 54rem; }
+:root[data-theme='light'] { --sl-color-accent-low: #e2f5f7; --sl-color-accent: #08677b; --sl-color-accent-high: #103e4b; }
+.hero { padding-block: clamp(2rem, 5vw, 4rem); }
+.hero h1 { max-width: 17ch; }
+.card-grid .sl-link-card { border-radius: .8rem; transition: border-color .15s ease; }
+.card-grid .sl-link-card:hover { border-color: var(--sl-color-accent); }
+.process-path { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .6rem; margin-block: 1.5rem; }
+.process-path a { display: flex; flex-direction: column; gap: .3rem; padding: 1rem; border: 1px solid var(--sl-color-gray-5); border-radius: .6rem; text-decoration: none; font-weight: 600; margin: 0; }
+.process-path span { color: var(--sl-color-accent-high); font-size: .8rem; font-weight: 700; }
+.sl-markdown-content table { width: 100%; font-size: .9rem; }
+.sl-markdown-content th { background: var(--sl-color-gray-6); }
+.sl-markdown-content td { vertical-align: top; }
+.sl-markdown-content :is(h2, h3) { scroll-margin-top: 6rem; }
+@media (max-width: 42rem) { .process-path { grid-template-columns: repeat(2, minmax(0, 1fr)); } .process-path a:last-child { grid-column: 1 / -1; } }
+@media print { .sidebar, header, .right-sidebar, starlight-menu-button, .pagination-links { display: none !important; } .main-frame { padding: 0 !important; } .sl-markdown-content table { display: table; font-size: 9pt; } a { color: inherit; } }