public void validaItem(ItensVendas item,Vendas venda) throws ServiceBusinessException{
Integer saldo = 0;
ItensVendas oldItem;
if(item != null){
if(item.getTipoItem() == null)
throw new ServiceBusinessException("O tipo do item de compra não pode ser vazio.");
else{
if(item.isTipoInsumo()){
if(item.getInsumo() == null)
throw new ServiceBusinessException("O insumo não pode ser vazio.");
}else if(item.isTipoRacao()){
if(item.getRacao() == null)
throw new ServiceBusinessException("A ração não pode ser vazio.");
}else if(item.isTipoProduto()){
if(item.getProduto() == null)
throw new ServiceBusinessException("O produto não pode ser vazio.");
else{
if(item.getProduto().getOvos() == true && item.getTipobandeja() == null)
throw new ServiceBusinessException("O tipo de bandeja não pode ser vazio.");
}
}
}
if(containsItem(item,venda))
throw new ServiceBusinessException("Item já inserido.");
if(item.getQuantidade() == null || item.getQuantidade().equals(BigDecimal.ZERO))
throw new ServiceBusinessException("O campo quantidade não pode ser vazio.");
else{
if(item.isTipoInsumo()){
saldo = item.getInsumo().getQuantidade();
}else if(item.isTipoRacao()){
saldo = item.getRacao().getQuantidade().intValue();
}else if(item.isTipoProduto()){
saldo = item.getProduto().getQuantidade();
}
if(item.getId() != null){
oldItem = itensService.findById(item.getId());
if(item.isTipoProduto() && item.getProduto().getOvos())
saldo += (oldItem.getQuantidade().intValue() * oldItem.getTipobandeja().getQuantidade().intValue());
else
saldo += oldItem.getQuantidade().intValue();
}
if(item.isTipoInsumo()){
if(item.getQuantidade().intValue() > saldo)
throw new ServiceBusinessException("O item associado ao insumo '"+item.getInsumo().getDescricao()+"' possui saldo ("+saldo+") insuficiente.");
}else if(item.isTipoRacao()){
if(item.getQuantidade().intValue() > saldo)
throw new ServiceBusinessException("O item associado à ração '"+item.getRacao().getDescricao()+"' possui saldo ("+saldo+") insuficiente.");
}else if(item.isTipoProduto()){
if(item.getQuantidade().intValue() * item.getTipobandeja().getQuantidade().intValue() > saldo)
throw new ServiceBusinessException("O item associado ao produto '"+item.getProduto().getDescricao()+"' possui saldo ("+saldo+") insuficiente.");
}
}
if(item.getValor() == null || item.getValor().equals(BigDecimal.ZERO))
throw new ServiceBusinessException("O campo valor não pode ser vazio.");
}
}