@php $title = 'Visualizar Venda'; @endphp

Detalhes da Venda

@if($venda->orcamento) @endif @php // Verificar se já existe OP para esta venda $ordemProducao = $venda->ordensProducao->first(); @endphp @if($ordemProducao) @else @endif @if($venda->podeSerEditada()) @endif
Informações da Venda

{{ $venda->codigo }}

{{ $venda->cliente->nome_fantasia ?? 'N/A' }}

{{ $venda->data_venda ? $venda->data_venda->format('d/m/Y') : 'N/A' }}

@if($venda->status == 'Concluída') {{ $venda->status }} @elseif($venda->status == 'Pendente') {{ $venda->status }} @elseif($venda->status == 'Cancelada') {{ $venda->status }} @else {{ $venda->status }} @endif

{{ $venda->formaPagamento->nome ?? 'N/A' }}

@if($venda->orcamento) @endif
@if($venda->observacoes)

{{ $venda->observacoes }}

@endif
Itens da Venda
@forelse($venda->itens ?? [] as $index => $item) @empty @endforelse
# Tipo Item Descrição Qtd Unidade Valor Unit. Total
{{ $index + 1 }} @if($item->tipo_item === 'SERVICO') Serviço @else Produto @endif
@if($item->tipo_item === 'SERVICO') {{ $item->servico?->nome ?? 'Serviço não definido' }} @else {{ $item->produto?->nome ?? 'Produto não definido' }} @endif
{{ $item->descricao ?? '-' }} {{ number_format($item->quantidade, 0, '', '.') }} {{ isset($item->unidade) ? ucfirst($item->unidade) : '-' }} R$ {{ number_format($item->valor_unitario, 2, ',', '.') }} R$ {{ number_format($item->valor_total, 2, ',', '.') }}
Nenhum item cadastrado

Esta venda ainda não possui itens.

Resumo Financeiro
Subtotal: R$ {{ number_format($venda->subtotal ?? 0, 2, ',', '.') }}
@if(($venda->desconto ?? 0) > 0)
Desconto @if($venda->subtotal > 0) {{ number_format($venda->desconto, 1, ',', '.') }}% @endif -R$ {{ number_format($venda->valor_desconto ?? 0, 2, ',', '.') }}
@endif
Total Geral: R$ {{ number_format($venda->total ?? 0, 2, ',', '.') }}
@if($venda->orcamento && ($venda->orcamento->forma_pagamento_preferida || $venda->orcamento->tipo_pagamento))
Condições de Pagamento
@if($venda->orcamento->forma_pagamento_preferida)
Forma: @if($venda->orcamento->forma_pagamento_preferida == 'PIX') PIX @elseif($venda->orcamento->forma_pagamento_preferida == 'BOLETO') Boleto @elseif($venda->orcamento->forma_pagamento_preferida == 'CARTAO') Cartão @else {{ $venda->orcamento->forma_pagamento_preferida }} @endif
@endif @if($venda->orcamento->tipo_pagamento)
Tipo: @if($venda->orcamento->tipo_pagamento == 'A_VISTA') À Vista @elseif($venda->orcamento->tipo_pagamento == 'PARCELADO_3X') Parcelado 3x @elseif($venda->orcamento->tipo_pagamento == 'PARCELADO_6X') Parcelado 6x @else {{ $venda->orcamento->tipo_pagamento }} @endif
@endif @if($venda->orcamento->data_vencimento_preferida)
Vencimento: {{ $venda->orcamento->data_vencimento_preferida->format('d/m/Y') }}
@endif @if($venda->orcamento->valor_entrada && $venda->orcamento->valor_entrada > 0)
Entrada: R$ {{ number_format($venda->orcamento->valor_entrada, 2, ',', '.') }}
@endif
@if($venda->orcamento->observacoes_pagamento)
Observações:

{{ $venda->orcamento->observacoes_pagamento }}

@endif
@endif @php // Corrigido: usando método parcelas que busca do orçamento (fonte única da verdade) $parcelasVenda = $venda->parcelas; // Verificar e atualizar status das parcelas vencidas $dataAtual = now()->startOfDay(); if ($parcelasVenda) { foreach ($parcelasVenda as $parcela) { if ($parcela->status !== \App\Enum\StatusParcela::PAGO->value && $parcela->data_vencimento && $parcela->data_vencimento->startOfDay()->lt($dataAtual)) { $parcela->status = \App\Enum\StatusParcela::VENCIDO->value; } } } @endphp @if($parcelasVenda && $parcelasVenda->count() > 0)
Parcelas ({{ $parcelasVenda->count() }})
@php $dataAtual = now()->startOfDay(); $totalPago = 0; $totalVencido = 0; $totalPendente = 0; // Calcular totais com verificação de vencimento em tempo real foreach ($parcelasVenda as $parcela) { if ($parcela->status == \App\Enum\StatusParcela::PAGO->value) { $totalPago += $parcela->valor; } elseif ($parcela->data_vencimento && $parcela->data_vencimento->startOfDay()->lt($dataAtual)) { // Parcela vencida (não paga e vencimento passou) $totalVencido += $parcela->valor; } else { // Parcela pendente (não paga e ainda não venceu) $totalPendente += $parcela->valor; } } $totalAReceber = $totalPendente; // Apenas parcelas pendentes (não vencidas) $percentualPago = $venda->total > 0 ? ($totalPago / $venda->total) * 100 : 0; $percentualVencido = $venda->total > 0 ? ($totalVencido / $venda->total) * 100 : 0; $percentualAReceber = $venda->total > 0 ? ($totalAReceber / $venda->total) * 100 : 0; @endphp
Total do Parcelamento R$ {{ number_format($venda->total, 2, ',', '.') }}
Valor Recebido R$ {{ number_format($totalPago, 2, ',', '.') }} ({{ number_format($percentualPago, 1) }}%)
Valor Vencido R$ {{ number_format($totalVencido, 2, ',', '.') }} ({{ number_format($percentualVencido, 1) }}%)
Valor a Receber R$ {{ number_format($totalAReceber, 2, ',', '.') }} ({{ number_format($percentualAReceber, 1) }}%)
@php $parcelasOrdenadas = $parcelasVenda->sortBy(function($parcela) { // Entrada sempre vem primeiro (numero_parcela = 0) if ($parcela->numero_parcela == 0) { return -1; } return $parcela->numero_parcela; }); @endphp @foreach($parcelasOrdenadas as $parcela) @php // Verificar se a parcela está vencida (não paga e data de vencimento menor que hoje) $statusParcela = $parcela->status; if ($statusParcela !== \App\Enum\StatusParcela::PAGO->value && $parcela->data_vencimento && $parcela->data_vencimento->startOfDay()->lt(now()->startOfDay())) { $statusParcela = \App\Enum\StatusParcela::VENCIDO->value; } @endphp @endforeach
Parcela Valor Vencimento Status Data Pagamento Nota Fiscal
@if($parcela->numero_parcela == 0) Entrada @else {{ $parcela->numero_parcela }}ª parcela @endif R$ {{ number_format($parcela->valor, 2, ',', '.') }} {{ $parcela->data_vencimento ? $parcela->data_vencimento->format('d/m/Y') : 'N/A' }} @if($statusParcela == \App\Enum\StatusParcela::PAGO->value) Pago @elseif($statusParcela == \App\Enum\StatusParcela::PENDENTE->value) Pendente @elseif($statusParcela == \App\Enum\StatusParcela::VENCIDO->value) Vencido @else {{ $statusParcela }} @endif @if($parcela->data_pagamento) @php $dataPagamento = $parcela->data_pagamento; // Se a hora for 00:00, mostra apenas a data if ($dataPagamento->format('H:i') === '00:00') { echo $dataPagamento->format('d/m/Y'); } else { // Se tem hora real, mostra data e hora echo $dataPagamento->format('d/m/Y H:i'); } @endphp @else - @endif @if($statusParcela == 'PAGO') @else - @endif
@endif