arcadiasuite/server/soe/rule-engine/business-rules.ts

73 lines
2.6 KiB
TypeScript

// SOE — Regras de Negócio Padrão
import type { SoeRule } from "./types";
export const BUSINESS_RULES_PADRAO: SoeRule[] = [
// ── Aprovação de pedidos ───────────────────────────────────────────────────
{
id: "PEDIDO_APROVACAO_AUTO_BAIXO_VALOR",
dominio: "business",
trigger: "pre_sales_order_confirm",
nome: "Aprovação automática para pedidos de baixo valor",
condicao: { "totalAmount": { "_lt": 5000 } },
acao: { set: { "_aprovacaoAutomatica": true, "status": "confirmed" } },
prioridade: 10,
ativo: false, // tenant habilita com seu limite
origemPadrao: true,
},
// ── Estoque ────────────────────────────────────────────────────────────────
{
id: "RESERVA_ESTOQUE_AO_CONFIRMAR",
dominio: "business",
trigger: "post_sales_order_confirm",
nome: "Reserva estoque ao confirmar pedido",
condicao: { "status": "confirmed" },
acao: { set: { "_reservarEstoque": true } },
prioridade: 10,
ativo: true,
origemPadrao: true,
},
// ── Financeiro ─────────────────────────────────────────────────────────────
{
id: "CRIAR_CONTA_RECEBER_AO_FATURAR",
dominio: "business",
trigger: "post_nfe_emitida",
nome: "Cria conta a receber automaticamente ao faturar",
condicao: { "_tipoOperacao": "venda" },
acao: { set: { "_criarContaReceber": true } },
prioridade: 5,
ativo: true,
origemPadrao: true,
},
{
id: "CRIAR_CONTA_PAGAR_AO_RECEBER_COMPRA",
dominio: "business",
trigger: "post_purchase_received",
nome: "Cria conta a pagar ao receber mercadoria",
condicao: {},
acao: { set: { "_criarContaPagar": true } },
prioridade: 5,
ativo: true,
origemPadrao: true,
},
// ── Alertas ────────────────────────────────────────────────────────────────
{
id: "ALERTA_ESTOQUE_MINIMO",
dominio: "business",
trigger: "post_sales_order_confirm",
nome: "Alerta quando estoque cai abaixo do mínimo",
condicao: { "_estoqueAbaixoMinimo": true },
acao: { set: { "_enviarAlertaEstoque": true } },
prioridade: 15,
ativo: true,
origemPadrao: true,
},
];