forum icon indicating copy to clipboard operation
forum copied to clipboard

Vários produtos em uma NF

Open doug993 opened this issue 8 years ago • 8 comments

Descrição Geral do Problema

Pessoal, desculpe se a dúvida parece besta, mas estou iniciando em Laravel e estou fazendo um sisteminha para controle de epi's, acontece que quando os relacionamentos são normais, consegui realizar sem problemas, mas por exemplo, na NF de entrada, eu gostaria de selecionar vários produtos, dentro da model de produto e de NF já tenho os relacionamentos, mas não sei como permitir seleciona-los e colocar suas quantidades e valores no create.blade, pesquisei algumas coisas no google, mas não encontrei uma solução plausível.

Agradeço os amigos desde já.

Abordagem

Você já tentou alguma solução, descreva aqui.


Atualização 1

O meu create.blade está assim: `@extends('app') @section('content')

Novo Recebimento

    @if ($errors->any())
        <ul class="alert alert-danger">
            @foreach($errors->All() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    @endif

    {!! Form::open(['route' => 'recebimento.store']) !!}
    <div class="from-group">
        {!! Form::label('quantidade', 'Quantidade: ') !!}
        {!! Form::number('quantidade', null, ['class'=>'form-control']) !!}
    </div>
    <div class="from-group">
        {!! Form::label('vlr_unitario', 'Valor Unitário: ') !!}
        {!! Form::number('ca', null, ['class'=>'form-control']) !!}
    </div>
    <div class="from-group">
        {!! Form::label('validade', 'Validade: ') !!}
        {!! Form::date('validade', null, ['class'=>'form-control']) !!}
    </div>
    <div class="from-group">
        {!! Form::label('estoque_min', 'Estoque Mínimo: ') !!}
        {!! Form::number('estoque_min', null, ['class'=>'form-control']) !!}
    </div>


    <div class="from-group">
        {!! Form::submit('Criar Recebimento', ['class'=>'btn btn-primary']) !!}
    </div>
    {!! Form::close() !!}
</div>

@endsection`


Solução

Se o problema foi resolvido, adicione uma seção de solução como essa

doug993 avatar Oct 20 '17 10:10 doug993

Eu já fiz isso em Java com o Grails Framework, mas a ideia é a mesma. Procure por formulários mestre detalhe que você terá a resposta. O princípio básico é que os nomes dos campos precisarão vir em array. Ex.: <input type="text" name"quantidade[]"/>

solracnet avatar Oct 20 '17 12:10 solracnet

@doug993 não consegui captar o que você precisa. Tenta exemplificar melhor.

roquesz avatar Oct 20 '17 13:10 roquesz

roquesz eu preciso em um recebimento poder cadastrar vários produtos.

Exemplo, uma NF de entrada, mas com vários itens nela.

solracnet você não tem nenhum exemplo em Laravel para que eu possa me basear?

Lembrando que tenho que ver como inserir os dados no BD também.

doug993 avatar Oct 20 '17 14:10 doug993

Sendo ainda mais específico, gostaria que pudesse criar várias linhas, pegando o produto_id e outros parâmetros do recebimento como está no código acima.

doug993 avatar Oct 20 '17 14:10 doug993

Eu fiz para uma tela de permissões e para um único campo, mas a ideia é a mesma.

@forelse($permissions as $obj) <input type="checkbox" name="permissao_id[]" value="{{$obj->id}}"/> @empty em branco, sem campo @endforelse

No controller assim eu tenho um método para atualizar assim:

public function updatePermissions($id, Request $request) { $ids = $request->get("permission_id"); // isso aqui já te retorna um array com todos os valores vindos do html

$role->perms()->sync($ids); // isso aqui é por causa de um ManyToMany ou hasMany sei lá como você conhece relacionamento de muitos para muitos. kkkkkkk }

Só isso.

solracnet avatar Oct 20 '17 15:10 solracnet

Certo, isso mesmo sendo FK? No meu caso eu puxo o produto_id de outra tabela...

doug993 avatar Oct 20 '17 15:10 doug993

@doug993 cria um input que recebe um array de quantidades ( <input type="text" name"quantidades[]"/> ) e no PHP faz um foreach para inserir os valores do array de quantidades recebidos. Isso é comum ocorrer em tabela ternária (NxN)

rmsaitam avatar Oct 20 '17 15:10 rmsaitam

@doug993 tu vai colocar um hidden de name produto_id[] com o value do seu produto. quando submeter o formulário, você vai ter varios arrays com os id's dos produtos, quantidade, valor unitario, etc... ai vc trata pra fazer as inserções

Se você quiser agrupar os arrays por produto, é só fazer o seguinte: <input type="text" name"produto[PRODUTO_ID]['quantidade'][]"/> <input type="text" name"produto[PRODUTO_ID]['vlr_unitario'][]"/>

isso vai gerar uma matrix tipo essa: Array( [produto] => Array( [1] => Array( ['quantidade'] => Array([0] => 1) ['vlr_unitario'] => Array([0] => 2,50) ) [2] => Array( ['quantidade'] => Array([0] => 4) ['vlr_unitario'] => Array([0] => 8,90) ) ) )

roquesz avatar Oct 20 '17 17:10 roquesz