Exemple #1
0
bool compareProdutos(Produto pa, Produto pB) // o mesmo que compareNames so que para produtos
{
	if (pa.getNome() < pB.getNome()) {
		return true;
	}
	else return false;
}
void Negocios_Estoque::ExcluirProduto(std::string nomeProduto){
    Produto Produto;
    
    try{
        Produto.ExcluirProduto(nomeProduto);
    }catch(ErroEstoque &exp){
        throw(ErroNegocios_Estoque(exp.what()));
    }
}
Carrinho::Carrinho(){
	produtos = new Pilha<Produto*>();
	int qtd = (rand() % 100) + 2;
	for(int i = 0; i < qtd; i++){
		Produto* produto = new Produto();
		valorTotalDeCompras += produto->getValor();
		produtos->add(produto);
	}
}
void Negocios_Estoque::AtualizaQuantProduto(std::string produto, int novaQuant){
    Produto Produto;
    
    try{
        Produto.AtualizaQuantProduto(produto, novaQuant);
    }catch(ErroEstoque &exp){
        throw(ErroNegocios_Estoque(exp.what()));
    }
}
int Negocios_Estoque::CalculaQuant(std::string nomeProduto, int quantretirada){
   std::list<Produto> listAuxProd;
   Produto Produto;
   
    
    try{
        Produto.BuscarProduto(listAuxProd, nomeProduto);
    }catch(ErroEstoque &exp){
        ErroNegocios_Estoque(exp.what() + ">Erro ao cacular quantidade retirada");
    } 
   
    
    return listAuxProd.front().getQuantidade() - quantretirada;
}
Exemple #6
0
void LerCompras(string arquivo, Maps *mapas)
{
	vector<vector<string> > dados = Ler(arquivo.c_str());
	for(vector<string>& data : dados)
	{
		if(data.empty()) continue;
		Fornecedor *forn = mapas->fornecedorId(atoi(data.at(1).c_str()));
		Produto *prod = mapas->produtoId(atoi(data.at(3).c_str()));
		int quant = atoi(data.at(4).c_str());
		prod->setEstoqueAtual(quant);
		forn->setDivida(quant * prod->getCusto());
	}
	return;
}
Exemple #7
0
void Venda::calc_lucro_receita(map<int, Venda> mapa_v,
		map<int, Produto> mapa_p, Produto& p) {
	double lucro = 0;
	double receita = 0;

	for(auto& v : mapa_v) {
		if(p.get_codigo() == (v.second).get_produto()) {
			lucro = lucro + (v.second).lucro(mapa_p);
			receita = receita + (v.second).receita(mapa_p);
		}
	}
	p.set_lucro_receita(lucro, receita);

}
void Negocios_Estoque::RetiraQuantProduto(std::string nomeProduto, int quant){
    Produto Produto;
    float media;
    int novaquant;
    
    try{
        media = this->CalculaMedia(nomeProduto, quant);
        novaquant = this->CalculaQuant(nomeProduto, quant);
        Produto.RetiraQuantProduto(nomeProduto, novaquant, media);
    }catch(ErroNegocios_Estoque &exp){
        
    }catch(ErroEstoque &exp){
        throw(ErroNegocios_Estoque(exp.what()));
    }
}
bool Prod_validade::produto_c_validade(Produto prod) {
	int dias = prod.get_dias_embalado();
	if (dias <= VALIDADE)
		return true;
	else
		return false;
}
float Negocios_Estoque::CalculaMedia(std::string nomeProduto, int quant){
    std::list<Produto> listAuxProd;
    Produto Produto;
    
    
    try{
        Produto.BuscarProduto(listAuxProd, nomeProduto);
    }catch(ErroEstoque &exp){
        ErroNegocios_Estoque(exp.what() + ">Erro ao cacular media de consumo");
    }
    
    
    return (listAuxProd.front().getMedia() + quant)/2;
    
    
}
void Produto_ant::insere(Produto & p){
	HASH_PRODS::iterator it = tab_produtos.find(p);
	while(it != tab_produtos.end()){
		if((*it) != p && p.get_dias_embalado() >= DOIS_ANOS)
			tab_produtos.insert(p);

		it++;
	}
}
void Negocios_Estoque::BuscarProduto(std::list<Produto> &listProduto, std::string nomeProduto){
    Produto Prod;
    std::list<Produto> listAuxProd;
    
    try{
        Prod.BuscarProduto(listAuxProd, nomeProduto);
    }catch(ErroEstoque &exp){
        throw(ErroNegocios_Estoque(exp.what()));
    }
    
    if(!listAuxProd.empty()){
    listAuxProd.front().setDias(this->CalculaDias(listAuxProd.front().getQuantidade(), listAuxProd.front().getMedia()));
        
    listProduto.push_back(listAuxProd.front());
     
    listAuxProd.pop_front();
    }
}
/**
 * Função que adiciona ao vector de produtos "carrinho" um novo produto.
 * @param p1 objecto do tipo Produto que vai ser adicionado ao vector
 */
void Compra::adic_ao_carrinho(Produto p1) {
	int tam_vec = carrinho.size();
	for (int i = 0; i < tam_vec; i++) {
		if (p1.get_cod() == carrinho[i].get_cod())
			return;
		else
			carrinho.push_back(p1);
	}
}
Exemple #14
0
int Venda::prod_vendidos(Produto p, map<int, Venda> mapa_v){
	int saldo = 0;
	for(auto& v : mapa_v){
		if(p.get_codigo() == (v.second).produto){
			saldo = saldo + (v.second).quantidade;
		}
	}
	return saldo;
}
void Hipermercado::adiciona_produto(Produto p1) {
	int tam_vec = produtos.size();
	if(produtos.size() == 0)
		produtos.push_back(p1);
	else{


	for (int i = 0; i < tam_vec; i++) {
		if (p1.get_nome() == produtos[i].get_nome()) //quer dizer que esse empregado já se encontra no vector
			return;
		else
			produtos.push_back(p1);
	}
}
}
Exemple #16
0
void LerVendas(std::string arquivo, Maps* mapas, std::vector<MeioPagamento*>* MPs)
{
	vector<vector<string> > dados = Ler(arquivo.c_str());
	for(vector<string>& data : dados)
	{
		int corr = 0;
		if(data.empty()) continue;
		char MP = data.at(data.size()-1).at(0);
		if(MP != 'F') corr = -1;
		Produto *prod = mapas->produtoId(atoi(data.at(2+corr).c_str()));
		int quant = atoi(data.at(3+corr).c_str());
		if(MP == 'F')
		{
			Cliente *clt = mapas->clienteId(atoi(data.at(0).c_str()));
			clt->setDivida(quant * prod->getPreco());
		}

		prod->setEstoqueAtual(-quant);
		prod->setVendidos(quant);
		MPs->at(MeioPagamento::getNum(MP))->addReceita(prod->getPreco()*quant, (prod->getPreco()-prod->getCusto())*quant);
	}
	return;
}
Exemple #17
0
bool Produto::operator ==(Produto p) {
    return nome == p.getNome() && classe == p.getClass();
}
Exemple #18
0
void Produto::operator =(Produto p) {
    setNome(p.getNome());
    setQuantidade(p.getQuantidade());
    setValorUnit(p.getValorUnit());
    setClasse(p.getClass());
}