Skip to main content

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.ColumnaComentario
fechaRecoleccionALP_RECOLECCION_VIAJES.FECHA_RECOLECCIONFecha del viaje
origen / destino / zonaALP_RECOLECCION_VIAJES.ORIGEN / DESTINO / ZONA
tipoALP_RECOLECCION_VIAJES.TIPOP, C, T, etc.
rutaALP_RECOLECCION_VIAJES.RUTA
operadorEmployeeNumber / operadorFullNameOPERADOR_EMPLOYEE_NUMBER / OPERADOR_FULL_NAME
tractor / pipaALP_RECOLECCION_VIAJES.TRACTOR / PIPA
proveedorTransporte / proveedorIdPROVEEDOR_TRANSPORTE / PROVEEDOR_ID
evento / fechaEvento / estadoEVENTO / FECHA_EVENTO / ESTADO
latitud / longitudALP_RECOLECCION_VIAJES.LATITUD / LONGITUD
lastUpdateDate / lastUpdatedByLAST_UPDATE_DATE / LAST_UPDATED_BYAuditoría
num_oc_transferenciaALP_RECOLECCION_VIAJES.NUM_OC_TRANSFERENCIAFiltro clave del caso
controlInterno1 / controlInterno2ALP_RECOLECCION_TRANSFERENCIAS.CONTROL_INTERNO1/2Requiere JOIN por ID_TRANSFERENCIA
id_transferenciaALP_RECOLECCION_VIAJES.ID_TRANSFERENCIALlave 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)

CampoTabla.ColumnaComentario
volumenALP_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 sumando ALP_DET_RECO_TANQUES_VIAJES.LITROS_REMISIONADOS por ID_VIAJE y haz LEFT JOIN si el maestro no trae total.


4) Diagrama de secuencia