Ir al contenido principal

Denuncias(Consultar Sucursal (1)) - [getBranchsDesignations]

🧾 Descripción

Servicio que obtiene dinámicamente:

  • La lista de sucursales activas con más de 1 empleado asignado, o

  • La lista de puestos (Designations) disponibles en el ERP,

dependiendo del parámetro type recibido en la solicitud.

Este servicio consulta directamente al ERP mediante los métodos internos dbErp() y ServiceErp().


🚀 Endpoint

POST /get-branchs-designations


📥 Request Body

{ "type": "Sucursal" | "Puesto" }

Valores permitidos:

type Acción
"Sucursal" Retorna sucursales con empleados asociados.
"Puesto" Retorna todos los puestos (Designation).

🔐 Seguridad

  • Requiere autenticación interna del ERP.

  • Las consultas se realizan vía dbErp() (SQL ERPNext) o ServiceErp() (REST del ERP).


🧠 Flujo del Servicio

✔️ Si type = "Sucursal"

  1. Construye la consulta SQL:

    • Selecciona sucursales (tabBranch).

    • Hace JOIN con empleados (tabEmployee).

    • Agrupa y retorna solo sucursales con más de 1 empleado registrado.

  2. Ejecuta la consulta vía:


    dbErp("POST", body, /method/send-query-database)
  3. Si encuentra resultados:

    • Devuelve solo el nombre de la sucursal (br.name).

  4. Si ocurre error:

    • Retorna mensaje de error controlado.


✔️ Si type = "Puesto"

  1. Solicita al ERP la lista completa de Designations:


    GET resource/Designation?limit=None
  2. Extrae solo el nombre del puesto (name).

  3. Devuelve la lista al cliente.


❌ Si type ≠ “Sucursal” ni “Puesto”

Retorna error indicando que la opción no es válida.


📤 Response 200 – Ejemplos

✔️ Respuesta para type = "Sucursal"

{ "valor": true, "msg": "Se encontraron sucursales", "data": [ "Sucursal Lima", "Sucursal Arequipa", "Sucursal Trujillo" ] }

✔️ Respuesta para type = "Puesto"

{ "valor": true, "msg": "Se encontraron puestos", "data": [ "Asistente Administrativo", "Operario de Almacén", "Jefe de Sucursal" ] }

❌ Opción no válida

{ "valor": false, "msg": "Opcion no valida", "data": [] }

❌ Error del servidor

{ "valor": false, "msn": "Error de servidor", "data": "<detalle_del_error>" }

📚 Schemas que utiliza

Branch (SQL ERP)

Campos relevantes:

br.name

Employee

Relacionada solo para contar empleados por sucursal:

emp.branch emp.name

Designation

Campos relevantes:

{ "name": "string" }

🗃 Lógica en Pseudocódigo

tipo = request["type"] if tipo == "Sucursal": response = SQL: SELECT br.name FROM Branch br LEFT JOIN Employee emp ON emp.branch = br.name GROUP BY br.name HAVING COUNT(emp.name) > 1 return nombres de sucursales else if tipo == "Puesto": response = GET Designation return lista de name else: return error "Opción no válida"