@php $logoSrc = $logoEmpresaPdfSrc ?? null; $inicio = $locacao->data_inicio ? \Carbon\Carbon::parse($locacao->data_inicio) : null; if ($inicio && !empty($locacao->hora_inicio)) { $inicio->setTimeFromTimeString((string) $locacao->hora_inicio); } $fim = $locacao->data_fim ? \Carbon\Carbon::parse($locacao->data_fim) : null; if ($fim && !empty($locacao->hora_fim)) { $fim->setTimeFromTimeString((string) $locacao->hora_fim); } $ehPorHora = (bool) ($locacao->locacao_por_hora ?? false); if (!$ehPorHora && $inicio && $fim) { $ehPorHora = $inicio->format('Y-m-d') === $fim->format('Y-m-d'); } $qtdPeriodo = $ehPorHora ? max(1, (int) ceil(($inicio && $fim && $fim->gte($inicio)) ? ($inicio->diffInMinutes($fim) / 60) : 1)) : max(1, (int) ($locacao->quantidade_dias ?? (($inicio && $fim) ? $inicio->copy()->startOfDay()->diffInDays($fim->copy()->startOfDay()) + 1 : 1))); $labelPeriodo = $ehPorHora ? 'hora(s)' : 'dia(s)'; $vendedor = $responsavelContrato ?? ($locacao->responsavel ?? '-'); $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 ?? '-'; $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 : '')); $apiFilesBase = rtrim((string) config('custom.api_files_url', env('API_FILES_URL', 'https://api.gestornow.com')), '/'); $startsWith = function (string $texto, string $prefixo): bool { return strpos($texto, $prefixo) === 0; }; $resolverFotoProduto = function ($produto) use ($apiFilesBase, $locacao, $startsWith) { if (!is_object($produto)) { return null; } $fotoUrl = trim((string) ($produto->foto_url ?? '')); $fotoFilename = trim((string) ($produto->foto_filename ?? '')); if ($fotoFilename !== '') { return $apiFilesBase . '/uploads/produtos/imagens/' . (int) ($locacao->id_empresa ?? 0) . '/' . ltrim($fotoFilename, '/'); } if ($fotoUrl !== '') { if ($startsWith($fotoUrl, 'http://') || $startsWith($fotoUrl, 'https://')) { return $fotoUrl; } $path = '/' . ltrim($fotoUrl, '/'); if ($startsWith($path, '/api/produtos/imagens/')) { $path = '/uploads/produtos/imagens/' . ltrim(substr($path, strlen('/api/produtos/imagens/')), '/'); } elseif ($startsWith($path, '/produtos/imagens/')) { $path = '/uploads/produtos/imagens/' . ltrim(substr($path, strlen('/produtos/imagens/')), '/'); } elseif (!$startsWith($path, '/uploads/produtos/imagens/')) { $path = '/uploads/produtos/imagens/' . (int) ($locacao->id_empresa ?? 0) . '/' . ltrim($path, '/'); } return $apiFilesBase . $path; } return null; }; $salasNome = collect($locacao->salas ?? [])->mapWithKeys(function ($sala) { return [(int) ($sala->id_sala ?? 0) => ($sala->nome ?? 'Sala')]; }); $linhasChecklist = collect(); foreach ($locacao->produtos as $item) { $linhasChecklist->push([ 'sala_id' => (int) ($item->id_sala ?? 0), 'descricao' => $item->produto->nome ?? 'Item', 'qtd' => (int) ($item->quantidade ?? 1), 'foto' => $resolverFotoProduto($item->produto ?? null), ]); } foreach ($locacao->produtosTerceiros as $item) { $linhasChecklist->push([ 'sala_id' => (int) ($item->id_sala ?? 0), 'descricao' => $item->nome_produto ?? 'Produto de Terceiro', 'qtd' => (int) ($item->quantidade ?? 1), 'foto' => null, ]); } $gruposChecklist = $linhasChecklist->groupBy('sala_id'); @endphp
@if($logoSrc) @endif
Checklist
Contrato Nº:
{{ $locacao->numero_contrato }}
Nome: {{ $locacao->cliente->nome ?? $locacao->cliente->razao_social ?? '-' }} Vendedor: {{ $vendedor }}
Nome do Evento: {{ $locacao->nome_obra ?? '-' }}
Stand: - Lugar de Entrega: {{ $locacao->local_entrega ?? '-' }}
Contato no Local: {{ $locacao->contato_local ?? $locacao->contato_responsavel ?? '-' }} Período: {{ $qtdPeriodo }} {{ $labelPeriodo }}.
Data de Entrega: {{ optional($locacao->data_inicio)->format('d/m/Y') }} - {{ $horaInicioFmt }} Data de Devolução: {{ optional($locacao->data_fim)->format('d/m/Y') }} - {{ $horaFimFmt }}
Itens para Conferência
@if(!empty($imprimirComFoto)) @endif @php $temLinhasChecklist = false; @endphp @foreach($gruposChecklist as $idSala => $linhasSala) @php $temLinhasChecklist = true; $nomeSala = $idSala > 0 ? ($salasNome[$idSala] ?? ('Sala #' . $idSala)) : 'Sem sala'; @endphp @foreach($linhasSala as $linha) @if(!empty($imprimirComFoto)) @endif @endforeach @endforeach @if(!$temLinhasChecklist) @endif
ImagemDescrição Qde {{ $ehPorHora ? 'Horas' : 'Dias' }} Saída Entrega Devolução
{{ $nomeSala }}
@if(!empty($linha['foto'])) Foto @else - @endif {{ $linha['descricao'] }} {{ $linha['qtd'] }} {{ $qtdPeriodo }}
Sem itens.
Observação: {{ $locacao->observacoes_checklist ?? '-' }}
Responsáveis
Responsável do Almoxarifado
Nome legível:
Data: ____/____/______ Horário: ________
Responsável pela Entrega
Nome legível:
Data: ____/____/______ Horário: ________
Responsável pelo Recebimento (Cliente)
Nome legível:
Data: ____/____/______ RG: ___________________
Responsável pela Retirada
Nome legível:
Data: ____/____/______ Horário: ________
Entrada Almoxarifado
Nome legível:
Data: ____/____/______ Horário: ________
Observações e ocorrências na retirada
@if(!empty($assinaturaLocadoraPdfSrc ?? null)) Assinatura Locadora @endif
{{ $nomeLocadora }}
CNPJ: {{ $docLocadora }}
@if(!empty($assinaturaClientePdfSrc ?? null)) Assinatura Cliente @endif
{{ $locacao->cliente->razao_social ?? $locacao->cliente->nome ?? '-' }}
CPF/CNPJ: {{ $docCliente }}
Conferente
Cidade/Data: {{ $cidadeUf ?: 'Limeira - SP' }}, {{ now()->format('d/m/Y') }}