Saltar al contenido

API Productos - Sage ACICloud

Obtener Lista de Productos

Endpoint: GET /api/acicloud/products
Controller: ACIcloudController::products
Autenticación: Bearer Token requerido
Middleware: check.activate.organization

Características del Endpoint

  • Filtrado Avanzado: Múltiples filtros y operadores
  • Paginación: Resultados paginados automáticamente
  • Ordenamiento: Ordenar por cualquier campo
  • Multi-tenant: Respeta el contexto de organización activa

Parámetros de Query (Opcionales)

Parámetro Tipo Requerido Descripción Ejemplo
page integer Página a obtener 2
per_page integer Registros por página (máx 100) 50
sort string Campo para ordenar "code"
order string Dirección del ordenamiento "asc"
filter object Filtros aplicados {}

Ejemplo de Request con Filtros

GET /api/acicloud/products?filter[description][operator]=contains&filter[description][value]=Laptop&filter[active][operator]=equals&filter[active][value]=1

Respuesta de Éxito

{
  "current_page": 1,
  "data": [
    {
      "ProductID": "PROD001",
      "Description": "Producto de prueba estándar",
      "QtyOnHand": "50.00000",
      "Price1": "49.9900",
      "Price2": "45.9900",
      "ItemType": "physical",
      "Location": "Almacén Principal",
      "Weight": "1.5000",
      "SalesDescription": "Este es un producto de prueba para ventas",
      "PartNumber": "PN-10001",
      "TaxType": 10,
      "UnitMeasure": "Unidad",
      "IsActive": 1,
      "UPC_SKU": "SKU-001-ABC",
      "LastUnitCost": "19.9900"
    }
  ],
  "per_page": 10,
  "total": 500,
  "last_page": 50
}

Crear Producto

Endpoint: POST /api/acicloud/product
Request Class: ProductImpRequest
Controller: ACIcloudController::productsImp
Autenticación: Bearer Token requerido

Campos de Request

Campo Tipo Requerido Descripción Ejemplo
ProductID string Código único del producto "PROD001"
Description string Descripción del producto "Laptop Dell Inspiron 15"
Price1 decimal Precio de venta principal 1200.00
Price2 decimal Precio alternativo 2 1100.00
Price3 decimal Precio alternativo 3 1050.00
TaxType integer Tipo de impuesto 1
UnitMeasure string Unidad de medida "EA"
GL_Sales_Acct string Cuenta contable de ventas "4100"
Custom_field1 string Campo personalizado 1 "Categoría A"

Tipos de Impuesto Válidos

  • 1 - ITBMS 7%
  • 10 - ITBMS 10%
  • 15 - ITBMS 15%
  • 0 - Exento

Ejemplo de Request

{
  "ProductID": "PROD001",
  "Description": "Laptop Dell Inspiron 15",
  "Price1": 1200.00,
  "Price2": 1100.00,
  "Price3": 1050.00,
  "TaxType": 1,
  "UnitMeasure": "EA",
  "GL_Sales_Acct": "4100",
  "Custom_field1": "Electrónicos"
}

Respuesta de Éxito

{
  "success": true,
  "message": "Producto creado exitosamente",
  "data": {
    "ProductID": "PROD001",
    "Description": "Laptop Dell Inspiron 15",
    "sage_id": "SAGE_PROD_001",
    "created_at": "2025-08-16 10:30:00",
    "sync_status": "completed"
  }
}

Ajuste de Inventario

Endpoint: POST /api/acicloud/inventory_adjust
Controller: ACIcloudController::inventoryAdjust
Autenticación: Bearer Token requerido

Campos de Request

Campo Tipo Requerido Descripción Ejemplo
adjustment_number string Número de ajuste "ADJ-2025-001"
date string Fecha del ajuste (YYYY-MM-DD) "2025-08-16"
reason string Razón del ajuste "Physical count adjustment"
items array Lista de ajustes por producto []
items[].product_code string Código del producto "PROD001"
items[].adjustment_quantity decimal Cantidad de ajuste (+/-) -2.00

Ejemplo de Request

{
  "adjustment_number": "ADJ-2025-001",
  "date": "2025-08-16",
  "reason": "Ajuste por conteo físico",
  "items": [
    {
      "product_code": "PROD001",
      "current_quantity": 25.00,
      "physical_quantity": 23.00,
      "adjustment_quantity": -2.00,
      "reason": "Unidades dañadas encontradas"
    }
  ]
}

Códigos de Respuesta

Código Descripción
200 Consulta exitosa
201 Producto/Ajuste creado exitosamente
400 Datos de entrada inválidos
401 No autorizado
404 Producto no encontrado
409 Código de producto duplicado
422 Error de validación
500 Error interno del servidor

Ejemplos cURL

Obtener Lista de Productos

curl -X GET "https://api.docucenter.com/api/acicloud/products?page=1&per_page=25" \
  -H "Authorization: Bearer YOUR_TOKEN"

Crear Producto

curl -X POST "https://api.docucenter.com/api/acicloud/product" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ProductID": "PROD001",
    "Description": "Laptop Dell Inspiron 15",
    "Price1": 1200.00,
    "TaxType": 1,
    "UnitMeasure": "EA"
  }'

Ajustar Inventario

curl -X POST "https://api.docucenter.com/api/acicloud/inventory_adjust" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "adjustment_number": "ADJ-2025-001",
    "date": "2025-08-16",
    "reason": "Conteo físico",
    "items": [
      {
        "product_code": "PROD001",
        "adjustment_quantity": -2.00
      }
    ]
  }'

Notas Técnicas

  • Multi-tenant: Todos los endpoints respetan el contexto de organización
  • Sincronización: Productos y ajustes se sincronizan con Sage ACICloud
  • Validación: Validación estricta de códigos únicos y tipos
  • Inventario: Control de stock en tiempo real
  • Contabilidad: Integración con cuentas contables
  • Filtrado: Múltiples operadores disponibles (contains, equals, greater_than, etc.)

Gestión de Inventario

  • Stock Tracking: Seguimiento de stock actual, reservado y disponible
  • Niveles Mínimos/Máximos: Control de reorden automático
  • Ajustes: Sistema completo de ajustes de inventario
  • Costeo: Manejo de costos promedio y FIFO
  • Dimensiones: Información física para logística