Mercadolibre permite hacer descuentos cuando se vende en cantidad. Por ejemplo, si se venden dos unidades de un producto, ofrecer el precio unitario con un descuento X. Como se hace esto?
En algunos países se está implementando un nuevo endpoint en el API, que es
https://api.mercadolibre.com/items/{item_id}/prices/standard/quantity
que permite establecer los precios mayoristas de una publicación. Este endpoint, junto con el endpoint prices de los items (vamos a hablar de ese nuevo endpoint en otro post) son nuevos endpoints que se están habilitando por países, estando habilitados en Argentina desde hace poco.
Como se hace para actualizar los precios mayoristas? Es simple. Supongamos que tenemos un producto X con un precio Y, lo que tenemos que hacer es enviar al API de Mercadolibre una lista con con las cantidades y sus precios.
Supongamos que extendemos meli_oerp y agregamos un modelo para manejar precios mayoristas. Este modelo esta relacionado con el modelo mercadolibre.posting y consta de cuatro campos (ml_price_id, posting_id, price, qty) donde indicamos el ID del precio, la referencia al posting, precio y cantidad.
Permitimos a los usuarios ingresar las reglas de los precios mayoristas en cada una de las publicaciones (algo que se puede definir de manera automática y actualizar todos los postings mediante xmlrpc, por ejemplo), y luego recorrer todas las reglas de precios de para armar el payload con el que vamos a actualizar el posting de Mercadolibre
for mayorista in self.mayorista_ids:
if mayorista.ml_price_id:
posting_id = mayorista.ml_price_id
else:
posting_id = mayorista.id
vals2 = {
'currency_id': self.company_id.currency_id.name,
'amount': round(mayorista.price,2),
'conditions': {
"context_restrictions": [
"channel_marketplace",
"user_type_business"
],
'min_purchase_unit': mayorista.qty
}
}
prices.append(vals2)
data = {'prices': prices}
response = requests.post(url,headers=headers,json=data)
Como pueden ver, invocamos el endpoint indicado anteriormente:
https://api.mercadolibre.com/items/MLA15114XXXXX/prices/standard/quantity
Con el siguiente payload
{'prices': [{'currency_id': 'ARS', 'amount': 27772.89,
'conditions': {'context_restrictions': ['channel_marketplace', 'user_type_business'], 'min_purchase_unit': 2}}, {'currency_id': 'ARS', 'amount': 27188.2,
'conditions': {'context_restrictions': ['channel_marketplace', 'user_type_business'], 'min_purchase_unit': 5}}, {'currency_id': 'ARS', 'amount': 26311.16,
'conditions': {'context_restrictions': ['channel_marketplace', 'user_type_business'], 'min_purchase_unit': 10}}]}
En donde indicamos por canal, cual es el nuevo precio por cantidad. Es interesante este nuevo endpoint portres motivos. El primero es que Mercadolibre esta buscando ganar espacio en el segmento b2b. Segundo porque Mercadolibre está cambiando su API para que se actualicen sus precios de otra manera a diferencia del monolítico endoint items que usan el día de hoy. Y tercero (y esto no es menor) tengo entendido que las publicaciones con precios mayoristas están mejor rankeadas en las búsquedas de Mercadolibre.