Código
function preencherCampaignValues(unified_lead, campaign_values, campaign) {
// Campos obrigatórios que devem estar presentes
const camposObrigatorios = [
'opportunity_type',
'installments_quantity',
'released_value',
'installment_value'
];
// Verificar se todos os campos obrigatórios estão presentes
for (const campo of camposObrigatorios) {
if (!(campo in campaign_values)) {
throw new Error(`Campo obrigatório '${campo}' não encontrado em campaign_values`);
}
}
// Verificar se o unified_lead é válido
if (!unified_lead) {
throw new Error('Unified lead inválido');
}
// Inicializar o objeto opportunities se não existir
if (!unified_lead.opportunities) {
unified_lead.opportunities = {};
}
// Determinar o tipo de oportunidade baseado no opportunity_type
let tipoOportunidade = null;
switch (campaign_values.opportunity_type) {
case 'credito_novo':
tipoOportunidade = 'credito_novo';
break;
case 'saque_beneficio':
tipoOportunidade = 'saque_beneficio';
break;
case 'cartao_consignado':
tipoOportunidade = 'cartao_consignado';
break;
case 'saque_fgts':
tipoOportunidade = 'saque_fgts';
break;
case 'reducao_parcela':
tipoOportunidade = 'reducao_parcela';
break;
case 'troco_maximo':
tipoOportunidade = 'troco_maximo';
break;
default:
// Se não encontrar um tipo específico, criar um novo array
tipoOportunidade = campaign_values.opportunity_type;
break;
}
// Inicializar o array de oportunidades se não existir
if (!unified_lead.opportunities[tipoOportunidade]) {
unified_lead.opportunities[tipoOportunidade] = [];
}
// Definir a campanha no objeto opportunities
unified_lead.opportunities.campaign = campaign;
// Criar nova oportunidade com os dados da campanha
const novaOportunidade = {
released_value: parseFloat(campaign_values.released_value),
installment_value: parseFloat(campaign_values.installment_value),
target_bank: campaign_values.target_bank,
installments: parseInt(campaign_values.installments_quantity),
commission: parseInt(campaign_values.commission),
};
// Adicionar a nova oportunidade na primeira posição do array
unified_lead.opportunities[tipoOportunidade].unshift(novaOportunidade);
// Atualizar o timestamp de modificação
unified_lead.updated_at = new Date().toISOString();
return unified_lead;
}
// Função principal para uso no n8n
try {
// Extrair os dados de entrada do $json
const unified_lead = $json.unified_lead;
const campaign_values = $json.campaign_values;
const campaign = $('set initial data').first().json.campaign;
// Processar os dados
const resultado = preencherCampaignValues(unified_lead, campaign_values, campaign);
$json.unified_lead = resultado;
return $json;
} catch (error) {
return {
success: false,
error: error.message,
data: null
};
}Saídas
unified_lead: UnifiedLead enriquecido com opportunities da campanha- Array
opportunities[tipo]contendo a nova oportunidade - Campo
opportunities.campaigncom nome da campanha updated_atatualizado
- Array
Descrição adicional
Enriquece o UnifiedLead adicionando os dados da oportunidade específica desta campanha no campo opportunities.
Funcionalidades:
- Valida campos obrigatórios
- Cria estrutura de opportunities se não existir
- Adiciona oportunidade no início do array (unshift)
- Converte valores para tipos corretos (float, int)
- Define timestamp de atualização
Relações
← Recebe de: 21-flow-variable---set-unified-lead → Envia para: 23-execute-workflow---modelar-dados-criar-negocio
Observações
- Usa unshift() para priorizar oportunidade mais recente
- Validação robusta de campos obrigatórios
- Switch case para mapear tipos de oportunidade