|
|
@if($podeEditarLocacao)
@else
-
@endif
|
{{ $locacao->codigo_display }} |
{{ (int) ($locacao->aditivo ?? 1) }} |
@if((int) ($locacao->faturamentos_ativos_count ?? 0) > 0)
Sim
@else
Não
@endif
|
{{ $locacao->cliente->nome ?? 'N/A' }} |
{{ optional($locacao->data_inicio)->format('d/m/Y') }} {{ $locacao->hora_inicio ? substr($locacao->hora_inicio,0,5) : '' }} → {{ optional($locacao->data_fim)->format('d/m/Y') }} {{ $locacao->hora_fim ? substr($locacao->hora_fim,0,5) : '' }}
{{ $qtdPeriodo }} {{ $unidadePeriodo }}
|
{{ \App\Domain\Locacao\Models\Locacao::statusList()[$locacao->status] ?? $locacao->status }} |
@if((bool) ($locacao->renovacao_automatica ?? false))
Sim
@else
Não
@endif
|
R$ {{ number_format((float)($locacao->valor_total_listagem ?? 0), 2, ',', '.') }} |
Contrato {{ $locacao->codigo_display }}
{{ $locacao->cliente->nome ?? 'N/A' }}
• {{ optional($locacao->data_inicio)->format('d/m/Y') }} {{ $locacao->hora_inicio ? substr($locacao->hora_inicio,0,5) : '' }}
até {{ optional($locacao->data_fim)->format('d/m/Y') }} {{ $locacao->hora_fim ? substr($locacao->hora_fim,0,5) : '' }}
• R$ {{ number_format((float)($locacao->valor_total_listagem ?? 0), 2, ',', '.') }}
@if($locacao->assinaturaDigital)
{{ ($locacao->assinaturaDigital->status ?? '') === 'assinado' ? 'Contrato assinado' : 'Contrato pendente de assinatura' }}
@endif
@if($locacao->status === 'aprovado')
@php
$modelosContratoDropdown = $modelosContratoAtivos;
$assinaturasContratoAssinadas = ($locacao->assinaturasDigitais ?? collect())
->filter(function ($assinaturaContrato) {
return ($assinaturaContrato->status ?? '') === 'assinado' && !empty($assinaturaContrato->token);
})
->sortByDesc('id_assinatura')
->values();
$assinaturaContratoPadrao = $assinaturasContratoAssinadas->first(function ($assinaturaContrato) {
return empty($assinaturaContrato->id_modelo);
}) ?: $assinaturasContratoAssinadas->first();
@endphp
@if($podeContratoPdfLocacao || $podeAssinaturaDigitalLocacao)
@endif
@if($podeContratoPdfLocacao)
@endif
@if($podeAlterarStatusLocacao)
@endif
@if($podeRenovarLocacao)
@endif
@if(in_array($aba, ['ativos', 'vencidos'], true))
@if($podeRetornarLocacao)
@endif
@endif
@if($podeRetornarLocacao)
@endif
@elseif(in_array($locacao->status, ['cancelado', 'cancelada'], true))
@if($podeAlterarStatusLocacao)
@endif
@elseif($locacao->status === 'encerrado')
@php
$modelosContratoDropdown = $modelosContratoAtivos;
$assinaturasContratoAssinadas = ($locacao->assinaturasDigitais ?? collect())
->filter(function ($assinaturaContrato) {
return ($assinaturaContrato->status ?? '') === 'assinado' && !empty($assinaturaContrato->token);
})
->sortByDesc('id_assinatura')
->values();
$assinaturaContratoPadrao = $assinaturasContratoAssinadas->first(function ($assinaturaContrato) {
return empty($assinaturaContrato->id_modelo);
}) ?: $assinaturasContratoAssinadas->first();
@endphp
@if($podeContratoPdfLocacao || $podeAssinaturaDigitalLocacao)
@endif
@if($podeContratoPdfLocacao)
@endif
@else
@endif
| Item |
Origem |
Qtd |
Período |
Unit. |
Subtotal |
@php
$itensProprios = $locacao->produtos ?? collect();
$itensTerceiros = $locacao->produtosTerceiros ?? collect();
$itensServicos = $locacao->servicos ?? collect();
$itensDespesas = $locacao->despesas ?? collect();
$temItens = $itensProprios->count() > 0
|| $itensTerceiros->count() > 0
|| $itensServicos->count() > 0
|| $itensDespesas->count() > 0;
@endphp
@if($temItens)
@foreach($itensProprios as $item)
@php
$itemRetornado = (int) ($item->estoque_status ?? 0) === 2
|| in_array($item->status_retorno, ['devolvido', 'avariado', 'extraviado'], true);
$qtdItem = max(1, (int) ($item->quantidade ?? 1));
$unitItem = (float) ($item->preco_unitario ?? 0);
$tipoCobrancaItem = strtolower((string) ($item->tipo_cobranca ?? 'diaria'));
$valorFechadoItem = in_array($tipoCobrancaItem, ['fechado', 'valor_fechado'], true)
|| (int) ($item->valor_fechado ?? 0) === 1;
$dataInicioItem = (string) (($item->data_saida ?? $item->data_inicio ?? $locacao->data_inicio) ?: '');
$dataFimItem = (string) (($item->data_retorno ?? $item->data_fim ?? $locacao->data_fim) ?: '');
$horaInicioItem = (string) (($item->hora_saida ?? $item->hora_inicio ?? $locacao->hora_inicio) ?: '');
$horaFimItem = (string) (($item->hora_retorno ?? $item->hora_fim ?? $locacao->hora_fim) ?: '');
$periodoItem = max(1, (int) $qtdPeriodo);
if ($unidadePeriodo === 'hora(s)' && $dataInicioItem !== '' && $dataFimItem !== '' && $horaInicioItem !== '' && $horaFimItem !== '') {
try {
$inicioItem = \Carbon\Carbon::parse($dataInicioItem . ' ' . $horaInicioItem);
$fimItem = \Carbon\Carbon::parse($dataFimItem . ' ' . $horaFimItem);
if ($fimItem->gte($inicioItem)) {
$periodoItem = max(1, (int) ceil($inicioItem->diffInMinutes($fimItem) / 60));
}
} catch (\Throwable $e) {
$periodoItem = max(1, (int) $qtdPeriodo);
}
} elseif ($dataInicioItem !== '' && $dataFimItem !== '') {
try {
$inicioItem = \Carbon\Carbon::parse($dataInicioItem);
$fimItem = \Carbon\Carbon::parse($dataFimItem);
$periodoItem = max(1, $inicioItem->startOfDay()->diffInDays($fimItem->startOfDay()) + 1);
} catch (\Throwable $e) {
$periodoItem = max(1, (int) ($item->quantidade_dias ?? $qtdPeriodo));
}
}
$subtotalCalculadoItem = $valorFechadoItem
? (float) ($item->preco_total ?? 0)
: ($unitItem * $qtdItem * $periodoItem);
@endphp
|
{{ $item->produto->nome ?? 'Produto próprio' }}
@if($itemRetornado)
Retornado
@endif
|
Próprio |
{{ $qtdItem }} |
{{ $periodoItem }} {{ $unidadePeriodo === 'hora(s)' ? 'hora(s)' : 'dia(s)' }} |
R$ {{ number_format((float) ($item->preco_unitario ?? 0), 2, ',', '.') }} |
R$ {{ number_format($subtotalCalculadoItem, 2, ',', '.') }} |
@endforeach
@foreach($itensTerceiros as $item)
@php
$qtdItem = max(1, (int) ($item->quantidade ?? 1));
$unitItem = (float) ($item->preco_unitario ?? 0);
$tipoCobrancaItem = strtolower((string) ($item->tipo_cobranca ?? 'diaria'));
$valorFechadoItem = in_array($tipoCobrancaItem, ['fechado', 'valor_fechado'], true)
|| (int) ($item->valor_fechado ?? 0) === 1;
$dataInicioItem = (string) (($item->data_inicio ?? $locacao->data_inicio) ?: '');
$dataFimItem = (string) (($item->data_fim ?? $locacao->data_fim) ?: '');
$horaInicioItem = (string) (($item->hora_inicio ?? $locacao->hora_inicio) ?: '');
$horaFimItem = (string) (($item->hora_fim ?? $locacao->hora_fim) ?: '');
$periodoItem = max(1, (int) $qtdPeriodo);
if ($unidadePeriodo === 'hora(s)' && $dataInicioItem !== '' && $dataFimItem !== '' && $horaInicioItem !== '' && $horaFimItem !== '') {
try {
$inicioItem = \Carbon\Carbon::parse($dataInicioItem . ' ' . $horaInicioItem);
$fimItem = \Carbon\Carbon::parse($dataFimItem . ' ' . $horaFimItem);
if ($fimItem->gte($inicioItem)) {
$periodoItem = max(1, (int) ceil($inicioItem->diffInMinutes($fimItem) / 60));
}
} catch (\Throwable $e) {
$periodoItem = max(1, (int) $qtdPeriodo);
}
} elseif ($dataInicioItem !== '' && $dataFimItem !== '') {
try {
$inicioItem = \Carbon\Carbon::parse($dataInicioItem);
$fimItem = \Carbon\Carbon::parse($dataFimItem);
$periodoItem = max(1, $inicioItem->startOfDay()->diffInDays($fimItem->startOfDay()) + 1);
} catch (\Throwable $e) {
$periodoItem = max(1, (int) ($item->quantidade_dias ?? $qtdPeriodo));
}
}
$subtotalCalculadoItem = $valorFechadoItem
? (float) ($item->valor_total ?? 0)
: ($unitItem * $qtdItem * $periodoItem);
@endphp
| {{ $item->produtoTerceiro->nome ?? $item->nome_produto_manual ?? 'Produto de terceiro' }} |
Terceiro |
{{ $qtdItem }} |
{{ $periodoItem }} {{ $unidadePeriodo === 'hora(s)' ? 'hora(s)' : 'dia(s)' }} |
R$ {{ number_format((float) ($item->preco_unitario ?? 0), 2, ',', '.') }} |
R$ {{ number_format($subtotalCalculadoItem, 2, ',', '.') }} |
@endforeach
@foreach($itensServicos as $item)
@php
$isTerceiro = (($item->tipo_item ?? 'proprio') === 'terceiro');
@endphp
| {{ $item->descricao ?? 'Serviço' }} |
{{ $isTerceiro ? 'Serv. Terceiro' : 'Serviço' }}
|
{{ (int) ($item->quantidade ?? 1) }} |
1 un. |
R$ {{ number_format((float) ($item->preco_unitario ?? 0), 2, ',', '.') }} |
R$ {{ number_format((float) ($item->valor_total ?? 0), 2, ',', '.') }} |
@endforeach
@foreach($itensDespesas as $item)
| {{ $item->descricao ?? ('Despesa ' . ucfirst((string) ($item->tipo ?? ''))) }} |
Despesa |
1 |
1 un. |
R$ {{ number_format((float) ($item->valor ?? 0), 2, ',', '.') }} |
R$ {{ number_format((float) ($item->valor ?? 0), 2, ',', '.') }} |
@endforeach
@else
| Sem itens cadastrados para esta locação. |
@endif
@php
$subtotalProdutos = (float) ($locacao->subtotal_produtos_listagem ?? 0);
$subtotalServicos = (float) ($locacao->subtotal_servicos_listagem ?? 0);
$subtotalDespesas = (float) ($locacao->subtotal_despesas_listagem ?? 0);
$valorTotalBase = (float) ($locacao->valor_total_base_listagem ?? ($subtotalProdutos + $subtotalServicos));
$valorFrete = (float) ($locacao->valor_frete ?? 0);
$valorAcrescimo = (float) ($locacao->valor_acrescimo ?? 0);
$valorImposto = (float) ($locacao->valor_imposto ?? 0);
$valorDespesasExtras = (float) ($locacao->valor_despesas_extras ?? 0);
$valorDesconto = (float) ($locacao->valor_desconto ?? 0);
$totalFinalExpandido = (float) ($locacao->valor_total_listagem ?? 0);
@endphp
Subtotal ProdutosR$ {{ number_format($subtotalProdutos, 2, ',', '.') }}
Subtotal ServiçosR$ {{ number_format($subtotalServicos, 2, ',', '.') }}
Despesas OperacionaisR$ {{ number_format($subtotalDespesas, 2, ',', '.') }}
Valor Total (base)R$ {{ number_format($valorTotalBase, 2, ',', '.') }}
FreteR$ {{ number_format($valorFrete, 2, ',', '.') }}
AcréscimoR$ {{ number_format($valorAcrescimo, 2, ',', '.') }}
ImpostoR$ {{ number_format($valorImposto, 2, ',', '.') }}
Despesas ExtrasR$ {{ number_format($valorDespesasExtras, 2, ',', '.') }}
Desconto- R$ {{ number_format($valorDesconto, 2, ',', '.') }}
Total FinalR$ {{ number_format($totalFinalExpandido, 2, ',', '.') }}
|
@empty