Ir al contenido principal

control/embarque/validar - [validar]

PATH:  /var/www/html/qaservicesapp/app/Http/Controllers/ShalomControl/EmbarqueController.php

🧾 Descripción

Este servicio valida si una Orden de Servicio (OSE) puede ser procesada para embarque, verificando:

  • Que la guía exista y no esté anulada.

  • Que corresponda al terminal.

  • Que cuente con código QR o clave según el tipo de cliente.

  • Que cumpla validaciones adicionales mediante validar_grt().

El servicio evita el embarque de guías que estén incompletas, anuladas o sin documentación obligatoria.


🚀 Endpoint


POST /validar-guia

📥 Request Body

{ "ose_id": "number", "cantidad": "number", "numero": "string", "usuario": "string", "terminal": "string", "tipo_cierre": "APP | PDA", "cap_id": "string" }

Parámetros requeridos

Campo Tipo Obligatorio Descripción
ose_id number ID de la Orden de Servicio.
cantidad number Cantidad escaneada.
numero string No* Número del paquete escaneado. (Si no existe, no se valida embarque)
usuario string Usuario que realiza la validación.
terminal string Terminal donde se realiza el proceso.
tipo_cierre string Tipo de cierre: APP o PDA.
cap_id string Capacidad asociada.

🔐 Seguridad

Depende del middleware del proyecto.
La función no valida seguridad interna, se asume que ya llega un request autenticado.


🧠 Flujo del Servicio (resumen real)

  1. Validaciones básicas del Request

    • Verifica existencia de:

      • ose_id

      • cantidad

      • usuario

      • terminal

      • cap_id

      • tipo_cierre ∈ {APP, PDA}

    • Si no existe numero, retorna:

      "Embarque de guías no se valida."

  2. Consulta Orden de Servicio


    SELECT ose_id, ose_estadoPago, ose_nroguiacliente, ose_code_qr, ose_termdestinoentrega, ose_remiteempresa, ose_destinaempresa, ose_termorigenatencion, ose_fhpreferenciapartida, ose_remitecontactomail, ose_remitecontactofono FROM emp_ordenservicio WHERE ose_id = <ose_id>

    Validaciones:

    • Si no existe: ❌ "Guía no encontrada."

    • Si está anulada (ose_estadoPago = 'AN'): ❌ "La guía se encuentra anulada."

    • Si no corresponde al terminal destino: ❌ "La Orden de Servicio ya se encuentra en su destino."

  3. Validaciones por tipo de cliente

    • Si tiene información de remitente con reglas especiales:

      • Si remitecontactomail == '0' → ❌ “Primero debe confirmar la guía en empresarial.”

    • Si cliente es tipo "CLIENTES":

      • Busca clave en emp_code_send

      • Busca adicionales en emp_adicionales

      • Si no tiene clave ni adicionales → ❌ “La Orden de Servicio no tiene clave Creada.”

    • Si no es cliente tipo especial, verifica QR:

      • Si no tiene QR → ❌ “La Orden de Servicio no tiene código QR.”

  4. Validación adicional mediante validar_grt()
    Llama:


    validar_grt(ose_id, cap_id, remiteempresa, destinaempresa)
    • Si falla, retorna error directo.

  5. Si todo es correcto
    Retorna:

    { "success": true, "message": "Orden de servicio validada." }

📤 Response 200 – Ejemplo

{ "success": true, "message": "Orden de servicio validada." }

Posibles Errores

1. Falta ose_id

{ "success": false, "message": "Falta ose_id.", "data": "error" }

2. No se valida porque no se envió número

{ "success": true, "message": "Embarque de guias no se valida." }

3. Falta algún parámetro obligatorio

Ejemplo — falta terminal:

{ "success": false, "message": "Falta terminal.", "data": "error" }

4. Guía no encontrada

{ "success": false, "message": "Guia no encontrada.", "data": "error" }

5. Guía anulada

{ "success": false, "message": "La guía se encuentra anulada.", "data": "error" }

6. Terminal incorrecto

{ "success": false, "message": "La Orden de Servicio ya se encuentra en su destino.", "data": "error" }

7. Guía sin confirmación

{ "success": false, "message": "Primero debe confirmar la guía en empresarial.", "data": "error" }

8. No tiene clave creada

{ "success": false, "message": "La Orden de Servicio no tiene clave Creada.", "data": "error" }

9. No tiene QR

{ "success": false, "message": "La Orden de Servicio no tiene código QR.", "data": "error" }

10. Error por validar GRT

Ejemplo:

{ "success": false, "message": "Error en validación GRT.", "data": "password" }

📚 Schemas (estructuras usadas)

emp_ordenservicio

Campos utilizados:

{ "ose_id": "number", "ose_estadoPago": "string", "ose_nroguiacliente": "string", "ose_code_qr": "string", "ose_termdestinoentrega": "string", "ose_remiteempresa": "string", "ose_destinaempresa": "string", "ose_termorigenatencion": "string", "ose_fhpreferenciapartida": "datetime", "ose_remitecontactomail": "string", "ose_remitecontactofono": "string" }

emp_code_send

{ "idose": "number", "password": "string" }

emp_adicionales

{ "adc_ordenservicioid": "number", "adc_tipo": "string" }

🗃 Lógica en pseudo-código

if !ose_id -> error if !numero -> return "Embarque de guías no se valida." if !cantidad or !usuario or !terminal or !cap_id -> error if tipo_cierre not in ["APP", "PDA"] -> error orden = SELECT FROM emp_ordenservicio WHERE ose_id if !orden -> error if estadoPago == 'AN' -> error if orden.destino != terminal -> error validaciones cliente: if remitenteMail == '0' -> error if CLIENTES and no clave y no adicional -> error else if no QR -> error valida_grt = validar_grt(...) if !success -> return valida_grt return success