Introdução

O projeto aqui documentado foi desenvolvido em C# Windows Forms ao longo de aproximadamente 3 (três) meses.

Login

login img
Figura - Tela de login

A tela de login é a primeira tela que dará boas-vindas ao usuário.

O login é feito com o uso do id do funcionário juntamente com a senha correspondente.

O id do funcionário é gerado automaticamente com o cadastro do funcionário e a senha é criada pelo funcionário com acesso tipo gerente no momento do cadastro.

A senha fica armazenada no banco de dados com a função hash md5.

Acessos

Os funcionarios são separados em 4(quatro) tipos de acessos, sendo eles:

Em sequência cada tipo de acesso será explicado em maiores detalhes, também sendo possível navegar para um tópico desejado ao clicar em um dos links na lista acima.

Todos os acessos possuem um botão sair no canto superior esquerdo que permite retornar a tela de login.

img botão sair
Figura - botão sair

Todos os acessos que possuem uma barra de pesquisa possuem também uma tooltip, ou dica de ferramenta, presente no botão de pesquisa com a imagem de lupa, que informará ao usuário pelo que será pesquisado.

img tooltip
Figura - tooltip

Gerência

O acesso de tipo gerência é o acesso de nível mais alto e tem como principal característica gerenciar desde funcionarios e clientes a produtos e fornecedores.

Outra característica do acesso gerência é a possibilidade de visualizar entradas removidas com a utilização da tecla de atalho F2 (tecla função 2), as entradas removidas são aquelas que tiveram seu status alterado de ativas para inativas no banco de dados, o que as isola do funcionamento restante do sistema.

Clique nos submenus da imagem abaixo para visualizar um exemplo de seus dados.

Figura - Menu gerência

SubMenus:

Os submenus do acesso gerência possuem um atributo Status que como poderá ser observado nas figuras fica desabilitado e com o valor travado como ativo durante o cadastro de um novo item, isso ocorre pois o status inativo só é utilizado para itens que não se deseje remover do funcionamento normal do sistema.

  • Menus: Fecha o submenu atualmente aberto.

  • Funcionários: Mostra uma lista de funcionários, sendo possível adicionar, remover e atualizar entradas e pesquisar funcionários por nome.

    img adicionar funcionário
    Figura - formulário para adicionar e atualizar funcionarios.
  • Fornecedores: Mostra uma lista de fornecedores, sendo possível adicionar, remover e atualizar entradas e pesquisar fornecedores por nome ou descrição.

    img adicionar fornecedor
    Figura - formulário para adicionar e atualizar fornecedores.
  • Clientes: Mostra uma lista de clientes, sendo possível adicionar, remover e atualizar entradas e pesquisar clientes por nome.

    Para o cliente é possível adicionar múltiplos tipos de contatos para acompanhar a rápida mudança de meios de comunicação usados informalmente.

    A adição de contatos é feita ao informar primeiramente o tipo do contato (ex: telefone, celular ou e-mail ) e então o contato em si.

     img adicionar cliente
    Figura - formulário para adicionar e atualizar clientes
  • Produtos: Mostra uma lista de produtos, sendo possível adicionar, remover e atualizar entradas e pesquisar produtos por nome.

     img adicionar produto
    Figura - formulário para adicionar e atualizar produtos.
  • Devoluções: Mostra uma lista de notas, sendo possível adicionar (somente quando o caixa está aberto, pela nota emitida ser constada junto ao movimento geral do caixa) e remover entradas, não sendo possivel no entanto atualizar notas ja emitidas. É possível pesquisar notas por data de emissão ou id.

    Para criar uma nota é necessário primeiramente escolher o tipo de movimento. No caso do tipo de movimento ser Recebimento será necessário informar o id da ordem referente a venda. No caso de Estornos de débito e crédito será necessário informar o id do movimento do caixa referente. Nos demais, a caixa de texto que seria usada para informar o id permanece desabilitada.

    A caixa de diálogo para criação de notas também possui uma caixa numérica para informar o valor pago pelo cliente, sendo usado normalmente no caso de pagamento em dinheiro para calcular o troco (este valor informado não é salvo no banco de dados e serve apenas ao propósito de facilitar o cálculo do troco).

    A principal função desse menu é a possibilidade de realizar devoluções ao desativar uma nota.

     img adicionar nota
    Figura - formulário para adicionar notas.
  • Categorias: Mostra uma lista de categorias de produtos, sendo possível adicionar, remover e atualizar entradas e pesquisar categorias por nome.

     img adicionar categoria
    Figura - formulário para adicionar e atualizar categorias.
  • Formas de pagamento: Mostra uma lista de formas de pagamento, sendo possível adicionar, remover e atualizar entradas e pesquisar formas de pagamento por nome.

     img adicionar forma de pagamento
    Figura - formulário para adicionar e atualizar formas de pagamento.

Estoque

O acesso de tipo estoque é responsável por registrar a entrada e a saída de produtos do estoque.

A entrada de produtos é registrada informando o ID e a quantidade do produto que está sendo recebido pelo estoque.

Para a identificação do ID do produto desejado o estoquista tem acesso a visualização do catálogo de produtos assim como a lista de fornecedores registrados.

A saida de produtos é registrada selecionando os itens que estão sendo retirados do estoque e dando a eles sua data de saída(data atual do registro).

É possível selecionar multiplos itens ao clicar e arrastar itens em série que se dese selecionar, ou, alternativamente ao clicar enquanto segurando o botão "Alt" do teclado para selecionar múltiplos itens separados.

Não é possível no entanto registrar a saída de um item que ja tenha a mesma registrada.

É possível pesquisar o estoque por nome ou id do produto, id do estoque ou por data de entrada ou saída, e os produtos e fornecedores por nome ou id.

Clique nos submenus da imagem abaixo para visualizar um exemplo de seus dados.

Figura - Menu estoque

Caixa

O acesso tipo caixa tem como responsabilidades abrir e fechar o caixa (limitado a uma vez ao dia), realizar o cadastro e a atualização do cadastro de clientes e registrar movimentos monetários do caixa como notas, pagamentos e sangrias.

Os submenus: cadastrar, historico e fechar caixa abrem seus subformulários no painel a direita, demais submenus abrem caixas de dialogo.

Figura - Menu caixa

SubMenus:

  • Menus: Fecha o submenu atualmente aberto.

  • Nota: O formulário utiilzado pelo caixa é o mesmo utilizado pelo acesso gerência no submenu de devoluções, com a exceção de não possuir a altoridade para alterar os estatus da nota.

    Para criar uma nota é necessário primeiramente escolher o tipo de movimento. No caso do tipo de movimento ser Recebimento será necessário informar o id da ordem referente a venda. No caso de Estornos de débito e crédito será necessário informar o id do movimento do caixa referente. Nos demais, a caixa de texto que seria usada para informar o id permanece desabilitada.

    A caixa de diálogo para criação de notas também possui uma caixa numérica para informar o valor pago pelo cliente, sendo usado normalmente no caso de pagamento em dinheiro para calcular o troco (este valor informado não é salvo no banco de dados e serve apenas ao propósito de facilitar o cálculo do troco).

     img adicionar nota
    Figura - formulário para adicionar notas.
  • Cadastrar: Realiza o cadastro de clientes. Utiliza do mesmo subformulário que o cadastro de clientes do submenu de clientes do acesso gerência.

  • Atualizar Cadastro: É possivel atualizar o cadastro de um cliente ao informar seu id de cliente o que abrirá o subformulário para informar as alterações.

    img atualizar cadastro de clientes
    Figura - caixa de diálogo para informar o id do cliente que deseje atualizar.
  • Pesquisar ID: É possivel pesquisar o ID de um cliente cadastrado ao informar o seu documento.

    img pesquisar id
    Figura - caixa de diálogo para pesquisar o id
  • Histórico: Possibilita a visualização dos históricos dos movimentos do caixa, de notas, e de fechamentos do caixa.

    É possível pesquisar movimentos do caixa por observação, id ou data do movimento, notas por data de emissão e fechamentos por data do fechamento, funcionario responsável por abertura ou fechamento ou por observação.

  • Abrir Caixa: Realiza a abertura do caixa.

    img abrir caixa
    Figura - caixa de dialogo para informar o saldo inicial do dia.
  • Fechar Caixa: Realiza o fechamento do caixa. Sendo possível a visualização do total de capital movimentado no dia, separado por tipo de movimento, além de informar o total contado no final do dia para comparação de erros.

Vendedor

O papel do acesso vendedor é gerar ordens de vendas que depois deverão ser emitidas como notas pelo caixa.

Para adicionar itens á lista de itens da ordem é necessário primeiramente gerar uma nova ordem, sendo possivel (mas não necessário) informar o cliente que está fazendo o pedido ao informar o documento do cliente e pesquisar sua existência no banco de dados de clientes já cadastrados.

Tanto o cliente quanto a observação da ordem podem ser informados antes ou depois da criação de uma nova ordem, que tem seus dados atualizados ao criar uma nova ordem e ao imprimir os dados da mesma.

No caso de um fechamento repentido do sistema, a última ordem fechada antes de ser encerrada é retomada.

É possível pesquisar produtos pelo nome ou id do produto.

Figura - Menu vendedor

Funções:

  • Imprimir:

    A função de imprimir atualiza a ordem de venda atual e permite a impressão do id da ordem juntamente ao total a ser pago. Tal ordem deverá ser então levada pelo cliente para o caixa para realizar o pagamento.

    img impressão
    Figura - Prévia de impressão da ordem.
  • Descartar:

    Esta função descarta a ordem atual, apagando a do sistema e devolvendo os produtos que estavam nela de volta ao sistema de estoque.

Banco de dados

O banco de dados utilizado neste projeto é o MySQL.

Abaixo segue o diagrama geral do banco de dados utilizado pelo projeto.

Figura - diagrama do banco de dados do projeto gerado automaticamente pelo MySQL.

Servidor

Para que o sistema tenha o efeito esperado na empresa alvo, faz-se necessário o atendimento aos seguintes requerimentos:

Uma topologia simples de redes de computadores, com as máquinas conectadas a um switch e posteriormente ao servidor do banco de dados da aplicação.

img servidor
Figura - exemplo de topologia de servidor.
Menus Funcionarios Fornecedores Clientes Produtos Devoluções Categorias Formas de Pagamento Sair produtos fornecedores saida entrada sair menus notas cadastrar atualizar pesquisarid historico fecharcaixa sair imprimir descartar sair