73 lines
2.6 KiB
TypeScript
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,
|
|
},
|
|
];
|