Olá Pessoal, boa noite. estou criando um sistema para controle de estoque onde possuo uma tabela com registro com as informaçoes de todos os produtos inclusive a quantidade que entram no deposito, e outra tabela na mesma pagina para criar uma distribuição do produtos de acordo com a quantidade total armazenada. e se caso o valor da dristibuiçao ultrapasse da quantidade total do produto que o usuario receba uma mensagem de erro… talvez seja um calculo simples mais como ainda sou novo no mundo java acabo tendo dificuldade em conseguir uma solução pro problema então se alguém puder me socorrer ficarei muito agradecido.rsrs
seria tipo isso… ai os valores inserido no inputs eles teriam que ser somados e o valor da soma subitraido do total do produto selecionado e serem distribuidos nos campos da tabela Controle de Estoque
meu managerBean
package br.com.deposito.bean;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import br.com.deposito.DAO.ControleEstoqueDAO;
import br.com.deposito.DAO.ProdutoDAO;
import br.com.deposito.domain.ControleEstoque;
import br.com.deposito.domain.Produto;
@ManagedBean
@ViewScoped
public class itemDepositoBean {
private Produto produto;
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
private ControleEstoque controleEstoque;
private List<Produto> produtos;
private List<ControleEstoque> controlesEstoque;
public List<ControleEstoque> getControlesEstoque() {
return controlesEstoque;
}
public void setControlesEstoque(List<ControleEstoque> controlesEstoque) {
this.controlesEstoque = controlesEstoque;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
public ControleEstoque getControleEstoque() {
return controleEstoque;
}
public void setControleEstoque(ControleEstoque controleEstoque) {
this.controleEstoque = controleEstoque;
}
@PostConstruct
public void listar() {
try {
ProdutoDAO produtoDAO = new ProdutoDAO();
this.produtos = produtoDAO.listar();
controlesEstoque = new ArrayList<>();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar carregar Itens do deposito");
erro.printStackTrace();
}
}
public void novo() {
try {
controleEstoque = new ControleEstoque();
ProdutoDAO produtoDAO = new ProdutoDAO();
produtos = produtoDAO.listar();
controlesEstoque = new ArrayList<>();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar carregar a tela de controle de estoque");
erro.printStackTrace();
}
}
public void adicionar(ActionEvent evento) {
Produto produto = (Produto) evento.getComponent().getAttributes().get("produtoSelecionado");
ControleEstoque controleEstoque = new ControleEstoque();
controleEstoque.setEstadoItem(produto.getEstadoItem());
controleEstoque.setProduto(produto);
controlesEstoque.add(controleEstoque);
}
public void remover(ActionEvent evento) {
ControleEstoque controleEstoque = (ControleEstoque) evento.getComponent().getAttributes().get("itemSelecionado");
int achou = -1;
for (int posicao = 0; posicao < controlesEstoque.size(); posicao++) {
if (controlesEstoque.get(posicao).getProduto().equals(controleEstoque.getProduto())) {
achou = posicao;
}
}
if (achou > -1) {
controlesEstoque.remove(achou);
}
}
public void acaoProduto() {
try {
ControleEstoqueDAO controleEstoqueDAO = new ControleEstoqueDAO();
produto.getQuantidade();
controleEstoqueDAO.salvar(controleEstoque);
controlesEstoque = controleEstoqueDAO.listar();
Messages.addGlobalInfo("Funcionario salvo com sucesso");
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar salvar o funcionario");
erro.printStackTrace();
}
}
}
Pagina XHTML
<?xml version="1.0" encoding="UTF-8" ?><ui:composition xmlns=“http://www.w3.org/1999/xhtml”
xmlns:h=“http://xmlns.jcp.org/jsf/html”
xmlns:f=“http://xmlns.jcp.org/jsf/core”
xmlns:p=“http://primefaces.org/ui”
xmlns:ui=“http://xmlns.jcp.org/jsf/facelets”
template="/templates/modelo.xhtml">
<ui:define name="conteudo">
<h:form id="formListagem">
<p:panel header="Itens do Deposito">
<!-- rendered="#{itemDepositoBean.controlesEstoque.size() eq 0 }" -->
<p:dataTable id="deposito" emptyMessage="Nenhum registro encontrado."
paginator="true" var="deposito" rows="3" value="#{itemDepositoBean.produtos}"
paginatorPosition="top">
<p:column headerText="codigo" sortBy="#{deposito.codigoIndetificao}">
<h:outputText value="#{deposito.codigoIndetificao}" >
</h:outputText>
</p:column>
<p:column headerText="Produto" filterBy="#{deposito.nome}"
sortBy="#{deposito.nome}">
<h:outputText value="#{deposito.nome}" />
</p:column>
<p:column headerText="Quantidade" sortBy="#{deposito.quantidade}">
<h:outputText value="#{deposito.quantidade}" />
</p:column>
<p:column headerText="Data de Entrada"
filterBy="#{deposito.dataEntrada}"
sortBy="#{deposito.dataEntrada}">
<h:outputText value="#{deposito.dataEntrada}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-plus" actionListener="#{itemDepositoBean.adicionar}"
update=":formListagem:controleEstoque">
<f:attribute name="produtoSelecionado" value="#{deposito}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
<!--rendered="#{itemDepositoBean.controlesEstoque.size() >0}" -->
<p:panel id="painelControleEstoque" header="Controle de Estoque" >
<p:dataTable id="controleEstoque" emptyMessage="Nenhum registro encontrado."
paginator="true" value="#{itemDepositoBean.controlesEstoque}" var="deposito"
rows="4" paginatorPosition="top" update=":formListagem">
<p:column headerText="Nome">
<h:outputText value="#{deposito.produto.nome}" />
</p:column>
<p:column headerText="Estado">
<h:outputText value="#{deposito.produto.estadoItem}">
</h:outputText>
</p:column>
<p:column headerText="Disponivel">
<h:outputText value="#{deposito.produto.quantidade}" />
</p:column>
<p:column headerText="Doados">
<h:outputText value="#{deposito.doado}" />
</p:column>
<p:column headerText="Destruídos">
<h:outputText value="#{deposito.destruido}">
</h:outputText>
</p:column>
<p:column headerText=" Incorporados">
<h:outputText value="#{deposito.incorporado}">
</h:outputText>
</p:column>
<p:column headerText=" Leiloados">
<h:outputText value="#{ItemDeposito.leiloado}">
</h:outputText>
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-minus" actionListener="#{itemDepositoBean.remover}"
update=":formListagem:controleEstoque">
<f:attribute name="itemSelecionado" value="#{deposito}"/>
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
<p:panel header="Ações">
<h:panelGrid id="painelAcoes" columns="3">
<p:commandButton value="Ação"
update=":mensagem :formAcoes:Acoes" oncomplete="PF('dialogo').show();"/>
</h:panelGrid>
</p:panel>
</h:form>
<p:dialog header="Escolher uma açao" widgetVar="dialogo"
draggable="false" resizable="false" modal="false" closable="false">
<h:form id="formAcoes">
<h:panelGrid id="Acoes" columns="2">
<p:outputLabel for="produto" value="produto:" />
<p:selectOneMenu id="produto" converter="omnifaces.SelectItemsConverter" filter="true"
filterMatchMode="contains" required="true"
requiredMessage="O campo Produto é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um produto" />
<f:selectItems value="#{itemDepositoBean.produtos}" var="produto"
itemValue="#{produto}" itemLabel="#{produto.nome} - #{produto.quantidade}" />
</p:selectOneMenu>
<p:outputLabel for="doacao" value="Doação:" />
<p:inputText id="doacao" maxlength="20" size="15"
value="#{controleEstoque.doado}"
/>
<p:outputLabel for="destruidos" value="Destuidos:" />
<p:inputText id="destruidos" maxlength="20" size="15"
value="#{controleEstoque.destruido}"/>
<p:outputLabel for="incorporados" value="Incorporados:" />
<p:inputText id="incorporados" maxlength="20" size="15"
value="#{controleEstoque.incorporado}"/>
<p:outputLabel for="leiloados" value="Leiloados:" />
<p:inputText id="leiloados" maxlength="20" size="15"
value="#{controleEstoque.leiloado}"/>
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar" actionListener="#{itemDepositoBean.acaoProduto}"
update=" :formListagem:deposito :formListagem:controleEstoque :formListagem:painelAcoes"
oncomplete="PF('dialogo').hide();" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>
