Remoçao de item em Lista
Boa tarde galera..
Estou com o seguinte problema, talvez seja até simples, mas estou desde ontem tentando arrumar e ainda não consegui, então toda ajuda é bem vinda..
Seguinte: Eu tenho duas listas na página da venda, uma com itensVenda, e outra com maoDeObra..
A lista itensVenda, remove normalmente e funciona de acordo como eu preciso, porém a lista maoDeObra, após adicionar várias Mão de Obra, quanto tento remover alguma, ela sempre remove o primeiro item da lista..
Gostaria de alguma ajuda pra isso..
>> maodeobra.xhtml
>> VendaControle.java
Estou com o seguinte problema, talvez seja até simples, mas estou desde ontem tentando arrumar e ainda não consegui, então toda ajuda é bem vinda..
Seguinte: Eu tenho duas listas na página da venda, uma com itensVenda, e outra com maoDeObra..
A lista itensVenda, remove normalmente e funciona de acordo como eu preciso, porém a lista maoDeObra, após adicionar várias Mão de Obra, quanto tento remover alguma, ela sempre remove o primeiro item da lista..
Gostaria de alguma ajuda pra isso..
>> maodeobra.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<p:panelGrid columns="2" layout="grid" columnClasses="coluna10, coluna90">
<p:outputLabel value="Mão de Obra:" for="maodeobra"/>
<h:panelGroup>
<p:inputText id="maodeobra" value="#{vendaControle.maoDeObra.descricao}"/>
</h:panelGroup>
<p:outputLabel value="Valor:" for="valor"/>
<p:inputText id="valor"
value="#{vendaControle.maoDeObra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"/>
</p:inputText>
<p:commandButton value="Adicionar"
icon=" ui-icon-circle-triangle-s"
action="#{vendaControle.addItem2()}"
ajax="false"/>
</p:panelGrid>
<p:dataTable value="#{vendaControle.venda.maoDeObra}"
var="obra"
paginator="true" rows="5"
rowIndexVar="rowIndex"
emptyMessage="Nenhum registro encontrado">
<p:column headerText="Descrição" width="10%" style="text-align:center">
<h:outputText value="#{obra.descricao}"/>
</p:column>
<p:column headerText="Valor" width="10%" style="text-align:center">
<h:outputText value="#{obra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"
type="currency"
currencySymbol="R$"/>
</h:outputText>
</p:column>
<p:column headerText="Remover" width="20%" style="text-align:center">
<p:commandButton value="Remover"
icon="ui-icon-circle-triangle-n"
action="#{vendaControle.removeItem2(obra)}"
ajax="false"/>
</p:column>
</p:dataTable>
>> VendaControle.java
package controle;
import converter.ConverterGenerico;
import entidades.ItemVenda;
import entidades.MaoDeObra;
import entidades.Venda;
import facade.VendaFacade;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@ViewScoped
public class VendaControle implements Serializable {
private Venda venda;
@Inject
private VendaFacade vendaFacade;
private ConverterGenerico converterGenerico;
private ItemVenda itemVenda = new ItemVenda();
private MaoDeObra maoDeObra = new MaoDeObra();
public void addItem() {
try {
venda.addItem(itemVenda);
itemVenda = new ItemVenda();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void addItem2() {
try {
venda.addItem2(maoDeObra);
maoDeObra = new MaoDeObra();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void removeItem(ItemVenda i) {
venda.removeItem(i);
}
public void removeItem2(MaoDeObra m) {
venda.removeItem2(m);
}
public ConverterGenerico converter() {
if (converterGenerico == null) {
converterGenerico = new ConverterGenerico(vendaFacade);
}
return converterGenerico;
}
public void novo() {
venda = new Venda();
itemVenda = new ItemVenda();
maoDeObra = new MaoDeObra();
}
public String salvar() {
try {
venda.validar();
venda.movimenta();
vendaFacade.salvar(venda);
return "list?faces-redirect=true";
} catch (Exception ex) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
return null;
}
public String excluir(Venda v) {
vendaFacade.excluir(v);
return "list?faces-redirect=true";
}
public List<Venda> getListagem() {
return vendaFacade.listar();
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public ItemVenda getItemVenda() {
return itemVenda;
}
public void setItemVenda(ItemVenda itemVenda) {
this.itemVenda = itemVenda;
}
public MaoDeObra getMaoDeObra() {
return maoDeObra;
}
public void setMaoDeObra(MaoDeObra maoDeObra) {
this.maoDeObra = maoDeObra;
}
}
Bruno
Curtidas 0
Respostas
Bruno
25/08/2016
Boa tarde galera..
Estou com o seguinte problema, talvez seja até simples, mas estou desde ontem tentando arrumar e ainda não consegui, então toda ajuda é bem vinda..
Seguinte: Eu tenho duas listas na página da venda, uma com itensVenda, e outra com maoDeObra..
A lista itensVenda, remove normalmente e funciona de acordo como eu preciso, porém a lista maoDeObra, após adicionar várias Mão de Obra, quanto tento remover alguma, ela sempre remove o primeiro item da lista..
Gostaria de alguma ajuda pra isso..
>> maodeobra.xhtml
>> VendaControle.java
Estou com o seguinte problema, talvez seja até simples, mas estou desde ontem tentando arrumar e ainda não consegui, então toda ajuda é bem vinda..
Seguinte: Eu tenho duas listas na página da venda, uma com itensVenda, e outra com maoDeObra..
A lista itensVenda, remove normalmente e funciona de acordo como eu preciso, porém a lista maoDeObra, após adicionar várias Mão de Obra, quanto tento remover alguma, ela sempre remove o primeiro item da lista..
Gostaria de alguma ajuda pra isso..
>> maodeobra.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<p:panelGrid columns="2" layout="grid" columnClasses="coluna10, coluna90">
<p:outputLabel value="Mão de Obra:" for="maodeobra"/>
<h:panelGroup>
<p:inputText id="maodeobra" value="#{vendaControle.maoDeObra.descricao}"/>
</h:panelGroup>
<p:outputLabel value="Valor:" for="valor"/>
<p:inputText id="valor"
value="#{vendaControle.maoDeObra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"/>
</p:inputText>
<p:commandButton value="Adicionar"
icon=" ui-icon-circle-triangle-s"
action="#{vendaControle.addItem2()}"
ajax="false"/>
</p:panelGrid>
<p:dataTable value="#{vendaControle.venda.maoDeObra}"
var="obra"
paginator="true" rows="5"
rowIndexVar="rowIndex"
emptyMessage="Nenhum registro encontrado">
<p:column headerText="Descrição" width="10%" style="text-align:center">
<h:outputText value="#{obra.descricao}"/>
</p:column>
<p:column headerText="Valor" width="10%" style="text-align:center">
<h:outputText value="#{obra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"
type="currency"
currencySymbol="R$"/>
</h:outputText>
</p:column>
<p:column headerText="Remover" width="20%" style="text-align:center">
<p:commandButton value="Remover"
icon="ui-icon-circle-triangle-n"
action="#{vendaControle.removeItem2(obra)}"
ajax="false"/>
</p:column>
</p:dataTable>
>> VendaControle.java
package controle;
import converter.ConverterGenerico;
import entidades.ItemVenda;
import entidades.MaoDeObra;
import entidades.Venda;
import facade.VendaFacade;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@ViewScoped
public class VendaControle implements Serializable {
private Venda venda;
@Inject
private VendaFacade vendaFacade;
private ConverterGenerico converterGenerico;
private ItemVenda itemVenda = new ItemVenda();
private MaoDeObra maoDeObra = new MaoDeObra();
public void addItem() {
try {
venda.addItem(itemVenda);
itemVenda = new ItemVenda();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void addItem2() {
try {
venda.addItem2(maoDeObra);
maoDeObra = new MaoDeObra();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void removeItem(ItemVenda i) {
venda.removeItem(i);
}
public void removeItem2(MaoDeObra m) {
venda.removeItem2(m);
}
public ConverterGenerico converter() {
if (converterGenerico == null) {
converterGenerico = new ConverterGenerico(vendaFacade);
}
return converterGenerico;
}
public void novo() {
venda = new Venda();
itemVenda = new ItemVenda();
maoDeObra = new MaoDeObra();
}
public String salvar() {
try {
venda.validar();
venda.movimenta();
vendaFacade.salvar(venda);
return "list?faces-redirect=true";
} catch (Exception ex) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
return null;
}
public String excluir(Venda v) {
vendaFacade.excluir(v);
return "list?faces-redirect=true";
}
public List<Venda> getListagem() {
return vendaFacade.listar();
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public ItemVenda getItemVenda() {
return itemVenda;
}
public void setItemVenda(ItemVenda itemVenda) {
this.itemVenda = itemVenda;
}
public MaoDeObra getMaoDeObra() {
return maoDeObra;
}
public void setMaoDeObra(MaoDeObra maoDeObra) {
this.maoDeObra = maoDeObra;
}
}
>> Venda.java (entidade)
package entidades;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.swing.JOptionPane;
@Entity
@Table(name = "venda")
public class Venda implements Serializable, MovimentaEstoque, Validador {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ven_id")
private Long id;
@Column(name = "ven_data", nullable = false)
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date data = new Date();
@Column(name = "ven_totalfinal", nullable = false)
private BigDecimal totalfinal = BigDecimal.ZERO;
@Column(name = "ven_desconto", nullable = true)
private BigDecimal desconto = BigDecimal.ZERO;
@Column(name = "ven_tipo", nullable = false)
@Enumerated(EnumType.STRING)
private VendaTipo vendaTipo = VendaTipo.VENDA;
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "venda",
orphanRemoval = true)
private List<ItemVenda> itensVenda = new ArrayList<>();
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
mappedBy = "venda",
orphanRemoval = true)
private List<MaoDeObra> maoDeObra = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "ven_cliente", nullable = false)
private Cliente cliente;
@ManyToOne
@JoinColumn(name = "ven_funcionario")
private Funcionario funcionario;
public void addItem(ItemVenda item) throws Exception {
item.setVenda(this);
if (!itensVenda.contains(item)) {
item.setPreco(item.getProduto().getPreco());
itensVenda.add(item);
calculaTotal();
} else {
JOptionPane.showMessageDialog(null, "O produto '" + item.getProduto().getNome() + "' já está adicionado na venda");
throw new Exception("");
}
}
public void addItem2(MaoDeObra obra) throws Exception {
obra.setVenda(this);
maoDeObra.add(obra);
calculaTotal();
}
@Override
public void movimenta() throws Exception {
if (vendaTipo.equals(VendaTipo.VENDA)) {
for (ItemVenda item : itensVenda) {
item.getProduto().baixarEstoque(item.getQuantidade());
}
}
}
@Override
public void validar() throws Exception {
if (itensVenda.isEmpty() && maoDeObra.isEmpty()) {
JOptionPane.showMessageDialog(null, "Não é possivel salvar uma venda em branco");
throw new Exception("");
}
}
public void removeItem(ItemVenda item) {
itensVenda.remove(item);
calculaTotal();
}
public void removeItem2(MaoDeObra obra) {
maoDeObra.remove(obra);
calculaTotal();
}
public void calculaTotal() {
if (desconto == null || desconto.compareTo(totalfinal) >= 0) {
desconto = BigDecimal.ZERO;
}
totalfinal = BigDecimal.ZERO;
for (ItemVenda iv : itensVenda) {
totalfinal = totalfinal.add(iv.getPreco().multiply(iv.getQuantidade()));
}
for (MaoDeObra mo : maoDeObra) {
totalfinal = totalfinal.add(mo.getValor());
}
totalfinal = totalfinal.subtract(desconto);
}
public Funcionario getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public BigDecimal getTotalfinal() {
return totalfinal;
}
public void setTotalfinal(BigDecimal totalfinal) {
this.totalfinal = totalfinal;
}
public BigDecimal getDesconto() {
return desconto;
}
public void setDesconto(BigDecimal desconto) {
this.desconto = desconto;
}
public List<ItemVenda> getItensVenda() {
return itensVenda;
}
public void setItensVenda(List<ItemVenda> itensVenda) {
this.itensVenda = itensVenda;
}
public List<MaoDeObra> getMaoDeObra() {
return maoDeObra;
}
public void setMaoDeObra(List<MaoDeObra> maoDeObra) {
this.maoDeObra = maoDeObra;
}
public VendaTipo getVendaTipo() {
return vendaTipo;
}
public void setVendaTipo(VendaTipo vendaTipo) {
this.vendaTipo = vendaTipo;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + Objects.hashCode(this.id);
hash = 97 * hash + Objects.hashCode(this.itensVenda);
hash = 97 * hash + Objects.hashCode(this.maoDeObra);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Venda other = (Venda) obj;
if (!Objects.equals(this.id, other.id)) {
return false;
}
if (!Objects.equals(this.itensVenda, other.itensVenda)) {
return false;
}
if (!Objects.equals(this.maoDeObra, other.maoDeObra)) {
return false;
}
return true;
}
@Override
public String toString() {
return id.toString();
}
}
GOSTEI 0