API Proveedores - Sage ACICloud
Obtener Lista de Proveedores
Endpoint: GET /api/acicloud/vendors
Controller: ACIcloudController::vendors
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Características del Endpoint
- ✅ Filtrado Avanzado: Soporte para 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 | "name" |
order |
string | ❌ | Dirección del ordenamiento | "asc" o "desc" |
filter |
object | ❌ | Filtros aplicados (ver sección de filtros) | {} |
Sistema de Filtros Avanzados
Operadores Disponibles
equals- Igual anot_equals- No igual acontains- Contiene textostarts_with- Empieza conends_with- Termina congreater_than- Mayor queless_than- Menor quebetween- Entre dos valoresin- En lista de valoresnot_in- No en lista de valoresis_null- Es nulois_not_null- No es nulo
Ejemplo de Request
GET /api/acicloud/vendors?page=1&per_page=25&sort=name&order=asc
Ejemplo con Filtros
GET /api/acicloud/vendors?filter[name][operator]=contains&filter[name][value]=Distribuidora&filter[active][operator]=equals&filter[active][value]=1
Respuesta de Éxito
{
"current_page": 1,
"data": [
{
"ID_compania": 2,
"VendorID": "0001",
"Name": "vendor",
"Contact": "tony",
"Phone_Number1": "123-123",
"Email": "tony@gmail.com",
"AddressLine1": "123-321",
"AddressLine2": "098-456",
"City": "San Francisco",
"State": "CA",
"Zip": "123",
"Country": "PA",
"IsActive": "1",
"Custom_field1": "qwe",
"Custom_field2": null,
"Custom_field3": null,
"Custom_field4": null,
"Custom_field5": "dsa",
"ExpensesAccountId": null,
"VendorType": null
}
],
"first_page_url": "https://api.docucenter.com/api/acicloud/vendors?page=1",
"from": 1,
"last_page": 6,
"last_page_url": "https://api.docucenter.com/api/acicloud/vendors?page=6",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.docucenter.com/api/acicloud/vendors?page=1",
"label": "1",
"active": true
}
],
"next_page_url": "https://api.docucenter.com/api/acicloud/vendors?page=2",
"path": "https://api.docucenter.com/api/acicloud/vendors",
"per_page": 10,
"prev_page_url": null,
"to": 10,
"total": 150
}
Crear Proveedor
Endpoint: POST /api/acicloud/vendor
Request Class: VendorsImpRequest
Controller: ACIcloudController::vendorsImp
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Campos de Request
| Campo | Tipo | Requerido | Descripción | Validación | Ejemplo |
|---|---|---|---|---|---|
VendorID |
string | ✅ | ID único del proveedor | Único, máx. 20 chars | "VENDOR001" |
VendrName |
string | ✅ | Nombre del proveedor | Máx. 39 characters | "Distribuidora Nacional S.A." |
PhoneNumber |
string | ❌ | Teléfono del proveedor | Máx. 20 characters | "+507 6789-1234" |
Email |
string | ❌ | Email del proveedor | Email válido, único, máx. 64 | "compras@distribuidora.com" |
AddressLine1 |
string | ❌ | Dirección línea 1 | - | "Calle 50, Edificio Global Bank" |
AddressLine2 |
string | ❌ | Dirección línea 2 | - | "Piso 12, Oficina 1201" |
City |
string | ✅ | Ciudad | Requerido | "Ciudad de Panamá" |
State |
string | ✅ | Estado/Provincia | Requerido, máx. 2 chars | "PA" |
Zip |
string | ❌ | Código postal | Máx. 12 characters | "0833-01234" |
Country |
string | ✅ | País | Requerido | "Panamá" |
RUC |
string | ❌ | RUC del proveedor | Alfanumérico, máx. 40 | "87654321-1-123456" |
DV |
string | ❌ | Dígito verificador | Alfanumérico, máx. 40 | "56" |
VendorType |
string | ✅ | Tipo de proveedor | Requerido, alfanumérico, máx. 40 | "Regular" |
TaxpayerType |
string | ✅ | Tipo de contribuyente | Requerido, alfanumérico, máx. 40 | "Contributor" |
Custom_field5 |
string | ✅ | Campo personalizado 5 | Requerido, alfanumérico, máx. 40 | "Activo" |
Reglas de Validación Detalladas
VendorID
- Requerido: Sí
- Tipo: String
- Máximo: 20 caracteres
- Único: Debe ser único en la base de datos
- Ejemplo válido:
"VENDOR001","PROV-2025-001"
VendrName
- Requerido: Sí
- Tipo: String
- Máximo: 39 caracteres
- Ejemplo válido:
"Distribuidora Nacional S.A."
- Requerido: No
- Tipo: String con formato email
- Máximo: 64 caracteres
- Único: Debe ser único en la tabla VendorsImp
- Ejemplo válido:
"compras@distribuidora.com"
RUC y DV
- Patrón:
/^[a-zA-Z0-9_-]*$/ - Descripción: Solo letras, números, guiones y guiones bajos
- Ejemplo válido RUC:
"87654321-1-123456" - Ejemplo válido DV:
"56"
Ejemplo de Request Completo
```json
{
"VendorID": "VEN12345",
"VendrName": "Vendor Example",
"PhoneNumber": "1234567890",
"Email": "vendor@example.com",
"AddressLine1": "123 Main St",
"AddressLine2": "Suite 200",
"City": "Sample City",
"State": "CA",
"Zip": "12345",
"Country": "US",
"RUC": "RUC12345678",
"DV": "DV1234",
"VendorType": "Type123",
"TaxpayerType": "Tax123",
"Custom_field5": "CustomValue5"
}
Respuesta de Éxito
{
"VendorID": "VEN12345",
"VendrName": "Vendor Example",
"Telephone1": "1234567890",
"Email": "vendor@example.com",
"AddressLine1": "123 Main St",
"AddressLine2": "Suite 200",
"City": "Sample City",
"State": "CA",
"Zip": "12345",
"Country": "US",
"Custom_field1": "RUC12345678",
"Custom_field2": "DV1234",
"Custom_field3": "Type123",
"Custom_field4": "Tax123"
}
Ejemplo de Request Mínimo
{
"VendorID": "VENDOR002",
"VendrName": "Proveedor Básico",
"City": "Panamá",
"State": "PA",
"Country": "Panamá",
"VendorType": "Basic",
"TaxpayerType": "Regular",
"Custom_field5": "Nuevo"
}
Respuesta de Éxito
{
"ID": 1,
"ID_compania": 1,
"VendorID": "VENDOR001",
"VendrName": "Distribuidora Nacional S.A.",
"Contact": null,
"Telephone1": "+507 6789-1234",
"Email": "compras@distribuidora.com",
"AddressLine1": "Calle 50, Edificio Global Bank",
"AddressLine2": "Piso 12, Oficina 1201",
"City": "Ciudad de Panamá",
"State": "PA",
"Zip": "0833-01234",
"Country": "Panamá",
"IsActive": null,
"Custom_field1": "87654321-1-123456",
"Custom_field2": "56",
"Custom_field3": "Regular",
"Custom_field4": "Contributor",
"Custom_field5": "Activo",
"Export_date": null,
"Enviado": 0,
"Error": 0,
"ErrorPT": null,
"ExpensesAccount": null,
"created_at": "2025-01-29T21:30:00.000000Z",
"updated_at": "2025-01-29T21:30:00.000000Z"
}
Respuestas de Error
Error de Validación
{
"message": "The given data was invalid.",
"errors": {
"VendorID": [
"The VendorID has already been taken."
],
"VendrName": [
"The VendrName field is required."
],
"Email": [
"The Email has already been taken.",
"The Email must be a valid email address."
]
}
}
Error de Duplicado
{
"message": "The given data was invalid.",
"errors": {
"VendorID": [
"The VendorID has already been taken."
]
}
}
Obtener Proveedores Importados
Endpoint: GET /api/acicloud/vendors_imp
Controller: ACIcloudController::getVendorsImp
Autenticación: Bearer Token requerido
Middleware: check.activate.organization
Descripción
Obtiene la lista de proveedores que han sido importados/creados a través de la API.
Respuesta de Éxito
{
"success": true,
"data": [
{
"id": 1,
"vendor_id": "VENDOR001",
"name": "Distribuidora Nacional S.A.",
"sage_id": "SAGE_VEN_001",
"import_status": "completed",
"created_at": "2025-01-29 21:30:00",
"updated_at": "2025-01-29 21:30:00",
"errors": null
},
{
"id": 2,
"vendor_id": "VENDOR002",
"name": "Proveedora del Este",
"sage_id": "SAGE_VEN_002",
"import_status": "pending",
"created_at": "2025-01-29 21:25:00",
"updated_at": "2025-01-29 21:25:00",
"errors": null
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total": 45,
"total_pages": 2
}
}
Códigos de Respuesta HTTP
| Código | Descripción |
|---|---|
| 200 | Consulta exitosa |
| 201 | Proveedor creado exitosamente |
| 400 | Datos de entrada inválidos |
| 401 | No autorizado |
| 409 | Proveedor duplicado |
| 422 | Error de validación |
| 500 | Error interno del servidor |
Ejemplos de cURL
Obtener Lista de Proveedores
curl -X GET "https://api.docucenter.com/api/acicloud/vendors?page=1&per_page=25" \
-H "Authorization: Bearer YOUR_TOKEN"
Crear Proveedor
curl -X POST "https://api.docucenter.com/api/acicloud/vendor" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "VENDOR001",
"name": "Distribuidora Nacional S.A.",
"email": "compras@distribuidora.com",
"credit_limit": 50000.00
}'
Obtener Proveedores Importados
curl -X GET "https://api.docucenter.com/api/acicloud/vendors_imp" \
-H "Authorization: Bearer YOUR_TOKEN"
Notas Técnicas
- Multi-tenant: Todos los endpoints respetan el contexto de organización
- Sincronización: Los proveedores se sincronizan automáticamente con Sage
- Validación RUC: Implementa validación específica para RUC panameño
- Monedas: Soporte para USD y PAB
- Estados: Los proveedores pueden estar activos o inactivos
- Límites de Crédito: Control de límites de crédito por proveedor
Integración con Sage ACICloud
Los proveedores creados a través de la API se sincronizan automáticamente con Sage ACICloud, creando registros correspondientes en el sistema ERP.