Crie o model Dfe
para criar o model Dfe use o comando: php artisan make:model Dfe -m
adicione os seguintes campos:
Schema::create('dves', function (Blueprint $table) {
$table->id();
$table->string('chave', 44);
$table->string('nome', 100)->nullable();
$table->string('documento', 20)->nullable();
$table->decimal('valor', 10, 2)->nullable();
$table->string('num_prot', 20)->nullable();
$table->string('data_emissao', 25)->nullable();
$table->integer('sequencia_evento')->nullable();
$table->boolean('fatura_salva')->nullable();
$table->integer('tipo')->nullable();
$table->integer('nsu')->nullable();
//1 => ciencia, 2 => confirmação, 3 => desconhecimento, 4 => operação não realizada
$table->timestamps();
});
no model Dfe crie um método chamado estado que retorna o estado de acordo com o tipo
public function estado(){
if($this->tipo == 0){
return "--";
}else if($this->tipo == 1){
return "Ciência";
}else if($this->tipo == 2){
return "Confirmada";
}else if($this->tipo == 2){
return "Desconhecimento";
}else if($this->tipo == 2){
return "Operação não realizada";
}
}
Crie um controller chamado DfeController, para que o projeto fique mais organizado salve o controller numa pasta chamada NotaFiscal
No controller DfeController crie o método index, o qual deverá:
- pegar a lista de emitentes e colocar um array
- chamar a view NotaFiscal/Dfe/Index com o array criado com a lista de dfes
public function index()
{
$dados["emitentes"] = Emitente::get();
$dados["lista"] = Dfe::get();
return view("NotaFiscal.Dfe.Index", $dados);
}
Crie a view para a listagem de categoria
Copie o conteúdo do arquivo lst_dfe para o arquivo NotaFiscal/Dfe/Index.blade.php, não esqueça envolvê-lo pelos comandos:
@extends('template')
@section('conteudo')
//aqui fica o conteúdo do arquivo
@endsection
Na view Index, faça os seguintes procedimentos:
- Faça o loop para receber os dados do banco e listar na tabela
- configure o link para fazer a manifestação
- Configure o link para fazer a edição de um registro
- Configure o link para fazer a exclusão de um registro
<?php $total = 0; ?>
@foreach ($lista as $c)
<tr>
<td align="center">{{ $c->id }}</td>
<td align="center">{{ $c->fornecedor->razao_social ?? '---' }}</td>
<td align="center">{{ $c->chave }}</td>
<td align="center">{{ databr(dataNfe($c->dhEmi)) }}</td>
<td align="center">{{ formataNumeroBr($c->vProd) }} </td>
<td align="center">{{ formataNumeroBr($c->vFrete) }} </td>
<td align="center">{{ formataNumeroBr($c->vDesc) }} </td>
<td align="center">{{ formataNumeroBr($c->vICMS) }} </td>
<td align="center">{{ formataNumeroBr($c->vIPI) }} </td>
<td align="center">{{ formataNumeroBr($c->vPIS) }} </td>
<td align="center">{{ formataNumeroBr($c->vCOFINS) }} </td>
<td align="center">{{ formataNumeroBr($c->vNF) }} </td>
<td align="center">
<a href="" class="btn btn-azul d-inline-block" title="Visulizar Produtos"><i
class="fas fa-eye "></i></a>
<a href="" class="btn btn-vermelho d-inline-block" title="Excluir"><i
class="fas fa-eye"></i></a>
<a href="" class="btn btn-vermelho d-inline-block" title="Excluir"><i
class="fas fa-trash"></i></a>
</td>
</tr>
@endforeach
Abra o arquivo NotaFiscal/Dfe/Index.blade.php e Configure os dados do formulário para nova consulta
popule os dados do componente select listando os emitentes
<div class="col-6 mb-3">
<span class="text-label text-branco">Emitentes</span>
<select class="form-campo" name="cnpj">
@foreach ($emitentes as $emitente)
<option value="{{ $emitente->cnpj }}">{{ $emitente->cnpj }} -
{{ $emitente->razao_social }}</option>
@endforeach
</select>
</div>
implemente o método novaConsulta para receber e fazer um nova consulta
Implemente o método store de forma que o mesmo receba os dados do formulário e salve no banco de dados, caso ache necessário use um bloco try/catch
$req = $request->except(["_token"]);
try {
Categoria::Create($req);
return redirect()->route("categoria.index")->with("msg_sucesso", "Registro Inserido com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
Uma boa prática de programação é validar os dados antes de enviá-los para o banco de dados e uma bom recurso que o laravel oferece são os requests.
implemente um request de forma que faça todas as validações necessárias para salvar a informações no banco
No método store troque o parâmetro Request para CategoriaRequest
public function store(CategoriaRequest $request)
{
$req = $request->except(["_token"]);
try {
Categoria::Create($req);
return redirect()->route("categoria.index")->with("msg_sucesso", "Registro Inserido com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
}
Teste o sistema fazendo cadastros