-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
public static void removerProduto(Produto producto){
List<Produto> produtosDoCodigo;
boolean removerDoEstoque = false;
String codigo=producto.getCodigo();
double quantidade=producto.getQuantidade();
if(estoque.containsKey(codigo)){
produtosDoCodigo = estoque.get(codigo);
p = produtosDoCodigo.get(0);
if (produtosDoCodigo.get(0) instanceof ProdutoUnitario) {
double temp = quantidade;
for (int i = 0; i < quantidade; i++) {
if(produtosDoCodigo.size() > 0 && temp > 0) {
produtosDoCodigo.remove(produtosDoCodigo.get(0));
//System.out.println("Removendo um produto de codigo: " + codigo);
temp--;
}
else {
//System.out.println("ATENÇÃO! O estoque desse produto acabou: " + p.getNome());
removerDoEstoque = true;
break;
}
}
}
else if (p instanceof ProdutoQuilo){
ProdutoQuilo pdtQuilo = ObtenhaProdutoQuiloTemporario(p);
double peso = pdtQuilo.getQtdQuilos() - quantidade;
removerDoEstoque = peso <= 0 ? true : false;
pdtQuilo.setQtdQuilos(peso);
produtosDoCodigo.clear();
produtosDoCodigo.add(pdtQuilo);
}
if (removerDoEstoque) {
Utilitario.ImprimaMensagem("* ATENÇÃO! O estoque desse produto acabou: " + p.getNome() +" *");
estoque.remove(codigo);
}
else{
estoque.put(codigo, produtosDoCodigo);
}
}else{
Utilitario.ImprimaMensagem("* ATENÇÃO! Produto com o código " + codigo + " não encontrado *");
}
System.out.println();
}
public static boolean produtoParaCompra(Produto producto){
//Verifica se existe o produto no estoque e se possui a quantidade esperada
boolean retorno = false;
List<Produto> produtosDoCodigo = null;
String codigo= producto.getCodigo();
double quantidade= producto.getQuantidade();
boolean validarQuantidade=producto.isValidarQuantidade();
if(EstoqueDeProdutos.estoque.containsKey(codigo)){
produtosDoCodigo = estoque.get(codigo);
if(produtosDoCodigo.get(0) instanceof ProdutoUnitario){
if(produtosDoCodigo.size() >= quantidade){
retorno = true;
}else{
if (validarQuantidade) {
Utilitario.ImprimaMensagem("* Infelizmente só possuimos "+produtosDoCodigo.size()+" unidades *");
retorno = false;
}
else{
retorno = true;
}
}
}
if(produtosDoCodigo.get(0) instanceof ProdutoQuilo){
ProdutoQuilo prodKg = (ProdutoQuilo) produtosDoCodigo.get(0);
if(prodKg.getQtdQuilos() >= quantidade){
retorno = true;
}else{
if (validarQuantidade) {
Utilitario.ImprimaMensagem("* Infelizmente só temos "+prodKg.getQtdQuilos()+" KG deste produto! *");
retorno = false;
}
else{
retorno = true;
}
}
}
}else{
Utilitario.ImprimaMensagem("* Produto Indisponível! *");
retorno = false;
}
return retorno;
}
public static void exibirEstoqueCliente(){
Produto p = null;
Utilitario.ImprimaMensagem("* PRODUTOS DISPONÍVEIS *");
Iterator listasDeCodigos = EstoqueDeProdutos.estoque.keySet().iterator();
int quantidade = 0;
double quilos = 0;
while (listasDeCodigos.hasNext()) {
String codigo = (String)listasDeCodigos.next();
Iterator produtos = estoque.get(codigo).iterator();
boolean mostrarNomeProduto = true;
while (produtos.hasNext()) {
p = (Produto)produtos.next();
if (mostrarNomeProduto) {
System.out.println("Código: " + codigo);
System.out.println("Produto: " + p.getNome());
mostrarNomeProduto = false;
}
if (p instanceof ProdutoQuilo) {
ProdutoQuilo pdt = (ProdutoQuilo)p;
System.out.println("Quilos: " + pdt.getQtdQuilos() + "kg\n");
}
quantidade++;
}
if (p instanceof ProdutoUnitario) {
System.out.println("Quantidade em estoque = " +quantidade + "\n");
}
quantidade = 0;
}
System.out.println();
}
public abstract class Produto {
private String nome;
private String codigo;
private double valor;
private double quantidade;
private boolean validarQuantidade;
public double getQuantidade() {
return quantidade;
}
public void setQuantidade(double quantidade) {
this.quantidade = quantidade;
}
public boolean isValidarQuantidade() {
return validarQuantidade;
}
public void setValidarQuantidade(boolean validarQuantidade) {
this.validarQuantidade = validarQuantidade;
}
public Produto(String codigo, String nome, double valor,double quantidade,boolean validarQuantidade) {
this.nome = nome;
this.codigo = codigo;
this.valor = valor;
this.quantidade=quantidade;
this.validarQuantidade=validarQuantidade;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public abstract double calcularValor(double qtd);
}
Metadata
Metadata
Assignees
Labels
No labels