@php $dc = $relatorio['debito_credito'] ?? ['debito_valor'=>0,'debito_linhas'=>0,'credito_valor'=>0,'credito_linhas'=>0]; $dcSemanal = $relatorio['debito_credito_semanal'] ?? []; $porCfop = $relatorio['por_cfop'] ?? collect(); $porNatOper = $relatorio['por_nat_oper'] ?? collect(); $chartCfop = $porCfop->map(fn($c) => ['label' => $c->cfop, 'valor' => (float)($c->soma_valor_item ?? 0)])->values(); $filtroAtivo = !empty($filtro_card_tipo) && (string)$filtro_card_valor !== ''; $tituloFiltro = ''; if ($filtroAtivo) { if ($filtro_card_tipo === 'receita') { $card = collect($receitasCards ?? [])->firstWhere('key', $filtro_card_valor); $tituloFiltro = $card['label'] ?? $filtro_card_valor; } elseif ($filtro_card_tipo === 'credito') { $card = collect($creditosCards ?? [])->firstWhere('key', $filtro_card_valor); $tituloFiltro = $card['label'] ?? $filtro_card_valor; } else { $tituloFiltro = ($filtro_card_tipo === 'cfop' ? 'CFOP ' : ($filtro_card_tipo === 'nat_oper' ? 'Natureza ' : ($filtro_card_tipo === 'aba' ? 'Aba ' : ''))) . $filtro_card_valor; } } $somaReceitasCards = collect($receitasCards ?? [])->sum('valor'); $somaCreditosCards = collect($creditosCards ?? [])->sum('valor'); @endphp
{{-- Função global para fechar o modal (compatível com Livewire 2 e 3) --}} {{-- Dados para os gráficos em divs (Livewire atualiza o conteúdo ao filtrar; script lê e redesenha) --}} {{-- 1) BARRA DE FILTROS (antes de tudo) --}}
Filtros
{{-- 2) Cabeçalho do import + ações --}}
Status: {{ $import->status }}
Arquivo: {{ $import->arquivo_nome }}
Recebido em: {{ optional($import->recebido_em)->format('d/m/Y H:i') }} Exportar Excel
{{-- 3) Indicadores --}}
Indicadores
Período
{{ $import->periodo }}
Valor total itens
R$ {{ number_format($totais->soma_valor_item ?? 0, 2, ',', '.') }}
Tributos (soma)
R$ {{ number_format(($totais->soma_pis ?? 0) + ($totais->soma_cofins ?? 0) + ($totais->soma_icms ?? 0) + ($totais->soma_ipi ?? 0), 2, ',', '.') }}
PIS + COFINS + ICMS + IPI
Clientes/Fornecedores
{{ $participantes->count() }}
No Simples/MEI
{{ $participantes->whereIn('regimetributario', ['Simples Nacional', 'MEI'])->count() }}
de {{ $participantes->count() }} com regime consultado
{{-- 3b) Tributos (cada um separado) --}}
Tributos
PIS
R$ {{ number_format($totais->soma_pis ?? 0, 2, ',', '.') }}
COFINS
R$ {{ number_format($totais->soma_cofins ?? 0, 2, ',', '.') }}
ICMS
R$ {{ number_format($totais->soma_icms ?? 0, 2, ',', '.') }}
IPI
R$ {{ number_format($totais->soma_ipi ?? 0, 2, ',', '.') }}
{{-- 4) Débito e Crédito (cards + gráfico linha) --}}
Débito e Crédito

Débito = saídas (vendas/clientes). Crédito = entradas (compras/fornecedores). Regime C = saída, D/F = entrada. Os dois primeiros cards são totais do SPED (todas as linhas por ind_oper).

Débito (Saídas) — SPED
R$ {{ number_format($dc['debito_valor'] ?? 0, 2, ',', '.') }}
{{ number_format($dc['debito_linhas'] ?? 0, 0, ',', '.') }} linhas
Crédito (Entradas) — SPED
R$ {{ number_format($dc['credito_valor'] ?? 0, 2, ',', '.') }}
{{ number_format($dc['credito_linhas'] ?? 0, 0, ',', '.') }} linhas
Saldo (Débito − Crédito)
R$ {{ number_format(($dc['debito_valor'] ?? 0) - ($dc['credito_valor'] ?? 0), 2, ',', '.') }}
@if($simulacao && (count($receitasCards ?? []) > 0 || count($creditosCards ?? []) > 0))
Conferência simulação:
Soma Receitas (cards) = R$ {{ number_format($somaReceitasCards, 2, ',', '.') }} @if($somaReceitasCards != ($dc['debito_valor'] ?? 0))(dif. Débito SPED: R$ {{ number_format($somaReceitasCards - ($dc['debito_valor'] ?? 0), 2, ',', '.') }})@endif
Soma Créditos (cards) = R$ {{ number_format($somaCreditosCards, 2, ',', '.') }} @if($somaCreditosCards != ($dc['credito_valor'] ?? 0))(dif. Crédito SPED: R$ {{ number_format($somaCreditosCards - ($dc['credito_valor'] ?? 0), 2, ',', '.') }})@endif

Os cards abaixo são da simulação (podem ter sido editados). A diferença pode vir de edição manual, arredondamento ou lançamentos do SPED que não se enquadram nas categorias da simulação.

@endif
{{-- Gráfico linha (8) + Pizza CFOP (4). wire:ignore evita o Livewire substituir os canvas ao filtrar --}}
Débito e Crédito por semana
Pizza por CFOP (valor)
{{-- 5) Cards de Receitas e Custos/Créditos (da simulação) — clique para ver lançamentos --}} @if($simulacao && (count($receitasCards ?? []) > 0 || count($creditosCards ?? []) > 0))
Receitas e Custos (da simulação)

Valores da tela de Receitas e Custos. Clique em um card para ver os lançamentos do SPED que compõem aquele total.

Tributos (PIS, COFINS, ICMS, IPI): o total está no indicador «Tributos (soma)» na seção Indicadores no topo — não entram nos cards de Receitas/Custos (estes são bases/valores das operações).

@if(!empty($receitasCards))
Receitas (valores em verde = receita/entrada)
@foreach($receitasCards as $card)
{{ $card['label'] }}
R$ {{ number_format($card['valor'] ?? 0, 2, ',', '.') }}
@endforeach @endif @if(!empty($creditosCards))
Custos / Créditos (valores em cinza = créditos fiscais/custos)
@foreach($creditosCards as $card)
{{ $card['label'] }}
R$ {{ number_format($card['valor'] ?? 0, 2, ',', '.') }}
@endforeach @endif
@endif {{-- Modal de lançamentos ao clicar em um card --}} @if($filtroAtivo) @php // Mesma regra de valor do SpedToSimulacaoService (valor_mercadorias e bases se valor principal for 0) $valorParaItem = function($item) { $v = (float)($item->valor_item ?? $item->valor_total ?? $item->vl_total_prod ?? $item->valor_mercadorias ?? 0); if ($v <= 0) { $v = (float)(($item->base_icms ?? 0) + ($item->base_pis ?? 0) + ($item->base_cofins ?? 0)); } return $v; }; $totalValor = $lancamentosFiltrados->sum($valorParaItem); $totalPis = $lancamentosFiltrados->sum(fn($item) => (float)($item->valor_pis ?? 0)); $totalCofins = $lancamentosFiltrados->sum(fn($item) => (float)($item->valor_cofins ?? 0)); $totalIcms = $lancamentosFiltrados->sum(fn($item) => (float)($item->valor_icms ?? 0)); @endphp @endif {{-- 6) Participantes: Clientes e Fornecedores separados --}} @php $participantesClientes = $participantes->where('tipo', 'cliente')->values(); $participantesFornecedores = $participantes->where('tipo', 'fornecedor')->values(); $linhaParticipante = function($p) { $cnpjFmt = preg_match('/^\d{14}$/', $p->cnpj) ? substr($p->cnpj,0,2).'.'.substr($p->cnpj,2,3).'.'.substr($p->cnpj,5,3).'/'.substr($p->cnpj,8,4).'-'.substr($p->cnpj,12,2) : $p->cnpj; $regimeBadge = $p->regimetributario ? ''.e($p->regimetributario).'' : ''; $dataSimples = $p->data_opcao_simples ? $p->data_opcao_simples->format('d/m/Y') : '—'; return compact('cnpjFmt', 'regimeBadge', 'dataSimples'); }; @endphp
Participantes (Simples consultado)
@csrf @if($sim)@endif @if($returnUrl)@endif
Clientes {{ $participantesClientes->count() }}
@forelse($participantesClientes as $p) @php $row = $linhaParticipante($p); @endphp @empty @endforelse
CNPJNomeQtd. docsValor totalRegimeData opção Simples
{{ $row['cnpjFmt'] }} {{ $p->nome ?? '—' }} {{ number_format($p->qtd_documentos, 0, ',', '.') }} R$ {{ number_format($p->valor_total ?? 0, 2, ',', '.') }} {!! $row['regimeBadge'] !!} {{ $row['dataSimples'] }}
Nenhum cliente identificado.
Fornecedores {{ $participantesFornecedores->count() }}
@forelse($participantesFornecedores as $p) @php $row = $linhaParticipante($p); @endphp @empty @endforelse
CNPJNomeQtd. docsValor totalRegimeData opção Simples
{{ $row['cnpjFmt'] }} {{ $p->nome ?? '—' }} {{ number_format($p->qtd_documentos, 0, ',', '.') }} R$ {{ number_format($p->valor_total ?? 0, 2, ',', '.') }} {!! $row['regimeBadge'] !!} {{ $row['dataSimples'] }}
Nenhum fornecedor identificado.
{{-- 7) Resumo (cards) --}}
Linhas importadas
{{ number_format($totais->qtd_linhas ?? 0, 0, ',', '.') }}
Notas distintas
{{ number_format($totais->qtd_notas ?? 0, 0, ',', '.') }}
Valor dos Itens
R$ {{ number_format($totais->soma_valor_item ?? 0, 2, ',', '.') }}
Tributos
PIS/COFINS/ICMS/IPI
{{-- 8) Tabela por REG --}}
Resumo por REG
@forelse($byReg as $r) @empty @endforelse
REGLinhasNotasValor ItensPISCOFINSICMSIPI
{{ $r->reg }} {{ number_format($r->qtd_linhas, 0, ',', '.') }} {{ number_format($r->qtd_notas, 0, ',', '.') }} R$ {{ number_format($r->soma_valor_item, 2, ',', '.') }} R$ {{ number_format($r->soma_pis, 2, ',', '.') }} R$ {{ number_format($r->soma_cofins, 2, ',', '.') }} R$ {{ number_format($r->soma_icms, 2, ',', '.') }} R$ {{ number_format($r->soma_ipi, 2, ',', '.') }}
Sem dados.
{{-- 9) Tabela por CFOP --}} @if($porCfop->isNotEmpty())
Por CFOP
@foreach($porCfop as $c) @endforeach
CFOPLinhasNotasValor ItensPISCOFINSICMSIPI
{{ $c->cfop }} {{ number_format($c->qtd_linhas ?? 0, 0, ',', '.') }} {{ number_format($c->qtd_notas ?? 0, 0, ',', '.') }} R$ {{ number_format($c->soma_valor_item ?? 0, 2, ',', '.') }} R$ {{ number_format($c->soma_pis ?? 0, 2, ',', '.') }} R$ {{ number_format($c->soma_cofins ?? 0, 2, ',', '.') }} R$ {{ number_format($c->soma_icms ?? 0, 2, ',', '.') }} R$ {{ number_format($c->soma_ipi ?? 0, 2, ',', '.') }}
@endif {{-- 10) Tabela por NATOP --}} @if($porNatOper->isNotEmpty())
Por NATOP
@foreach($porNatOper as $n) @endforeach
NATOPLinhasNotasValor Itens
{{ $n->nat_oper }} {{ number_format($n->qtd_linhas ?? 0, 0, ',', '.') }} {{ number_format($n->qtd_notas ?? 0, 0, ',', '.') }} R$ {{ number_format($n->soma_valor_item ?? 0, 2, ',', '.') }}
@endif {{-- 11) Por ABA --}} @if($byAba->isNotEmpty())
Resumo por Aba de Origem
@foreach($byAba as $r) @endforeach
AbaLinhasNotasValor ItensPISCOFINSICMSIPI
{{ $r->aba }} {{ number_format($r->qtd_linhas, 0, ',', '.') }} {{ number_format($r->qtd_notas, 0, ',', '.') }} R$ {{ number_format($r->soma_valor_item, 2, ',', '.') }} R$ {{ number_format($r->soma_pis, 2, ',', '.') }} R$ {{ number_format($r->soma_cofins, 2, ',', '.') }} R$ {{ number_format($r->soma_icms, 2, ',', '.') }} R$ {{ number_format($r->soma_ipi, 2, ',', '.') }}
@endif {{-- Gráficos: carregar Chart.js e desenhar aqui (garante que canvas e dados existem) --}}