@php $grupos = $grupos ?? []; $totalPendentes = count($pendentes ?? []); $gruposSemAcao = collect($grupos)->filter(fn ($g) => empty($g['opcoes']))->values(); $qtdSemAuto = $gruposSemAcao->sum('qtd'); $produtosFila = collect($pendentes ?? []) ->filter(fn ($p) => ($p['qtd_opcoes'] ?? 0) > 0) ->sortBy([ fn ($p) => ($p['status'] ?? '') === 'ambiguo' ? 0 : 1, fn ($p) => -1 * (float) ($p['valor_operacao'] ?? 0), fn ($p) => $p['rotulo_produto'] ?? $p['cod_item'], ]) ->values(); $qtdEscolha = $produtosFila->where('status', 'ambiguo')->count(); $qtdConfirmar = $produtosFila->where('status', 'sugerido')->count(); $gruposLote = collect($grupos) ->filter(fn ($g) => !empty($g['opcoes']) && ($g['qtd'] ?? 0) > 1) ->values(); $cstAtivo = preg_replace('/\D/', '', (string) request('cst', '')); if ($cstAtivo !== '') { $cstAtivo = str_pad($cstAtivo, 3, '0', STR_PAD_LEFT); } // Mantém o CST da URL após salvar; se o grupo já acabou, limpa a seleção. if ($cstAtivo !== '' && $gruposSemAcao->isNotEmpty()) { $cstExiste = $gruposSemAcao->contains(fn ($g) => (string) ($g['cst'] ?? '') === $cstAtivo); if (!$cstExiste) { $cstAtivo = ''; } } elseif ($cstAtivo !== '' && $gruposSemAcao->isEmpty()) { $cstAtivo = ''; } $fmtNcm = fn (?string $ncm) => ($d = preg_replace('/\D/', '', (string) $ncm)) && strlen($d) === 8 ? substr($d, 0, 4) . '.' . substr($d, 4, 2) . '.' . substr($d, 6, 2) : ($ncm ?: '—'); $statusLabel = fn (array $p) => match ($p['status'] ?? '') { 'ambiguo' => ['Escolher', 'warning', 'Várias opções — você decide'], 'sugerido' => ['Confirmar', 'success', 'Só 1 opção na tabela SVRS'], default => ['Classificar', 'secondary', 'Pendente'], }; @endphp @if($totalPendentes > 0 || count($definidos ?? []) > 0 || ($tabelaVazia ?? false)) @include('admin.simulacoes._etapa_guia', [ 'titulo' => 'Como funciona', 'intro' => 'O CST do SPED (ICMS) muitas vezes não existe na tabela SVRS da reforma. ' . 'Clique em um CST abaixo para ver os produtos e classifique buscando o cClassTrib na tabela oficial.', 'passos' => [ 'Clique no CST que quer analisar (090, 051, 040… — todos aparecem).', 'Abra o produto (ou use lote) e busque o cClassTrib pelo código ou nome.', 'Salvar vale para o cadastro do cliente — não altera o arquivo SPED.', ], ]) @if($qtdEscolha > 0)
Um produto por linha — classifique na ordem que preferir.
| # | Produto | Cód. | NCM | CST | Valor SPED | Situação | Ação |
|---|---|---|---|---|---|---|---|
| {{ $i + 1 }} | {{ $item['rotulo_produto'] ?? $item['descr_item'] ?? ('Código ' . $item['cod_item']) }} | {{ $item['cod_item'] }} | {{ $fmtNcm($item['ncm'] ?? null) }} | {{ $item['cst'] ? 'CST ' . $item['cst'] : '—' }} | @if(($item['valor_operacao'] ?? 0) > 0) R$ {{ number_format($item['valor_operacao'], 2, ',', '.') }} @else — @endif | {{ $sitTxt }} @if(($item['qtd_opcoes'] ?? 0) > 1) {{ $item['qtd_opcoes'] }} opções @endif | @if(($item['qtd_opcoes'] ?? 0) === 1) @else @endif |
Todos os produtos classificados.
Nenhum produto com opção automática na tabela SVRS.
Clique no CST para ver a lista. Clique de novo no ativo ou em Limpar para fechar. O CST do SPED é de ICMS — busque o cClassTrib na tabela SVRS se quiser ajustar; não é obrigatório para avançar.
Nenhum CST selecionado. Clique em um código acima para analisar os produtos.
| Produto | Cód. | NCM | Valor | Ação |
|---|---|---|---|---|
| {{ $item['rotulo_produto'] ?? $item['descr_item'] ?? '—' }} | {{ $item['cod_item'] }} | {{ $fmtNcm($item['ncm'] ?? null) }} | @if(($item['valor_operacao'] ?? 0) > 0) R$ {{ number_format($item['valor_operacao'], 2, ',', '.') }} @else — @endif |
| Produto | Cód. | CST | cClassTrib |
|---|---|---|---|
| {{ $item['rotulo_produto'] ?? $item['descr_item'] ?? '—' }} | {{ $item['cod_item'] }} | {{ $item['cst'] ?: '—' }} | {{ $item['c_class_trib'] ?? '—' }} |