Skip to main content
Version: Latest

Editar un producto

Proceso que permite editar un producto.

Request 🚀

url

https://app.aveonline.co/avestock/api/editProduct.php

Method

POST

Content-Type: application/json

Características Principales

  • Edición de productos con variantes: Permite actualizar un producto principal y sus variantes.
  • Gestión de variantes: Crear, actualizar y desactivar variantes existentes.
  • Validación de referencias: Verifica que las referencias del producto y variantes sean únicas.
  • Gestión de inventario: Manejo automático del inventario para variantes con stock mínimo.
  • Manejo de archivos: Soporte para actualizar imágenes y videos del producto, incluyendo formato base64.
  • Imágenes de variantes: Soporte para imágenes individuales por variante en formato base64.
  • Dimensiones y peso: Cálculo automático de volumen basado en dimensiones.
  • Logs de precios: Registro automático de cambios de precios.
  • Integración con listas de precios: Actualización automática en listas de precios de marketplace.

Params JSON

  • tipo* String Enrutador de la API, "authave"
  • empresa* Number Identificador de la empresa dentro de AVEONLINE, se obtiene en la [Autenticación](./autenticacion)
  • productId* Number Identificador del producto.
  • editProductName* String Nombre único del producto.
  • editProductDesc String Descripción del producto.
  • editShortDesc String Descripción corta del producto.
  • editWarrantyTime Number Tiempo de garantía del producto en meses.
  • editWarranty String Garantía del producto.
  • editSendConditions String Condiciones de envío del producto.
  • editReturnConditions String Condiciones de devolución del producto.
  • editProductRef String Referencia única del producto.
  • referenciaEquivalente String Referencia equivalente del producto.
  • referenciaEquivalente2 String Referencia equivalente del producto 2.
  • referenciaEquivalente3 String Referencia equivalente del producto 3.
  • referenciaEquivalente4 String Referencia equivalente del producto 4.
  • referenciaEquivalente5 String Referencia equivalente del producto 5.
  • editCosto Number Valor del producto.
  • editRate Number Precio de venta del producto.
  • editSugerido Number Precio sugerido del producto.
  • editDeclarado Number Valor declarado del producto.
  • editProductStatus* Number Identificador del estado del producto. 1 - Activo 2 - Inactivo.
  • editCategoryName Number Identificador de la categoría a la cual pertenece el producto.
  • editBrandName Number Identificador de la marca del producto.
  • editMarcaName Number Identificador de la marca del producto.
  • editTax Number Porcentaje de impuesto aplicado al producto.
  • editMinimo Number Stock mínimo del producto.
  • editInventarioNegativo Number Permite el stock menor a 0 en el producto. 1 - Sí 2 - No.
  • editTipoActivacion Number 1 - Publicar en Marketplace 2 - Sólo por activación 3 - Desactivado.
  • editPeso Number Peso del producto en kilogramos.
  • editAlto Number Alto del producto en centímetros.
  • editAncho Number Ancho del producto en centímetros.
  • editLargo Number Largo del producto en centímetros.
  • editUbicacion String Ubicación del producto en la bodega (máximo 10 caracteres).
  • editUbicacionCliente String Ubicación del cliente (máximo 10 caracteres).
  • editTallaName Number Identificador de la talla del producto.
  • editColorName Number Identificador del color del producto.
  • editPresentacionName Number Identificador de la presentación del producto.
  • editEtiquetasName String Etiquetas del producto.
  • editPriceMin Number Precio mínimo del producto.
  • editPriceMax Number Precio máximo del producto.
  • editDropshipperPrice Number Precio para dropshipping del producto.
  • editPrepTime Number Tiempo de alistamiento del producto (por defecto 3).
  • editBodegaName Number Identificador de la bodega (requerido si editInventarioNegativo = 1).
  • editProductImageFile File Archivo de imagen del producto o en formato base64.
  • editProductImageUrlField String URL de la imagen del producto.
  • editProductVideoUrl String URL del video del producto.
  • variants Array Array con las variantes del producto (opcional).
  • attribute_names Object Nombres personalizados para los atributos de las variantes (opcional).

Estructura de Nombres de Atributos

El parámetro attribute_names permite definir nombres personalizados para los atributos de las variantes:

{
"attribute_names": {
"variant1": "Color",
"variant2": "Talla",
"variant3": "Material"
}
}

Este parámetro es opcional y debe ser un objeto con las claves variant1, variant2 y variant3. Estos nombres se utilizarán para personalizar la presentación de los atributos de las variantes en la interfaz.

Estructura de Variantes

El parámetro variants debe ser un array con la siguiente estructura:

[
{
"id": 12345,
"name": "Nombre de la variante",
"sku": "SKU-VARIANTE-001",
"cost": 35000,
"price": 50000,
"suggested_price": 45000,
"status": 1,
"iva": 19,
"stock": 100,
"min_stock": 5,
"weight": 1.2,
"length": 10.5,
"width": 8.0,
"height": 5.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 40000,
"max_price": 60000,
"declared_value": 45000,
"dropshipping_price": 48000,
"additional_references": ["REF-ALT-001", "REF-ALT-002", "REF-ALT-003"],
"image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...",
"description": "Descripción completa de la variante",
"short_description": "Descripción corta de la variante",
"attributes": {
"Color": "Rojo",
"Talla": "M",
"Material": "Algodón"
}
}
]

Parámetros de Variantes

  • id Number ID de la variante (para actualizar variante existente, omitir para crear nueva).
  • name* String Nombre de la variante (máximo 255 caracteres).
  • sku* String SKU único de la variante (máximo 40 caracteres).
  • cost Number Costo de la variante.
  • price Number Precio de venta de la variante.
  • suggested_price Number Precio sugerido de la variante.
  • status* Number Estado de la variante. 1 - Activo, 2 - Inactivo.
  • iva Number Porcentaje de IVA de la variante (0-100).
  • stock Number Stock de la variante (mínimo 0).
  • min_stock Number Stock mínimo de la variante (mínimo 0).
  • weight Number Peso de la variante en kilogramos (mínimo 0.01).
  • length Number Largo de la variante en centímetros (mínimo 0.1).
  • width Number Ancho de la variante en centímetros (mínimo 0.1).
  • height Number Alto de la variante en centímetros (mínimo 0.1).
  • warehouse Number Identificador de la bodega (requerido si negative_inventory = true).
  • negative_inventory Boolean Permite inventario negativo para la variante.
  • min_price Number Precio mínimo de la variante.
  • max_price Number Precio máximo de la variante.
  • declared_value Number Valor declarado de la variante.
  • dropshipping_price Number Precio para dropshipping de la variante.
  • additional_references Array Referencias adicionales de la variante (opcional).
  • image_base64 String Imagen de la variante en formato base64 (opcional).
  • description String Descripción de la variante (máximo 1000 caracteres).
  • short_description String Descripción corta de la variante (máximo 255 caracteres).
  • attributes Object Objeto con los atributos específicos de la variante como pares clave-valor.

Notas Importantes

  1. Referencias únicas: Todas las referencias (editProductRef, SKUs de variantes, referencias equivalentes, referencias adicionales de variantes) deben ser únicas dentro de la empresa.

  2. Actualización de variantes: Las variantes se identifican por su SKU. Si existe, se actualiza; si no existe, se crea una nueva.

  3. Desactivación automática: Las variantes que no se incluyan en el JSON se desactivan automáticamente.

  4. Validación individual: Cada variante es validada individualmente. Si una variante falla la validación, se detiene todo el proceso.

  5. Referencias adicionales de variantes: Cada variante puede tener múltiples referencias adicionales que también deben ser únicas en toda la empresa.

  6. Cálculo de volumen: El volumen se calcula automáticamente usando la fórmula: (largo/100) * (ancho/100) * (alto/100) * 400 y se redondea hacia arriba.

  7. Gestión de inventario: El sistema maneja automáticamente el inventario de las variantes según su configuración.

  8. Logs de precios: Se registran automáticamente todos los cambios de precios del producto principal.

  9. Formato de variantes: El parámetro variants debe ser un array, no un string JSON.

  10. Nombres de atributos: El parámetro attribute_names permite definir nombres personalizados para los atributos de las variantes como un objeto con las claves variant1, variant2 y variant3.

  11. Imágenes en base64: Tanto el producto principal como las variantes soportan imágenes en formato base64.

  12. Stock mínimo de variantes: Cada variante puede tener su propio stock mínimo configurado individualmente.

  13. Descripciones de variantes: Cada variante puede tener su propia descripción completa (description) y descripción corta (short_description).

  14. Estadísticas de procesamiento: La respuesta incluye contadores detallados de variantes procesadas, creadas, actualizadas y desactivadas.

  15. Transacciones con rollback: Todo el proceso se ejecuta en una transacción que se revierte completamente si ocurre cualquier error.

  16. Asignación automática de bodegas: Si una variante requiere bodega pero no se especifica, se asigna automáticamente la bodega principal de la empresa.

  17. Atributos de variantes: El campo attributes es un objeto que permite definir los atributos específicos de cada variante como pares clave-valor, donde las claves corresponden a los nombres definidos en attribute_names.

Ejemplo

{
"tipo": "authave",
"token": "",
"empresa": 6077,
"productId": 12345,
"editProductName": "Producto de prueba actualizado",
"editProductDesc": "Descripción actualizada del producto",
"editShortDesc": "Descripción corta actualizada",
"editWarrantyTime": 12,
"editWarranty": "Garantía actualizada del producto",
"editSendConditions": "Condiciones de envío actualizadas",
"editReturnConditions": "Condiciones de devolución actualizadas",
"editProductRef": "ASF65558-UPD",
"referenciaEquivalente": "FF65558-UPD",
"referenciaEquivalente2": "GG65558",
"referenciaEquivalente3": "",
"referenciaEquivalente4": "",
"referenciaEquivalente5": "",
"editCosto": 52000,
"editRate": 52000,
"editSugerido": 48000,
"editDeclarado": 50000,
"editProductStatus": 1,
"editCategoryName": 6,
"editBrandName": 2,
"editMarcaName": 2,
"editTax": 19,
"editMinimo": 8,
"editInventarioNegativo": 1,
"editTipoActivacion": 2,
"editPeso": 1.8,
"editAlto": 18.0,
"editAncho": 12.0,
"editLargo": 22.0,
"editUbicacion": "B2-C3",
"editUbicacionCliente": "D4-E5",
"editTallaName": 1,
"editColorName": 2,
"editPresentacionName": 1,
"editEtiquetasName": "actualizado,producto,prueba",
"editPriceMin": 42000,
"editPriceMax": 62000,
"editDropshipperPrice": 49000,
"editPrepTime": 3,
"editBodegaName": 1,
"editProductImageUrlField": "https://ejemplo.com/imagen-actualizada.jpg",
"editProductVideoUrl": "https://ejemplo.com/video-actualizado.mp4",
"attribute_names": {
"variant1": "Color",
"variant2": "Talla",
"variant3": "Material"
},
"variants": [
{
"sku": "ASF65558-R",
"name": "Variante Roja Actualizada",
"cost": 48000,
"price": 53000,
"suggested_price": 50000,
"status": 1,
"iva": 19,
"stock": 75,
"min_stock": 5,
"weight": 1.3,
"length": 22.0,
"width": 12.0,
"height": 18.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 42000,
"max_price": 62000,
"declared_value": 50000,
"dropshipping_price": 49000,
"additional_references": ["FF65558-R-UPD", "GG65558-R-UPD"],
"image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...",
"description": "Descripción completa de la variante roja actualizada",
"short_description": "Variante roja actualizada",
"attributes": {
"Color": "Rojo",
"Talla": "L",
"Material": "Algodón"
}
},
{
"sku": "ASF65558-G",
"name": "Variante Verde Nueva",
"cost": 48000,
"price": 53000,
"suggested_price": 50000,
"status": 1,
"iva": 19,
"stock": 40,
"min_stock": 3,
"weight": 1.3,
"length": 22.0,
"width": 12.0,
"height": 18.0,
"warehouse": 1,
"negative_inventory": false,
"min_price": 42000,
"max_price": 62000,
"declared_value": 50000,
"dropshipping_price": 49000,
"additional_references": ["FF65558-G", "GG65558-G"],
"description": "Descripción completa de la variante verde nueva",
"short_description": "Variante verde nueva",
"attributes": {
"Color": "Verde",
"Talla": "M",
"Material": "Poliéster"
}
}
]
}

Response 📄

Success

  • success Bool Respuesta del servidor indicando éxito.
  • messages String Respuesta del servidor en modo texto.
  • variants_processed Number Número de variantes procesadas.
  • variants_created Number Número de variantes creadas.
  • variants_updated Number Número de variantes actualizadas.
  • variants_deactivated Number Número de variantes desactivadas.
  • priceListData Object Datos de lista de precios (si aplica).
  • entry Object Datos de entrada de inventario (si aplica).
  • departure Object Datos de salida de inventario (si aplica).
  • availableQuantityUpdated Bool Indica si se actualizó la cantidad disponible.

Ejemplo

{
"success": true,
"messages": "Producto actualizado correctamente.",
"variants_processed": 2,
"variants_created": 1,
"variants_updated": 1,
"variants_deactivated": 0,
"priceListData": {
"success": true,
"message": "Producto actualizado en lista de precios"
},
"entry": {
"success": true,
"message": "Entrada de inventario creada"
},
"availableQuantityUpdated": true
}

El método no esta permitido.

{
"success": false,
"messages": "Metodo no permitido",
"status": 405
}

Algunos parametros son requeridos.

{
"success": false,
"messages": "El campo editProductName es requerido. y (1) errores más.",
"status": 422,
"errors": [
{
"title": "El campo editProductName no es válido.",
"detail": "El campo editProductName es requerido.",
"source": {
"pointer": "/editProductName"
}
},
{
"title": "El campo editTax no es válido.",
"detail": "El campo editTax debe estar entre 0 y 100.",
"source": {
"pointer": "/editTax"
}
}
]
}

Producto no encontrado

{
"success": false,
"messages": "El producto no existe o no pertenece a la empresa.",
"status": 404
}

Error en variantes

{
"success": false,
"messages": "Error en variante #0: El campo name es requerido. y (2) errores más.",
"status": 422,
"errors": [
{
"title": "El campo name no es válido.",
"detail": "El campo name es requerido.",
"source": {
"pointer": "/name"
}
},
{
"title": "El campo sku no es válido.",
"detail": "El campo sku es requerido.",
"source": {
"pointer": "/sku"
}
},
{
"title": "El campo status no es válido.",
"detail": "El campo status debe estar entre 1 y 2.",
"source": {
"pointer": "/status"
}
}
]
}

Referencia duplicada

{
"success": false,
"messages": "La referencia ASF65558-UPD ya existe",
"status": 400
}

Referencia duplicada en variantes

{
"success": false,
"messages": "Referencia duplicada en variantes",
"status": 422,
"errors": [
{
"detail": "La referencia ASF65558-R ya existe en otra variante o en el producto principal"
}
]
}

JSON inválido en variantes

{
"success": false,
"messages": "Las variantes deben ser un array",
"status": 400
}

Inventario negativo no permitido

{
"success": false,
"messages": "No se puede marcar el producto como ilimitado porque está asociado a bodega de proveedores fulfillment",
"status": 400
}

Credenciales incorrectas

{
"status": "error",
"mensaje": "Credenciales invalidas o el cliente se encuentra inactivo"
}