PharmaLog

Descrição

Este projeto é um sistema de farmácia desenvolvido como parte da disciplina de Paradigmas de Linguagens de Programação. O objetivo é implementar um backend funcional utilizando Haskell e, posteriormente, Prolog, para aprender e aplicar conceitos de programação funcional e lógica.

Tecnologias Utilizadas

  • Haskell: Linguagem de programação funcional que será utilizada para a implementação inicial do backend.
  • Prolog: Linguagem de programação lógica que será utilizada na segunda fase do desenvolvimento.

Funcionalidades

ID Funcionalidade Descrição
1 CRUD de Usuário: Administrador
  • Pode criar novos usuários (administradores, gerentes, vendedores) no sistema.
  • Define as permissões e credenciais de cada novo usuário.
  • Pode visualizar todas as informações de todos os usuários.
  • Acesso completo aos dados do sistema.
  • Pode modificar as informações de qualquer usuário (dados pessoais, permissões, etc.).
  • Pode redefinir senhas e atualizar níveis de acesso.
  • Pode remover qualquer usuário do sistema.
  • Gerencia a exclusão de contas inativas ou desnecessárias.
2 CRUD de Usuário: Gerente
  • Pode criar novos usuários vendedores.
  • Define as permissões e credenciais dos vendedores criados.
  • Pode visualizar informações dos vendedores que supervisiona.
  • Acesso a relatórios e dados de vendas relacionados à sua equipe.
  • Pode modificar informações dos vendedores que supervisiona.
  • Pode atualizar metas e informações de desempenho.
  • Pode remover vendedores da sua equipe.
  • Gerencia a exclusão de contas de vendedores inativos.
3 CRUD de Usuário: Vendedor
  • Altera o status de disponibilidade do produto.
  • Permissão para alterar a quantidade disponível no estoque do produto.
  • Gera relatórios de venda.
  • Modifica informações de promoções e descontos aplicados ao produto.
  • Remove produtos descontinuados ou que não estão mais à venda.
4 CRUD de Usuário: Cliente
  • Guarda informações do cliente (Nome, idade, endereço).
  • Permite visualizar informações pessoais do cliente.
  • Atualiza informações pessoais do cliente.
  • Remove informações de clientes (se aplicável).
5 CRUD de Produto
  • Insere informações detalhadas do produto, como nome, descrição, preço, categoria, quantidade em estoque, e outras especificações relevantes.
  • Define status de disponibilidade (disponível, indisponível, em promoção, etc.).
  • Visualiza detalhes específicos de um produto, como descrições, preços, estoque disponível, e especificações técnicas.
  • Edita detalhes do produto, como nome, descrição, preço, categoria, e quantidade em estoque.
6 Gerar Relatório com Filtros
  • Vendas: Seleção de produtos vendidos dentro de um intervalo de tempo específico.
  • Possibilidade de filtrar por produto, categoria, região de venda, e cliente.
  • Inclusão de métricas como total de vendas, quantidade vendida, receita gerada, e margens de lucro.
  • Compras: Seleção de produtos comprados dentro de um intervalo de tempo específico.
  • Possibilidade de filtrar por fornecedor, produto, categoria, e região de compra.
  • Inclusão de métricas como total de compras, quantidade comprada, custos, e variação de preços.
  • Categoria de Produtos: Filtragem de produtos por categorias predefinidas.
  • Data: Seletor de data que permite escolher um intervalo de datas específicas. Possibilidade de gerar relatórios diários, semanais, mensais, trimestrais, e anuais.
7 Histórico de Compra por Cliente
  • ID da compra, data, valor total, método de pagamento.
  • Detalhes dos Itens Comprados: Nome do produto, quantidade, preço unitário, total do item.
  • Filtros de Pesquisa: Intervalo de datas, categoria de produto, valor da compra.
  • Detalhes do Pedido: Status do pedido, informações de entrega, notas do cliente.
8 Alerta de Estoque Baixo
  • Monitora e recebe notificações quando o estoque de produtos atinge níveis críticos.
  • Ajuda a evitar rupturas de estoque e a garantir que os produtos estejam sempre disponíveis para os clientes.
9 Chat com Farmacêutico/Vendedor
  • Interação em tempo real com profissionais da farmácia para obter assistência personalizada.
  • Consultas sobre preço, categoria, estoque de produtos, informações sobre o horário de funcionamento da farmácia, etc.
10 Consultas por Cliente, Fabricante, Produto
  • Consultas por Cliente: Critérios de pesquisa (nome, ID, histórico de compras), resultados detalhados (perfil, histórico de compras, total gasto).
  • Consultas por Fabricante: Critérios de pesquisa (nome, ID, tipo de produto), resultados detalhados (informações do fabricante, lista de produtos, histórico de transações).
  • Consultas por Produto: Critérios de pesquisa (nome, categoria), resultados detalhados (detalhes do produto, quantidade em estoque, vendas totais).

Como Executar o Projeto

Para executar este projeto, siga os passos abaixo:

  1. Instale o Haskell e o Stack:

    • Certifique-se de que você tenha o Haskell e o Stack instalados na sua máquina.
    • Você pode instalar o Stack seguindo as instruções em: Instalação do Stack
  2. Clone o Repositório:

    git clone https://github.com/matheusvictoor/pharmalog.git
    cd pharmalog
  3. Compile o Projeto:

    • Dentro do diretório do projeto, execute o comando abaixo para compilar:
    stack build
  4. Execute o Projeto:

    • Após a compilação, você pode executar o projeto usando:
    stack exec pharmalog

Pronto! Agora você pode utilizar o sistema Pharmalog.

Estrutura do Projeto

A estrutura do projeto é organizada da seguinte forma:

/pharmalog
├── /app
|   └── Main.hs
├── /src
|   └── /Controllers
|   |   └── MenuController.hs
|   └── /Models
|   |   ├── Client.hs
|   |   ├── Message.hs
|   |   ├── Product.hs
|   |   ├── Sale.hs
|   |   ├── User.hs
|   |   └── Chat.hs
|   └── /Services
|   |   ├── ClientService.hs
|   |   ├── ProductService.hs
|   |   ├── SaleService.hs
|   |   ├── UserService.hs
|   |   ├── SelleService.hs
|   |   ├── RelatorioService.hs
|   |   └── ChatService.hs
├── _chatDB.dat
├── _customerDB.dat
├── _productDB.dat
├── _saleDB.dat
├── _userDB.dat
├── pharmlog.cabal
├── Setup.hs
├── README.ms
└── stack.yaml

Autores
 Arthur Fernandes Falcão de Araújo - ArthurFernandes8
 Dimas Gabriel Sales Diniz - DimasGSD
 Hiago Emanuel Aires Diniz - hiagoaires
 Matheus Victor Pereira - matheusvictoor
 Rute Pereira da Silva - rutesilvva