Skip to main content

Ejemplo: rutas de cobranza

Este ejemplo recorre un recurso real de la Web API de Crono: la ruta diaria de cobranza de un asesor, expuesta por el módulo Crono.RutasCobranza. Todas las operaciones aplican sobre el asesor autenticado por la credencial de la API: cada quien ve y gestiona solo sus propias rutas.

Recuerda enviar la credencial del esquema Api y las cabeceras de tipo de medio (ver Autenticación y La Web API en detalle):

Accept: application/vnd.crono.v1+json
Content-Type: application/vnd.crono.v1+json

Endpoints del recurso

Base del recurso: api/v1/rutas-cobranza.

MétodoRutaPermisoDevuelve
GET/funcionesVerList<FuncionRutaDto>
GET/hoyVerRutaCobranzaDto
PUT/reordenacionGestionarRutaCobranzaDto
PUT/paradas/estadoGestionarRutaParadaDto
POST/recalculosGestionarRutaCobranzaDto

Listar las funciones del asesor

Cada asesor puede tener varias funciones habilitadas para ruta de cobranza (según la configuración de la organización), y cada función tiene su propia ruta:

GET /api/v1/rutas-cobranza/funciones
Accept: application/vnd.crono.v1+json
[HttpGet("funciones"), MapToApiVersion("1")]
[ProducesResponseType(typeof(List<FuncionRutaDto>), Status200OK)]
[Permiso(RutasCobranzaPermisos.Ver)]
public async Task<IActionResult> ObtenerFunciones(CancellationToken cancelToken)
{
var funciones = await _rutaCobranzaServicio.ObtenerFuncionesRutaAsync(cancelToken);
return Ok(funciones);
}

Obtener la ruta del día

Devuelve la ruta de hoy para el asesor (con sus paradas ordenadas). Acepta parámetros por query string:

GET /api/v1/rutas-cobranza/hoy?funcionId=12
Accept: application/vnd.crono.v1+json

Reordenar las paradas

El asesor puede reordenar sus paradas; requiere el permiso Gestionar:

PUT /api/v1/rutas-cobranza/reordenacion
Content-Type: application/vnd.crono.v1+json

{ "funcionId": 12, "ordenParadas": [45, 12, 8, 30] }

Marcar el estado de una parada

Registrar el resultado de una visita (visitada, pospuesta, etc.):

PUT /api/v1/rutas-cobranza/paradas/estado
Content-Type: application/vnd.crono.v1+json

{ "paradaId": 45, "estado": "Visitada" }

Recalcular la ruta

Vuelve a calcular la ruta (por ejemplo, tras cambios en cartera):

POST /api/v1/rutas-cobranza/recalculos
Content-Type: application/vnd.crono.v1+json

{ "funcionId": 12 }

Respuestas y errores

  • 200 OK con el DTO correspondiente cuando la operación tiene éxito.
  • 401 Unauthorized si la credencial no es válida; 403 Forbidden si falta el permiso.
  • 422 Unprocessable Entity si el cuerpo no supera la validación de modelo.
  • 415 Unsupported Media Type si no envías el tipo de medio application/vnd.crono.v1+json.

El resto de códigos y el modelo uniforme de errores están en La Web API en detalle.

info

Este recurso vive en el módulo Crono.RutasCobranza, no en Crono.WebApi: el controlador hereda de CronoApiController (de Crono.Web.Comun) y se agrupa en la documentación bajo prestamo. Es el patrón a seguir para exponer endpoints desde cualquier módulo.