6.9. Flujo despachos
Este documento migra el servicio legacy:
POST http://172.108.15.104:17005/recoleccion_movil/DespachoUnidad/consulta
Body:
{
"p_CONTROL_INTERNO": null,
"p_FECHA_RECOLECION": "04/09/2025",
"p_TRACTOR": null,
"p_ORIGEN": "CUAUTITLAN",
"p_DESTINO": null,
"p_NUM_OC_TRANSFERENCIA": "1600930",
"p_TIPO": "TRANSFERENCIA",
"p_EVENTO": "Pendiente"
}
y su respuesta de ejemplo (recortada) hacia el nuevo endpoint y el mapeo a base de datos.
1) Nuevo servicio equivalente
Servicio: Dispatch Control Service (v1)
Endpoint: POST /dispatches/_search
Descripción: Consulta despachos/viajes usando el esquema p_* (compatibilidad con legacy), incluyendo filtros por TRANSFERENCIA y NUM_OC_TRANSFERENCIA.
1.1 Request (nuevo, equivalente 1:1)
POST /dispatch/v1/dispatches/_search
Content-Type: application/json
{
"p_CONTROL_INTERNO": null,
"p_FECHA_RECOLECION": "04/09/2025",
"p_TRACTOR": null,
"p_ORIGEN": "CUAUTITLAN",
"p_DESTINO": null,
"p_NUM_OC_TRANSFERENCIA": "1600930",
"p_TIPO": "TRANSFERENCIA",
"p_EVENTO": "Pendiente"
}
Notas:
- Mantiene los mismos nombres y semántica de los parámetros
p_*que usaba el legacy.- La fecha debe respetar el formato esperado por el servicio (
DD/MM/YYYY). Si se expone como ISO, convertir internamente.
1.2 Response (nuevo, equivalente)
El nuevo servicio responde con la misma estructura AlpRecoleccionViajesCollection usada por legacy. Ejemplo simplificado:
{
"AlpRecoleccionViajesCollection": {
"AlpRecoleccionViajes": [
{
"fechaRecoleccion": "2025-09-23T00:00:00.000-06:00",
"origen": "PTSP",
"destino": "CUAUTITLAN",
"zona": "LOCAL",
"tipo": "P",
"ruta": "30",
"operadorEmployeeNumber": "1532104",
"operadorFullName": "ANGEL_XALA",
"tractor": "1561",
"pipa": "1123",
"proveedorTransporte": "FLOTA_ALPURA",
"evento": "Pendiente",
"num_oc_transferencia": "1601051",
"estado": "Pendiente",
"controlInterno1": 1601029,
"id_transferencia": 160105102,
"...": "..."
}
]
}
}
2) Mapeo a Tablas de Base de Datos
2.1 Maestro de viajes y transferencia
| Campo (response) | Tabla.Columna | Comentario |
|---|---|---|
fechaRecoleccion | ALP_RECOLECCION_VIAJES.FECHA_RECOLECCION | Fecha programada del viaje |
origen / destino / zona | ALP_RECOLECCION_VIAJES.ORIGEN / DESTINO / ZONA | |
tipo | ALP_RECOLECCION_VIAJES.TIPO | P, C, T, etc. |
ruta | ALP_RECOLECCION_VIAJES.RUTA | |
operadorEmployeeNumber / operadorFullName | OPERADOR_EMPLOYEE_NUMBER / OPERADOR_FULL_NAME | |
tractor / pipa | ALP_RECOLECCION_VIAJES.TRACTOR / PIPA | |
proveedorTransporte / proveedorId | PROVEEDOR_TRANSPORTE / PROVEEDOR_ID | |
evento / fechaEvento / estado | EVENTO / FECHA_EVENTO / ESTADO | |
num_oc_transferencia | ALP_RECOLECCION_VIAJES.NUM_OC_TRANSFERENCIA | Filtro principal del caso |
controlInterno1 / controlInterno2 | ALP_RECOLECCION_TRANSFERENCIAS.CONTROL_INTERNO1/2 | Requiere JOIN por ID_TRANSFERENCIA |
id_transferencia | ALP_RECOLECCION_VIAJES.ID_TRANSFERENCIA | Llave a tabla de transferencias |
Campos de sellos (selloDomo*, selloValvula*) | ALP_RECOLECCION_VIAJES.SELLO_* | Si el caso trae estos campos |
Si el modelo materializa
volumenen maestro, usarALP_RECOLECCION_VIAJES.VOLUMEN. Si no, consolidar desde tanques (ver 2.2).
2.2 Detalle y tanques (cuando se requiera)
| Campo | Tabla.Columna | Comentario |
|---|---|---|
volumen | ALP_DET_RECOLECCION_VIAJES.LITROS_PROGRAMADOS o consolidado SUM(ALP_DET_RECO_TANQUES_VIAJES.LITROS_REMISIONADOS) | Según tu estándar |
| Coordenadas | ALP_RECOLECCION_VIAJES.LATITUD/LONGITUD o de detalle si aplica |
3) SQL de referencia (Oracle)
Filtro por TRANSFERENCIA y NUM_OC_TRANSFERENCIA; obtiene
controlInterno1/2desde la tabla de transferencias.
SELECT
v.FECHA_RECOLECCION AS fechaRecoleccion,
v.ORIGEN, v.DESTINO, v.ZONA, v.TIPO, v.RUTA,
v.OPERADOR_EMPLOYEE_NUMBER AS operadorEmployeeNumber,
v.OPERADOR_FULL_NAME AS operadorFullName,
v.TRACTOR, v.PIPA,
v.PROVEEDOR_TRANSPORTE, v.PROVEEDOR_ID,
v.EVENTO, v.FECHA_EVENTO,
v.LATITUD, v.LONGITUD,
v.LAST_UPDATE_DATE, v.LAST_UPDATED_BY, v.LAST_UPDATE_LOGIN,
v.CREATED_BY, v.CREATION_DATE,
v.TICKET_VIGILANCIA, v.OBSERVACIONES_VIGILANCIA, v.OBSERVACIONES_VIGILANCIA_SAL,
v.NUM_OC_TRANSFERENCIA AS num_oc_transferencia,
v.SELLO_DOMO, v.JUSTIFICACION_SELLO_DOMO, v.SEDE_SELLO_DOMO,
v.SELLO_VALVULA, v.JUSTIFICACION_SELLO_VALVULA, v.SEDE_SELLO_VALVULA,
v.ESTADO,
t.CONTROL_INTERNO1, t.CONTROL_INTERNO2,
v.RUTA2, v.PRODUCTO2, v.VOLUMEN2,
v.SELLO_DOMO2, v.JUSTIFICACION_SELLO_DOMO2, v.SEDE_SELLO_DOMO2,
v.SELLO_VALVULA2, v.JUSTIFICACION_SELLO_VALVULA2, v.SEDE_SELLO_VALVULA2,
v.ID_TRANSFERENCIA
FROM ALP_RECOLECCION_VIAJES v
LEFT JOIN ALP_RECOLECCION_TRANSFERENCIAS t
ON t.ID_TRANSFERENCIA = v.ID_TRANSFERENCIA
WHERE
(:p_TIPO = 'TRANSFERENCIA')
AND (:p_NUM_OC_TRANSFERENCIA IS NULL OR v.NUM_OC_TRANSFERENCIA = :p_NUM_OC_TRANSFERENCIA)
AND (:p_ORIGEN IS NULL OR v.ORIGEN = :p_ORIGEN)
AND (:p_DESTINO IS NULL OR v.DESTINO = :p_DESTINO)
AND (:p_FECHA_RECOLECION IS NULL OR TRUNC(v.FECHA_RECOLECCION) = TO_DATE(:p_FECHA_RECOLECION, 'DD/MM/YYYY'))
AND (:p_EVENTO IS NULL OR v.EVENTO = :p_EVENTO)
FETCH FIRST 500 ROWS ONLY;
Si también necesitas
volumenconsolidado, agrega un CTE conSUM(LITROS_REMISIONADOS)desdeALP_DET_RECO_TANQUES_VIAJESporID_VIAJEy hazLEFT JOINporv.ID_VIAJE.