Controle de Estoque Alphatec

Transcrição

Controle de Estoque Alphatec
Centro Estadual de Educação Tecnológica Paula Souza
GOVERNO DO ESTADO DE SÃO PAULO
Etec “IRMÃ AGOSTINA”
TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO
EM
INFORMÁTICA DE NÍVEL MÉDIO
André Luiz de Souza
Douglas Gama da Silva
Ilbis Candido Silva
João Paulo Coelho da Silva
Robson de Carvalho Mota
Wellington de C. Faustino de Oliveira
Controle de Estoque
AlphaCE
São Paulo / SP
2012
Controle de Estoque
AlphaCE
Trabalho de Conclusão de Curso
apresentado como pré-requisito para
obtenção do diploma Técnico de Nível
Médio em Informática.
Professor Orientador
João Carlos Lima e Silva
São Paulo / SP
2012
2
André Luiz de Souza
Douglas Gama da Silva
Ilbis Candido Silva
João Paulo Coelho da Silva
Robson de Carvalho Mota
Wellington de C. Faustino de Oliveira
Controle de Estoque
AlphaCE
Este Trabalho de Conclusão de Curso foi julgado e aprovado para obtenção do
certificado, no Curso de Técnico de Informática, da Escola Técnica Estadual Irmã
Agostina de São Paulo.
São Paulo, _______ de _________________ de 2012.
Professor: João Carlos Lima e Silva
Coordenador do Curso de Técnico de Informática
Banca Examinadora
___________________
Prof.
_____________________
Prof.
Orientador
___________________
Prof.
_____________________
Prof.
3
[Agradecemos primeiramente a Deus por mais esta
etapa da vida. Também, a família, amigos, aos
colegas de sala, professores e orientador que
participaram de mais esta fase de nossas vidas].
4
“A dúvida é o principio da sabedoria.”
Aristóteles
5
RESUMO
Controle de estoque é o procedimento adotado para registrar, fiscalizar e
gerir a entrada e saída de mercadorias e produtos da empresa. O Controle de
estoque deve ser utilizado tanto para matéria-prima, mercadorias produzidas e/ou
mercadorias vendidas.
Projeto sobre a elaboração de um sistema de controle de estoque, onde
procuramos inovar perante o programa que é utilizado em uma microempresa de
informática.
Essa microempresa de informática atende a vendas de peças e
computadores em geral e também, manutenção. Para controle de estoque utilizam
um programa que tem uma falha importante, não controla a baixa de estoque. Fazse a venda ou manutenção e quando finalizado no sistema, o mesmo não baixa do
estoque.
Em vista dessa questão, concluímos que seria interessante um sistema que
fizesse a baixa em estoque. Mas, junto viriam outras opções como entrada de nota,
relatórios e assim, um sistema completo.
Levamos em consideração o modelo de negócio dessa microempresa para
atender a demanda e atender as expectativas.
Palavras-chave: Controle de estoque; Modelagem controle de estoque;
Função do controle de estoque;
6
Sumário
INTRODUÇÃO...........................................................................................................09
1 - A EMPRESA.........................................................................................................11
1.1 - ESTRUTURA E FUNCIONAMENTO.................................................................11
1.2 - APLICAÇÃO ATUAL.........................................................................................11
1.3 – ATUAL ESTRUTURA DE CONTROLE............................................................11
2 - FUNCIONAMENTO DE CONTROLE DE ESTOQUE...........................................13
2.1 – FUNÇÃO DO CONTROLE DE ESTOQUE.......................................................13
2.2 – OBJETIVO DO CONTROLE DE ESTOQUE....................................................13
2.3 – POLÍTICA DE ESTOQUE.................................................................................14
2.4 – PRINCÍPIOS BÁSICOS PARA O CONTROLE DE ESTOQUES.....................14
3 - LEVANTAMENTO DE REQUISITOS...................................................................16
3.1 – CRONOGRAMA................................................................................................16
3.2 – DECLARAÇÃO DE ESCOPO...........................................................................20
3.3 – WBS..................................................................................................................23
4 – MODELAGEM LÓGICA.......................................................................................24
4.1 – DIAGRAMA DE CASO DE USO.......................................................................24
4.2 – DIAGRAMA DE CLASSE.................................................................................25
4.3 – MER – MODELO DE ENTIDADE E RELACIONAMENTO..............................26
5. – DESENVOLVIMENTO DA APLICAÇÃO............................................................27
5.1 - SCRIPT DO BANCO DE DADOS.....................................................................28
5.2 – TELAS DO PROGRAMA ALPHACE................................................................34
5.2.1.1 – TELA DE LOGIN.........................................................................................34
5.2.1.2 – CÓDIGOS DA TELA DE LOGIN ................................................................35
5.2.2.1 – TELA DE ALTERAÇÃO DE SENHA..........................................................37
5.2.2.2 – CÓDIGOS DA TELA DE ALTERAÇÃOD E SENHA..................................37
5.2.3.1 – TELA DE SERVIÇOS(MENU PRINCIPAL)................................................39
5.2.3.2 – CÓDIGOS DA TELA DE SERVIÇOS(MENU PRINCIPAL)........................39
5.2.4.1 – TELA DE CADASTRO DE GERAL............................................................41
5.2.4.2 – CÓDIGOS DA TELA DE CADASTRO GERAL..........................................41
5.2.5.1 – TELA DE CARGO.......................................................................................42
5.2.5.2 – CÓDIGOS DA TELA DE CARGO...............................................................42
5.2.6.1 – TELA DE SERVIÇOS..................................................................................44
7
5.2.6.2 – CÓDIGO DA TELA DE SERVIÇOS............................................................44
5.2.7.1 – TELA DE CADASTRO TIPO DE CLIENTES..............................................46
5.2.7.2 – CÓDIGOS DO CADASTRO TIPO DE CLIENTES......................................46
5.2.8.1 – TELA DE CADASTRO DE CLIENTES.......................................................47
5.2.8.2 – CÓDIGO DA TELA DE CADASTRO DE CLIENTES.................................48
5.2.9.1 – TELA DE CADASTRO DE FUNCIONÁRIO...............................................56
5.2.9.2 – CÓDIGO DA TELA DE CADASTRO DE FUNCIONÁRIOS.......................57
5.2.10.1 – TELA DE CADASTRO DE FORNECEDOR.............................................66
5.2.10.2 – CÓDIGO DA TELA DE CADASTRO DE FORNECEDOR.......................68
5.2.11.1 – TELA DE ESTOQUE.................................................................................76
5.2.12.1 – TELA DE OS.............................................................................................76
5.2.12.2 –CÓDIGO DA TELA DE OS........................................................................78
5.2.13.1 – TELA DE CADASTRO DE PRODUTOS..................................................79
5.2.13.2 – CÓDIGO DA TELA DE PRODUTOS........................................................80
5.2.14.1 – TELA DE VENDAS...................................................................................84
6. REQUISITOS MÍNIMOS.........................................................................................85
CONCLUSÃO............................................................................................................86
REFERÊNCIA BIBLIOGRÁFICA...............................................................................87
GLOSSÁRIO..............................................................................................................88
8
Introdução
O percentual de pequenas e micro empresa informatizadas no estado de São
Paulo cresceu 30% nos últimos cinco anos, porém, 53% dessas empresas ainda não
se adaptaram ao computador, contra as 47% informatizadas. Os dados são de uma
pesquisa divulgada pelo SEBRAE/SP, realizada no ano de 2003, com 1.163
empresas paulistas. Como mostra gráfico abaixo:
Fonte: SEBRAE/SP 2003
Essa informação mostra que, é notória que micro e pequenas empresas têm,
mesmo que aos poucos, procurado se informatizar. O mesmo acontece com as
micropequenas empresas no ramo de informática que são facilmente encontradas
em vários lugares, como por exemplo, na zona sul do Estado de São Paulo que é a
região da empresa que efetuamos a pesquisa. Algumas microempresas no ramo de
informática são encontradas na região e isso promove a competitividade. É de se
esperar
que
micropequenas
empresas
tenham
suas
particularidades
em
administração por ter porte dos mais variados, sendo que, na microempresa de
pequeno porte, o empresário tem que ter um “conhecimento” para poder administrar
bem o negócio. Uma das formas de se manter essa microempresa funcional é ter um
sistema de gestão que ajude a manter o fluxo, por exemplo, de entradas, saídas e
vendas.
Para um dono ou gerente de empresa que precisa estar sempre controlando o
que entra e o que sai do estoque, uma das dicas que deve ser seguida é conseguir
9
um bom e confiável sistema que lhe auxilie na administração de todo o material de
forma que ele consiga ainda realizar suas outras funções.
Fazendo uma pesquisa em sites de internet, empresários são apresentados
aos mais novos e eficientes sistemas que existem atualmente no mercado. Você
encontra desde gratuitos a pagos através de uma quantia simples que pode ser
interpretada como investimento.
Caso o empresário não saiba direito como operar o sistema de controle de
estoque, existem ainda muitos sites disponíveis explicando detalhadamente como
proceder com todo tipo de operação que o pacote do sistema traz junto.
Além disso, antes de adquirir o sistema, o empresário pode escolher em que
tipo de arquivo deseja o pacote, podendo optar sempre pelo tipo de arquivo que ele
possua maior afinidade e lhe apresente os resultados de forma que ele possa
interpretá-los da melhor maneira possível. Sistemas de controle de estoque existem
muitos, sendo possível escolher aquele que lhe agrade mais, como por exemplo, o
SIE que é um sistema para controle de estoque e O.S, o Restages 2.6.0 que
gerencia bar e restaurantes, há espaço para novos programas e complementos, pois
quanto mais moderno melhor. Atendendo especificamente a um modelo de negócio,
que no caso é para microempresa no ramo de informática, há mercado para este
tipo de programa.
Utilizamos como estudo de caso uma micro-pequena empresa no ramo de
informática, a Laser Informática, onde fizemos uma pesquisa no sistema instalado
para controle de estoque e, a partir daí, desenvolvemos esse projeto, o AlphaCE,
pois atualmente a empresa encontra-se com problemas na administração de seu
estoque.
O nome AlphaCE, alpha = primeiro em grego e CE = controle de estoque,
surgiu como projeto do grupo para essa empresa, não de forma comercial. A
principal necessidade é incorporar o controle de estoque, pois de acordo com o
levantamento efetuado, a empresa sofre com o problema de não ter registro no
sistema da saída do item, e como consequência, não tem como acompanhar a
quantidade do item que ainda há em estoque.
Utilizando dessa dificuldade que a microempresa enfrenta com o sistema, o
objetivo foi verificarmos a possibilidade de fazer um programa que seja mais
completo, para atender a necessidade de baixa de estoque e ter um sistema usual.
10
1. A Empresa
A empresa atua no ramo de informática desde 1997, foi idealizada por um
técnico descontente com a empresa onde trabalhava.
Resolveu assim fundar a micro empresa de informática onde há 16 anos,
presta os serviços de manutenção em micros, monitores, impressoras, notebook e
conta também com venda direta no balcão de vários produtos sendo eles, por
exemplo, placas de rede, placa mãe, teclado, mouse, entre outros itens.
1.1
Estrutura e Funcionamento
Consolidada há 15 anos no mercado, atualmente possui 5 funcionários, sendo
3 técnicos de informática, 1 recepcionista e 1 administrador/responsável pela área
comercial.
Com essa estrutura, atende em média 130 clientes / mês, de segunda a sexta
feira, sendo atendimentos a domicílio e atendimento no balcão da loja.
Oferece os serviços de manutenção de micros e instalação de software.
Empresa é localizada no bairro Vila Emir, São Paulo/SP, tendo como
estrutura 4 cômodos, sendo separados por laboratório, recepção, estoque e área de
descarte de dejetos. A loja tem em torno de 200m².
1.2
Aplicação Atual
Atualmente utiliza um sistema de gestão de estoque que é o Sistema
Aplicativos Comercias e Ordem de Serviço versão 2002. Fizemos o nosso projeto a
partir desse sistema.
Sistema de gestão de estoque que controla entradas de notas, estoque atual,
relatórios e emite ordem de serviço, mas quando há saída do estoque, o sistema não
registra a saída de um determinado produto.
1.3
Atual Estrutura de Controle
Foi detectada uma falha durante o ano de 2005 no controle de saída de peças
do estoque. A empresa desenvolvedora do software foi contatada, não houve
retorno e, por consequência, até a presente data não foi solucionado o problema,
Um exemplo do problema encontrado pela empresa é quando um cliente
deixa um microcomputador para manutenção e o técnico da empresa verifica que
tem que haver a troca de uma peça.
É gerada a ordem de serviço, posteriormente o técnico faz o conserto e a
recepcionista fecha a ordem de serviço. É gerado o boleto para pagamento.
11
Cliente efetua o pagamento, mas essa venda não gera uma movimentação de
saída de estoque. Uma falha grave, pois não tem como confiar nesse sistema para
fazer um abastecimento de estoque com peças para serem repostas.
12
2. Funcionamento de Controle de Estoque
Controle de estoque é o procedimento adotado para registrar, fiscalizar e gerir
a entrada e saída de mercadorias e produtos da empresa. O Controle de estoque
deve ser utilizado tanto para matéria-prima, mercadorias produzidas e/ou
mercadorias vendidas.
É uma área muito importante de uma empresa, grande ou pequena, pois é
através dele que ela será capaz de prever o quanto que será necessário comprar no
próximo pedido ao fornecedor, além de fornecer informações úteis sobre as vendas.
2.1 Funções do controle de estoque
A administração do controle de estoque deve minimizar o capital total
investido em estoques, pois ele é caro e aumenta continuamente, uma vez que, o
custo financeiro também se eleva. Uma empresa não poderá trabalhar sem estoque,
pois, sua função amortecedora entre vários estágios de produção vai até a venda
final do produto.
O controle de estoque é de suma importância para a empresa, sendo que se
controlam os desperdícios, desvios, apuram-se valores para fins de análise, bem
como, apura o demasiado investimento, o qual prejudica o capital de giro.
Quanto maior é o investimento, também maior é a capacidade e a
responsabilidade de cada setor da empresa.
Os objetivos dos departamentos de compras, de produção, de vendas e
financeiro, deverão ser conciliados pela administração de controle de estoques, sem
prejudicar a operacionalidade da empresa. A responsabilidade da divisão de
estoques já é antiga; os materiais caem sobre o almoxarife, que zela pelas
reposições necessárias.
Na administração moderna, a responsabilidade dos estoques fica sob um
setor de estoque, que o gerencia. Os departamentos tradicionais ficam livres desta
responsabilidade e podem dedicar-se à sua função primária.
13
2.2
Objetivos do Controle de Estoque
O objetivo do controle de estoque é aperfeiçoar o investimento em estoque,
aumentando o uso dos meios internos da empresa, diminuindo as necessidades de
capital investido.
O estoque do produto acabado, matéria-prima e material em processo não
serão vistos como independentes. Todas as decisões tomadas sobre um dos tipos
de estoque influenciarão os outros tipos. Às vezes acabam se esquecendo dessa
regra nas estruturas de organização mais tradicionais e conservadoras.
O controle de estoque tem também o objetivo de planejar, controlar e
replanejar o material armazenado na empresa.
2.3
Políticas de Estoque
A administração geral da empresa deverá determinar ao departamento de
controle de estoque, o programa de objetivos a serem atingidos, isto é, estabelece
certos padrões que sirvam de guias aos programadores e controladores e também
de critérios para medir o desenvolvimento do departamento.
Estas políticas são diretrizes que, de maneira geral, são as seguintes:
a) Metas de empresas quando a tempo de entrega dos produtos ao cliente;
b) Definição do número de depósitos de almoxarifados e da lista de materiais
a serem estocados nele;
c) Até que nível deverá flutuar os estoques para atender uma alta ou baixa
demanda ou uma alteração de consumo;
d) As definições das políticas são muito importantes ao bom funcionamento
da administração de estoques.
2.4
Princípios Básicos para o Controle de Estoques
Para se organizar um setor de controle de estoque, inicialmente deveremos
descrever suas principais funções:
a) Determinar o que deve permanecer em estoque. Número de itens;
b) Determinar quando se deve reabastecer o estoque. Prioridade;
c) Determinar a quantidade de estoque que será necessário para um período
pré-determinado;
d) Acionar o departamento de compras para executar a aquisição de estoque;
e) Receber, armazenar e atender os materiais estocados de acordo com as
necessidades;
14
f) Controlar o estoque em termos de quantidade e valor e fornecer
informações sobre sua posição;
g) Manter inventários periódicos para avaliação das quantidades e estados
dos materiais estocados;
h) Identificar e retirar do estoque os itens danificados.
Existem determinados aspectos que devem ser especificados, antes de se
montar um sistema de controle de estoque.
Um deles refere-se aos diferentes tipos de estoques existentes em uma
fábrica. Os principais tipos encontrados em uma empresa industrial são: matériaprima, produto em processo, produto acabado e peças de manutenção.
15
3. Levantamento de Requisitos
Neste capítulo objetivamos mostrar o que fizemos para nos organizar
utilizando o cronograma, WBS e escopo.
3.1 Cronograma
Neste capítulo temos como objetivo mostrar como foram as reuniões sobre o
tcc.
Agosto/11
Reuniões para definição do grupo;
Funções de cada integrante;
Escolha do tema;
Custo do trabalho;
Inicio do desenvolvimento do trabalho;
Tema já definido;
Reuniões agendadas com o nosso orientador Ismael;
Todos integrantes deverão comparecer as reuniões.
Setembro/11
Mais reuniões com orientador;
Encontro do grupo para fechar os trabalhos de agosto sem alteração;
Avaliação do orientar do trabalho e tema feito ate setembro;
Pesquisa de campo;
Inicio das pesquisas cientificas e de dados;
Finalizar as pesquisas cientifica e de dados;
Agendamento de outra reunião.
Outubro/11
Inicio da parte pratica do programa;
Criação das tabelas;
Criação dos diagramas;
Avaliação do orientador;
Melhorar tabelas pós-avaliação;
Melhorar diagramas pós-avaliação;
Finalizar o desenvolvimento da UML e DER;
16
Passar para o DBdesigner;
Iniciar a criação do banco em Mysql;
Avaliação final das tabelas e banco com orientador;
Iniciar a criação do programa;
Desenvolver relatório do trabalho realizado.
Novembro/11
Reunião com o orientador Ismael;
Avaliação do que foi feito ate agora;
Fazer as correções;
Entregar TCC e o DER para avaliação final do semestre;
Nova reunião com o orientar para poder informar sua avaliação sobre o
desenvolvimento do trabalho;
Desenvolver a pesquisa de campo;
E, escolha de um ícone para o trabalho.
Apresentação em PowerPoint para o professor João;
Esboço das telas em visual Studio;
Reunião do grupo para avaliar o uso das ferramentas no desenvolvimento do
tcc.
Dezembro/11 e Janeiro/12
Contato do grupo somente via e-mail, para troca de informação, ideias,
atualizações no conteúdo e no trabalho.
Fevereiro/12
Iniciar com uma reunião entre o grupo;
Definições do projeto;
Novo nome para o projeto;
Primeiras telas do programa;
Reunião para atualização de tcc e melhorias do projeto;
Revisão dos diagramas e relatórios.
Março/12
Apresentação do relatório do tcc;
17
Reunião de grupo em sala com professor;
Melhorar tcc e desenvolvimento da programação;
Agendar reunião com o orientador;
Finalizar relatório para entregar aos professores;
Abril/12
Finalizar banco;
Finalizar criação de tabelas;
Reuniões em grupo;
Reuniões com orientador;
Reuniões com professores em sala de aula;
Finalizar telas do programa;
Verificar sua funcionalidade;
Correções;
Avaliação do orientador e dos professores de sala sobre o trabalho
apresentado.
Maio/12
Reuniões com orientador sobre apresentação para a pré-banca;
Melhorar e atualizar dados de apresentação;
Apresentação do trabalho em PowerPoint;
Avaliação da pré-banca;
Revisões e correções finais do projeto;
Reunião do grupo para avaliações finais;
Projeto funcionando por completo;
Considerações finais;
Nova reunião com orientador sobre dicas de apresentação.
Junho/12
Reunião do grupo;
Todo o trabalho finalizado;
Funcionalidade do sistema no ar;
Entrega;
Apresentação a Banca;
18
Reunião final grupo e orientador.
19
3.2 Declaração de escopo
Neste capítulo estamos apresentado à declaração de escopo do projeto.
Produto final
Controle de estoque - AlphaCE
Objetivos,
problemas a
resolver
Software para controle de estoque, com o objetivo de dar à micro
empresa uma ferramenta de fácil manuseio e que atenda as
expectativas para um ótimo controle de estoque
Posicionamento
estratégico
Projeto que atende a área de informática das micro e pequenas
empresas.
Descrição do
produto
(briefing)
Software que utiliza Mysql e visual basic como ferramentas.
Principal
diferencial a ser
explorado
Produto de fácil manuseio e com fácil instalação. Bem
atualizado.
Subprodutos e
serviços
adicionais
Funções de cadastro de clientes, fornecedor, pagamento (cartão,
boleto, cheques), endereço, ordem de serviço e outros itens.
Características
especiais do
produto para o
cliente final
Uma funcionalidade melhor e prestar um melhor atendimento ao
cliente. Ser mais rápido.
Produtos do
projeto
- Construção da ideia
- Definição do tema
- Definição de tarefas
- Começo de esboço das opções do sistema
- Desenho dos diagramas
- Diário de bordo e tcc
- Utilizando Mysql e Visual Studio 2010
- Telas e Banco de dados
- Testes e Correções
- Finalizando processos
- Apresentação
Comunicação
para o projeto
Integrantes do projeto: André, Douglas, Ilbis, João Paulo, Robson
e Wellington.
Comunicação por email e reuniões em aula, matéria TCC.
Mudanças
estruturais
necessárias (na
organização, no
ambiente de
publicação)
Depois que definido o tema, não houve maiores mudanças de
estrutura em relação ao projeto. Somente aperfeiçoando a ideia
para ter um programa que faça o que é proposto.
Durante o processo, 2 integrantes entraram no grupo.
Troca de orientador.
20
Aquisições
necessárias
Até o momento não foi identificado à necessidade para aquisição
de algo a mais para o funcionamento do sistema.
Premissas,
ressalvas,
observações
A questão sobre site do produto está sendo levando em
consideração. Primeiramente, estaremos oferecendo para a
primeira empresa, e a partir daí, fazer um marketing mais
avançado sobre o produto. Estamos cogitando a possibilidade da
criação de um site..
Métodos para
verificar os
resultados
Para o lançamento: A realização de testes de usabilidade e de
funcionalidade pela equipe de projeto pode homologar o site para
lançamento. A partir da funcionalidade e aceitação por parte
dessa primeira empresa, avançaremos para outras demais.
Para o negócio:.O administrador do programa terá acesso a
vendas, resultados, relatórios. Compararemos com o programa
anterior e teremos uma noção do que melhorar para entrar no
mercado de programas de controle de estoque.
Revisão deste
plano de projeto
Revisado 12/06/2012
Final da arquit.
da informação
Junho/2012
Lançamento da
versão beta
Versão beta 12/06/2012
Lançamento do
produto
Versão final julho/2012
21
3.3 WBS (Work Breakdown Structure)
Neste capitulo o objetivo e mostrar como ficou a organização do grupo, por
meio do WBS.
Controle de Estoque
Alphatec
Controle Estoque
Funcionando
Desenvolvimento
Projeto
Relatório/
Apresentação TCC
Testes de
Sistema
WBS e
Cronograma
Distribuição das
Tarefas
Visual do Banco
de Dados
(Visual Studio)
Escopo do
Projeto
Planejamento
Banco Dados
(MySQL)
Diagrama de
Classes
e Caso de Uso
Discussão Tema
Script do Banco
de Dados
DER/MER
Inicio do
Projeto
22
4. Modelagem Lógica
A finalidade deste capítulo é demonstrar a interação que queremos que o
sistema tenha entre o cliente e a empresa/funcionário e assim, determinar a
interação entre eles.
4.1 Diagramas de Caso de Uso
No capitulo mostramos a interação sistema / cliente e determinar o melhor
para esse ciclo.
System
Consultar
Supervisionar func
Passar orçamento
Excluir clientes
Gerente
Tecnico
Consertar
Fechar OS
Excluir equipamentos
Relatorio
Abrir o caixa
Cadastro de clientes
Cadastro de equip
Registrar entrada equip.
Atendente
Receber pagamento
Fechar o caixa
23
4.2 Diagrama de Classe
No diagrama de classe, visualizamos as opções que queremos que haja no
sistema. Dividimos em parte 1 e 2 para melhor visualização: Parte 1
24
Parte 2
25
4.3
MER- Modelo de Entidade Relacional
Fazer o modelo de entidade relacional nos ajudou a representar um modelo
conceitual de negócio.
N
1
Telefone
Contato
1
Fornecedor
N
Entrega
Produto
N
1
1
N
Recibo
1
Quantidade
Localização
Contato
Confirmação
Pagamento
N
1
1
Item_venda
1
Contato
1
Endereço
Local
Cliente
1
N
Pagamento
1
Produto
N
1
1
1
Tipo
Pagamento
Venda
Localização
1
1
1
N
1
Funcionário
Prestação
Serviço
1
Emissão
Comprovante
1
1
1
Escolha
Pagamento
Escolha
Pagamento
N
N
1
N
Ocupação
Escolha
Pagamento
Dependente
Ordem de Serviço
Cartão
Boleto
1
N
Serviço
Cheque
1
N
Cargo
Filhos
N
Equipamento
26
5. Desenvolvimento da aplicação
O sistema terá diversas opções de funcionamento, mas dentre todas essas
opções, o maior objetivo da nossa criação desse trabalho é fazer o controle de
estoque para uma micro empresa, e conforme a dificuldade encontrada na empresa
do nosso levantamento de dados, registrar as baixas na saída de um produto ou na
emissão de uma ordem de serviço, ter um controle de estoque.
O sistema terá todos os itens e produtos oferecidos por essa empresa
cadastrados.
Os usuários deverão fazer um cadastro, onde será criado um login e senha e
a partir daí, terá acesso ao sistema. Senha de uso pessoal.
Os clientes serão cadastrados onde será criado um banco de dados para um
melhor controle e auxilio na administração dessa empresa e criar um histórico.
Assim, haverá uma maior proximidade com os clientes sabendo informações e
facilitando o contato com eles.
Esse sistema terá como parte integrada do controle do estoque as vendas,
forma de pagamentos, cadastro pessoa física e jurídica, acesso restrito de usuário e
tendo um administrador do sistema, que fará com que um usuário comum não faça
alterações no sistema.
Terá emissões de ordem de serviço quando for prestado um atendimento a
um cliente, com descrição do serviço oferecido e prestado no caso de venda
descrição do produto vendido, horário, data, nome do prestador do serviço, um
código da ordem de serviço.
Oferecerá, também, diversas formas de pagamento no sistema como:
dinheiro, cheque e cartão. Forma de pagamento a ser escolhida pelo cliente.
E, o cliente com essa ordem em mãos, quando for efetuar o pagamento, a
recepcionista poderá usar o código dessa ordem de serviço para constatar os dados
e já emitir no próprio sistema as formas de pagamento desse cliente e finalizar a
prestação do serviço, facilitando assim, uma melhor gestão administrativa da
contabilidade da empresa com dados mais precisos.
Isso se o cliente ou a empresa desejar ter separadamente as ordens de
serviços, pois o sistema emitirá, diretamente por um e-mail corporativo, um número
desse código com os dados do cliente como nome, RG e telefone de contato para
que a recepcionista constate os dados e, assim, emitir no próprio sistema as formas
27
de pagamento desse cliente e finalizar a prestação do serviço em uma só ordem de
serviço, diminuindo custos com a impressão de folhas, tendo em vista a consciência
ambiental.
Alem dos acessos de usuário comum e usuário administrador, cadastros de
clientes.
O sistema também terá alteração de cadastro, exclusão ou inativação de
cadastro, atualização de cadastro, efetuara novos cadastros e terá um banco de
dados.
5.1 Scripts do Banco de Dados
Create database AlphaCE
Create table Telefone
(codtelefone int primary key not null,
Telefone varchar (13),
Celular varchar (13),
FAX varchar (13));
Create table Endereco
(codendereco int primary key not null,
Logradouro varchar (50),
Numero Varchar (7),
Complemento varchar (50),
CEP varchar (9),
Bairro varchar (30),
Cidade Varchar (20),
Estado Varchar (2));
Create table PJuridica
(codpjuridica int primary key not null,
Razao_social varchar (30),
CNPJ varchar (18),
IE varchar (13));
28
Create table Pfisica
(codpfisica int primary key not null,
RG varchar (12),
CPF varchar (14));
Create Table Cargo
(Codcargo int auto_increment primary key not null,
funcao varchar (50));
Create Table Cliente
(Codcliente int auto_increment primary key not null,
Nome varchar (50),
Data_nasc varchar (10),
Data_cadastro varchar (10),
Email varchar (100),
Site varchar (100),
Obs varchar (300),
codtelefone int,
codendereco int,
Codpjuridica int,
codpfisica int,
foreign key (codtelefone) references telefone (codtelefone),
foreign key (codendereco) references endereco (codendereco),
foreign key (codpjuridica) references pjuridica (codpjuridica),
foreign key (codpfisica) references pfisica (codpfisica));
Create Table Funcionario
(Codfunc int auto_increment primary key not null,
Nome varchar (50),
Data_nasc varchar (10),
Data_cadastro varchar (10),
Login Varchar (20),
Senha Varchar (20),
Email varchar (100),
29
Obs varchar (300),
Tipo_usuario varchar(14),
status varchar(7),
codtelefone int,
codendereco int,
codpfisica int,
codcargo int,
foreign key (codtelefone) references telefone (codtelefone),
foreign key (codendereco) references endereco (codendereco),
foreign key (codpfisica) references pfisica (codpfisica),
foreign key (codcargo) references cargo (codcargo));
Create table Fornecedor
(codfornecedor int auto_increment primary key not null,
Nome varchar (50),
Representante varchar (50),
Data_cadastro varchar (10),
site varchar (50),
email varchar (50),
Obs varchar (200),
codtelefone int,
codendereco int,
Codpjuridica int,
foreign key (codtelefone) references telefone(codtelefone),
foreign key (codendereco) references endereco (codendereco),
foreign key (codpjuridica) references pjuridica (codpjuridica));
Create table Produto
(codproduto int auto_increment primary key not null,
Nomeproduto varchar (40),
Marca varchar (40),
Modelo Varchar (20),
Fabricante varchar (30),
30
Datacompra varchar (10),
Garantialoja varchar (9),
Garantiaforn varchar (9),
Estoqueatual varchar (4),
Custocompra decimal (0000.00),
Custovenda decimal (0000.00),
obs varchar (200),
codfornecedor int,
Foreign key (codfornecedor) references fornecedor (codfornecedor));
Create table Equipamento
(codequip int auto_increment primary key not null,
Tipo varchar (20),
Marca varchar (20),
Modelo varchar (20),
NS varchar (30));
Create table OS
(codos int auto_increment primary key not null,
Dataentrada varchar (10),
Datasaida varchar(10),
Obs Varchar (200),
codfunc int,
codequip int,
codcliente int,
codproduto int,
Foreign key (codfunc) references funcionario (codfunc),
Foreign key (codequip) references equipamento (codequip),
foreign key (codcliente) references cliente (codcliente),
foreign key (codproduto) references produto (codproduto));
Create table LicagaoOSEquip
(codlig int auto_increment primary key not null,
codOs int,
31
Codequip int,
Foreign key (codos) references OS (codos),
Foreign key (codequip) References Equipamento (codequip));
Create Table Venda
(Codvenda int auto_increment primary key not null,
Qtde int (3),
Valorunitario decimal(0000.00),
Valortotal decimal (0000.00),
codproduto int,
Foreign key (codproduto) references produto (codproduto));
Create table Itemdevenda
(coditensvenda int auto_increment primary key not null,
Qtde int (4),
Codvenda int,
Foreign key (codvenda) references venda (codvenda));
Create Table ligacaofornprod
(codligfornprod int auto_increment primary key,
codfornecedor int,
codproduto int,
foreign key (codproduto) references produto (codproduto),
foreign key (codfornecedor) references fornecedor (codfornecedor));
Create table cheque
(codcheque int auto_increment primary key not null,
Numerocheque int,
Banco varchar (20),
Agencia int,
CC int,
Valor decimal (0000,00),
Vencimento date,
OBS varchar (200),
32
Codos int,
Codvenda int,
codcliente int,
Foreign key (codcliente) references cliente (codcliente),
Foreign key (codos) references os (codos),
Foreign key (codvenda) references venda (codvenda));
Create table boleto
(codboleto int auto_increment primary key not null,
Vencimento date,
OBS varchar (200),
Codos int,
Codvenda int,
codcliente int,
Foreign key (codcliente) references cliente (codcliente),
Foreign key (codos) references os (codos),
Foreign key (codvenda) references venda (codvenda));
Create table Cartao
(codcartao int auto_increment primary key not null,
Bandeira varchar (20),
tipo varchar (20),
Codos int,
Codvenda int,
codcliente int,
Foreign key (codcliente) references cliente (codcliente),
Foreign key (codos) references os (codos),
Foreign key (codvenda) references venda (codvenda));
Create table Pagamento
(codpag int auto_increment primary key not null,
Valorbruto decimal (0000,00),
Emdinheiro decimal (0000,00),
Qtdeparcela int,
Desconto numeric (5),
33
Totalareceber decimal(0000,00),
codcartao int,
codboleto int,
codcheque int,
foreign key (codcartao) references cartao (codcartao),
foreign key (codboleto) references boleto (codboleto),
foreign key (codcheque) references cheque (codcheque));
Create table recibo
(codrecibo int auto_increment primary key not null,
Descricao varchar (500),
codpag int,
foreign key (codpag) references pagamento(codpag));
5.2 Telas do programa AlphaCE
5.2.1.1 Tela de login
A tela abaixo é a tela de login, onde o funcionário faz o login e terá acesso ao
programa para, dependendo do tipo de acesso (administrador ou usuário), ter
acesso total ou não ao sistema AlphaCE.
34
5.2.1.2 Códigos da tela de login
Imports MySql.Data.MySqlClient
Public Class Form_login
Dim senha, nome_do_login As String
Dim tentativa, tentativa2, tentativa3 As Integer
Private Sub Btn_ok_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_ok.Click
Try
conexao()
cmd.CommandText = "select senha, login, tipo_usuario, status from
funcionario where login = '" & MaskedTextBox1.Text & "'"
reader = cmd.ExecuteReader()
If reader.Read() Then
nome_do_login = reader("login")
senha = reader("senha")
tipo_usuario_var = reader("tipo_usuario")
status_var = reader("status")
reader.Close()
con.Close()
If status_var = "ATIVO" Then
If nome_do_login = MaskedTextBox1.Text Then
If senha = MaskedTextBox2.Text Then
Limpo.Show()
servicos.ShowDialog()
Me.Close()
Else
MsgBox("Senha incorreta!", vbExclamation)
tentativa2 += 1
End If
Else
MsgBox("Login incorreto!", vbExclamation)
tentativa += 1
End If
Else
MsgBox("O usuário está INATIVO", vbExclamation)
tentativa3 += 1
End If
Else
MsgBox("Verifique o campo usuario.", vbExclamation)
tentativa += 1
End If
'encerrar o sistema se houver 3 erros
If tentativa = 3 Or tentativa2 = 3 Or tentativa3 = 3 Then
MsgBox("Muitas tentativas erradas, o sistema será fechado!", vbCritical)
Application.Exit()
35
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
Private Sub MaskedTextBox1_MaskInputRejected(ByVal sender As
System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs)
Handles MaskedTextBox1.MaskInputRejected
Me.Focus()
End Sub
Private Sub Lnklabel_LinkClicked(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles
Lnklabel.LinkClicked
Alterar_senha.Show()
End Sub
Private Sub Btn_cancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_cancelar.Click
Close()
End Sub
Private Sub Form1_login_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
conexao()
cmd.CommandText = "select senha, login from funcionario"
reader = cmd.ExecuteReader()
If reader.Read() Then
lk_adm.Enabled = False
reader.Close()
con.Close()
Else
lk_adm.Enabled = True
End If
End Sub
Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles
lk_adm.LinkClicked
Limpo.Show()
cad_Cargo.Show()
MsgBox("Após cadastrar um cargo, clique em voltar, clique no botão
Funcionarios e cadastre um funcionário.", MsgBoxStyle.Information)
36
Me.Visible = False
End Sub
Private Sub MaskedTextBox2_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox2.KeyPress
If e.KeyChar = Chr(13) Then
Btn_ok_Click(Me, EventArgs.Empty)
End If
End Sub
Private Sub MaskedTextBox2_MaskInputRejected(ByVal sender As
System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs)
Handles MaskedTextBox2.MaskInputRejected
End Sub
End Class
5.2.2.1 Tela de Alteração de Senha
Esta tela é para o funcionário trocar a senha de acesso.
5.2.2.2 Código da tela Alteração de senha
Imports MySql.Data.MySqlClient
Public Class Alterar_senha
Dim Nomelogin, Senhalogin As String
Private Sub btn_cancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_cancelar.Click
37
Me.Close()
Form_login.Show()
End Sub
Private Sub btn_alterar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_alterar.Click
Dim reader As MySqlDataReader
Try ' trataviva de erro do banco e do formulário
conexao() 'procedure de conexão e comando (cmd e con)
cmd.CommandType = System.Data.CommandType.Text
cmd.Connection = con 'variavel de conexão
'con.Open() 'abri a conexão com o banco de dados
cmd.CommandText = "select login, senha from funcionario where login like
'%" & Trim(TextBox1.Text) & "%'" 'Função trim, remove os espaços iniciais e finais.
reader = cmd.ExecuteReader() 'comando para executar a reader
reader.Read() 'variável reader para ler os dados selecionado na select
Nomelogin = reader("login")
Senhalogin = reader("senha")
reader.Close() 'fechando a reader
con.Close() 'fecha a conexão com o banco de dados
Catch ex As Exception
MsgBox("Usuario incorreto.", vbCritical)
TextBox1.Focus() 'função focus, quando acontece algum erro o cursor volta
para o campo especificado.
End Try
If MaskedTextBox1.Text = Senhalogin Then 'condição para a alteração de
senha. A maskedtextbox tem de ser igual a variavel em questão.
Try
If MaskedTextBox2.Text = MaskedTextBox3.Text Then 'segunda condição,
a senha que estiver igual na primeira condição irá fazer estas instruções. A nova
senha da MaskedTextBox2 tem de ser igual a MaskedTextBox3
If MsgBox("Deseja alterar sua senha?", vbYesNo, "confirmação") =
vbYes Then
conexao() 'procedure de conexão e comando (cmd e con)
cmd.Connection = con
'con.Open() 'abri a conexão com o banco de dados
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE funcionario SET senha = @senha
WHERE login = '" & Nomelogin & "'"
.Parameters.Add("@senha", MySqlDbType.VarChar)
.Parameters("@senha").Value = Trim(MaskedTextBox3.Text)
.ExecuteNonQuery()
End With
con.Close() 'fecha a conexão com o banco de dados
MsgBox("Senha alterada com sucesso.", vbInformation)
Me.Close()
'btn_cancelar.Focus() 'função focus, após efetuar a alteração o botão
cancelar fica selecionado.
38
Else
MsgBox("Alteração cancelada!", vbCritical)
TextBox1.Focus() 'função focus, quando a alteração e cancelada o
cursor volta para a textbox4 (campo login).
End If
Else
MsgBox("Senha não confere!", vbCritical)
MaskedTextBox2.Focus() 'função focus, quando a senha não confere o
cursor volta para o campo especificado (campo nova senha)
End If
Catch ex As Exception
MsgBox(ex.Message)
TextBox1.Focus() 'quando acontece algum erro o cursor volta para a
textbox4 (campo login)
End Try
Else
MsgBox("Senha antiga incorreta.", vbCritical)
MaskedTextBox1.Focus()
End If
End Sub
Private Sub MaskedTextBox3_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox3.KeyPress
If e.KeyChar = Chr(13) Then
btn_alterar_Click(Me, EventArgs.Empty)
End If
End Sub
End Class
5.2.3.1 Tela de serviços(Menu Principal)
Esta tela principal do programa AlphaCE que tem a função de ajudar o
funcionário escolher o que vai fazer, como venda, cadastro de cliente, cadastro de
produtos, OS, estoque e administrador. Também, um menu superior para maior
acessibilidade.
5.2.3.2 Código da tela de serviços
Public Class servicos
Private Sub Btn_cadclie_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_cadclie.Click
Cad_cliente.Show()
39
End Sub
Private Sub Btn_produos_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_produos.Click
Cad_produtos.Show()
End Sub
Private Sub Btn_os_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_os.Click
OS.Show()
End Sub
Private Sub Btn_adm_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_adm.Click
Painel_estoque.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Cadastro_Geral.Show()
End Sub
Private Sub Form2_servicos_FormClosed(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
End
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_vendas.Click
Venda.Show()
End Sub
Private Sub AdicionarToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles AdicionarToolStripMenuItem.Click
Cad_cliente.Show()
End Sub
Private Sub servicos_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If tipo_usuario_var = "PADRAO" Then
Button1.Enabled = False
Else
Button1.Enabled = True
lbl_adm.Enabled = True
End If
'If Me.MinimizeBox = True Then
'Limpo.MinimizeBox = True
'End If
40
End Sub
End Class
5.2.4.1 Tela de Cadastro Geral
Clicando na opção Administrador, abrirá esse menu. Nele o funcionário
poderá fazer todos os tipos de cadastros mostrados na tela.
5.2.4.2 Códigos da tela de Cadastro Geral
Public Class Cadastro_Geral
Private Sub btn_Cargo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Cargo.Click, Button1.Click
cad_Cargo.Show()
Hide()
End Sub
Private Sub btn_servico_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_servico.Click
Cad_servico.Show()
Hide()
End Sub
Private Sub Btn_Cliente_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_Cliente.Click
cad_fis_jur.Show()
Hide()
End Sub
Private Sub Btn_funcionario_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_funcionario.Click
41
Cad_funcionario.Show()
Cad_funcionario.Textbox_nome.Focus()
Hide()
End Sub
Private Sub Btn_alterar_senha_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_alterar_senha.Click
End Sub
Private Sub Btn_produtos_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
End Sub
Private Sub btn_fornecedor_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_fornecedor.Click
Cad_fornecedor.Show()
Hide()
End Sub
Private Sub Cadastro_Geral_Load(sender As System.Object, e As
System.EventArgs) Handles MyBase.Load
End Sub
End Class
5.2.5.1 Tela de Cadastro de Cargo
Clicando na opção de cargo, abrirá esse menu para cadastrar o cargo.
5.2.5.2 Código de Cadastro de Cargo
Imports MySql.Data.MySqlClient
Public Class cad_Cargo
42
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim con As MySqlConnection 'conexao
Dim cmd As MySqlCommand 'consulta
Dim codcargo_var As Integer = 0
Dim reader As MySqlDataReader
con = New MySqlConnection
cmd = New MySqlCommand
cmd.CommandType = CommandType.Text
con.ConnectionString = "server=localhost;User Id=root;password=etecia;Persist
Security Info=True;database=alpha"
con.Open()
cmd = con.CreateCommand
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codcargo from cargo where codcargo=(select
max(codcargo) from cargo)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codcargo_var = reader("codcargo")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO Cargo(codcargo, funcao) Values
(@codcargo, @funcao)"
.Parameters.Add("@codcargo", MySqlDbType.Int32)
.Parameters("@codcargo").Value = codcargo_var + 1
.Parameters.Add("@funcao", MySqlDbType.VarChar)
.Parameters("@funcao").Value = textbox_cargo.Text
.ExecuteNonQuery()
con.Close()
End With
textbox_cargo.Clear()
textbox_cargo.Focus()
Me.Refresh()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Cadastro_Geral.Show()
Hide()
End Sub
43
Private Sub textbox_cargo_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles textbox_cargo.KeyPress
If e.KeyChar = Chr(13) Then
Button1_Click(Me, EventArgs.Empty) 'Evento click, quando o usuario digita
enter o botão é clickado
textbox_cargo.Focus() 'após pesquisar o cursor é movido para a textbox 2
End If
End Sub
Private Sub textbox_cargo_TextChanged(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles textbox_cargo.TextChanged
End Sub
Private Sub cad_Cargo_Load(sender As System.Object, e As System.EventArgs)
Handles MyBase.Load
End Sub
End Class
5.2.6.1 Tela de Cadastro de Serviços
Clicando nesse menu, abrirá a opção para cadastrar o tipo de serviço.
5.2.6.2 Código da tela de Cadastro de Serviços
Imports MySql.Data.MySqlClient
Public Class Cad_servico
Private Sub btn_voltar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_voltar.Click
Cadastro_Geral.Show()
Hide()
End Sub
Private Sub btn_salvar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_salvar.Click
Dim con As MySqlConnection 'conexao
44
Dim cmd As MySqlCommand 'consulta
Dim codservico_var As Integer = 0
Dim reader As MySqlDataReader
con = New MySqlConnection
cmd = New MySqlCommand
cmd.CommandType = CommandType.Text
con.ConnectionString = "server=localhost;User Id=root;password=etecia;Persist
Security Info=True;database=alpha"
con.Open()
cmd = con.CreateCommand
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codservico from servicos where codservico=(select
max(codservico) from Servico)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codservico_var = reader("codservico")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO Servico(codservico, funcao) Values
(@codservico, @funcao)"
.Parameters.Add("@codservico", MySqlDbType.Int32)
.Parameters("@codservico").Value = codservico_var + 1
.Parameters.Add("@funcao", MySqlDbType.VarChar)
.Parameters("@funcao").Value = TextBox_servico.Text
.ExecuteNonQuery()
con.Close()
End With
TextBox_servico.Clear()
TextBox_servico.Focus()
Me.Refresh()
End Sub
Private Sub TextBox_servico_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TextBox_servico.TextChanged
End Sub
Private Sub Cad_servico_Load(sender As System.Object, e As
System.EventArgs) Handles MyBase.Load
End Sub
45
End Class
5.2.7.1 Tela de Cadastro Tipo de Clientes
Clicando nessa opção, o menu de cadastro que aparece são as opções de
cadastro de pessoa física e jurídica.
5.2.7.2 Código da tela de cadastro de Clientes
Public Class cad_fis_jur
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
End Sub
Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.ToolStripItemClickedEventArgs)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Cad_cliente.Show()
Hide()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Cad_pjuridica.Show()
Hide()
End Sub
46
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Cadastro_Geral.Show()
Hide()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
Close()
End Sub
End Class
5.2.8.1 Tela de Cadastro de Cliente
No menu acima, clicando na opção de cadastro de cliente, abrirá esse menu
de cadastro. Aqui pode-se voltar a tela anterior, editar um cadastro, localizar e
excluir.
47
Clicando na opção localizar, abrirá uma painel de consulta.
5.2.8.2 Código da tela de cadastro de cliente
Imports mysql.data.mysqlclient
Public Class Cad_cliente
Private Sub FUN_Padrao()
btn_Salvar.Visible = True
btn_Editar.Visible = False
End Sub
Private Sub FUN_Editar()
btn_Salvar.Visible = False
btn_Editar.Visible = True
End Sub
Private Sub FUN_Limpar()
Textbox_nome.Clear()
Textbox_endereco.Clear()
Textbox_numero.Clear()
Textbox_comp.Clear()
Mask_nasc.Clear()
Textbox_bairro.Clear()
TextBox_cidade.Clear()
Masked_UF.Clear()
Maskbox_telefone.Clear()
Maskbox_celular.Clear()
Mask_fax.Clear()
Mbox_rg.Clear()
MBox_cpf.Clear()
TextBox_obs.Clear()
48
Textbox_email.Clear()
Textbox_site.Clear()
Textbox_nome.Focus()
End Sub
Private Sub FUN_Proximo()
conexao()
Try
With cmd
.CommandType = System.Data.CommandType.Text
.Connection = con
.CommandText = "select codcliente from cliente where codcliente = (select
max(codcliente) from cliente)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codcliente_var = reader("codcliente")
reader.Close()
con.Close()
Lbl_codcliente.Text = codcliente_var + 1 'ADICIONAR O COD E SOMAR
MAIS 1 NO FORM
Else
Lbl_codcliente.Text = 1
End If
Catch a As Exception
End Try
con.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
cad_fis_jur.Show()
Hide()
End Sub
Private Sub btn_voltar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
cad_fis_jur.Show()
Me.Hide()
End Sub
Private Sub btn_Localizar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Painel_cliente.Show()
End Sub
Private Sub btn_Salvar_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Salvar.Click
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
49
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codtelefone_var = reader("codtelefone")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpfisica from pfisica where codpfisica=(select
max(codpfisica) from pfisica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codpfisica_var = reader("codpfisica")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO endereco(codendereco,Logradouro,
Numero, Cep, Complemento, Bairro, Cidade, Estado) VALUES
(@codendereco,@Logradouro, @Numero, @Cep, @Complemento, @Bairro,
@Cidade, @Estado)"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
50
.Parameters("@codendereco").Value = codendereco_var + 1
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_numero.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = Textbox_bairro.Text
.Parameters("@Cidade").Value = Textbox_cidade.Text
.Parameters("@Estado").Value = Masked_uf.Text
.Parameters("@Cep").Value = Maskbox_cep.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO telefone(codtelefone, telefone, celular, fax)
VALUES (@codtelefone, @telefone, @celular, @fax)"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
.Parameters.Add("@fax", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var + 1
.Parameters("@telefone").Value = Maskbox_telefone.Text
.Parameters("@celular").Value = Maskbox_celular.Text
.Parameters("@fax").Value = Mask_fax.Text
.ExecuteNonQuery()
con.Close()
End With
With cmd
con.Open()
.CommandType = CommandType.Text
.CommandText = "INSERT INTO pfisica(codpfisica, rg, cpf) VALUES
(@codpfisica, @rg, @cpf)"
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters.Add("@rg", MySqlDbType.VarChar)
.Parameters.Add("@cpf", MySqlDbType.VarChar)
.Parameters("@codpfisica").Value = codpfisica_var + 1
.Parameters("@rg").Value = Mbox_rg.Text
.Parameters("@cpf").Value = Mbox_cpf.Text
.ExecuteNonQuery()
con.Close()
End With
con.Open()
cmd = con.CreateCommand
With cmd
.CommandType = System.Data.CommandType.Text
51
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codtelefone_var = reader("codtelefone")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpfisica from pfisica where codpfisica=(select
max(codpfisica) from pfisica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codpfisica_var = reader("codpfisica")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO Cliente(Nome, data_cadastro, Data_nasc,
email, site, OBS, codendereco, codtelefone, codpfisica) VALUES (@nome,
@data_cadastro, @Data_nasc, @email, @site, @obs, @codendereco,
@codtelefone, @codpfisica)"
.Parameters.Add("@Nome", MySqlDbType.VarChar)
.Parameters.Add("@data_cadastro", MySqlDbType.VarChar)
.Parameters.Add("@data_nasc", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@site", MySqlDbType.VarChar)
.Parameters.Add("@OBS", MySqlDbType.VarChar)
52
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters("@Nome").Value = Textbox_nome.Text
.Parameters("@data_cadastro").Value = data_cadastro
.Parameters("@data_nasc").Value = Mask_nasc.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@site").Value = Textbox_site.Text
.Parameters("@OBS").Value = TextBox_obs.Text
.Parameters("@codendereco").Value = codendereco_var
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@codpfisica").Value = codpfisica_var
.ExecuteNonQuery()
.CommandText = "SELECT CODCLIENTE FROM CLIENTE WHERE NOME
= @nome"
reader = cmd.ExecuteReader()
reader.Read()
codcliente_var = reader.GetString("codcliente")
Lbl_codcliente.Text = codcliente_var + 1
con.Close()
End With
limpar_campos_cliente()
End Sub
Private Sub Cad_cliente_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
FUN_Padrao()
lbl_data_cadastro.Text = Date.Today
data_cadastro = lbl_data_cadastro.Text
Textbox_nome.Focus()
conexao()
FUN_Proximo()
End Sub
Private Sub btn_Localizar_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Localizar.Click
Painel_cliente.Show()
Hide()
End Sub
Private Sub btn_Editar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Editar.Click
Try
If MsgBox("Deseja alterar o cadastro deste Cliente?", vbYesNo,
"confirmação") = vbYes Then
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
53
.CommandText = "select * from cliente where nome=@ncliente"
.Parameters.Add("@ncliente", MySqlDbType.VarChar)
.Parameters("@ncliente").Value = Textbox_nome.Text
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codcliente_var = reader("codcliente")
codendereco_var = reader("codendereco")
codtelefone_var = reader("codtelefone")
codpfisica_var = reader("codpfisica")
End If
reader.Close()
con.Close()
conexao()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE endereco SET Logradouro=@Logradouro,
Numero=@Numero, Cep=@Cep, Complemento=@Complemento, Bairro=@Bairro,
Cidade=@Cidade, Estado=@Estado where codendereco=@codendereco"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
.Parameters("@codendereco").Value = codendereco_var
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_numero.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = Textbox_bairro.Text
.Parameters("@Cidade").Value = Textbox_cidade.Text
.Parameters("@Estado").Value = Masked_uf.Text
.Parameters("@Cep").Value = Maskbox_cep.Text
.ExecuteNonQuery()
End With
con.Close()
conexao()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE telefone SET telefone=@telefone,
celular=@celular, fax=@fax where codtelefone=@codtelefone"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
54
.Parameters.Add("@fax", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@telefone").Value = Maskbox_telefone.Text
.Parameters("@celular").Value = Maskbox_celular.Text
.Parameters("@fax").Value = Mask_fax.Text
.ExecuteNonQuery()
End With
con.Close()
conexao()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE pfisica SET rg=@rg, cpf=@cpf where
codpfisica=@codpfisica"
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters.Add("@rg", MySqlDbType.VarChar)
.Parameters.Add("@cpf", MySqlDbType.VarChar)
.Parameters("@codpfisica").Value = codpfisica_var
.Parameters("@rg").Value = Mbox_rg.Text
.Parameters("@cpf").Value = Mbox_cpf.Text
.ExecuteNonQuery()
End With
con.Close()
conexao()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE cliente SET nome=@nome,
data_nasc=@data_nasc, email=@email, site=@site, obs=@obs where
codcliente=@codcliente"
.Parameters.Add("@codcliente", MySqlDbType.Int32)
.Parameters.Add("@nome", MySqlDbType.VarChar)
.Parameters.Add("@data_nasc", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@site", MySqlDbType.VarChar)
.Parameters.Add("@obs", MySqlDbType.VarChar)
.Parameters("@codcliente").Value = codcliente_var
.Parameters("@nome").Value = Textbox_nome.Text
.Parameters("@data_nasc").Value = Mask_nasc.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@site").Value = Textbox_site.Text
.Parameters("@obs").Value = TextBox_obs.Text
.ExecuteNonQuery()
End With
con.Close()
MsgBox("Cadastro alterado com sucesso!", vbInformation)
FUN_Proximo()
FUN_Limpar()
55
FUN_Padrao()
Else
MsgBox("Alteração cancelada!", vbExclamation)
Textbox_nome.Focus() 'Função focus, move o cursor para o campo
informado
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
End Sub
End Class
5.2.9.1 Tela Cadastro de Funcionários
Voltando a tela de cadastro geral, ao clicar na opção funcionários, abrirá a
tela de cadastro de funcionário, onde ele já cadastrará um logon e senha de acesso.
É necessário preencher todos os campos.
56
Clicando na opção localizar, abrirá um painel de consulta.
5.2.9.2 Código da tela de cadastro de funcionário
Imports MySql.Data.MySqlClient
Public Class Cad_funcionario
Private Sub FUN_Padrao()
btn_Salvar.Visible = True
btn_Editar.Visible = False
btn_Cancelar.Visible = False
GBX_Status.Enabled = False
End Sub
Private Sub FUN_Editar()
btn_Salvar.Visible = False
btn_Editar.Visible = True
btn_Cancelar.Visible = True
GBX_Status.Enabled = True
End Sub
Private Sub FUN_Limpar()
Textbox_nome.Clear()
Textbox_endereco.Clear()
Textbox_num.Clear()
Textbox_comp.Clear()
Mask_cep.Clear()
TextBox_bairro.Clear()
TextBox_cidade.Clear()
Masked_UF.Clear()
Mask_telefone.Clear()
Mask_celular.Clear()
Mask_nasc.Clear()
57
MBox_rg.Clear()
MBox_cpf.Clear()
TextBox_obs.Clear()
MaskBox_senha.Clear()
Textbox_email.Clear()
TextBox_login.Clear()
Textbox_nome.Focus()
End Sub
Private Sub FUN_Proximo()
conexao()
Try
With cmd
.CommandType = System.Data.CommandType.Text
.Connection = con
.CommandText = "select codfunc from funcionario where codfunc = (select
max(codfunc) from funcionario)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codfunc_var = reader("codfunc")
reader.Close()
con.Close()
LBL_codfunc.Text = codfunc_var + 1 'ADICIONAR O COD E SOMAR
MAIS 1 NO FORM
Else
LBL_codfunc.Text = 1
End If
Catch a As Exception
End Try
con.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
cad_fis_jur.Show()
Hide()
End Sub
Private Sub btn_voltar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_voltar.Click
Cadastro_Geral.Show()
Me.Hide()
End Sub
Private Sub btn_Localizar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Localizar.Click
Painel_funcionario.Show()
Hide()
End Sub
Private Sub btn_Salvar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Salvar.Click
Dim reader As MySqlDataReader
58
conexao()
Try
If codfunc_var = 0 Then
With cmd
.CommandType = System.Data.CommandType.Text
.Connection = con
.CommandText = "select codfunc from funcionario where codfunc =
(select max(codfunc) from funcionario)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codfunc_var = reader("codfunc")
reader.Close()
con.Close()
codfunc_var = codfunc_var + 1 'ADICIONAR O COD E SOMAR MAIS 1
NO FORM
Else
LBL_codfunc.Text = 1
End If
con.Close()
Form_login.lk_adm.Visible = False
Me.Hide()
Form_login.Show()
Form_login.MaskedTextBox1.Focus()
End If
Catch ex As Exception
End Try
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
59
codtelefone_var = reader("codtelefone")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpfisica from pfisica where codpfisica=(select
max(codpfisica) from pfisica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codpfisica_var = reader("codpfisica")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO endereco(codendereco,Logradouro,
Numero, Cep, Complemento, Bairro, Cidade, Estado) VALUES
(@codendereco,@Logradouro, @Numero, @Cep, @Complemento, @Bairro,
@Cidade, @Estado)"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
.Parameters("@codendereco").Value = codendereco_var + 1
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_num.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = TextBox_bairro.Text
.Parameters("@Cidade").Value = TextBox_cidade.Text
.Parameters("@Estado").Value = Masked_UF.Text
.Parameters("@Cep").Value = Mask_cep.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
60
.CommandText = "INSERT INTO telefone(codtelefone, telefone, celular)
VALUES (@codtelefone, @telefone, @celular)"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var + 1
.Parameters("@telefone").Value = Mask_telefone.Text
.Parameters("@celular").Value = Mask_celular.Text
.ExecuteNonQuery()
con.Close()
End With
With cmd
con.Open()
.CommandType = CommandType.Text
.CommandText = "INSERT INTO pfisica(codpfisica, rg, cpf) VALUES
(@codpfisica, @rg, @cpf)"
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters.Add("@rg", MySqlDbType.VarChar)
.Parameters.Add("@cpf", MySqlDbType.VarChar)
.Parameters("@codpfisica").Value = codpfisica_var + 1
.Parameters("@rg").Value = MBox_rg.Text
.Parameters("@cpf").Value = MBox_cpf.Text
.ExecuteNonQuery()
con.Close()
End With
con.Open()
cmd = con.CreateCommand
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codtelefone_var = reader("codtelefone")
61
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpfisica from pfisica where codpfisica=(select
max(codpfisica) from pfisica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codpfisica_var = reader("codpfisica")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO funcionario(Nome, data_cadastro,
Data_nasc, email, Login, Senha, OBS, status, tipo_usuario, codendereco,
codtelefone, codcargo, codpfisica) VALUES (@nome, @data_cadastro,
@Data_nasc, @email, @login, @senha, @obs, @status, @tipo_usuario,
@codendereco, @codtelefone, @codcargo, @codpfisica)"
.Parameters.Add("@Nome", MySqlDbType.VarChar)
.Parameters.Add("@data_cadastro", MySqlDbType.VarChar)
.Parameters.Add("@data_nasc", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@login", MySqlDbType.VarChar)
.Parameters.Add("@senha", MySqlDbType.VarChar)
.Parameters.Add("@OBS", MySqlDbType.VarChar)
.Parameters.Add("@status", MySqlDbType.VarChar)
.Parameters.Add("@tipo_usuario", MySqlDbType.VarChar)
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@codcargo", MySqlDbType.Int32)
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters("@Nome").Value = Textbox_nome.Text
.Parameters("@data_cadastro").Value = data_cadastro
.Parameters("@data_nasc").Value = Mask_nasc.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@login").Value = TextBox_login.Text
.Parameters("@senha").Value = MaskBox_senha.Text
.Parameters("@OBS").Value = TextBox_obs.Text
.Parameters("@status").Value = "ATIVO"
.Parameters("@tipo_usuario").Value = tipo_usuario_var
.Parameters("@codendereco").Value = codendereco_var
62
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@codcargo").Value = ComboBox_cargo.SelectedValue
.Parameters("@codpfisica").Value = codpfisica_var
.ExecuteNonQuery()
End With
con.Close()
FUN_Proximo()
FUN_Limpar()
End Sub
Private Sub Cad_funcionario_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
FUN_Padrao()
Rbtn_padrao.Checked = True
lbl_data_cadastro.Text = Date.Today
data_cadastro = lbl_data_cadastro.Text
Textbox_nome.Focus()
'TODO: This line of code loads data into the 'Alpha.cargo' table. You can move,
or remove it, as needed.
Me.CargoTableAdapter.Fill(Me.Alpha.cargo)
conexao()
FUN_Proximo()
End Sub
Private Sub btn_Editar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Editar.Click
Try
If MsgBox("Deseja alterar o cadastro deste funcionario?", vbYesNo,
"confirmação") = vbYes Then
conexao()
If RBN_Ativo.Checked = True Then
status_var = "ATIVO"
Else
status_var = "INATIVO"
End If
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select * from funcionario where
codfunc=@codfuncionario"
.Parameters.Add("@codfuncionario", MySqlDbType.VarChar)
.Parameters("@codfuncionario").Value = codfunc_var
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
codtelefone_var = reader("codtelefone")
63
codpfisica_var = reader("codpfisica")
codcargo_var = reader("codcargo")
End If
reader.Close()
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE endereco SET Logradouro=@Logradouro,
Numero=@Numero, Cep=@Cep, Complemento=@Complemento, Bairro=@Bairro,
Cidade=@Cidade, Estado=@Estado where codendereco=@codendereco"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
.Parameters("@codendereco").Value = codendereco_var
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_num.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = TextBox_bairro.Text
.Parameters("@Cidade").Value = TextBox_cidade.Text
.Parameters("@Estado").Value = Masked_UF.Text
.Parameters("@Cep").Value = Mask_cep.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE telefone SET telefone=@telefone,
celular=@celular where codtelefone=@codtelefone"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@telefone").Value = Mask_telefone.Text
.Parameters("@celular").Value = Mask_celular.Text
.ExecuteNonQuery()
End With
con.Close()
With cmd
con.Open()
64
.CommandType = CommandType.Text
.CommandText = "UPDATE pfisica SET rg=@rg, cpf=@cpf where
codpfisica=@codpfisica"
.Parameters.Add("@codpfisica", MySqlDbType.Int32)
.Parameters.Add("@rg", MySqlDbType.VarChar)
.Parameters.Add("@cpf", MySqlDbType.VarChar)
.Parameters("@codpfisica").Value = codpfisica_var
.Parameters("@rg").Value = MBox_rg.Text
.Parameters("@cpf").Value = MBox_cpf.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE funcionario SET Nome=@Nome,
data_cadastro=@data_cadastro, Data_nasc=@data_nasc, email=@email,
Login=@login, Senha=@senha, OBS=@OBS, status=@status,
tipo_usuario=@tipo_usuario where codfunc=@codfuncionario"
.Parameters.Add("@codfunc", MySqlDbType.Int32)
.Parameters.Add("@Nome", MySqlDbType.VarChar)
.Parameters.Add("@data_cadastro", MySqlDbType.VarChar)
.Parameters.Add("@data_nasc", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@login", MySqlDbType.VarChar)
.Parameters.Add("@senha", MySqlDbType.VarChar)
.Parameters.Add("@OBS", MySqlDbType.VarChar)
.Parameters.Add("@status", MySqlDbType.VarChar)
.Parameters.Add("@tipo_usuario", MySqlDbType.VarChar)
.Parameters("@codfunc").Value = codfunc_var
.Parameters("@Nome").Value = Textbox_nome.Text
.Parameters("@data_cadastro").Value = data_cadastro
.Parameters("@data_nasc").Value = Mask_nasc.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@login").Value = TextBox_login.Text
.Parameters("@senha").Value = MaskBox_senha.Text
.Parameters("@OBS").Value = TextBox_obs.Text
.Parameters("@status").Value = status_var
.Parameters("@tipo_usuario").Value = tipo_usuario_var
.ExecuteNonQuery()
End With
con.Close()
Painel_funcionario.atualizar() 'Atualiza o painel com os dados alterado
MsgBox("Cadastro alterado com sucesso!", vbInformation)
FUN_Proximo()
FUN_Limpar()
65
FUN_Padrao()
Else
MsgBox("Alteração cancelada!", vbExclamation)
Textbox_nome.Focus() 'Função focus, move o cursor para o campo
informado
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
End Sub
Private Sub btn_Cancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Cancelar.Click
FUN_Proximo()
FUN_Limpar()
FUN_Padrao()
End Sub
Private Sub Rbtn_Admin_CheckedChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Rbtn_Admin.CheckedChanged
tipo_usuario_var = "ADMINISTRADOR"
End Sub
Private Sub Rbtn_padrao_CheckedChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Rbtn_padrao.CheckedChanged
tipo_usuario_var = "PADRAO"
End Sub
End Class
5.2.10.1 Tela de Cadastro de Fornecedor
Voltando a tela de cadastro geral, clicando na opção fornecedro, abrirá a tela
de cadastro de fornecedor. Nessa tela, pode voltar a tela anterior, alterar cadastro,
localizar e cancelar.
66
Clicando na opção localizar, abrirá um painel de consulta.
67
5.2.10.2 Código na tela de cadastro de fornecedor
Imports MySql.Data.MySqlClient
Public Class Cad_fornecedor
Private Sub FUN_Padrao() 'Criação da função para ativar ou desativar botões
Btn_salvar.Visible = True
btn_editar.Visible = False
btn_cancelar.Visible = False
End Sub
Private Sub FUN_Limpar() 'Criação da função para limpar os campos do
formulario
Textbox_razao_social.Clear()
Textbox_endereco.Clear()
Textbox_num.Clear()
Textbox_comp.Clear()
Mask_cep.Clear()
TextBox_bairro.Clear()
TextBox_cidade.Clear()
Masked_UF.Clear()
Mask_telefone.Clear()
Mask_celular.Clear()
Mask_data_cad.Clear()
TextBox_obs.Clear()
Textbox_email.Clear()
TextBox_site.Clear()
TextBox_representante.Clear()
MasKtBox_fax.Clear()
MBox_cnpj.Clear()
MBox_IE.Clear()
Textbox_razao_social.Focus()
End Sub
Private Sub FUN_Proximo() 'Criação da função de pesquisa para saber o proximo
codigo do BD, neste caso FORNECEDOR
conexao() 'Utilizando uma função dentro da outra
Try
With cmd
.CommandType = System.Data.CommandType.Text
.Connection = con
.CommandText = "select codfornecedor from fornecedor where
codfornecedor = (select max(codfornecedor) from fornecedor)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codfornecedor_var = reader("codfornecedor")
reader.Close()
con.Close()
LBL_codforn.Text = codfornecedor_var + 1 'ADICIONAR O COD E
SOMAR MAIS 1 NO FORM
Else
LBL_codforn.Text = 1
68
End If
Catch a As Exception
End Try
con.Close()
End Sub
Private Sub Btn_salvar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Btn_salvar.Click
'removi daqui as variaveis codendereco, codpfisica e coloquei no modulo
Dim reader As MySqlDataReader
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codtelefone_var = reader("codtelefone")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpjuridica from pjuridica where
codpjuridica=(select max(codpjuridica) from pjuridica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codpjuridica_var = reader("codpjuridica")
reader.Close()
End If
69
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO endereco(codendereco,Logradouro,
Numero, Cep, Complemento, Bairro, Cidade, Estado) VALUES
(@codendereco,@Logradouro, @Numero, @Cep, @Complemento, @Bairro,
@Cidade, @Estado)"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
.Parameters("@codendereco").Value = codendereco_var + 1
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_num.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = TextBox_bairro.Text
.Parameters("@Cidade").Value = TextBox_cidade.Text
.Parameters("@Estado").Value = Masked_UF.Text
.Parameters("@Cep").Value = Mask_cep.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO telefone(codtelefone, telefone, celular, fax)
VALUES (@codtelefone, @telefone, @celular, @fax)"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
.Parameters.Add("@Fax", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var + 1
.Parameters("@telefone").Value = Mask_telefone.Text
.Parameters("@celular").Value = Mask_celular.Text
.Parameters("@Fax").Value = MasKtBox_fax.Text
.ExecuteNonQuery()
con.Close()
End With
With cmd
con.Open()
.CommandType = CommandType.Text
70
.CommandText = "INSERT INTO pjuridica(codpjuridica, razao_social, cnpj,
ie) VALUES (@codpjuridica, @razao_social, @cnpj, @ie)"
.Parameters.Add("@codpjuridica", MySqlDbType.Int32)
.Parameters.Add("@razao_social", MySqlDbType.VarChar)
.Parameters.Add("@cnpj", MySqlDbType.VarChar)
.Parameters.Add("@ie", MySqlDbType.VarChar)
.Parameters("@codpjuridica").Value = codpjuridica_var + 1
.Parameters("@razao_social").Value = Textbox_razao_social.Text
.Parameters("@cnpj").Value = MBox_cnpj.Text
.Parameters("@ie").Value = MBox_IE.Text
.ExecuteNonQuery()
con.Close()
End With
con.Open()
cmd = con.CreateCommand
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codendereco from endereco where
codendereco=(select max(codendereco) from endereco)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codtelefone from telefone where
codtelefone=(select max(codtelefone) from telefone)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codtelefone_var = reader("codtelefone")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select codpjuridica from pjuridica where
codpjuridica=(select max(codpjuridica) from pjuridica)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
71
codpjuridica_var = reader("codpjuridica")
reader.Close()
End If
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO fornecedor(Nome, Representante,
Data_cadastro, site, email, obs, codtelefone, codendereco, codpjuridica) Values
(@Nome, @Representante, @Data_cadastro, @site, @email, @obs, @codtelefone,
@codendereco, @codpjuridica) "
.Parameters.Add("@nome", MySqlDbType.VarChar)
.Parameters.Add("@Representante", MySqlDbType.VarChar)
.Parameters.Add("@Data_cadastro", MySqlDbType.VarChar)
.Parameters.Add("@site", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@obs", MySqlDbType.VarChar)
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@codpjuridica", MySqlDbType.Int32)
.Parameters("@nome").Value = Textbox_razao_social.Text
.Parameters("@Representante").Value = TextBox_representante.Text
.Parameters("@Data_cadastro").Value = data_cadastro
.Parameters("@site").Value = TextBox_site.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@Obs").Value = TextBox_obs.Text
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@codendereco").Value = codendereco_var
.Parameters("@codpjuridica").Value = codpjuridica_var
.ExecuteNonQuery()
.CommandText = "SELECT CODFORNECEDOR FROM FORNECEDOR
WHERE NOME =@NOME" 'Pesquisa para saber o ultimo codigo e ,ostra-lo em uma
label
reader = cmd.ExecuteReader()
reader.Read()
codfornecedor_var = reader.GetString("codfornecedor")
LBL_codforn.Text = codfornecedor_var + 1
con.Close()
End With
FUN_Limpar() 'Função para limpar os campos (textbox, maskedbox) das
tabelas
con.Close()
End Sub
Private Sub Cad_fornecedor_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Mask_data_cad.Text = Date.Today()
data_cadastro = Mask_data_cad.Text
72
FUN_Padrao() 'Função para habilitar ou desabilitar os botões Salvar,Editar,
Cancelar
conexao() 'Função e conexão com o BD
FUN_Proximo() 'Função de pesquisa para saber o proximo codigo do BD, neste
caso FORNECEDOR
End Sub
Private Sub btn_Localizar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Localizar.Click
Painel_Fornecedor.Show()
Hide()
End Sub
Private Sub btn_editar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_editar.Click
Try
If MsgBox("Deseja alterar o cadastro deste fornecedor?", vbYesNo,
"confirmação") = vbYes Then
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
.CommandText = "select * from fornecedor where
codfornecedor=@codfornecedor"
.Parameters.Add("@codfornecedor", MySqlDbType.VarChar)
.Parameters("@codfornecedor").Value = codfornecedor_var
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codendereco_var = reader("codendereco")
codtelefone_var = reader("codtelefone")
codpjuridica_var = reader("codpjuridica")
End If
reader.Close()
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text 'Alteração no banco de dados da
tabela endereço
.CommandText = "UPDATE endereco SET Logradouro=@Logradouro,
Numero=@Numero, Cep=@Cep, Complemento=@Complemento, Bairro=@Bairro,
Cidade=@Cidade, Estado=@Estado where codendereco=@codendereco"
.Parameters.Add("@codendereco", MySqlDbType.Int32)
.Parameters.Add("@Logradouro", MySqlDbType.VarChar)
.Parameters.Add("@Numero", MySqlDbType.VarChar)
.Parameters.Add("@Complemento", MySqlDbType.VarChar)
.Parameters.Add("@Bairro", MySqlDbType.VarChar)
73
.Parameters.Add("@Cidade", MySqlDbType.VarChar)
.Parameters.Add("@Estado", MySqlDbType.VarChar)
.Parameters.Add("@Cep", MySqlDbType.VarChar)
.Parameters("@codendereco").Value = codendereco_var
.Parameters("@Logradouro").Value = Textbox_endereco.Text
.Parameters("@Numero").Value = Textbox_num.Text
.Parameters("@Complemento").Value = Textbox_comp.Text
.Parameters("@Bairro").Value = TextBox_bairro.Text
.Parameters("@Cidade").Value = TextBox_cidade.Text
.Parameters("@Estado").Value = Masked_UF.Text
.Parameters("@Cep").Value = Mask_cep.Text
.ExecuteNonQuery()
End With
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text 'Alteração no banco de dados da
tabela telefone
.CommandText = "UPDATE telefone SET telefone=@telefone,
celular=@celular, fax=@fax where codtelefone=@codtelefone"
.Parameters.Add("@codtelefone", MySqlDbType.Int32)
.Parameters.Add("@telefone", MySqlDbType.VarChar)
.Parameters.Add("@celular", MySqlDbType.VarChar)
.Parameters.Add("@fax", MySqlDbType.VarChar)
.Parameters("@codtelefone").Value = codtelefone_var
.Parameters("@telefone").Value = Mask_telefone.Text
.Parameters("@celular").Value = Mask_celular.Text
.Parameters("@fax").Value = MasKtBox_fax.Text
.ExecuteNonQuery()
End With
con.Close()
With cmd
con.Open()
.CommandType = CommandType.Text 'Fazer alteração no BR da tabela
PJuridica
.CommandText = "UPDATE pjuridica SET razao_social=@razao_social,
cnpj=@cnpj, ie=@ie where codpjuridica=@codpjuridica"
.Parameters.Add("@codpjuridica", MySqlDbType.Int32)
.Parameters.Add("@razao_social", MySqlDbType.VarChar)
.Parameters.Add("@cnpj", MySqlDbType.VarChar)
.Parameters.Add("@ie", MySqlDbType.VarChar)
.Parameters("@codpjuridica").Value = codpjuridica_var
.Parameters("@razao_social").Value = Textbox_razao_social.Text
.Parameters("@cnpj").Value = MBox_cnpj.Text
.Parameters("@ie").Value = MBox_IE.Text
.ExecuteNonQuery()
End With
74
con.Close()
con.Open()
With cmd
.CommandText = "UPDATE fornecedor SET Nome=@Nome,
Representante=@Representante, data_cadastro=@Data_cadastro, site=@site,
email=@email, obs=@obs where codfornecedor=@codfornecedor"
.Parameters.Add("@nome", MySqlDbType.VarChar)
.Parameters.Add("@Representante", MySqlDbType.VarChar)
.Parameters.Add("@Data_cadastro", MySqlDbType.VarChar)
.Parameters.Add("@site", MySqlDbType.VarChar)
.Parameters.Add("@email", MySqlDbType.VarChar)
.Parameters.Add("@obs", MySqlDbType.VarChar)
.Parameters("@nome").Value = Textbox_razao_social.Text
.Parameters("@Representante").Value = TextBox_representante.Text
.Parameters("@Data_cadastro").Value = data_cadastro
.Parameters("@site").Value = TextBox_site.Text
.Parameters("@email").Value = Textbox_email.Text
.Parameters("@Obs").Value = TextBox_obs.Text
.ExecuteNonQuery()
End With
con.Close()
MsgBox("Cadastro alterado com sucesso!", vbInformation)
FUN_Proximo()
FUN_Limpar()
FUN_Padrao()
Else
MsgBox("Alteração cancelada!", vbExclamation)
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
End Sub
Private Sub btn_voltar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_voltar.Click
Cadastro_Geral.Show()
Me.Hide()
End Sub
Private Sub btn_cancelar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_cancelar.Click
FUN_Proximo()
FUN_Limpar()
FUN_Padrao()
75
End Sub
End Class
Obs: Voltando novamente a tela de cadastro geral, o botão que falta é o
alteração de senha, que leva a mesma tela de alteração de senha que tem na tela
de login do programa.
5.2.11.1 Tela Estoque*
Voltando a tela principal, ao clicar na opção estoque, abrirá um painel de
consulta de estoque.
* tela em desenvolvimento
5.2.12.1 Tela de OS
Voltando a tela principal, ao clicar na opção OS, abrirá um cadastro de OS,
onde o número de OS é gerado automaticamente. Pode-se imprimir o recibo,
localizar por número de OS e gerar uma nova OS.
76
Clicando na opção localizar, abrirá um painel para consulta de OS.
77
5.2.12.2 Código da tela de OS*
Public Class OS
Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
If (e.KeyChar = "+") Then
cad_fis_jur.Show()
End If
End Sub
Private Sub TextBox3_TabStopChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox3.TabStopChanged
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TextBox3.TextChanged
End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If (e.KeyChar = "+") Then
cad_fis_jur.Show()
End If
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TextBox1.TextChanged
End Sub
Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Label3.Click
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
End Sub
Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
lbl_data_cadastro.Text = Date.Today
TextBox1.Focus()
78
data_cadastro = lbl_data_cadastro.Text
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
MsgBox(data_cadastro)
Painel_OS.Show()
End Sub
End Class
*tela ainda em desenvolvimento
5.2.13.1 Tela Cadastro de produtos
Voltando ao menu principal, clinando na opção produtos, abrirá a tela abaixo,
onde pode-se cadastar novos produtos, localizar e excluir.
Clicando na opção localizar, abrirá um painel de consulta.
79
5.2.13.2 Código da tela de produtos
Imports MySql.Data.MySqlClient
Public Class Cad_produtos
Private Sub limpar_campos()
Textbox_nome.Clear()
Textbox_marca.Clear()
Textbox_modelo.Clear()
Textbox_fabricante.Clear()
MaskBox_data_compra.Clear()
TextBox_garantia.Clear()
TextBox_garantia_forn.Clear()
Textbox_fabricante.Clear()
MaskBox_qtde.Clear()
MaskBox_qtde_estoque.Clear()
MaskBox_venda.Clear()
MaskBox_custo.Clear()
textbox_obs.clear()
End Sub
Private Sub FUN_Proximo()
Dim reader As MySqlDataReader
conexao()
Try
With cmd
.CommandType = System.Data.CommandType.Text
80
.Connection = con
.CommandText = "select codproduto from produto where codproduto =
(select max(codproduto) from produto)"
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codproduto_var = reader("codproduto")
reader.Close()
con.Close()
lbl_cod_produto.Text = codproduto_var + 1 'ADICIONAR O COD E
SOMAR MAIS 1 NO FORM
Else
lbl_cod_produto.Text = 1
End If
Catch a As Exception
End Try
con.Close()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
servicos.Show()
Hide()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
servicos.Show()
Me.Hide()
End Sub
Private Sub btn_Salvar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Salvar.Click
conexao()
With cmd
.CommandType = CommandType.Text
.CommandText = "INSERT INTO Produto (nomeproduto, Marca, Modelo,
Fabricante, Datacompra, Garantialoja, Garantiaforn, Estoqueatual, Custocompra,
Custovenda, obs, codfornecedor) VALUES (@nomeproduto, @Marca, @Modelo,
@Fabricante, @Datacompra, @Garantialoja, @Garantiaforn, @Estoqueatual,
@Custocompra, @Custovenda, @obs, @codfornecedor)"
.CommandType = CommandType.Text
.Parameters.Add("@Nomeproduto", MySqlDbType.VarChar)
.Parameters.Add("@Marca", MySqlDbType.VarChar)
.Parameters.Add("@Modelo", MySqlDbType.VarChar)
.Parameters.Add("@Fabricante", MySqlDbType.VarChar)
.Parameters.Add("@Datacompra", MySqlDbType.VarChar)
.Parameters.Add("@garantialoja", MySqlDbType.VarChar)
.Parameters.Add("@Garantiaforn", MySqlDbType.VarChar)
.Parameters.Add("@Estoqueatual", MySqlDbType.VarChar)
.Parameters.Add("@custocompra", MySqlDbType.Decimal)
.Parameters.Add("@custovenda", MySqlDbType.Decimal)
.Parameters.Add("@obs", MySqlDbType.VarChar)
81
.Parameters.Add("@codfornecedor", MySqlDbType.Int32)
.Parameters("@Nomeproduto").Value = Textbox_nome.Text
.Parameters("@Marca").Value = Textbox_marca.Text
.Parameters("@Modelo").Value = Textbox_modelo.Text
.Parameters("@Fabricante").Value = Textbox_fabricante.Text
.Parameters("@datacompra").Value = MaskBox_data_compra.Text
.Parameters("@Garantialoja").Value = TextBox_garantia.Text
.Parameters("@Garantiaforn").Value = TextBox_garantia_forn.Text
.Parameters("@Estoqueatual").Value = MaskBox_qtde_estoque.Text
.Parameters("@custocompra").Value = MaskBox_custo.Text
.Parameters("@custovenda").Value = MaskBox_venda.Text
.Parameters("@obs").Value = textbox_obs.Text
.Parameters("@codfornecedor").Value = combobox_forn.SelectedValue
.ExecuteNonQuery()
End With
con.Close()
FUN_Proximo()
limpar_campos()
End Sub
Private Sub Cad_produtos_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'Alpha.fornecedor' table. You can
move, or remove it, as needed.
Me.FornecedorTableAdapter.Fill(Me.Alpha.fornecedor)
FUN_Proximo()
End Sub
Private Sub btn_Localizar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Localizar.Click
Painel_produto.Show()
Hide()
End Sub
Private Sub btn_Editar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btn_Editar.Click
Try
If MsgBox("Deseja alterar as informações do produto?", vbYesNo,
"confirmação") = vbYes Then
conexao()
With cmd
.CommandType = System.Data.CommandType.Text
82
.CommandText = "select * from produto where
codproduto=@codproduto"
.Parameters.Add("@codproduto", MySqlDbType.VarChar)
.Parameters("@codproduto").Value = codproduto_var
End With
reader = cmd.ExecuteReader
If reader.Read() Then
codfornecedor_var = reader("codfornecedor")
End If
reader.Close()
con.Close()
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = "UPDATE produto SET nomeproduto=@nomeproduto,
marca=@marca, Modelo=@modelo, fabricante=@fabricante,
datacompra=@datacompra, garantialoja=@garantiloja, garantiaforn=@garantiaforn,
estoqueatual=@estoqueatual, custocompra=@custocompra,
custovenda=@custovenda, obs=@obs where codproduto=@codproduto"
.Parameters.Add("@codproduto", MySqlDbType.Int32)
.Parameters.Add("@Nomeproduto", MySqlDbType.VarChar)
.Parameters.Add("@Marca", MySqlDbType.VarChar)
.Parameters.Add("@Modelo", MySqlDbType.VarChar)
.Parameters.Add("@Fabricante", MySqlDbType.VarChar)
.Parameters.Add("@Datacompra", MySqlDbType.VarChar)
.Parameters.Add("@garantialoja", MySqlDbType.VarChar)
.Parameters.Add("@Garantiaforn", MySqlDbType.VarChar)
.Parameters.Add("@Estoqueatual", MySqlDbType.VarChar)
.Parameters.Add("@custocompra", MySqlDbType.Decimal)
.Parameters.Add("@custovenda", MySqlDbType.Decimal)
.Parameters.Add("@obs", MySqlDbType.VarChar)
.Parameters("@codproduto").Value = codproduto_var
.Parameters("@Nomeproduto").Value = Textbox_nome.Text
.Parameters("@Marca").Value = Textbox_marca.Text
.Parameters("@Modelo").Value = Textbox_modelo.Text
.Parameters("@Fabricante").Value = Textbox_fabricante.Text
.Parameters("@datacompra").Value = MaskBox_data_compra.Text
.Parameters("@Garantialoja").Value = TextBox_garantia.Text
.Parameters("@Garantiaforn").Value = TextBox_garantia_forn.Text
.Parameters("@Estoqueatual").Value = MaskBox_qtde_estoque.Text
.Parameters("@custocompra").Value = MaskBox_custo.Text
.Parameters("@custovenda").Value = MaskBox_venda.Text
.Parameters("@obs").Value = textbox_obs.Text
.ExecuteNonQuery()
End With
con.Close()
83
MsgBox("Cadastro alterado com sucesso!", vbInformation)
FUN_Proximo()
limpar_campos()
Else
MsgBox("Alteração cancelada!", vbExclamation)
Textbox_nome.Focus() 'Função focus, move o cursor para o campo
informado
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
End Sub
End Class
Obs: Voltando ao menu principal, clicando na opção cliente, abrirá a tela de
cadastro de cliente, que já foi mencionada anteriormente.
5.2.14.1 Tela de Vendas*
Voltando a tela principal, escolhendo a opção venda, abrirá a opção de
finalizar uma venda.
Obs: Tela em desenvolvimento.
84
6. Requisitos Mínimos
Configuração mínima necessária para funcionamento do sistema.
Resolução: 1.024 x 768
Plataforma: Windows Xp
Configuração mínima: Celeron 1.6, 512Mb Ram, HD 40GB
85
Conclusão
Trabalho de conclusão sobre o controle de estoque, construir um programa
que faça essa função.
Iniciamos a pesquisa entendendo como funciona o programa que estava na
empresa que está com a dificuldade de controlar o estoque e pesquisando na
internet empresas ou pessoas que disponibilisam programa para essa função e,
assim, comparar com as nossas ideias e alcançar o objetivo que é oferecer um
programa que faz o controle de estoque.
Durante a busca e pesquisa, não tivemos problemas para elaborar o
programa e sua funcionalidade tivemos bastante informação da internet e do dia a
dia, por exemplo, do comércio em geral, supermercados, drogarias. Tivemos
dificuldade na parte de fazer o programa, sua programação/códigos, por termos
pouco conhecimento na área demoramos para encontrar um começo e várias
dificuldades para verificação de erros, mas tentamos ao máximo aprender para
acertá-los.
Assim, finalizar o programa que foca em controlar o estoque de
microempresas e, de forma simples, oferecer um sistema funcional que ajude a
microempresa no ramo de informática a desenvolver e ajudá-la a crescer.
Cremos que o objetivo principal do grupo foi concluído, apesar do projeto não
estar funcionando em seu total já que há telas que estão em desenvolvimento, a
ideia principal que é dar a baixa do estoque está funcionando corretamente.
Disponibilizaremos o projeto na escola em seu total (códigos, telas) para que se
houver algum outro grupo de estudante interessado, possa continuar.
Terminado o projeto, tentaremos implementar na empresa em questão para
fazer os testes.
Colocamos o aprendizado do curso em prática e assim, levarmos a questão
do quão grande é esse tipo de mercado, e mesmo com as tecnologias cada vez
mais avançadas, ainda há muito o que informatizar em todos os tipos de comércio.
86
Referência bibliográfica
1. Centro Brasileiro de Apoio à Pequena e Média Empresa (SEBRAE) Controle de estoque. Disponível em: http://www.sebrae.com.br/uf/goias/paraminha-empresa/controles-gerenciais/controle-de-estoque.
Acesso 12 Setembro 2011
2. Sistema
de
Controle
de
Estoque.
Disponível
em:
http://www.controleestoque.info/sistema-de-controle-de-estoque/.
Acesso 10 outubro 2011
3. Cury
SG.
Texto
traduzido,
MySQL.
Disponível
em:
http://www.insite.com.br/cpanel/MySQL.htm.
Acesso em 11 novembro 2011
4. Centro Brasileiro de Apoio à Pequena e Média Empresa (SEBRAE). A
informatização
nas
MPEs
paulistas.
Disponível
em:
http://201.2.114.147/bds/BDS.nsf/F864F1EEEFFADD30832572B30065BABC/
$File/NT00035132.pdf
Acesso 13 março 2012
5. Cruz R. O que as Empresas podem fazer pela inclusão digital. Disponível em:
http://portal2.tcu.gov.br/portal/pls/portal/docs/2064400.PDF
Acesso em 19 abril 2012
87
Glossário
1. WBS (Work breakdown structure) é uma ferramenta de decomposição do trabalho
do projeto em partes manejáveis. É estruturada em árvore exaustiva, hierárquica (de
mais geral para mais específica) orientada às entregas que precisam ser feitas para
completar um projeto.
2. UML (Unified Modeling Language) permite que desenvolvedores visualizem os
produtos de seus trabalhos em diagramas padronizados.
3. DER (Diagrama entidade relacionamento) é um modelo diagramático que descreve
o modelo de dados de um sistema com alto nível de abstração. Ele é a principal
representação do Modelo de Entidades e Relacionamentos. É usado para representar o
modelo conceitual do negócio.
4. SQL (Structured Query Language) é um padrão internacional de consulta e retorno
de informações de bancos de dados.
5. MySQL é um software de código aberto e livre para uso. Essencialmente um
servidor de SQL. Utilizamos para o nosso trabalho, como o servidor de banco
de dados.
6. Visual Studio é um pacote de programas da Microsoft para desenvolvimento
de software que tem como parte o .NET Framework e Visual Basic (VB), C,
C++, C# (C Sharp) e J# (J Sharp). Utilizamos como nossa plataforma “visual”
para o nosso programa, interligado com o software MySQL.
88