Asociación de un Good con una Property. Fija cómo se presenta esa
variante en el producto (nombre, tipo, orden, estado y las reglas de selección de options) y
sirve como valor por defecto: cuando el producto se pone a la venta en una sucursal se
copia en un BranchGoodProperty, que es el que se puede ajustar por sucursal.
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.| Atributo | Tipo | Descripción |
|---|---|---|
id |
int |
|
display_name |
string |
Nombre de la variante tal como se muestra en este producto. |
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 para este producto. |
in_order |
int |
Posición de la variante dentro del producto. |
created_at |
datetime\|null |
Fecha de creación. |
updated_at |
datetime\|null |
Fecha de última modificación. |
good_id |
int |
Producto al que pertenece la asociación. |
property_id |
int |
Variante asociada. |
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. |
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": 59,
"display_name": "Blablabla",
"options": 258,
"disabled": false,
"in_order": 0,
"created_at": "2020-04-27 15:21:01",
"updated_at": "2020-05-04 16:20:34",
"good_id": 106,
"property_id": 46,
"prop_type": 258,
"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": 258,
"type_name": "radio",
"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
}
}
{info} Soporta: Paginación Filters Carga dinámica
Listar asociaciones producto-variante
Devuelve las GoodProperty de la compañía, paginadas.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/good-properties |
N/A |
Igual que el listado de GoodProperty pero con el formato de respuesta previo.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/good-properties/legacy |
N/A |
{info} Soporta: Paginación Filters Carga dinámica
Modifica el display_name, el in_order, el estado o las reglas de options de la
GoodProperty del producto indicado (valor por defecto para las sucursales).
| Método | URI | Cabeceras |
|---|---|---|
| PATCH | /companies/{companyId}/goods/{goodId}/properties/{propertyId} |
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"
}
allLogs HasMany ApiLoggood BelongsTo Goodlogs HasMany ApiLogproperty BelongsTo PropertypropertyOptions HasMany PropertyOptionpropertyRange HasOne PropertyRangepropertyText HasOne PropertyText