@php $logoPath = public_path('img/logo-root-developers.png'); $logoSrc = ''; $observacoesExibicao = (string) $orcamento->observacoes; $padraoObservacaoEntregaLegada = '/^A entrega do servi[cç]o ser[aá] programada para (.+?)(?:,)? e come[cç]a a contar a partir da data de aprova[cç][aã]o do or[cç]amento\.$/u'; if (is_file($logoPath) && is_readable($logoPath)) { $logoMime = mime_content_type($logoPath) ?: 'image/png'; $logoBase64 = base64_encode(file_get_contents($logoPath)); $logoSrc = 'data:' . $logoMime . ';base64,' . $logoBase64; } if (preg_match($padraoObservacaoEntregaLegada, $observacoesExibicao, $coincidenciasObservacaoEntrega)) { $observacoesExibicao = __('orcamento.automatic_delivery_deadline', [ 'deadline' => trim($coincidenciasObservacaoEntrega[1]), ]); } @endphp
{{ __('orcamento.label_date') }}: {{ isset($orcamento->data_emissao) ? date('d/m/Y', strtotime($orcamento->data_emissao)) : date('d/m/Y') }}
{{ __('orcamento.menu') }}: {{ $orcamento->codigo ?? '' }}
ROOT DEVELOPERS
AV. ENG. LUIZ CARLOS BERRINI, 1681 -    CONJ 111 EDIF BERRINI -
CIDADE MONÇÕES - São Paulo - SP - CEP: 04571-011
ROOT DEVELOPERS - CONSULTORIA EM TECNOLOGIA DA INFORMAÇÃO LTDA
{{ __('orcamento.label_tax_id') }}: 36.643.240/0001-51
(11) 96078-2246
alexandre.rodrigues@rootdevelopers.com.br
@php $contatoPrincipal = isset($cliente->contatos) ? $cliente->contatos->where('principal', true)->first() : null; @endphp
{{ $cliente->nome_fantasia }}
{{ __('orcamento.label_tax_id') }}: {{ $cliente->cnpj ?? 'N/A' }}
{{ $contatoPrincipal->telefone ?? $cliente->telefone }}
{{ $contatoPrincipal->email ?? $cliente->email }}
{{ $cliente->endereco }} - {{ $cliente->bairro }} - {{ $cliente->cidade }}/{{ $cliente->estado }}
{{ __('orcamento.label_delivery_deadline') }}
{{ $orcamento->prazo_entrega ?? __('orcamento.label_payment_undefined') }}
@if($orcamento->descricao_projeto)
{{ $orcamento->descricao_projeto }}
@endif
@if(isset($itens) && count($itens) > 0) @foreach($itens as $item) @endforeach @else @endif
# {{ __('orcamento.label_service') }} {{ __('orcamento.label_description') }} {{ __('orcamento.label_people') }} {{ __('orcamento.label_quantity') }} {{ __('orcamento.label_unit') }} {{ __('orcamento.label_unit_price') }} {{ __('orcamento.label_subtotal') }}
{{ $loop->iteration }} {{ $item->servico?->nome_exibicao ?? $item->servico?->nome ?? $item->descricao }} {{ $item->descricao }} {{ (int)($item->pessoas ?? 1) }} {{ (int)$item->quantidade }} {{ $item->unidade }} {{ $item->valor_unitario_formatado_exibicao ?? \App\Helpers\MoneyHelper::formatarPorMoeda($item->valor_unitario, $orcamento->moeda ?? 'BRL') }} {{ $item->valor_total_formatado_exibicao ?? \App\Helpers\MoneyHelper::formatarPorMoeda($item->valor_total ?? (($item->quantidade ?? 0) * ($item->pessoas ?? 1) * $item->valor_unitario), $orcamento->moeda ?? 'BRL') }}
{{ __('orcamento.empty_services') }}
{{ __('orcamento.label_subtotal') }}:
{{ $orcamento->subtotal_formatado_exibicao ?? \App\Helpers\MoneyHelper::formatarPorMoeda($orcamento->subtotal ?? $orcamento->total, $orcamento->moeda ?? 'BRL') }}
@if(isset($orcamento->desconto) && $orcamento->desconto > 0)
{{ __('orcamento.label_discount') }} {{ number_format($orcamento->desconto, 1, in_array($orcamento->moeda ?? 'BRL', ['USD', 'EUR'], true) ? '.' : ',', '') }}%:
-{{ $orcamento->valor_desconto_formatado_exibicao ?? \App\Helpers\MoneyHelper::formatarPorMoeda($orcamento->valor_desconto ?? 0, $orcamento->moeda ?? 'BRL') }}
@endif
{{ __('orcamento.label_total_general') }}:
{{ $orcamento->total_formatado_exibicao ?? \App\Helpers\MoneyHelper::formatarPorMoeda($orcamento->total, $orcamento->moeda ?? 'BRL') }}
{{ __('orcamento.label_payment_conditions') }}:
@if(isset($orcamento->condicoesPagamento)) @php $condicoes = $orcamento->condicoesPagamento; $parcelas = $condicoes->parcelasOrcamento ?? $condicoes->parcelas ?? collect(); $valorEntrada = $condicoes->valor_entrada ?? 0; $totalParcelas = $parcelas->count(); $valorTotal = $orcamento->total; $valorRestante = $valorTotal - $valorEntrada; // Se há entrada, o número de parcelas efetivas é total - 1 (entrada não conta) $parcelasEfetivas = $valorEntrada > 0 ? $totalParcelas - 1 : $totalParcelas; // Separar entrada das parcelas - entrada tem numero_parcela = 0 $entradaParcela = $parcelas->where('numero_parcela', 0)->first(); $parcelasReais = $parcelas->where('numero_parcela', '>', 0)->sortBy('data_vencimento'); $primeiraParcela = $parcelasReais->first(); $ultimaParcela = $parcelasReais->last(); // Calcular valor da parcela (pegar o valor real da primeira parcela real ou calcular) $valorParcela = null; if ($parcelasReais->count() > 0) { $valorParcela = $primeiraParcela->valor ?? ($valorRestante / $parcelasReais->count()); } // Determinar o dia do vencimento (se todas as parcelas vencem no mesmo dia do mês) $diasVencimento = $parcelasReais->pluck('data_vencimento')->map(function($data) { return $data ? $data->format('d') : null; })->filter()->unique(); $diaFixo = $diasVencimento->count() == 1 ? $diasVencimento->first() : null; @endphp
{{ __('orcamento.payment_approval_intro') }}
@if($valorEntrada > 0 && $parcelasEfetivas > 0) {{-- Pagamento com entrada + parcelas --}}
{{ __('orcamento.label_payment_entry') }}:
{{ \App\Helpers\MoneyHelper::formatarPorMoeda($valorEntrada, $orcamento->moeda ?? 'BRL') }} @if($condicoes->data_vencimento) - {{ __('orcamento.payment_due_date') }}: {{ $condicoes->data_vencimento->format('d/m/Y') }} @endif
{{ __('orcamento.label_installments') }}:
{{ trans_choice('orcamento.payment_installments_summary', $parcelasEfetivas, ['count' => $parcelasEfetivas, 'amount' => \App\Helpers\MoneyHelper::formatarPorMoeda($valorParcela ?? 0, $orcamento->moeda ?? 'BRL')]) }} - {{ __('orcamento.payment_due_monthly') }}
@if($diaFixo && $parcelasEfetivas > 1)
{{ __('orcamento.payment_due_dates') }}:
{{ __('orcamento.payment_due_range', ['day' => $diaFixo, 'start' => $primeiraParcela->data_vencimento->format('d/m/Y'), 'end' => $ultimaParcela->data_vencimento->format('d/m/Y')]) }}
@elseif($parcelasEfetivas == 1 && $primeiraParcela)
{{ __('orcamento.payment_due_date') }}:
{{ $primeiraParcela->data_vencimento->format('d/m/Y') }}
@endif @else {{-- Pagamento à vista --}}
{{ __('orcamento.payment_mode') }}:
{{ __('orcamento.automatic_cash_payment', ['total' => \App\Helpers\MoneyHelper::formatarPorMoeda($valorTotal, $orcamento->moeda ?? 'BRL')]) }}
@php // Para pagamento à vista, pegar a primeira parcela (pode ser a única) $primeiraParcela = $parcelas->sortBy('data_vencimento')->first(); @endphp @if($primeiraParcela && $primeiraParcela->data_vencimento)
{{ __('orcamento.payment_due_date') }}:
{{ $primeiraParcela->data_vencimento->format('d/m/Y') }}
@endif @endif @if($condicoes->forma_pagamento)
{{ __('orcamento.payment_preferred_method') }}:
{{ $condicoes->formaPagamento?->nome ?? __('orcamento.label_payment_undefined') }}
@if(strtoupper($condicoes->forma_pagamento) === 'PIX')
{{ __('orcamento.payment_key') }}:
36.643.240/0001-51 - ROOT DEVELOPERS - CONSULTORIA EM TECNOLOGIA DA INFORMAÇÃO LTDA
@endif @endif @if($observacoesExibicao !== '')
{{ __('orcamento.payment_notes') }}:
{{ $observacoesExibicao }}
@endif
@else
{{ __('orcamento.payment_pending_agreement') }}
@if($orcamento->condicoes_pagamento)
{{ __('orcamento.payment_mode') }}:
{{ $orcamento->condicoes_pagamento }}
@endif
@endif