EtaConfig


Configuración de tiempo estimado (ETA) de preparación y entrega para los productos de un BranchGroup (o de una Branch concreta). Se asigna a los Good y calcula, con calculateEta(), cuánto tardará un pedido teniendo en cuenta la carga de trabajo actual de la sucursal.

Tiempos (en minutos)

manufacturing_delay (preparación de un ítem), manufacturing_count (ítems que se preparan en paralelo antes de encolar), manufacturing_cooldown (intervalo entre tandas), delivery_delay (tiempo adicional de entrega).

Modos (mode)

delay (retraso dinámico; por defecto), fixed (días fijos de la semana), time_range (franja horaria + días), time_available (disponible solo en cierta franja). Puede llevar parámetros tras : (p. ej. fixed:1,3,5). fixed_label es la etiqueta a mostrar en modo fijo.

Notas y gotchas

  • checkValid() exige delivery_delay >= manufacturing_delay y manufacturing_cooldown <= manufacturing_delay.
  • Al eliminar la configuración, los Good que la usaban quedan sin ETA (eta_config_id = null).

Estructura de Datos

Atributo Tipo Descripción
id int
branch_group_id int {@link BranchGroup} al que pertenece la configuración
branch_id int\|null {@link Branch} concreta a la que aplica (opcional)
name string Nombre de la configuración
manufacturing_delay int Tiempo de preparación de un ítem, en minutos
manufacturing_count int Ítems que se preparan en paralelo antes de encolar
manufacturing_cooldown int Intervalo entre tandas de preparación, en minutos
delivery_delay int Tiempo adicional de entrega, en minutos
created_at datetime\|null
updated_at datetime\|null
mode string Modo de cálculo del ETA (delay, fixed, time_range, time_available)
fixed_label string\|null Etiqueta a mostrar en modo fijo
allLogs ApiLog>
branch Branch\|null {@link Branch} a la que aplica
branchGoods BranchGood> Productos de sucursal que usan esta configuración
branchGroup BranchGroup {@link BranchGroup} al que pertenece
goods Good> Productos que usan esta configuración
logs ApiLog>
orderedGoods OrderedGood> Ítems de orden asociados
{
    "id": 3,
    "branch_group_id": 26,
    "branch_id": null,
    "name": "Lun a Vie de 8pm a 11pm",
    "manufacturing_delay": 0,
    "manufacturing_count": 0,
    "manufacturing_cooldown": 0,
    "delivery_delay": 0,
    "created_at": "2022-03-17 17:58:41",
    "updated_at": "2022-03-18 20:54:11",
    "mode": "time_available:12:00-13:00",
    "fixed_label": "Cena Laboral"
}

Endpoints

Insertar EtaConfig

Insertar EtaConfig de BranchGroup

Crear configuración de ETA

Crea una EtaConfig para el BranchGroup (tiempos de preparación y entrega, mode). Los tiempos no enviados se inicializan en 0 y el modo por defecto es delay.

Método URI Cabeceras
POST /companies/{companyId}/branch-groups/{branchGroupId}/eta-configs Authorization
{
    "name": "required|string|max:255",
    "manufacturing_delay": "nullable|integer|min:0",
    "manufacturing_count": "nullable|integer|min:0",
    "manufacturing_cooldown": "nullable|integer|min:0",
    "delivery_delay": "nullable|integer|min:0",
    "fixed_label": "nullable|string|max:32",
    "mode": {
        "required": true,
        "string": true,
        "max": "64",
        "regex": "/^(delay)|(fixed:[0-6](,[0-6])*)|(time_range:(([0-1][0-9])|(2[0-3])):[03]0-(([0-1][0-9])|(2[0-3])):[03]0(;[0-6](,[0-6])*)?)|(time_available:(([0-1][0-9])|(2[0-3])):[03]0-(([0-1][0-9])|(2[0-3])):[03]0(;[0-6](,[0-6])*)?)$/"
    }
}

Listar EtaConfig

Listar EtaConfig de BranchGroup

{info} Soporta: Paginación Filters Carga dinámica

Listar configuraciones de ETA

Devuelve las EtaConfig del BranchGroup indicado.

Método URI Cabeceras
GET /companies/{companyId}/branch-groups/{branchGroupId}/eta-configs Authorization

Mostrar EtaConfig

{info} Soporta: Carga dinámica

Mostrar configuración de ETA

Devuelve la EtaConfig por su id.

Método URI Cabeceras
GET /companies/{companyId}/eta-configs/{etaConfigId} Authorization

Actualizar EtaConfig

Actualizar configuración de ETA

Modifica los tiempos, el mode y el fixed_label de la EtaConfig.

Método URI Cabeceras
PATCH /companies/{companyId}/eta-configs/{etaConfigId} Authorization
{
    "name": "nullable|string|max:255",
    "manufacturing_delay": "nullable|integer|min:0",
    "manufacturing_count": "nullable|integer|min:0",
    "manufacturing_cooldown": "nullable|integer|min:0",
    "delivery_delay": "nullable|integer|min:0",
    "fixed_label": "nullable|string|max:32",
    "mode": {
        "nullable": true,
        "string": true,
        "max": "64",
        "regex": "/^(delay)|(fixed:[0-6](,[0-6])*)|(time_range:(([0-1][0-9])|(2[0-3])):[03]0-(([0-1][0-9])|(2[0-3])):[03]0(;[0-6](,[0-6])*)?)|(time_available:(([0-1][0-9])|(2[0-3])):[03]0-(([0-1][0-9])|(2[0-3])):[03]0(;[0-6](,[0-6])*)?)$/"
    }
}

Eliminar EtaConfig

Eliminar configuración de ETA

Borra la EtaConfig. Los Good que la usaban quedan sin ETA (eta_config_id = null).

Método URI Cabeceras
DELETE /companies/{companyId}/eta-configs/{etaConfigId} Authorization

Relaciones