Crie o model Natureza Operação
para criar o model NaturezaOperacoa use o comando: php artisan make:model NaturezaOperacao -m
adicione os seguintes campos:
- titulo_interno varchar(100)
- natureza_operacao varchar(120)
- tipo varchar(1)
- finNFe integer
- indPres varchar (5)
- devolucao varchar (1)
- padrao varchar(1)
Schema::create('natureza_operacaos', function (Blueprint $table) {
$table->id();
$table->string('titulo_interno',100);
$table->string('natureza_operacao',120);
$table->string('tipo',1);
$table->integer('finNFe');
$table->string('indPres', 5);
$table->string('devolucao', 1)->default('N');
$table->integer('padrao')->nullable();
$table->timestamps();
});
Crie a seed NaturezaOperacao
para criar a seed NaturezaOperacao use o comando: php artisan make:seed NaturezaOperacaoSeeder
Crie um controller de recursos chamado NaturezaOperacao, para que o projeto fique mais organizado salve o controller numa pasta chamada Cadastro
No controller NaturezaOperacaoController implemente o método index, o qual deverá:
- pegar a lista de conta corrente e colocar um array
- chamar a view NaturezaOperacao/Index com o array criado com a lista de categorias
$dados["lista"] = NaturezaOperacao::get();
return view("NotaFiscal.NaturezaOperacao.Index", $dados);
Crie a view para a listagem de natureza operação
Dentro da pasta resources/view crie uma pasta chamada de NotaFiscal e dentro de NotaFiscal crie uma outra chamada de NaturezaOperacao e dentro da pasta NaturezaOperacao crie um arquivo chamado Index.blade.php
Copie o conteúdo do arquivo lst_natureza_operacao para o arquivo NotaFiscal/NaturezaOperacao/Index.blade.php, não esqueça envolvê-lo pelos comandos:
@extends('template')
@section('conteudo')
//aqui fica o conteúdo do arquivo
@endsection
Execute seu sistema e pelo menu Natureza Operação abre a página de listagem de natureza de Operação, mas deverá está parecida com imagem abaixo
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 edição de um registro
- Configure o link para fazer a exclusão de um registro
@foreach ($lista as $l)
<tr>
<td align="center">{{ $l->id }}</td>
<td align="left">{{ $l->titulo_interno }}</td>
<td align="center">{{ $l->natureza_operacao }}</td>
<td align="center">{{ $l->finNFe }}</td>
<td align="center">{{ $l->tipo }}</td>
<td align="center">
<a href="{{ route('naturezaoperacao.tributacoes', $l->id) }}"
class="btn btn-outline-roxo d-inline-block">Tributações</a>
</td>
<td align="center"><a href="{{ route('naturezaoperacao.edit', $l->id) }}"
class="d-inline-block btn btn-verde btn-circulo btn-pequeno" title="Editar"><i
class="fas fa-edit"></i></a></td>
<td align="center">
<a href="#"
onclick="confirm('Tem Certeza?') ? document.getElementById('apagar{{ $l->id }}').submit() : '';"
class="d-inline-block btn btn-vermelho btn-circulo btn-pequeno" title="Excluir"><i
class="fas fa-trash-alt"></i></a>
<form action="{{ route('naturezaoperacao.destroy', $l->id) }}" method="POST"
id="apagar{{ $l->id }}">
@csrf
<input type="hidden" name="_method" value="DELETE">
</form>
</td>
</tr>
@endforeach
Configure os dados do formulário para inserção dos dados
Configure o elemento form da view Index, com as seguintes ações:
- Setar a rota naturezaoperacao.store na propriedade action do form
- Setar o método post na propriedade method do form
- implementar o helper @csrf dentro do form
<form action="{{ route('naturezaoperacao.store') }}" method="POST">
@csrf
configure os input atribuindo a eles na propriedade name o nome igual ao que foi definido na criação da tabela,
também observe os tipos de dados específicos e os que são obrigatórios atribua a propriedade required
<div class="col-4 mb-3">
<label class="text-label">Natureza da Operação</label>
<input type="text" required="required" name="natureza_operacao"
value="{{ isset($naturezaoperacao->natureza_operacao) ? $naturezaoperacao->natureza_operacao : old('natureza_operacao') }}"
class="form-campo">
</div>
implemente o método store para receber e salvar os dados do formulário no Banco de dados
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
try {
$req = $request->except(["_token","_method"]);
NaturezaOperacao::Create($req);
return redirect()->route('naturezaoperacao.index')->with('msg_sucesso', "Inserido com sucesso.");
} catch (\Exception $e) {
return redirect()->back()->with('msg_erro', $e->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
Teste o sistema fazendo cadastros
Configure o método edit do Controller, com as seguinte ações:
- Busque a natureza operação pelo id passado no parâmetro e guarde a informação em um array
- liste todas as naturezas de operações e guarde as informações em um array
- Chame a view Index, passando o array de dados como parâmetro
$dados["naturezaoperacao"] = NaturezaOperacao::find($id);
$dados["lista"] = NaturezaOperacao::get();
return view("NotaFiscal.NaturezaOperacao.Index", $dados);
Configure os dados do formulário para ediççao dos dados
Configure o elemento form da view Index, com as seguintes ações:
- o sistema deve verificar se o objeto naturezaoperacao existe,
- caso ele exista, no formulário deve ser configurada a rota naturezaoperacao.update
- caso não exista, no formulário deve ser configurada a rota naturezaoperacao.store
@if (isset($contacorrente))
<form action="{{ route('contacorrente.update', $contacorrente->id) }}" method="POST">
@method('put')
@else
<form action="{{ route('contacorrente.store') }}" method="POST">
@endif
na propriedade value de cada input, faça uma verificação se existe o objeto naturezaoperacao, se existir imprimir o valor do campo correspondente, senão existe imprimir o objeto old()
<div class="col-4 mb-3">
<label class="text-label">Natureza da Operação</label>
<input type="text" required="required" name="natureza_operacao"
value="{{ isset($naturezaoperacao->natureza_operacao) ? $naturezaoperacao->natureza_operacao : old('natureza_operacao') }}"
class="form-campo">
</div>
Implemente o método update 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
try {
$req = $request->except(["_token","_method"]);
NaturezaOperacao::where("id", $id)->update($req);
return redirect()->route('naturezaoperacao.index')->with('msg_sucesso', "Inserido com sucesso.");
} catch (\Exception $e) {
return redirect()->back()->with('msg_erro', $e->getMessage());
}
Faça o teste do seu sistema de forma que o mesmo consiga criar um novo registro e também alterá-lo
implemente o método destroy do Controller, com as seguinte ações:
- Busque a natureza operacao pelo id passado no parâmetro
- Caso encontre, exclua a mesma do banco, coloque esta instrução em um bloco try/catch
- redirecione para a rota index
try{
$natureza = NaturezaOperacao::find($id);
if($natureza){
$natureza->delete();
}
return redirect()->back()->with('msg_sucesso', "item apagado com sucesso.");
}catch (\Exception $e){
$cod = $e->getCode();
return redirect()->back()->with('msg_erro', "Houve um problema ao apagar [$cod]");
}
Teste o seu sistema, para que você tenha certeza que está tudo o ok, o sistema deverá:
- Listar todas as categorias
- Criar uma categoria nova
- Editar uma categoria selecionada
- Excluir uma categoria selecionada