Variantes
Listar variante(s), costos, cantidades, crear, editar y eliminar variantes.
Cómo funciona la interfaz de Bsale, mira éstos videos:
- Creación variantes Ver
Una variante sólo puede tener 1 producto "padre", pero 1 producto puede tener 1 o más variantes. Ej, (Nombre Producto) Poleron Blanco, (Nombre Variantes) Talla L, Talla M, Talla S.
El producto debe ser creado antes de crear la variante. Para vender un producto/variante creado, se debe indicar en el nodo details del documento.
Estructura JSON
Al realizar una petición HTTP
, el servicio retornara un JSON con la siguiente estructura:
{
"href": "https://api.bsale.com.mx/v1/variants/2373.json",
"id": 2373,
"description": "240 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1441310864",
"code": "1441310864",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/656.json",
"id": "656"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2373/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2373/costs.json"
}
}
Atributos
Atributo | Descripción | Tipo dato |
---|---|---|
href | url del tipo de producto | String |
id | identificador único del tipo de producto | Integer |
description | nombre de la variante | String |
unlimitedStock | indica si la variante posee stock ilimitado No(0) o Si (1) | Boolean |
allowNegativeStock | indica si la variante permite stock negativo No(0) o Si (1) | Boolean |
state | estado de la variante activo(0) o inactivo (1) | Boolean |
barCode | código de barras de la variante | String |
code | SKU de la variante | String |
imagestionCenterCost | centro de costo imagestion | String |
imagestionAccount | cuenta imagestion | String |
imagestionConceptCod | concepto imagestion | String |
imagestionProyectCod | proyecto imagestion | String |
imagestionCategoryCod | categoría imagestion | Integer |
imagestionProductId | producto imagestion | Integer |
serialNumber | indica si la variante posee numero de serie No(0) Si(1) | Integer |
prestashopCombinationId | identificador en prestashop legacy | Integer |
prestashopValueId | identificador en prestashop legacy | Integer |
product | nodo que indica la relación con el producto | |
attribute_values | nodo que indica los valores de los atributos del tipo de producto | |
costs | nodo que indica el costo de la variante |
GET lista de variantes
- GET
/v1/variants.json
retornará todos todas las variantes.
Parámetros
- limit, limita la cantidad de items de una respuesta JSON, por defecto el limit es 25, el máximo permitido es 50.
- offset, permite paginar los items de una respuesta JSON, por defecto el offset es 0.
- fields, solo devolver atributos específicos de un recurso
- expand, permite expandir instancias y colecciones para traer relaciones en una sola petición.
- description, Permite filtrar por nombre de la variante.
- barcode, filtra por código de barra de la variante.
- code, filtra por código (SKU) de la variante.
- serialnumber, filtra por numero de serie de la variante.
- productid, filtra variantes por el id del producto.
- state, boolean (0 o 1) indica si las variantes están activas(0) o inactivas (1).
Ejemplos
GET /v1/variants.json?limit=10&offset=0
GET /v1/variants.json?fields=[description,barCode,code]
GET /v1/variants.json?state=0
GET /v1/variants.json?productid=26
GET /v1/variants.json?expand=[product]
{
"href": "https://api.bsale.com.mx/v1/variants.json",
"count": 868,
"limit": 3,
"offset": 0,
"items": [
{
"href": "https://api.bsale.com.mx/v1/variants/1548.json",
"id": 1548,
"description": "120 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1401291513",
"code": "1401291513",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/416.json",
"id": "416"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/1548/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/1548/costs.json"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/1555.json",
"id": 1555,
"description": "150 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1400786476",
"code": "1400786476",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/420.json",
"id": "420"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/1555/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/1555/costs.json"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/2101.json",
"id": 2101,
"description": "300 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1423687401",
"code": "1423687401",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/588.json",
"id": "588"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2101/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2101/costs.json"
}
}
],
"next": "https://api.bsale.com.mx/v1/variants.json?limit=3&offset=3"
}
GET una variante
- GET
/v1/variants/2373.json
retornará una variante específica.
Parámetros
- expand, permite expandir instancias y colecciones para traer relaciones en una sola petición.
Ejemplos
GET /v1/variants/5730.json?expand=[product]
{
"href": "https://api.bsale.com.mx/v1/variants/2373.json",
"id": 2373,
"description": "240 ML",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": "1441310864",
"code": "1441310864",
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/656.json",
"id": "656"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2373/attribute_values.json"
},
"costs": {
"href": "https://api.bsale.com.mx/v1/variants/2373/costs.json"
}
}
GET cantidad de variantes
GET
/v1/variants/count.json
Retornará cantidades de registros.state, boolean (0 o 1) indica si los tipos de productos están activos(0) inactivos (1).
{
"count": 8001
}
GET valores de atributos de una variante
- GET
/v1/variants/5730/attribute_values.json
retorna la información almacenada en los atributos de una variante.
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values.json",
"count": 4,
"limit": 25,
"offset": 0,
"items": [
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34192.json",
"id": 34192,
"description": "Microsoft",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/25.json",
"id": "25"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34193.json",
"id": 34193,
"description": "14-09-2010",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/28.json",
"id": "28"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34194.json",
"id": 34194,
"description": "Multi idiomas (Región Latinoamerica) ",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/29.json",
"id": "29"
}
},
{
"href": "https://api.bsale.com.mx/v1/variants/5730/attribute_values/34195.json",
"id": 34195,
"description": "365 / 24hrs",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/6/attributes/24.json",
"id": "24"
}
}
]
}
GET un valor de atributo especifico de una variante
- GET
/v1/variants/531/attribute_values/2.json
Retornará un atributo asociados a la variante.
{
"href": "https://api.bsale.com.mx/v1/variants/531/attribute_values/2.json",
"id": 2,
"description": "SI",
"attribute": {
"href": "https://api.bsale.com.mx/v1/product_types/8/attributes/12.json",
"id": "12"
}
}
GET costo de una variante
- GET
/v1/variants/2375/costs.json
Retornará el costo previamente asignado a la variante.
{
"averageCost": "4140.0",
"history": [
{
"reception_detail": {
"href": "https://api.bsale.com.mx/v1/stocks/receptions/2539/details/7734.json",
"id": 7734
},
"admissionDate": 1441238400,
"cost": 4140,
"availableFifo": 1
},
{
"reception_detail": {
"href": "https://api.bsale.com.mx/v1/stocks/receptions/2542/details/7744.json",
"id": 7744
},
"admissionDate": 1441324800,
"cost": 4140,
"availableFifo": 1
}
]
}
- averageCost, costo promedio de una variante (Float).
- history, nodo que indica el costo de la variante en cada recepción que ha tenido.
- reception_detail, no que indica el detalle de recepción de la variante.
- admissionDate, fecha de recepción (Integer).
- cost, costo de la variante al momento de la recepción (Float).
- availableFifo, cantidad disponible de la variante de una recepción específica (Integer).
POST una variante
- POST
/v1/variants.json
Para crear una variante, se debe enviar un JSON con la siguiente estructura:
Ejemplo JSON
Envío
{
"productId": 595,
"description": "Age of empires II",
"unlimitedStock": 1,
"allowNegativeStock" : 1,
"barCode": "70964507073261",
"code": "70964507073261",
"unit": "ZZ",
"tributaryCode": "01010101"
}
- productId, Id del producto (Integer).
- description, Nombre de la variante (String)
- unlimitedStock, Variante posee stock ilimitado No(0) o Si (1) (Boolean)
- allowNegativeStock, Variante permite stock negativo No(0) o Si (1) (Boolean)
- barCode, código de barras de la variante (String)
- code, SKU de la variante (String)
- unit, Unidad de medida de la variante (String)
- tributaryCode, Clave producto de la variante (String)
Si una variante no envía tributaryCode
, por defecto se guardará como clave 01010101
(No existe en el catálogo).
Si una variante no envía unit
, por defecto se guardará como NIU
si es un producto, KT
si es servicio y ZZ
si pertenece a un pack.
Todos los códigos los encontrarás en el catálogo del SAT.
Atributos (opcional)
Si el tipo de producto al que pertenece la variante posee atributos, se deben enviar los valores que estos van a tener, junto con el id
del atributo.
{
"productId": 595,
"description": "Age of empires II",
"attribute_values": [
{
"description": "Windows",
"attributeId": 46
},
{
"description": "Estrategia",
"attributeId": 47
}
]
}
- description, Valor del atributo (String).
- attributeId, identificador único del atributo esto viene del tipo de producto (Integer).
Respuesta
{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Age of empires II",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}
PUT una variante
- PUT
/v1/variants/2110.json
Se debe enviar un Json con la siguiente estructura:
Ejemplo JSON
Envío
{
"id": 2110,
"productId": 595,
"description": "Age of empires 2",
"attribute_values": [
{
"description": "Windows OS",
"attributeId": 46
},
{
"description": "Estrategia",
"attributeId": 47
}
]
}
Respuesta
{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Age of empires 2",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 0,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}
DELETE una variante virtualmente
- DELETE
/v1/variants/2110.json
Cambia el estado de la variante
La variante no estará visible mediante interfaz y tendrá un state
1
{
"href": "https://api.bsale.com.mx/v1/variants/2110.json",
"id": 2110,
"description": "Nintendo Wii U Basic Controller",
"unlimitedStock": 0,
"allowNegativeStock": 0,
"state": 1,
"barCode": 1415381671,
"code": 1415381671,
"imagestionCenterCost": 0,
"imagestionAccount": 0,
"imagestionConceptCod": 0,
"imagestionProyectCod": 0,
"imagestionCategoryCod": 0,
"imagestionProductId": 0,
"serialNumber": 0,
"prestashopCombinationId": 0,
"prestashopValueId": 0,
"product": {
"href": "https://api.bsale.com.mx/v1/products/595.json",
"id": "595"
},
"attribute_values": {
"href": "https://api.bsale.com.mx/v1/variants/2110/attribute_values.json"
}
}