Keirost permite definir reglas de automatizacion que se ejecutan automaticamente cuando se cumplen ciertas condiciones. Por ejemplo: enviar un email cuando se crea una factura, bloquear un documento a cierta hora, o generar un informe cada mes.
Modelo de automatizacion
interface Automation {
id:string;
name:string;
description?:string;
trigger:AutomationTrigger;
conditions:AutomationCondition[];
actions:AutomationAction[];
status:'active'|'paused'|'disabled';
execution_count:number;
last_executed_at?:string;
created_by:string;
created_at:string;
}
Triggers
Los triggers definen cuando se ejecuta la automatizacion.
Tipos de trigger
Trigger
Descripcion
Eventos disponibles
document.created
Al crear un documento
Facturas, pedidos, albaranes
document.updated
Al actualizar un documento
Cambio de estado, importe, partner
document.status_changed
Cambio de estado
pending → sent, sent → locked
document.sent
Al enviar documento por email
document.paid
Al registrar pago de un documento
payment.received
Al registrar un cobro
schedule.cron
Ejecucion programable (cron)
Diaria, semanal, mensual
plugin.hook
Hook de plugin registrado
Segun plugin
system.startup
Al iniciar el servidor
Ejemplo de trigger
{
"type": "document.status_changed",
"document_type": "sales_invoice",
"from_status": "draft",
"to_status": "sent"
}
Condiciones
Las condiciones filtran cuando se ejecuta la accion (opcional).
Operadores disponibles
Operador
Descripcion
equals
Campo igual a valor
not_equals
Campo diferente
contains
Campo contiene texto
greater_than
Campo mayor que valor
less_than
Campo menor que valor
is_empty
Campo vacio
in
Campo dentro de lista de valores
Ejemplo de condiciones
[
{
"field": "partner.tax_id",
"operator": "is_empty",
"value": null
},
{
"field": "total",
"operator": "greater_than",
"value": 10000
}
]
Acciones
Las acciones son lo que ocurre cuando se cumplen el trigger y las condiciones.
Accion
Descripcion
email.send
Enviar email
document.lock
Bloquear documento
document.cancel
Anular documento
document.update_field
Actualizar un campo
notification.create
Crear notificacion in-app
webhook.call
Llamar a un webhook externo
report.generate
Generar y enviar informe
payment.reconcile
Conciliar automaticamente
plugin.execute
Ejecutar funcion de plugin
http.request
Hacer peticion HTTP
Ejemplo de accion email
{
"type": "email.send",
"to": "{{document.partner.email}}",
"subject": "Su factura {{document.number}} ha sido enviada",
"body_html": "<p>Estimado {{document.partner.name}}, adjuntamos su factura.</p>",