arcadiasuite/plus/resources/views/devolucao/index.blade.php

412 lines
20 KiB
PHP

@extends('layouts.app', ['title' => 'Devoluções'])
@section('content')
<div class="mt-1">
<div class="row">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-2 mt-1">
@can('devolucao_create')
<a href="{{ route('devolucao.xml') }}" class="btn btn-danger w-100">
<i class="ri-add-circle-fill"></i>
Nova Devolução
</a>
@endcan
</div>
<div class="col-md-7"></div>
@if(__isPlanoFiscal())
<div class="col-md-3 mt-1">
<button id="btn-consulta-sefaz" class="btn btn-dark w-100" style="float: right;">
<i class="ri-refresh-line"></i>
Consultar Status Sefaz
</button>
</div>
@endif
</div>
<hr class="mt-3">
<div class="col-lg-12">
{!!Form::open()->fill(request()->all())
->get()
!!}
<div class="row mt-3 g-1">
<div class="col-md-4">
{!!Form::select('fornecedor_id', 'Fornecedor')
->attrs(['class' => 'select2'])
!!}
</div>
<div class="col-md-2">
{!!Form::date('start_date', 'Data inicial')
!!}
</div>
<div class="col-md-2">
{!!Form::date('end_date', 'Data final')
!!}
</div>
@if(__isPlanoFiscal())
<div class="col-md-2">
{!!Form::select('estado', 'Estado',
['novo' => 'Novas',
'rejeitado' => 'Rejeitadas',
'cancelado' => 'Canceladas',
'aprovado' => 'Aprovadas',
'' => 'Todos'])
->attrs(['class' => 'form-select'])
!!}
</div>
<div class="col-md-2">
{!!Form::select('tpNF', 'Tipo',
[
'1' => 'Saída',
'0' => 'Entrada',
'' => 'Todos'
])
->attrs(['class' => 'form-select'])
!!}
</div>
@endif
@if(__countLocalAtivo() > 1)
<div class="col-md-2">
{!!Form::select('local_id', 'Local', ['' => 'Selecione'] + __getLocaisAtivoUsuario()->pluck('descricao', 'id')->all())
->attrs(['class' => 'select2'])
!!}
</div>
@endif
<div class="col-lg-4 col-12">
<br>
<button class="btn btn-primary" type="submit"> <i class="ri-search-line"></i>Pesquisar</button>
<a id="clear-filter" class="btn btn-danger" href="{{ route('devolucao.index') }}"><i class="ri-eraser-fill"></i>Limpar</a>
</div>
</div>
{!!Form::close()!!}
</div>
<div class="col-md-12 mt-3">
<div class="table-responsive">
<table class="table table-striped table-centered mb-0">
<thead class="table-dark">
<tr>
<th>#</th>
<th>Fornecedor</th>
<th>CPF/CNPJ</th>
@if(__countLocalAtivo() > 1)
<th>Local</th>
@endif
<th>Número</th>
<th>Valor</th>
@if(__isPlanoFiscal())
<th>Estado</th>
<th>Ambiente</th>
@endif
<th>Data</th>
<th>Local de emissão</th>
<th>CRT</th>
<th>Tipo</th>
<th>Ações</th>
</tr>
</thead>
<tbody>
@forelse($data as $item)
<tr>
<td data-label="#"> {{ $item->numero_sequencial }} </td>
@if($item->cliente)
<td data-label="Fornecedor"><label style="width: 300px">{{ $item->cliente ? $item->cliente->razao_social : "--" }}</label></td>
<td data-label="CPF/CNPJ"><label style="width: 150px">{{ $item->cliente ? $item->cliente->cpf_cnpj : "--" }}</label></td>
@else
<td data-label="Fornecedor"><label style="width: 300px">{{ $item->fornecedor ? $item->fornecedor->razao_social : "--" }}</label></td>
<td data-label="CPF/CNPJ"><label style="width: 150px">{{ $item->fornecedor ? $item->fornecedor->cpf_cnpj : "--" }}</label></td>
@endif
@if(__countLocalAtivo() > 1)
<td data-label="Local" class="text-danger">{{ $item->localizacao ? $item->localizacao->descricao : '' }}</td>
@endif
<td data-label="Número">{{ $item->numero ? $item->numero : '' }}</td>
<td data-label="Valor">{{ __moeda($item->total) }}</td>
@if(__isPlanoFiscal())
<td data-label="Estado">
@if($item->estado == 'aprovado')
<span class="btn btn-success text-white btn-sm">Aprovado</span>
@elseif($item->estado == 'cancelado')
<span class="btn btn-danger text-white btn-sm">Cancelado</span>
@elseif($item->estado == 'rejeitado')
<span class="btn btn-warning text-white btn-sm">Rejeitado</span>
@else
<span class="btn btn-info text-white btn-sm">Novo</span>
@endif
</td>
<td data-label="Ambiente">{{ $item->ambiente == 2 ? 'Homologação' : 'Produção' }}</td>
@endif
<td data-label="Data">{{ __data_pt($item->created_at) }}</td>
<td data-label="Local de emissão">
@if($item->api)
<span class="text-success">API</span>
@else
<span class="text-primary">Painel</span>
@endif
</td>
<td data-label="CRT">
@if($item->crt == 1)
<span class="text-info">Simples Nacional</span>
@elseif($item->crt == 2)
<span class="text-primary">Simples Nacional, excesso sublimite de receita bruta</span>
@elseif($item->crt == 3)
<span class="text-primary">Regime Normal</span>
@endif
</td>
<td data-label="Tipo">
@if($item->tpNF)
<span class="text-success">Saída</span>
@else
<span class="text-primary">Entrada</span>
@endif
</td>
<td>
<form action="{{ route('devolucao.destroy', $item->id) }}" method="post" id="form-{{$item->id}}" style="width: 360px">
@method('delete')
@csrf
@if($item->estado == 'cancelado')
<a class="btn btn-danger btn-sm" target="_blank" href="{{ route('nfe.imprimir-cancela', [$item->id]) }}">
<i class="ri-printer-line"></i>
</a>
@endif
@if($item->estado == 'aprovado')
<button type="button" onclick="imprimir('{{$item->id}}', '{{$item->numero}}')" class="btn btn-primary btn-sm" title="Imprimir NFe">
<i class="ri-printer-line"></i>
</button>
<a title="Baixar XML" class="btn btn-sm btn-dark" href="{{ route('nfe.download-xml', [$item->id]) }}">
<i class="ri-download-line"></i>
</a>
@can('nfe_transmitir')
<button title="Cancelar NFe" type="button" class="btn btn-danger btn-sm" onclick="cancelar('{{$item->id}}', '{{$item->numero}}')">
<i class="ri-close-circle-line"></i>
</button>
<button title="Corrigir NFe" type="button" class="btn btn-warning btn-sm" onclick="corrigir('{{$item->id}}', '{{$item->numero}}')">
<i class="ri-file-warning-line"></i>
</button>
@endcan
@endif
@if($item->estado == 'aprovado' || $item->estado == 'rejeitado')
<button title="Consultar status" type="button" class="btn btn-dark btn-sm" onclick="info('{{$item->motivo_rejeicao}}', '{{$item->chave}}', '{{$item->estado}}', '{{$item->recibo}}')">
<i class="ri-file-line"></i>
</button>
@endif
@if($item->estado == 'novo' || $item->estado == 'rejeitado')
@can('devolucao_edit')
<a class="btn btn-warning btn-sm" href="{{ route('devolucao.edit', $item->id) }}">
<i class="ri-edit-line"></i>
</a>
@endcan
@if(__isPlanoFiscal())
<a target="_blank" title="XML temporário" class="btn btn-light btn-sm" href="{{ route('nfe.xml-temp', $item->id) }}">
<i class="ri-file-line"></i>
</a>
@endif
@can('devolucao_delete')
<button title="Remover devolução" type="button" class="btn btn-danger btn-sm btn-delete"><i class="ri-delete-bin-line"></i></button>
@endcan
@if(__isPlanoFiscal())
@can('nfe_transmitir')
<button title="Transmitir NFe" type="button" class="btn btn-success btn-sm" onclick="transmitir('{{$item->id}}')">
<i class="ri-send-plane-fill"></i>
</button>
@endcan
@endif
@endif
@if($item->estado == 'aprovado' || $item->estado == 'cancelado')
<button title="Consultar NFe" type="button" class="btn btn-light btn-sm" onclick="consultar('{{$item->id}}', '{{$item->numero}}')">
<i class="ri-file-search-line"></i>
</button>
@endif
@if(__isPlanoFiscal())
@can('devolucao_edit')
<a title="Alterar estado fiscal devolução" class="btn btn-dark btn-sm" href="{{ route('nfe.alterar-estado', [$item->id, 'tipo=devolucao']) }}">
<i class="ri-arrow-up-down-line"></i>
</a>
@endcan
@endif
@if($item->estado != 'aprovado')
<a class="btn btn-danger btn-sm" title="DANFE Temporária" target="_blank" href="{{ route('nfe.danfe-temporaria', [$item->id]) }}">
<i class="ri-printer-fill"></i>
</a>
@endif
</form>
</td>
</tr>
@empty
<tr>
<td colspan="13" class="text-center">Nada encontrado</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<br>
{!! $data->appends(request()->all())->links() !!}
</div>
<h5 class="mt-2">Soma: <strong class="text-success">R$ {{ __moeda($data->sum('total')) }}</strong></h5>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal-print" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Imprimir NFe <strong class="ref-numero"></strong></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12 col-lg-4">
<button type="button" class="btn btn-success w-100" onclick="gerarDanfe('danfe')">
<i class="ri-printer-line"></i>
DANFE
</button>
</div>
<div class="col-12 col-lg-4">
<button type="button" class="btn btn-primary w-100" onclick="gerarDanfe('simples')">
<i class="ri-printer-line"></i>
DANFE Simples
</button>
</div>
<div class="col-12 col-lg-4">
<button type="button" class="btn btn-dark w-100" onclick="gerarDanfe('etiqueta')">
<i class="ri-printer-line"></i>
DANFE Etiqueta
</button>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal-cancelar" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Cancelar NFe <strong class="ref-numero"></strong></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
{!!Form::text('motivo-cancela', 'Motivo')
->required()
!!}
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Fechar</button>
<button type="button" id="btn-cancelar" class="btn btn-danger">Cancelar</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal-corrigir" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Corrigir NFe <strong class="ref-numero"></strong></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
{!!Form::text('motivo-corrigir', 'Motivo')
->required()
!!}
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Fechar</button>
<button type="button" id="btn-corrigir" class="btn btn-warning">Corrigir</button>
</div>
</div>
</div>
</div>
@endsection
@section('js')
<script type="text/javascript">
function info(motivo_rejeicao, chave, estado, recibo) {
if (estado == 'rejeitado') {
let text = "Motivo: " + motivo_rejeicao + "\n"
text += "Chave: " + chave + "\n"
swal("", text, "warning")
} else {
let text = "Chave: " + chave + "\n"
text += "Recibo: " + recibo + "\n"
swal("", text, "success")
}
}
$('#btn-consulta-sefaz').click(() => {
$.post(path_url + 'api/nfe_painel/consulta-status-sefaz', {
usuario_id: $('#usuario_id').val(),
empresa_id: $('#empresa_id').val()
})
.done((res) => {
let msg = "cStat: " + res.cStat
msg += "\nMotivo: " + res.xMotivo
msg += "\nAmbiente: " + (res.tpAmb == 2 ? "Homologação" : "Produção")
msg += "\nverAplic: " + res.verAplic
swal("Sucesso", msg, "success")
})
.fail((err) => {
try {
swal("Erro", err.responseText, "error")
} catch {
swal("Erro", "Algo deu errado", "error")
}
})
})
</script>
<script type="text/javascript" src="js/nfe_transmitir.js"></script>
@endsection