BranchGoodProperty


Variante (Property) de un producto ya vinculada a una sucursal concreta. Cuando un Good con variantes se pone a la venta en una sucursal (como BranchGood), cada GoodProperty del producto se copia aquí. Este registro permite ajustar por sucursal el display_name, las reglas de options y el estado activo/inactivo de la variante, partiendo de los valores por defecto de GoodProperty.

El precio y el stock por opción/rango se guardan aparte, en BranchProperty.

options (bitmask)

El ide-helper expone cada campo de options como propiedad (prop_type, los is_*, min_count, max_count, stack_count). No se editan por separado: se recalculan al guardar options. Significado de cada grupo:

  • prop_type / is_type_options / is_type_range / is_type_text: tipo de la variante, heredado de la Property (lista de opciones, rango numérico o texto libre).
  • min_count / max_count: cuántos valores debe elegir el comprador. min_count = 0 → variante opcional; 1 → obligatoria (al menos uno); 2 → obliga a elegir dos ("Elige 2 sabores"). max_count es siempre >= min_count; p. ej. extras de una pizza con min_count = 0 y max_count = 10.
  • is_multi_selection: permite elegir varias opciones de la lista (va de la mano con max_count > 1).
  • stack_count: cuántas veces se puede repetir la misma opción. 0 → todas distintas; 1 → se puede repetir una opción una vez más (elegir el mismo sabor dos veces).
  • is_dynamic: la variante se muestra repetida en la interfaz ("Bebida 1", "Bebida 2") en lugar de un único selector; con min_count < max_count primero se pide la cantidad y luego se muestran esos campos (poco habitual).
  • is_consumable: la variante tiene stock propio (BranchProperty); si es false se ignora ese stock y la variante no limita el stock del producto.
  • is_admin_customizable: el administrador puede fijar libremente el valor en variantes de rango (saltándose el step) o de texto (saltándose el regex).
  • is_free: sin implementar.

Estructura de Datos

Atributo Tipo Descripción
id int
display_name string Nombre de la variante tal como se muestra en esta sucursal.
options int Bitmask con el tipo y las reglas de selección de la variante (ver arriba).
disabled bool true si la variante está desactivada en esta sucursal.
created_at datetime\|null Fecha de creación.
updated_at datetime\|null Fecha de última modificación.
branch_id int Sucursal a la que pertenece la asociación.
property_id int Variante asociada.
good_id int Producto al que pertenece la asociación.
in_order int Posición de la variante dentro del producto en esta sucursal.
prop_type int BitMask ({@link self::options} & 0xfff)
is_type_options bool BitMask (({@link self::options} & 0x100) !== 0)
is_type_range bool BitMask (({@link self::options} & 0x200) !== 0)
is_type_text bool BitMask (({@link self::options} & 0x400) !== 0)
is_dynamic bool BitMask (({@link self::options} & 0x1000) !== 0)
is_free bool BitMask (({@link self::options} & 0x2000) !== 0)
is_consumable bool BitMask (({@link self::options} & 0x4000) !== 0)
is_multi_selection bool BitMask (({@link self::options} & 0x80) !== 0)
min_count int BitMask (({@link self::options} & 0xf00000) >> 20)
max_count int BitMask (({@link self::options} & 0xf0000) >> 16)
stack_count int BitMask (({@link self::options} & 0xf000000) >> 24)
is_admin_customizable bool BitMask (({@link self::options} & 0x10000000) !== 0)
allLogs ApiLog> Registros de auditoría de la API, incluidos los internos.
branch Branch Sucursal a la que pertenece la asociación.
branchGood BranchGood\|null Producto de sucursal al que pertenece la variante.
branchProperties BranchProperty> Precio y stock por opción/rango de la variante en esta sucursal.
custom_data array Datos de la variante ya combinados con los ajustes del cliente.
good Good Producto al que pertenece la asociación.
logs ApiLog> Registros de auditoría de la API visibles.
options_data array Representación legible de options (tipo y reglas de selección).
property Property Variante asociada.
propertyOptions PropertyOption> Opciones elegibles de la variante (si es de tipo options).
propertyRange PropertyRange\|null Definición del rango (si la variante es de tipo range).
propertyText PropertyText\|null Definición del texto (si la variante es de tipo text).
{
    "id": 97,
    "display_name": "Blablabla",
    "options": 256,
    "disabled": false,
    "created_at": "2020-05-04 17:47:21",
    "updated_at": "2020-05-04 17:47:21",
    "branch_id": 22,
    "property_id": 46,
    "good_id": 109,
    "in_order": 65535,
    "prop_type": 256,
    "is_type_options": true,
    "is_type_range": false,
    "is_type_text": false,
    "is_dynamic": false,
    "is_free": false,
    "is_consumable": false,
    "is_multi_selection": false,
    "min_count": 0,
    "max_count": 0,
    "stack_count": 0,
    "is_admin_customizable": false,
    "options_data": {
        "use_value": 256,
        "use_name": "options",
        "type_value": 256,
        "type_name": null,
        "is_multi_options": false,
        "min_count": 0,
        "max_count": 1,
        "stack_count": 0,
        "is_dynamic": false,
        "is_free": false,
        "is_consumable": false,
        "is_admin_customizable": false
    },
    "property": {
        "id": 46,
        "name": "Blablabla",
        "type": 256,
        "disabled": false,
        "created_at": "2020-04-22 19:43:34",
        "updated_at": "2020-04-22 19:43:34",
        "property_group_id": null,
        "branch_group_id": 42,
        "is_type_options": true,
        "is_type_range": false,
        "is_type_text": false,
        "property_options": [
            {
                "id": 580,
                "name": "Aaaa",
                "price_e2": 223234500,
                "in_order": 65535,
                "created_at": "2020-04-22 19:43:34",
                "updated_at": "2020-04-22 19:43:34",
                "property_id": 46,
                "is_default": false
            }
        ],
        "property_range": null,
        "property_text": null
    },
    "property_options": [
        {
            "id": 580,
            "name": "Aaaa",
            "price_e2": 223234500,
            "in_order": 65535,
            "created_at": "2020-04-22 19:43:34",
            "updated_at": "2020-04-22 19:43:34",
            "property_id": 46,
            "is_default": false,
            "display_price": "2,232,345.00$",
            "sold_out": false,
            "quantity": null
        }
    ],
    "property_range": null,
    "property_text": null
}

Endpoints

Listar BranchGoodProperty

Listar BranchGoodProperty de BranchGood

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

Listar las variantes de un producto de sucursal

Devuelve las BranchGoodProperty del BranchGood indicado.

Método URI Cabeceras
GET /companies/{companyId}/branch-goods/{branchGoodId}/branch-good-properties N/A

Actualizar BranchGoodProperty

Actualizar una variante de producto de sucursal

Modifica el display_name, el estado o las reglas de options de la BranchGoodProperty indicada (override por sucursal sobre el valor de GoodProperty).

Método URI Cabeceras
PATCH /companies/{companyId}/branch-good-properties/{branchGoodPropertyId} Authorization
{
    "display_name": "string|max:64",
    "disabled": "boolean",
    "options": "numeric",
    "in_order": "integer|min:1",
    "prop_type": "nullable|integer|min:0|max:4095",
    "is_type_options": "nullable|boolean",
    "is_type_range": "nullable|boolean",
    "is_type_text": "nullable|boolean",
    "is_dynamic": "nullable|boolean",
    "is_free": "nullable|boolean",
    "is_consumable": "nullable|boolean",
    "is_multi_selection": "nullable|boolean",
    "min_count": "nullable|integer|min:0|max:15",
    "max_count": "nullable|integer|min:0|max:15",
    "stack_count": "nullable|integer|min:0|max:15",
    "is_admin_customizable": "nullable|boolean"
}

Relaciones