6.11. Flujo despacho unidad
Este documento migra el endpoint legacy:
POST http://172.108.15.104:17005/recoleccion_movil/DespachoUnidad/consulta
Body:
{
"p_CONTROL_INTERNO": "",
"p_DESTINO": "PTSP",
"p_EVENTO": "En Transito",
"p_FECHA_RECOLECION": "23/09/2025",
"p_ORIGEN": "",
"p_TIPO": "TRANSFERENCIA",
"p_TRACTOR": "",
"p_NUM_OC_TRANSFERENCIA": "1601051"
}
y su respuesta 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 utilizando el esquema p_* (compatibilidad con legacy), con filtro 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": "",
"p_DESTINO": "PTSP",
"p_EVENTO": "En Transito",
"p_FECHA_RECOLECION": "23/09/2025",
"p_ORIGEN": "",
"p_TIPO": "TRANSFERENCIA",
"p_TRACTOR": "",
"p_NUM_OC_TRANSFERENCIA": "1601051"
}
Notas:
- Se conservan los nombres
p_*.- La fecha se envía como
DD/MM/YYYY(si tu cliente usa ISO, convertir internamente a este formato).
1.2 Response (nuevo — equivalente al legacy)
El nuevo servicio devuelve la misma forma AlpRecoleccionViajesCollection. Ejemplo (recortado):
{
"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": "En Transito",
"fechaEvento": "2025-09-25T13:46:08.000-06:00",
"latitud": "37.4219983",
"longitud": "-122.084",
"lastUpdateDate": "2025-09-25T13:46:08.000-06:00",
"lastUpdatedBy": "119242",
"num_oc_transferencia": "1601051",
"estado": "En Transito",
"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 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 | |
latitud / longitud | ALP_RECOLECCION_VIAJES.LATITUD / LONGITUD | |
lastUpdateDate / lastUpdatedBy | LAST_UPDATE_DATE / LAST_UPDATED_BY | Auditoría |
num_oc_transferencia | ALP_RECOLECCION_VIAJES.NUM_OC_TRANSFERENCIA | Filtro clave del caso |
controlInterno1 / controlInterno2 | ALP_RECOLECCION_TRANSFERENCIAS.CONTROL_INTERNO1/2 | Requiere JOIN por ID_TRANSFERENCIA |
id_transferencia | ALP_RECOLECCION_VIAJES.ID_TRANSFERENCIA | Llave a transferencias |
Sellos (SelloDomo, sede*, justificacion*) | ALP_RECOLECCION_VIAJES.SELLO_*, SEDE_*, JUS_* | Si se incluyen en la respuesta |
2.2 Detalle y tanques (volúmenes)
| Campo | Tabla.Columna | Comentario |
|---|---|---|
volumen | ALP_RECOLECCION_VIAJES.VOLUMEN o SUM(ALP_DET_RECO_TANQUES_VIAJES.LITROS_REMISIONADOS) | Según cómo materialices el total |
3) SQL de referencia (Oracle)
Filtro por TRANSFERENCIA + NUM_OC_TRANSFERENCIA y estado En Transito. Incluye JOIN a 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.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;
Para
volumen, agrega un CTE sumandoALP_DET_RECO_TANQUES_VIAJES.LITROS_REMISIONADOSporID_VIAJEy hazLEFT JOINsi el maestro no trae total.