@php use Carbon\Carbon; $cfg = is_array($empresa->configuracoes ?? null) ? $empresa->configuracoes : []; $logo = $cfg['logo_url'] ?? null; $logoSrc = null; if ($logo) { $logoPath = parse_url($logo, PHP_URL_PATH); $logoFileLocal = $logoPath ? public_path(ltrim($logoPath, '/')) : null; $logoSrc = ($logoFileLocal && file_exists($logoFileLocal)) ? $logoFileLocal : $logo; } $clienteNome = $locacao->cliente->razao_social ?? $locacao->cliente->nome ?? '-'; $inicioPeriodo = $locacao->data_inicio ? Carbon::parse($locacao->data_inicio) : null; if ($inicioPeriodo && !empty($locacao->hora_inicio)) { $inicioPeriodo->setTimeFromTimeString((string) $locacao->hora_inicio); } $fimPeriodo = $locacao->data_fim ? Carbon::parse($locacao->data_fim) : null; if ($fimPeriodo && !empty($locacao->hora_fim)) { $fimPeriodo->setTimeFromTimeString((string) $locacao->hora_fim); } $ehPorHora = (bool) ($locacao->locacao_por_hora ?? false); if (!$ehPorHora && $inicioPeriodo && $fimPeriodo) { $ehPorHora = $inicioPeriodo->format('Y-m-d') === $fimPeriodo->format('Y-m-d'); } $qtdPeriodo = $ehPorHora ? max(1, (int) ceil(($inicioPeriodo && $fimPeriodo && $fimPeriodo->gte($inicioPeriodo)) ? ($inicioPeriodo->diffInMinutes($fimPeriodo) / 60) : 1)) : max(1, (int) ($locacao->quantidade_dias ?? (($inicioPeriodo && $fimPeriodo) ? $inicioPeriodo->copy()->startOfDay()->diffInDays($fimPeriodo->copy()->startOfDay()) + 1 : 1))); $labelPeriodo = $ehPorHora ? 'hora(s)' : 'dia(s)'; $valorProdutos = 0.0; foreach ($locacao->produtos as $item) { $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); $totalItem = (bool) ($item->valor_fechado ?? false) ? (float) ($item->preco_total ?? 0) : ($unit * $qtd * $qtdPeriodo); $valorProdutos += $totalItem; } foreach ($locacao->produtosTerceiros as $item) { $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); $totalItem = (bool) ($item->valor_fechado ?? false) ? (float) ($item->valor_total ?? 0) : ($unit * $qtd * $qtdPeriodo); $valorProdutos += $totalItem; } $valorServicos = (float) ($locacao->servicos->sum(function ($item) { $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); return (float) ($item->valor_total ?? ($unit * $qtd)); }) ?? 0); $valorDespesas = (float) ($locacao->despesas->sum('valor') ?? 0); $freteEntrega = (float) ($locacao->valor_frete_entrega ?? $locacao->valor_acrescimo ?? 0); $freteRetirada = (float) ($locacao->valor_frete_retirada ?? 0); $freteTotal = $freteEntrega + $freteRetirada; $desconto = (float) ($locacao->valor_desconto ?? 0); $valorFinal = (float) ($locacao->valor_final ?? (($valorProdutos + $valorServicos + $freteTotal) - $desconto)); $cidade = trim((string) ($locacao->cidade ?: ($locacao->cliente->cidade ?? ($empresa->cidade ?? '')))); $uf = trim((string) ($locacao->estado ?: ($locacao->cliente->uf ?? ($empresa->uf ?? '')))); $cidadeUf = trim($cidade . ($uf !== '' ? ' - ' . $uf : '')); $horaInicioFmt = substr((string) ($locacao->hora_inicio ?? '00:00'), 0, 5); $horaFimFmt = substr((string) ($locacao->hora_fim ?? '23:59'), 0, 5); $nomeLocadora = $empresa->razao_social ?? $empresa->nome_fantasia ?? $empresa->nome_empresa ?? 'Locadora'; $docLocadora = $empresa->cnpj ?? '-'; $docCliente = $locacao->cliente->cpf_cnpj ?? '-'; $dataExtenso = now()->locale('pt_BR')->isoFormat('DD [de] MMMM [de] YYYY'); @endphp
@if($logoSrc) @endif
RECIBO DE LOCAÇÃO
Contrato Nº:
{{ $locacao->numero_contrato }}
Data de Emissão: {{ now()->format('d/m/Y H:i') }}
Recebemos de {{ $clienteNome }}, inscrito(a) no CPF/CNPJ {{ $docCliente }}, a importância de R$ {{ number_format($valorFinal, 2, ',', '.') }}, referente à locação dos equipamentos do contrato {{ $locacao->numero_contrato }}. Período: {{ optional($locacao->data_inicio)->format('d/m/Y') }} {{ $horaInicioFmt }} até {{ optional($locacao->data_fim)->format('d/m/Y') }} {{ $horaFimFmt }} ({{ $qtdPeriodo }} {{ $labelPeriodo }}).
Cliente: {{ $clienteNome }} Contrato Nº: {{ $locacao->numero_contrato }}
Endereço: {{ $locacao->endereco_entrega ?? $locacao->local_entrega ?? '-' }} Telefone: {{ $locacao->cliente->telefone ?? $locacao->cliente->celular ?? '-' }}
@forelse($locacao->produtos as $item) @php $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); $totalItem = (bool) ($item->valor_fechado ?? false) ? (float) ($item->preco_total ?? 0) : ($unit * $qtd * $qtdPeriodo); @endphp @empty @endforelse @foreach($locacao->produtosTerceiros as $item) @php $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); $totalItem = (bool) ($item->valor_fechado ?? false) ? (float) ($item->valor_total ?? 0) : ($unit * $qtd * $qtdPeriodo); @endphp @endforeach @foreach($locacao->servicos as $item) @php $qtd = max(1, (int) ($item->quantidade ?? 1)); $unit = (float) ($item->preco_unitario ?? 0); $totalItem = (float) ($item->valor_total ?? ($unit * $qtd)); @endphp @endforeach
Descrição Qtd Período Valor Unit. Subtotal
{{ $item->produto->nome ?? 'Item' }} {{ $qtd }} {{ $qtdPeriodo }} {{ $labelPeriodo }} R$ {{ number_format($unit, 2, ',', '.') }} R$ {{ number_format($totalItem, 2, ',', '.') }}
Sem itens.
{{ $item->nome_produto ?? 'Produto terceiro' }} {{ $qtd }} {{ $qtdPeriodo }} {{ $labelPeriodo }} R$ {{ number_format($unit, 2, ',', '.') }} R$ {{ number_format($totalItem, 2, ',', '.') }}
{{ $item->descricao ?? 'Serviço' }} {{ $qtd }} 1 serviço R$ {{ number_format($unit, 2, ',', '.') }} R$ {{ number_format($totalItem, 2, ',', '.') }}
Subtotal Produtos R$ {{ number_format($valorProdutos, 2, ',', '.') }}
Subtotal Serviços R$ {{ number_format($valorServicos, 2, ',', '.') }}
Frete Entrega R$ {{ number_format($freteEntrega, 2, ',', '.') }}
Frete Retirada R$ {{ number_format($freteRetirada, 2, ',', '.') }}
Frete Total R$ {{ number_format($freteTotal, 2, ',', '.') }}
Desconto R$ {{ number_format($desconto, 2, ',', '.') }}
Total R$ {{ number_format($valorFinal, 2, ',', '.') }}
Para todos os fins legais, declara-se quitado o valor acima discriminado, referente à locação dos itens e serviços vinculados ao contrato informado.

{{ $cidadeUf ?: 'Limeira - SP' }}, {{ $dataExtenso }}.
Observações: {{ $locacao->observacoes_recibo ?? '-' }}
PERÍODO
{{ optional($locacao->data_inicio)->format('d/m/Y') }} às {{ $horaInicioFmt }} horas até {{ optional($locacao->data_fim)->format('d/m/Y') }} às {{ $horaFimFmt }} horas, totalizando {{ $qtdPeriodo }} {{ $labelPeriodo }}, totalizando R$ {{ number_format($valorFinal, 2, ',', '.') }}.
FORMA E PRAZO DE PAGAMENTO
Forma de Pagamento: {{ $locacao->forma_pagamento ?? 'Conforme combinado' }} / Prazo de Pagamento: {{ $locacao->prazo_pagamento ?? 'Conforme vencimento pactuado' }}.
@if(!empty($assinaturaLocadoraPdfSrc ?? null)) Assinatura Locadora @endif
{{ $nomeLocadora }}
CNPJ: {{ $docLocadora }}
@if(!empty($assinaturaClientePdfSrc ?? null)) Assinatura Cliente @endif
{{ $clienteNome }}
CPF/CNPJ: {{ $docCliente }}