API Compras - Sage ACICloud
Obtener Lista de Compras
Endpoint: GET /api/acicloud/purchases
Controller: ACIcloudController::purchases
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 | "date" |
order |
string | ❌ | Dirección del ordenamiento | "desc" |
filter |
object | ❌ | Filtros aplicados | {} |
Respuesta de Éxito
{
"data": [
{
"ID_compania": 1,
"PurchaseID": "PUR001",
"PurchaseNumber": "PO-2025-001",
"VendorID": "VENDOR001",
"VendorName": "Distribuidora Nacional S.A.",
"Date": "2025-01-29",
"AccountID": "5100",
"CustomerSO": null,
"Total": 1605.00,
"ApplyToPurchaseOrder": "Y",
"ApplyToPurOrderNumber": "PO-2025-001",
"Detalles": [
{
"ID": 1,
"TransactionID": "PUR001",
"ID_compania": 1,
"Item_id": "PROD001",
"Description": "Laptop Dell Inspiron 15",
"GL_Acct": "5100",
"Quantity": 10.00,
"Unit_Price": 150.00,
"Net_line": 1500.00,
"JobId": null,
"JobPhaseID": null,
"JobCostCodeID": null
}
]
}
],
"links": {
"first": "https://api.docucenter.com/api/acicloud/purchases?page=1",
"last": "https://api.docucenter.com/api/acicloud/purchases?page=4",
"prev": null,
"next": "https://api.docucenter.com/api/acicloud/purchases?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 4,
"path": "https://api.docucenter.com/api/acicloud/purchases",
"per_page": 10,
"to": 10,
"total": 85
}
}
Crear Compra
Endpoint: POST /api/acicloud/purchase
Request Class: PurchaseImpRequest
Controller: ACIcloudController::purchaseImp
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Campos de Request
| Campo | Tipo | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
purchase_order_number |
string | ✅ | Número de orden de compra | "PO-2025-001" |
vendor_id |
string | ✅ | ID del proveedor | "VENDOR001" |
date |
string | ✅ | Fecha de la compra (YYYY-MM-DD) | "2025-01-29" |
due_date |
string | ❌ | Fecha de vencimiento | "2025-02-28" |
currency |
string | ❌ | Moneda (USD, PAB) | "USD" |
reference |
string | ❌ | Referencia adicional | "REF-001" |
notes |
string | ❌ | Notas adicionales | "Compra urgente" |
items |
array | ✅ | Lista de productos/servicios | [] |
items[].item_code |
string | ✅ | Código del producto | "PROD001" |
items[].description |
string | ✅ | Descripción del item | "Producto Ejemplo" |
items[].quantity |
decimal | ✅ | Cantidad | 10.00 |
items[].unit_price |
decimal | ✅ | Precio unitario | 150.00 |
items[].tax_rate |
decimal | ❌ | Tasa de impuesto (0.07 = 7%) | 0.07 |
items[].account_code |
string | ❌ | Código de cuenta contable | "5100" |
Validaciones
- purchase_order_number: Único, máximo 50 caracteres
- vendor_id: Debe existir en el sistema
- date: Formato YYYY-MM-DD
- currency: Solo "USD" o "PAB"
- items: Mínimo 1 item requerido
- quantity: Valor positivo
- unit_price: Valor positivo
Ejemplo de Request
{
"purchase_order_number": "PO-2025-001",
"vendor_id": "VENDOR001",
"date": "2025-01-29",
"due_date": "2025-02-28",
"currency": "USD",
"reference": "REF-001",
"notes": "Compra de productos para inventario",
"items": [
{
"item_code": "PROD001",
"description": "Producto Ejemplo A",
"quantity": 10.00,
"unit_price": 150.00,
"tax_rate": 0.07,
"account_code": "5100"
},
{
"item_code": "PROD002",
"description": "Producto Ejemplo B",
"quantity": 5.00,
"unit_price": 200.00,
"tax_rate": 0.07,
"account_code": "5100"
}
]
}
Respuesta de Éxito
{
"success": true,
"message": "Compra creada exitosamente",
"data": {
"purchase_order_number": "PO-2025-001",
"sage_id": "SAGE_PO_001",
"subtotal": 2500.00,
"tax_amount": 175.00,
"total_amount": 2675.00,
"status": "pending",
"created_at": "2025-01-29 21:30:00",
"sync_status": "completed"
}
}
Obtener Compras Importadas
Endpoint: GET /api/acicloud/purchases_imp
Controller: ACIcloudController::getPurchasesImp
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Descripción
Obtiene la lista de compras que han sido importadas/creadas a través de la API.
Respuesta de Éxito
{
"current_page": 1,
"data": [
{
"TransactionID": "PUR_IMP_001",
"ID_compania": 1,
"PurchaseNumber": "PO-2025-001",
"VendorID": "VENDOR001",
"VendorName": "Distribuidora Nacional S.A.",
"AP_Account": "2100",
"Date": "2025-01-29 00:00:00",
"Subtotal": "2500.00",
"Net_due": "2675.00",
"ApplyToPO": "Y",
"DueDate": "2025-02-28 00:00:00",
"Export_date": "2025-01-29 21:30:00",
"Enviado": 1,
"Error": 0,
"ErrorPT": null,
"Batch": "BATCH001",
"Expire": null,
"Hs_Code": null,
"Weight": null,
"Palet": null,
"Package": null,
"created_at": "2025-01-29T21:30:00.000000Z",
"updated_at": "2025-01-29T21:30:00.000000Z"
}
],
"from": 1,
"to": 1,
"total": 1,
"per_page": 10,
"current_page": 1,
"last_page": 1,
"first_page_url": "https://api.docucenter.com/api/acicloud/purchases_imp?page=1",
"last_page_url": "https://api.docucenter.com/api/acicloud/purchases_imp?page=1",
"next_page_url": null,
"prev_page_url": null,
"path": "https://api.docucenter.com/api/acicloud/purchases_imp"
}
Obtener Órdenes de Compra
Endpoint: GET /api/acicloud/purchase_order
Controller: ACIcloudController::getPurchaseOrder
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Descripción
Obtiene las órdenes de compra del sistema Sage ACICloud.
Parámetros de Query (Opcionales)
| Parámetro | Tipo | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
status |
string | ❌ | Filtrar por estado | "pending" |
vendor_id |
string | ❌ | Filtrar por proveedor | "VENDOR001" |
date_from |
string | ❌ | Fecha desde (YYYY-MM-DD) | "2025-01-01" |
date_to |
string | ❌ | Fecha hasta (YYYY-MM-DD) | "2025-01-31" |
Estados Posibles
pending- Pendienteapproved- Aprobadapartially_received- Parcialmente recibidacompleted- Completadacancelled- Cancelada
Respuesta de Éxito
{
"data": [
{
"ID": 1,
"ID_compa": 1,
"TransactionID": "PO001",
"PurchaseOrderNumber": "PO-2025-001",
"VendorID": "VENDOR001",
"VendorName": "Distribuidora Nacional S.A.",
"Date": "2025-01-29",
"Close_PO": "N",
"Total": 2675.00,
"TaxID": "TAX001",
"GoodThruDate": "2025-02-28",
"Detalles": [
{
"ID": 1,
"TransactionID": "PO001",
"ID_compania": 1,
"Item_id": "PROD001",
"Description": "Laptop Dell Inspiron 15",
"Quantity": 10.00,
"Unit_Price": 150.00,
"Net_line": 1500.00,
"TaxType": 1
},
{
"ID": 2,
"TransactionID": "PO001",
"ID_compania": 1,
"Item_id": "PROD002",
"Description": "Mouse Inalámbrico",
"Quantity": 5.00,
"Unit_Price": 200.00,
"Net_line": 1000.00,
"TaxType": 1
}
]
}
],
"links": {
"first": "https://api.docucenter.com/api/acicloud/purchase_order?page=1",
"last": "https://api.docucenter.com/api/acicloud/purchase_order?page=2",
"prev": null,
"next": "https://api.docucenter.com/api/acicloud/purchase_order?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://api.docucenter.com/api/acicloud/purchase_order",
"per_page": 10,
"to": 10,
"total": 15
}
}
Códigos de Respuesta HTTP
| Código | Descripción |
|---|---|
| 200 | Consulta exitosa |
| 201 | Compra creada exitosamente |
| 400 | Datos de entrada inválidos |
| 401 | No autorizado |
| 404 | Proveedor no encontrado |
| 409 | Número de orden duplicado |
| 422 | Error de validación |
| 500 | Error interno del servidor |
Ejemplos de cURL
Obtener Lista de Compras
curl -X GET "https://api.docucenter.com/api/acicloud/purchases?page=1&per_page=25" \
-H "Authorization: Bearer YOUR_TOKEN"
Crear Compra
curl -X POST "https://api.docucenter.com/api/acicloud/purchase" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"purchase_order_number": "PO-2025-001",
"vendor_id": "VENDOR001",
"date": "2025-01-29",
"items": [
{
"item_code": "PROD001",
"description": "Producto Ejemplo",
"quantity": 10.00,
"unit_price": 150.00,
"tax_rate": 0.07
}
]
}'
Obtener Órdenes de Compra
curl -X GET "https://api.docucenter.com/api/acicloud/purchase_order?status=pending" \
-H "Authorization: Bearer YOUR_TOKEN"
Obtener Compras Importadas
curl -X GET "https://api.docucenter.com/api/acicloud/purchases_imp" \
-H "Authorization: Bearer YOUR_TOKEN"
Notas Técnicas
- Multi-tenant: Todos los endpoints respetan el contexto de organización
- Sincronización: Las compras se sincronizan automáticamente con Sage
- Validación: Validación estricta de proveedores y productos
- Monedas: Soporte para USD y PAB
- Estados: Control de estados del flujo de compras
- Contabilidad: Integración con cuentas contables
Flujo de Compras
- Creación: Crear orden de compra con items
- Aprobación: Proceso de aprobación interno
- Envío al Proveedor: Notificación al proveedor
- Recepción: Marcar items como recibidos
- Facturación: Asociar con facturas del proveedor
- Pago: Procesamiento de pagos
Integración con Sage ACICloud
Las compras creadas se sincronizan automáticamente con Sage ACICloud, creando las transacciones correspondientes en el sistema ERP.