$stages */ /** @var array $brokers */ /** @var array $employees */ /** @var int|null $selectedBroker */ /** @var int|null $selectedEmployee */ /** @var string|null $lastSyncedAt */ /** @var array|null $user */ /** @var array $filters */ /** @var array>> $filterOptions */ $brokers = $brokers ?? []; $employees = $employees ?? []; $selectedBroker = $selectedBroker ?? null; $selectedEmployee = $selectedEmployee ?? null; $filters = $filters ?? []; $filterOptions = $filterOptions ?? ['products' => [], 'banks' => [], 'sub_products' => []]; $user = $user ?? null; $totalLeads = array_sum(array_map(static fn (array $stage): int => (int) $stage['count'], $stages)); $occupiedStages = count(array_filter($stages, static fn (array $stage): bool => (int) $stage['count'] > 0)); $selectedProduct = isset($filters['product_type']) ? (string) $filters['product_type'] : null; $selectedBank = isset($filters['bank_id']) ? (string) $filters['bank_id'] : null; $selectedSubProduct = isset($filters['sub_product_id']) ? (int) $filters['sub_product_id'] : null; $dateFrom = $filters['date_from'] ?? null; $dateTo = $filters['date_to'] ?? null; if ($selectedProduct === '') { $selectedProduct = null; } if ($selectedBank === '') { $selectedBank = null; } if ($selectedSubProduct !== null && $selectedSubProduct <= 0) { $selectedSubProduct = null; } $role = $user['role'] ?? null; $canFilterBroker = $role === User::ROLE_ADMIN; $canFilterEmployee = in_array($role, [User::ROLE_ADMIN, User::ROLE_BROKER], true); $icons = [ 'journey_started' => '🚀', 'data_submitted' => '📝', 'documentation' => '📄', 'submitted_to_bank' => '💳', 'approved' => '✅', 'funding_pending' => '💰', 'paid' => '🎉', ]; $now = new DateTimeImmutable(); $lastSyncText = 'Nunca sincronizado'; if (!empty($lastSyncedAt)) { try { $syncDate = new DateTimeImmutable($lastSyncedAt); $diff = $now->diff($syncDate); if ($diff->days > 0) { $lastSyncText = 'ha ' . $diff->days . ' dia' . ($diff->days === 1 ? '' : 's'); } elseif ($diff->h > 0) { $lastSyncText = 'ha ' . $diff->h . ' hora' . ($diff->h === 1 ? '' : 's'); } elseif ($diff->i > 0) { $lastSyncText = 'ha ' . $diff->i . ' minuto' . ($diff->i === 1 ? '' : 's'); } else { $lastSyncText = 'agora mesmo'; } } catch (Exception) { $lastSyncText = 'sincronizacao recente'; } } $filterParams = []; if ($selectedBroker) { $filterParams['broker_id'] = $selectedBroker; } if ($selectedEmployee) { $filterParams['employee_id'] = $selectedEmployee; } $filterParams = array_filter(array_merge($filterParams, [ 'product_type' => $selectedProduct, 'sub_product_id' => $selectedSubProduct, 'bank_id' => $selectedBank, 'date_from' => $dateFrom, 'date_to' => $dateTo, ]), static fn ($value) => $value !== null && $value !== ''); $querySuffix = $filterParams ? '?' . http_build_query($filterParams) : ''; $role = $user['role'] ?? null; ?>

Funil INSS - Finanto

Visao consolidada das propostas consignado INSS processadas via Finanto.

Leads ativos
Etapas ocupadas
Atualizado
Nenhuma proposta sincronizada ainda. Assim que a Finanto atualizar os status, o funil sera preenchido automaticamente.
ver detalhes