desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (monografia -...

81
UNIVERSIDADE DO OESTE DE SANTA CATARINA – UNOESC CAMPUS DE VIDEIRA ÁREA DE CIÊNCIAS EXATAS E DA TERRA CURSO DE CIÊNCA DA COMPUTAÇÃO DESENVOLVIMENTO DE SISTEMA WEB PARA GERENCIAMENTO DE VENDAS DO SETOR DE BEBIDAS DIEGO DE COSTA Orientador: HERCULANO HAYMUSSI DE BIASI VIDEIRA – SC 2011

Upload: diego-de-costa

Post on 22-Apr-2015

12.233 views

Category:

Technology


25 download

DESCRIPTION

Monografia de gradução em Ciência da Computação - UNOESC, 2011.

TRANSCRIPT

Page 1: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

UNIVERSIDADE DO OESTE DE SANTA CATARINA – UNOESC CAMPUS DE VIDEIRA

ÁREA DE CIÊNCIAS EXATAS E DA TERRA CURSO DE CIÊNCA DA COMPUTAÇÃO

DESENVOLVIMENTO DE SISTEMA WEB PARA GERENCIAMENTO D E VENDAS DO SETOR DE BEBIDAS

DIEGO DE COSTA

Orientador:

HERCULANO HAYMUSSI DE BIASI

VIDEIRA – SC 2011

Page 2: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

1

DIEGO DE COSTA

DESENVOLVIMENTO DE SISTEMA WEB PARA GERENCIAMENTO D E VENDAS DO SETOR DE BEBIDAS

Trabalho de conclusão de curso

apresentado ao Curso de Ciência da

Computação da Universidade do Oeste

de Santa Catarina como requisito parcial

para a disciplina de TCC III para obtenção

do titulo de Bacharel em Ciência da

Computação

Orientador: Herculano Haymussi De Biasi

VIDEIRA – SC 2011

Page 3: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

2

DIEGO DE COSTA

DESENVOLVIMENTO DE SISTEMA WEB PARA GERENCIAMENTO D E VENDAS DO SETOR DE BEBIDAS

Trabalho de Conclusão de Curso apresentado ao

Curso de Ciência da Computação da Universidade

do Oeste de Santa Catarina – UNOESC, Campus

de Videira (SC), como parte dos requisitos para

obtenção do título de Bacharel em Ciência da

Computação.

Aprovado em ___________________

BANCA EXAMINADORA

______________________________________________________ Prof. Herculano Haymussi De Biasi Professor Orientador Universidade do Oeste de Santa Catarina ______________________________________________________ Prof. Professor Membro da Banca Examinadora Universidade do Oeste de Santa Catarina ______________________________________________________ Prof. Professor Membro da Banca Examinadora Universidade do Oeste de Santa Catarina

Page 4: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

3

Dedico este trabalho aos meus pais, pelo

continuo apoio e dedicação aos

conhecimentos e estudos.

Page 5: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

4

AGRADECIMENTOS

A Deus por me proporcionar aptidão para concluir este trabalho.

A minha família, fonte de minha ideologia.

Ao professor Herculano, pela sua orientação.

À professora Lilian, por compartilhar seus conhecimentos.

Ao meu amigo Alessandro Panaccione, por seu apoio e ajuda.

A todos que, de uma forma ou outra, colaboraram para que este trabalho fosse

realizado.

Page 6: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

5

RESUMO

Uma aplicação desenvolvida para a arquitetura web (World Wide Web) através de

solicitações entre cliente e servidor, representa um novo conceito baseado em

acessibilidade e portabilidade, permitindo acessos simultâneos de usuários

geograficamente distantes. A análise dos processos de vendas da empresa de

bebidas foi realizada através de diagramas, determinando e orientando a criação do

sistema. O aplicativo automatiza os processos de emissão de pedidos por

representantes, e a administração da informação gerada na indústria como emissão

de ordens e relatórios de vendas, permitindo o acesso do usuário de qualquer local e

região. Apresentar problemas de comunicação entre processos e setores, para criar

e definir o modelo de caso de uso, a usabilidade e seus módulos. O projeto cria um

sistema robusto e seguro, que consegue aceitar uma grande quantidade de usuários

conectados com uma taxa significativa de transferência entre cliente e servidor. As

informações são comutadas entre o navegador do dispositivo do usuário e o servidor

que deve interpretar os dados, incluindo e selecionando a informação disponível no

banco de dados. Utilizando tecnologias como a linguagem PHP e banco de dados

MySQL é possível garantir todos os requisitos técnicos exigidos para a sua

construção e desenvolvimento. O desempenho da comunicação entre cliente e

servidor pode ser complementado utilizando o método Ajax, esta metodologia

permite que a resposta seja mostrada no navegador sem a necessidade que a

página seja reprocessada. Os módulos da aplicação são capazes de realizar

funções de envio de e-mails, geração de documentos, tratamento de sessões, entre

outras. A validação dos formulários pode ser realizada no próprio navegador do

cliente, otimizando o desempenho, não necessitando aguardar uma resposta do

servidor. Buscou-se analisar as características ideais para o banco de dados e

servidor web, garantindo que a aplicação seja confiável e ativa.

Palavras chave: Web. PHP. MySQL. Automatização.

Page 7: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

6

ABSTRACT

An application developed for the architecture web (World Wide Web) through

requirements between client and provider, represents a new concept based on

accessibility and portability, allowing accesses from users at the same time. The

analysis of the processes of sales of the company of drink was realized through

diagrams, determining and giving orientation to the creation of the system. The

applicative automatizes the processes of demand emission by representatives, and

the administration of the information created in the company such as the demand

emission and sales reports, allowing the user’s access of any place and region. To

present problems of communication between processes and departments, to create

and to define the usage case model, defining its usage and its modules. The project

must create a robust system, safe that can accept a great quantity of connected

users, a meaningful rate of transference between client and provider is essential. The

pieces of information are commutated between the browser of the user and the

provider that has to interpret the data. Using technologies as the PHP language and

MySQL data bank is possible to guarantee all the technical requirements demanded

for its constructions and development. The performance of the communication

between client and provider can be complemented using the Ajax Method; this

methodology allows the answer to be showed in the browser without the need of the

page being reprocessed. The modules of the application are able to fulfill functions of

sending of e-mails, documentation creation, sections treatment, and the like. The

validation of the forms can be realized from the browser itself, optimizing the

performance, not being necessary to wait for an answer from the provider. The ideal

characteristics were searched for the data bank and web provider, guaranteeing the

application to be reliable and active.

Key words: Web. PHP. MySQL. Automatization

Page 8: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

7

SUMÁRIO

1 INTRODUCÃO ....................................................................................................... 10

1.1 OBJETIVO GERAL .......................................................................................... ...11

1.2 OBJETIVOS ESPECÍFICOS ............................................................................... 11

1.3 JUSTIFICATIVA ................................................................................................... 11

2 DESENVOLVIMENTO ............................................................................................ 13

2.1 BUSINESS TO BUSINESS (B2B) ....................................................................... 13

2.2 APLICAÇÃO WEB ............................................................................................... 14

2.3 PROTOCOLO HTTP ........................................................................................... 15

2.3.1 Common Gateway Interface (CGI)............... .................................................. 16

2.3.2 Métodos GET e POST .......................... ........................................................... 17

2.4 LINGUAGEM DE MARCAÇÃO DE HIPERTEXTO (HTML) ................................ 18

2.5 CASCADING STYLE SHEETS (CSS) ................................................................. 19

2.6 LINGUAGEM PHP .............................................................................................. 19

2.6.1 História .................................... ........................................................................ 20

2.6.2 Características ............................. ................................................................... 21

2.6.3 Envio de e-mails ............................ ................................................................. 22

2.6.4 Biblioteca FPDF ............................. ................................................................. 23

2.6.5 Sessões ..................................... ...................................................................... 24

2.6.5.1 Sessão .......................................................................................................... 24

2.6.5.2 Cookies ......................................................................................................... 25

2.6.6 Segurança ................................... .................................................................... 26

2.6.6.1 Message Digest Cinco (MD5) ........................................................................ 26

2.6.6.2 Injeção de SQL .............................................................................................. 27

2.7 BANCO DE DADOS MYSQL .............................................................................. 27

2.7.1 Tipos de tabela ............................. .................................................................. 28

Page 9: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

8

2.7.2 Integridade referencial ..................... .............................................................. 30

2.7.3 Suporte a transações ........................ ............................................................. 31

2.7.4 phpMyAdmin .................................. ................................................................. 31

2.8 AJAX.................................................................................................................... 32

2.8.1 XML .................................................................................................................. 34

2.8.2 JavaScript .................................. ..................................................................... 34

2.8.3 Modelo de Objetos de Documentos (DOM) ....... ........................................... 35

2.8.4 Requisição XMLHttp........................... ............................................................ 35

2.9 SERVIDOR WEB................................................................................................. 36

2.9.1 Servidor Apache ............................. ................................................................ 36

2.9.2 XAMPP ............................................................................................................. 37

2.9.3 Microsoft Internet Information Services (IIS) ............................................... 38

2.10 ADOBE DREAMWEAVER ................................................................................. 38

2.10.1 Desenvolvimento de Formulários ............. .................................................. 39

2.10.2 Spry ....................................... ........................................................................ 39

2.11 METODOLOGIA ................................................................................................ 40

2.11.1 Análise de Requisitos ...................... ............................................................ 40

2.11.2 Caso de uso e diagrama de seqüência ........ ............................................... 41

2.11.3 Diagrama de classes ........................ ............................................................ 42

2.11.4 Arquitetura geral .......................... ................................................................. 43

2.11.5 Arquivo de configuração .................... .......................................................... 44

2.11.6 Conexão com o banco de dados ............... .................................................. 45

2.11.7 Autenticação de usuário .................... .......................................................... 46

2.11.8 Cadastros .................................. .................................................................... 47

2.11.9 Inclusão de pedidos ........................ ............................................................. 48

2.11.10 Inclusão e baixa de ordens de carregamento .......................................... 49

2.11.11 Relatórios ................................ .................................................................... 49

Page 10: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

9

2.11.12 Logoff .................................... ...................................................................... 50

2.11.13 Tratamento e conversão de dados ........... ................................................. 51

2.11.14 Confirmações e avisos em JavaScript ....... .............................................. 53

2.11.15 Envio automático de e-mails ............... ...................................................... 54

2.11.16 Menus e departamentos ..................... ........................................................ 55

3 CONCLUSÃO ....................................... ................................................................. 57

REFERÊNCIAS ......................................................................................................... 59

APÊNDICES ............................................................................................................. 63

APÊNDICE A – Diagrama de sequência ................................................................... 64

APÊNDICE B – Diagrama de classes ....................................................................... 65

APÊNDICE C – Código HTML do formulário para a autenticação do usuário ........... 66

APÊNDICE D – Código PHP utilizado para cadastro ................................................ 67

APÊNDICE E – Código de inclusão de pedidos ........................................................ 69

APÊNDICE F – Código de inclusão e baixas de ordens ........................................... 71

APÊNDICE G – Verificação de departamento e usuário logado ............................... 73

APÊNDICE H – Sintaxe SQL para criação das tabelas do banco de dados ............. 75

ANEXOS ................................................................................................................... 77

ANEXO A – Código JavaScript para validação de CNPJ e CPF ............................... 78

Page 11: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

10

1 INTRODUCÃO

A automatização dos processos de vendas é importante para a determinação

de resultados e qualidade das informações. Analisar os problemas de gerenciamento

de vendas e logística de carregamento em uma empresa no setor de bebidas é a

etapa inicial para determinação das características funcionais para o

desenvolvimento do sistema que deve auxiliar o gerenciamento comercial. Utilizar

diagramas facilita a visualização dos requisitos que o aplicativo deve possuir,

ajudando o desenvolvimento, a documentação e a concepção de novas versões.

Através dos diagramas é possível determinar as tabelas a serem criadas no

MySQL, este banco de dados é utilizado por grandes portais pelo mundo inteiro,

demonstra uma grande estabilidade e desempenho para web, não necessitando de

muitos recursos de hardware no servidor onde se encontra.

Para atender todas as condições necessárias, proposta pelos objetivos

funcionais é utilizado um browser como uma ferramenta para execução de software,

criando diversos benefícios na facilidade de utilização e na disponibilidade do

sistema. Para maximizar o desenvolvimento e o desempenho proposto, é utilizada a

linguagem PHP (PHP: Hypertext Preprocessor) que possui uma grande quantidade

de extensões e bibliotecas disponíveis para criar um portal seguro e funcional,

permitindo uma vasta diversidade de mecanismos para gerenciar os dados

armazenados, inclusões e tratamentos.

Cada página de código PHP é responsável por realizar uma função, em uma

tela em especifico, dentro de um modulo responsável por determinada entidade,

como por exemplo, cliente e pedido. Os acessos a esses módulos e funções são

gerenciados conforme o departamento cadastrado no usuário. Desta maneira é

criado níveis de acessos aos dados, onde são disponibilizados conforme a

necessidade do processo em um determinado setor. A informação fica protegida de

vazamentos, totalmente direcionada e simplificada ao utilizador.

A compatibilidade entre as definições técnicas de linguagem e banco de

dados deve ser garantida na utilização de um servidor web que suporte gerenciar a

execução do PHP, sua comunicação com o banco de dados e o processamento de

entrada e saída de informações gerada com a comunicação aos navegadores dos

Page 12: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

11

usuários. Um período de testes e homologação do sistema garante uma qualidade

superior na sua operacionalidade, superando dificuldades primárias de consertos de

erros com a verificação na compatibilidade da estrutura disponível. É indispensável

propostas de testes locais no computador do programador e homologação no

servidor da empresa.

1.1 OBJETIVO GERAL

Desenvolver um sistema web para gerenciamento de vendas do setor de

bebidas.

1.2 OBJETIVOS ESPECÍFICOS

• Analisar possível automatização entre os processos de venda de bebidas;

• Pesquisar definições de sistema web;

• Desenvolver a aplicação com linguagem PHP;

• Melhorar os processos utilizando validações em JavaScript;

• Crias as tabelas e conexão com banco de dados MySQL;

• Determinar os benefícios de um sistema automatizado;

1.3 JUSTIFICATIVA

Uma aplicação web é interpretada por navegadores de varias plataformas,

garantindo uma grande compatibilidade com todos os usuários do sistema que estão

localizados por todo país, independente se estes usam um computador com sistema

operacional específico ou algum laptop e celular. Só haverá a necessidade de

Page 13: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

12

conexão com a internet, a qual hoje existe a disponibilidade em diversas formas e

em quase qualquer lugar.

Um procedimento padrão de envio de pedidos será criado, eliminando

problemas de formatos de arquivos incompatíveis com o da empresa, e o envio

informal de pedidos por meio de telefone e fax. A soma de resultados totais de

impostos e mercadoria é de forma automatizada, criando um conjunto de dados

comercias consistente.

O sistema exige do usuário a inserção de todas as informações necessárias

para garantir a qualidade dos processos, e não ocasionar problemas na entrega da

mercadoria, cobrança, nota fiscal incorreta ou qualquer outro. Facilitando a criação

de ordens a partir dos pedidos lançados, evitando desperdício de tempo em

digitação duplicada das informações, deixando os processos de venda,

carregamento e entrega mais ágil.

Opções de relatórios gerenciais com dados precisos para a diretoria, relatório

de venda por estado, representante, produto e muitos outros que podem ser

incluídos no aplicativo conforme a necessidade da empresa.

O desenvolvimento desse aplicativo irá fornecer uma melhor condição de

trabalho a todos os usuários, que poderão se concentrar em atender a demanda de

pedidos, sendo que os dados processados serão preservados e utilizados de forma

eficiente, sem conferencias manuais adicionais, diferente do que se faz em envio e

recebimento de planilhas ou conversas por telefone.

A emissão on-line e a visualização de pedidos e ordens internas da empresa

vão garantir uma grande economia em papel, visto que não é preciso imprimir as

folhas para serem encaminhadas entre os departamentos, com isso contribuindo

com o meio ambiente na redução do desmatamento para fabricação de papel.

Fica claro que a centralização das informações da empresa em uma

arquitetura web facilita a integração entre diversos setores, criando um padrão

acessível.

Page 14: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

13

2 DESENVOLVIMENTO

As informações trocadas e armazenadas entre a empresa e seus clientes e

parceiros é de grande valor para o gerenciamento e a sobrevivência no mercado.

Segundo Stallings (2003, p. 5):

Uma empresa sobrevive e prospera com informações: as informações dentro da organização e as informações trocadas com fornecedores, cliente e agências reguladoras. Além do mais, a informação precisa ser consistente, acessível e estar no local certo.

A utilização de um software para gerenciamento de informação é

constantemente utilizada por conseguir uma ótima organização e acessibilidade. A

construção de sistemas on-line ou portais amplia as possibilidades de gestão. Um

portal sendo o centro de integração entre informações e sistemas, aumenta a

acessibilidade aos dados que estão arquivados, ao alcance em qualquer ponto de

internet, agilizando as tomadas de decisões e o tempo. É essencial construir um

sistema robusto, seguro, que consiga aceitar uma grande quantidade de usuários

conectados, com uma taxa significativa de transferência entre cliente e servidor.

Em qualquer conteúdo web, o código fonte é dividido em dois conceitos, a

página do servidor que possui scripts interagindo entre si, somente no servidor e

totalmente invisível para o browser (navegador) do cliente, que só recebe conteúdo

através de um protocolo específico. As paginas do cliente escritas por uma

linguagem que o navegador interpreta, possibilitando a interação do usuário. Esses

conceitos trabalham sempre junto em uma aplicação web.

2.1 BUSINESS TO BUSINESS (B2B)

O B2B é o processo eletrônico de negócios entre as empresas para compras

e vendas. As transações comerciais são realizadas totalmente através de softwares

substituindo processos físicos. Conforme McLean, Turban, Wetherbe (2002, p. 175)

descreve:

Page 15: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

14

Nas aplicações B2B os compradores e os vendedores são empresas. O B2B representa a maior parte do volume do comercio eletrônico, cobrindo um largo espectro de aplicações quer permitem a uma empresa ou a um setor econômico estabelecer relacionamentos eletrônicos com seus distribuidores, revendedores, fornecedores, clientes e outros parceiros.

Através da internet é possível a troca do grande volume de informações

criada pelas transações, garantindo dados em tempo real para a organização e

eficiência interna da empresa. Com a acessibilidade criada pela internet é possível

aumentar a quantidade de entidades envolvidas no aplicativo garantindo

interconexões entre diversos servidores, descentralizando ou centralizando a

informação, garantindo compatibilidades entre filiais ou empresas. A compatibilidade

entre entidades de negócios assegura a automatização de qualquer operação,

possibilitando uma quantidade expressiva de transações. Como o controle eletrônico

comercial é padronizado gera resultados de conhecimento com base de informação

precisa.

Os aplicativos de B2B permitem que a empresa possa atender uma grande

demanda de clientes e parceiros, disponibilizando diversos dados sobre suas

compras a qualquer hora. O limite operacional se concentra somente em

investimentos físicos e virtuais na área de tecnologia da informação.

2.2 APLICAÇÃO WEB

Aplicação web é qualquer sistema executado através de um navegador, seja

na internet ou em redes privadas, localizado em um servidor web, as quais

transferem dados da maneira cliente e servidor (TURBAN; MCLEAN; WETHERBE,

2002).

O navegador solicita ou envia informações a ser processada no servidor, este

devolve ao cliente onde o navegador imprime o resultado, se difere de um site, pois

existe um nível significativo de regras e interações das informações entre os lados

de servidor e cliente. O usuário do sistema web pode utilizar o sistema de qualquer

local que possua conexão com a internet, não existe a necessidade que ele possua

o conhecimento de onde a aplicação e o banco de dados estão armazenados, pois

Page 16: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

15

esta pode estar em qualquer servidor ou data center, em qualquer local do planeta.

A simplicidade da atualização e manutenção nas aplicações web representa uma de

suas principias características, visto que é necessário aplicar as mudanças somente

nos servidores onde o código fonte está localizado, no próximo acesso que o usuário

realizará, já estará acessando a versão atualizada do sistema. Existem diversas

linguagens para web, onde pode ser construídos sistemas de diversos interesses,

em quase qualquer plataforma.

2.3 PROTOCOLO HTTP

Gourley e Totty (2002) definem o Hypertext Transfer Protocol (HTTP) como

uma metodologia de comunicação utilizada para troca de dados entre o navegador e

o servidor web. Este protocolo é utilizado quando algo é digitado na barra de

endereços do navegador, seja ela uma aplicação ou um site, a transferência da

página até a plataforma do cliente e suas respostas ao servidor web são realizadas

com este protocolo. A comunicação HTTP entre o cliente e servidor é feita através de

mensagens. O cliente envia mensagens de requisição e o servidor envia uma

mensagem de resposta para o cliente.

As mensagens enviadas e recebidas são compostas por cabeçalho e corpo.

O cabeçalho contém informações especificas de configuração de servidor ou de

cliente, e o corpo da mensagem contém os dados que serão tratados pelo Hypertext

Markup Language (HTML) como texto, imagem ou até mesmo um arquivo para

download.

O protocolo utiliza alguns métodos para transferências de informações entre

cliente e servidor, esses métodos são utilizados como padrões por diversas

linguagens e por códigos HTML para envio de formulários ao servidor.

Page 17: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

16

2.3.1 Common Gateway Interface (CGI)

Common Gateway Interface (CGI) é uma tecnologia utilizada nos servidores

web para tornar a aplicação interativa. Essa tecnologia permite que o browser do

cliente passe parâmetros para serem processados no servidor. Os scripts CGI geram

as paginas com base das variáveis enviadas pelo cliente. São ativados pelo HTML,

que informa o método utilizado para envio dos parâmetros.

Um servidor web pode ser configurado para aumentar o nível de interatividade

com o cliente como afirma Della Valle e Ulbrich (2005, p. 201):

Os servidores HTTP podem ser amplamente estendidos com a adoção de mecanismos que permitam o chamado conteúdo dinâmico, uma tecnologia que possibilita a montagem de paginas personalizadas e de conteúdo variável para cada visitante e acesso.

A personalização do conteúdo e da informação é a principal característica de

um script CGI, isso permite que a aplicação web aumente sua habilidade de

compreensão do usuário.

A interface criada é responsável por um ciclo de solicitações feitas pelo

cliente, com o acesso ao conteúdo HTML, que se encontra no servidor e o envio de

dados com um retorno, garantindo a interatividade com o usuário. O fluxograma

abaixo retrata os principais procedimentos que o CGI é incumbido de interagir para

garantir o processamento e comunicação.

Page 18: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

17

Fluxograma 1: Common Gateway Interface Fonte: Otsuka L. (1999)

Através de uma Uniform Resource Locator (URL), é solicitado ao servidor web

e ao CGI para que disponibilizem o conteúdo para ser tratado e formatado pelo

browser do cliente. Com esse conteúdo, o navegador poderá enviar e receber dados

previstos no código HTML. Enquanto que o CGI ficará responsável para encaminhar

ou receber as informações do aplicativo correto, contido no servidor.

2.3.2 Métodos GET e POST

O método GET é uma forma de transmitir dados através do protocolo HTTP.

Com a utilização deste procedimento, os parâmetros e variáveis são introduzidas em

forma de string na URL de destino. A URL é formada pela página de destino, um

ponto de interrogação (“?”), que delimita o começo dos dados, o nome da variável, o

conteúdo da variável e demais dados, normalmente separadas por caracteres

especiais como símbolos comercial ("&"). Todo o endereço e os dados podem ser

observados na barra de endereços do navegador apos o envio a página de destino

(MUTO, 2006).

Page 19: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

18

Diferente do método GET, a metodologia POST não informa o nome e o valor

das variáveis pela URL. Os dados são enviados diretamente por uma mensagem do

protocolo HTTP, utilizando este método o nome das variáveis que serão tratadas no

servidor ficam invisíveis para o usuário, impossibilitando um possível ataque

informando variáveis ou valores manualmente. O POST é uma solução muito

utilizada para envio de formulários HTML com diversas informações.

Para recepção dos dados no script do servidor algumas linguagens criam um

array diferente para cada método, que pode ser consultado por outras funções.

2.4 LINGUAGEM DE MARCAÇÃO DE HIPERTEXTO (HTML)

A linguagem HTML é utilizada para produzir paginas web. São interpretados

por navegadores para gerar paginas estáticas. Foi criada em 1990 por Tim Berns-

Lee com a finalidade de tornar possível o acesso e a troca de informações entre

seus colegas. Com a disseminação do padrão HTML em toda internet, em 1994 foi

criado a World Wide Web Consortium (W3C), o consórcio internacional da internet,

que tinha como objetivo a padronização e manutenção do HTML, entre outras

linguagens criadas posteriormente (LOGMAN, 1998).

O arquivo com extensão “.html”.ou “.htm” fica armazenado no servidor web, o

navegador do cliente solicita o conteúdo, realizando o download do arquivo HTML.

Com o arquivo na plataforma do cliente, o navegador interpreta e mostra seu

conteúdo formatado.

Um código HTML é formado por tags, as quais possuem comandos dentro

dos símbolos menor que “<” e maior que “>”. Essas tags dividem o conteúdo

permitindo uma formatação específica. Alguns elementos como imagens, animações

e a linguagem JavaScript podem ser adicionadas entre os códigos HTML.

Page 20: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

19

2.5 CASCADING STYLE SHEETS (CSS)

CSS é uma linguagem para construção de aparência em documentos escritos

em linguagem de marcação. Foi desenvolvido pela W3C com o objetivo de

padronizar a customização de conteúdo web. Remoaldo (2008) afirma que o estilo e

características visuais de uma página devem ser completamente descritos na

linguagem CSS. A linguagem deve ser incorporado ao HTML, diretamente ou

através de um link para um arquivo “.css”.

A utilização de formatação através de códigos CSS facilita o desenvolvimento,

reduzindo a quantidade instruções. Conforme Somera (2006 p. 10):

A linguagem HTML também pode ser usada para definir o layout de web sites. Contudo, a CSS proporciona mais opções, é mais precisa e sofisticada, alem de ser suportada pela maioria dos navegadores atuais. A principal diferença entre HTML e CSS é que o primeiro é usado para formatar conteúdos e o segundo para conteúdos já estruturados.

O CSS permite um controle de layout de vários documentos HTML, com um

simples arquivo, facilitando sua manutenção. No caso de portais e aplicativos de

grande porte, é muito difícil garantir a mesma formatação configurada em todas as

paginas. Com a utilização de um arquivo CSS é possível definir blocos, com uma

configuração padrão para ser utilizado em todas as paginas. Com qualquer

modificação do layout no arquivo CSS, as paginas serão modificadas

automaticamente.

2.6 LINGUAGEM PHP

O PHP (PHP Hypertext Preprocessor) é uma linguagem para criação de

scripts executados no servidor, foi projetada especificamente para web. Pode ser

embutido em um código HTML, quando este código executar em um cliente, é

solicitado algo ao servidor web, o PHP irá executar e retornar as informações para o

navegador. Por ser interpretado no servidor, o usuário só conseguirá ler as tags em

HTML e não o código em PHP. Essa solução apresenta ser veloz e multiplataforma.

Page 21: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

20

A sua capacidade é muitas vezes colocada a prova em sites e portais com milhões

de acessos. Por ser de código-fonte aberto, pode ser usado, modificado e

redistribuído com novos módulos sem nenhuma restrição (MELO; NASCIMENTO,

2007).

As variáveis são verificadas dinamicamente pela linguagem, ou seja, é

possível armazenar diversos tipos de dados durante a existência da variável, sem a

necessidade de declarar seu tipo na criação. Quando o PHP for interpretado, é

identificado o conteúdo, verificando em tempo de execução

2.6.1 História

Foi criada em 1994 por Rasmus Lerdof, como um pacote CGI para sua

página pessoal, que até aquele momento era utilizado um conjunto de scripts Perl. O

autor Muto (2006), afirma que a primeira versão do PHP, ainda com nome de

PHP/FI, já possuía um interpretador conhecido como FI (Form Interpreter) e várias

características encontradas até nas versões dos dias atuais, como interpretação

automática de variáveis vindas de formulário, sintaxe embutida no HTML e suporte

ao banco de dados MySQL.

Após a construção e a disponibilização das primeiras versões da linguagem, o

PHP recebeu apoio da comunidade livre, de acordo com Melo e Nascimento (2007

p. 21): “Assim como ocorreu com o sistema operacional Linux, diversos entusiastas

do software livre tomaram conhecimento do pacote PHP/FI, os quais passaram a

contribuir e acrescentar suas idéias ao mesmo”. A acessibilidade ao código-fonte,

concedido pelo autor ajudou para popularização global do PHP.

Entre os anos de 1996 e 1997 a linguagem já era utilizada em cerca de

quinze mil sites espalhados em vários servidores (MORAZ, 2005).

De acordo com o PHP Group (2010), a versão três desenvolvida por Andi

Gutmans e Zeev Suraski, já existia a possibilidade de criar códigos orientados a

objetos e herança, adaptação da linguagem para novos protocolos da internet e

suporte para a maioria dos bancos de dados. O PHP três foi à primeira versão a

possibilitar a utilização de extensões, que por sua vez atraiu diversos programadores

para o desenvolvimento de módulos. Renomeada para PHP: Hypertext

Page 22: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

21

Preprocessor, conforme a atribuição de nomes recursiva do GNU (GNU = GNU’s Not

Unix), foi lançada em 1998, e no final do mesmo ano já contava com instalação em

10% dos servidores web.

Na sua quarta versão foi aprimorado para cobrir diversas necessidades e

solucionar alguns inconvenientes que apresentavam em sua versão anterior. A

característica mais significativa para a versão quatro é sua rapidez que foi concebido

através da mudança de seu motor, no PHP quatro o código é compilado e depois

executado, enquanto que antes era compilado e executado ao mesmo tempo. Com

uma independência maior do servidor web, a linguagem se tornou mais portável e

dinamicamente mais interpretada por outros sistemas operacionais diversos. A

versão cinco lançada em 2004 contava com diversas funcionalidades novas, como

um melhor gerenciamento da memória e a utilização de ponteiros no código,

eliminando a necessidade de copia de objetos que era necessária na versão número

quatro. Introduzindo o conceito de handlers, ou seja, apontadores, foi possível a

implementação de somente um objeto, e a necessidade de copiar somente o

ponteiro, sendo assim quando o objeto sofrer alguma mudança, está se aplicará em

todo lugar onde contenha a instância do ponteiro. O novo suporte ao banco de

dados MySQL foi melhorado. Souza (2007) descreve que com a versão cinco do

PHP houve a inclusão da interpretação de comandos SQL (Structured Query

Language) via extensão MySQLi que permitiu ao PHP, a compatibilidade com novas

funcionalidades disponibilizadas pela versão 4.1 do banco de dados.

2.6.2 Características

A linguagem PHP tem como escopo principal, o desenvolvimento web, ainda

que exista projeto para a utilização em programação fixa, ou seja, desktop. Sua

sintaxe e funções muito parecidas com C e C++ permitem que programadores

consigam adaptarem-se com essa linguagem mais rapidamente, graças a sua

simplicidade. Seu objetivo é a criação de sistemas que possibilitam a geração de

conteúdo dinâmico para paginas da internet, onde o usuário possa interagir de uma

Page 23: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

22

forma onde suas ações façam surgir efeitos na aplicação, ou seja, a inserção de

informações possa trazer um feedback para o cliente.

A identificação feita pelo servidor para detectar o inicio do código PHP que

está embutido no HTML é procurando pelo conjunto de caracteres “<?php” e “?>”,

qualquer comando que estiver entre essas tags será interpretada pelo servidor e seu

código não será enviado para o cliente. Os arquivos que contenham instruções PHP,

devem possuir em sua extensão a sigla “.php” (WELLING; THOMSON, 2003).

De acordo Ferreira (2010), o PHP é totalmente modularizado, a sua alteração

é possível com a instalação de novos módulos, tendo a finalidade de aumentar as

suas funções. Possui extensões para acesso a banco de dados MySQL,

PostgreSQL e Oracle. Extensão para criação de PDF (Portable Document Format),

entre muitas outras, que contribuem na construção de um sistema com esta

linguagem. A manipulação de arquivos com a linguagem possibilita a criação de

sistemas dinâmicos de discos virtuais on-line para que os usuários possam alterar,

excluir, realizar upload ou download de qualquer arquivo através da aplicação.

Possui suporte nativo para diversos protocolos, podendo expandir ainda mais a

quantidade utilizando bibliotecas de terceiros.

2.6.3 Envio de e-mails

A linguagem PHP permite o envio de e-mails através da função mail. Esta

função pode operar automaticamente se for configurada para tal, enviando

informações definidas em variáveis que podem ser preenchidas com valores do

banco de dados ou de formulários. Conforme Muto A. (2006 p. 184):

Uma das grandes vantagens da linguagem PHP é a possibilidade de mandarmos e-mails pela própria pagina do navegador. É um recurso muito útil quando desejamos enviar dados de confirmação de um pedido a um cliente, notificação de inclusão em algumas lista de discussão, construção de Web Mails, etc.

O envio de e-mails através do script PHP, permite um nível de interação maior

com o usuário do sistema, que pode ser avisado por e-mail caso haja alguma nova

inclusão de dados no aplicativo. Esta função permite que o cliente não precise entrar

Page 24: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

23

no portal para conferir se existe alguma mudança em informações que sejam

relevantes para ele.

Muto (2006) afirma que com a função mail, é possível enviar e-mails apenas

informando textos em suas variáveis ou incluindo códigos HTML, que serão

interpretados no browser ou no gerenciador de e-mail. São definidos quatro variáveis

para enviar um e-mail, são elas:

a) Destinatário, que deve conter o e-mail para quem a mensagem é enviada.

b) Título, contendo o assunto.

c) Mensagem, o conteúdo do e-mail.

d) Header, cabeçalho contendo informações adicionais como especificações

para HTML.

Utilizando conteúdo HTML é possível a inclusão de imagens, criando uma

referencia no código para onde a imagem está localizada, ou seja, em seu local de

hospedagem.

2.6.4 Biblioteca FPDF

A biblioteca FPDF, é uma classe da linguagem PHP, que permite gerar

arquivos PDF. De acordo com Antunes Lamim (2010), o FPDF é uma biblioteca

flexível, sendo possível modificar unidades de medida, formato da pagina, margens,

cabeçalhos, cores, quebra de linhas entre outras opções que permitem a

modificação do conteúdo gerado.

Compatível com a versão cinco e quatro da linguagem PHP, o FPDF não

utiliza a biblioteca padrão da linguagem, PDFlib, que já vem embutida no servidor

web, isso compromete um pouco na performance em gerar o documento. Mas o

nível de personalização que o FPDF permite, e sua facilidade de documentação no

site do criador e em toda comunidade livre, contribui por sua utilização em

aplicativos que precisam gerar arquivos com informações provenientes de consultas

a banco de dados ou preenchimento de formulários (PLATHEY, 2008).

Page 25: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

24

2.6.5 Sessões

O PHP Group (2010), mantedor oficial do projeto da linguagem PHP, define as

sessões como uma maneira de preservar dados subseqüentes, permitindo a

construção de aplicações personalizadas. Os dados criados são exclusivos para um

único acesso, são considerados como parâmetros validos para conceder acessos e

modificações especiais.

2.6.5.1 Sessão

O método sessão na linguagem PHP existe para preservar dados específicos

até o usuário fechar seu navegador ou a sessão expirar, seja por inatividade ou por

comando do aplicativo.

Segundo Muto A. (2006 p. 158):

[...] a nível de programação, uma sessão é uma pequena porção em que pode se guardar todos os tipos de variáveis e valores. Esta pequena porção conhecida como objeto sessão, possui uma identificação [...] que é automaticamente enviada ao usuário quando a sessão é iniciada [...]

Para cada sessão criada por cliente, um arquivo é criado no servidor com o

mesmo nome da identificação enviada ao navegador. Este arquivo só existe

enquanto a sessão não expirar ou for destruída. A administração de sessões no

servidor permite uma flexibilidade para o aplicativo ser mutável pelas determinações

das variáveis, em um sistema com usuário e senha, as informações referentes ao

cliente pode determinar seu interesse, ou quais informações o usuário poderá

acessar.

A sessão é um recurso limitado do servidor, pois geralmente está ligado

diretamente à memória, sendo assim não é recomendado que se utilize para guardar

informações que não são necessárias para um usuário em especifico.

Page 26: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

25

Conforme Muto (2006) descreve, as principais funções para tratamento de

variáveis de sessão são capazes de realizar operações para serem inicializadas,

registradas, editadas, destruídas e consultadas, retornando seus valores.

2.6.5.2 Cookies

Os cookies são fragmentos de textos enviados ao browser do cliente, durante

um período de tempo definido, armazenando variáveis distintas. (MUTO, 2006).

Com os cookies é possível criar personalização customizada para os

usuários, cestas de compras em um e-commerce, autenticação em sistemas, entre

outras possibilidades, resgatando informações e dados do cliente, conforme Muto

(2006 p. 152) afirma:

Através de cookies podemos deixar informações (variáveis) armazenadas na maquina do usuário e resgatá-las, quando o usuário acessar o navegador, a qualquer momento, desde que o tempo de expiração não tenho sido ultrapassado.

Armazenar certas variáveis no navegador do cliente permite que a

exclusividade de uma modificação no aplicativo web não seja perdida quando a

página for fechada. Quando o usuário acessar novamente o aplicativo irá verificar

em seu cookie quais são seus parâmetros de configuração.

O PHP Group (2010) define seis variáveis em um cookie, são elas:

a) name, define o nome do cookie;

b) value, o valor da variável passado no parâmetro name;

c) expiration, determina um tempo que estará acessível;

d) domain, armazena qual o domínio ou host valido;

e) path, determina para quais os diretórios o cookie é valido;

f) security, se o valor desta variável for “1”, o cookie será transmitido pelo

Hypertext Transfer Protocol secure (HTTPS).

Page 27: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

26

Se porventura alguns valores, de algumas variáveis não forem preenchidas,

assumem valores padrões, no caso da expiration, o cookie encarrega-se de expirar

quando o usuário fechar o browser.

2.6.6 Segurança

A segurança lógica em uma aplicação web é indispensável, mesmo

conectado em uma rede mundial, os dados devem estar íntegros garantindo sua

confidencialidade, conforme descreve Figueiredo (1999 p. 1):

Com o rápido crescimento da web e com a diversificação de sua utilização, a segurança se tornou um ponto de importância crucial, principalmente para quem tem a web como um dos principais apêlos comerciais.

Utilizando métodos de criptografia de senhas, tratamentos de dados de

formulários e verificações de existência de sessão, contribuem para que o aplicativo

se torne confiável.

2.6.6.1 Message Digest Cinco (MD5)

O método Message Digest (MD) utiliza um algoritmo hash para criar uma

síntese de tamanho fixo, com base em um valor de tamanho máximo de duzentos e

cinqüenta e cinco caracteres. A função denominada MD5, produz um valor de 120

bits de tamanho, contendo uma string alfanumérica. (FOROUZAN, 2004)

Este algoritmo é unidirecional, ou seja, não é possível que o valor convertido

seja transformado novamente no texto de origem. A função MD5 pode ser utilizada

para gravar o resultado da operação com base em um valor de uma senha, ou seja,

codificá-la. Deste modo a informação será preservada, pois não será armazenado

seu valor oficial. Usuários que possuem acesso ao banco de dados não conseguem

visualizar a senha real. A sintaxe utilizada para a criptografia MD5 no PHP é muito

simples, só é necessário realizar a função “md5()”, e informar a variável a ser

Page 28: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

27

calculada. Para certificar se a senha esta correta no momento do acesso é feito

novamente a codificação e o resultado é comparado com o existente no banco de

dados.

2.6.6.2 Injeção de SQL

A injeção de SQL é um dos métodos utilizados para invasão em aplicativos

web, onde o acesso é limitado por inserção de senhas. A maioria das aplicações

utiliza banco de dados, onde são enviados sintaxes pelo script do servidor, a qual

recebe seus parâmetros da linguagem HTML.

Segundo Santos (2008 p.133):

Falhas de injeção acontecem quando os dados que o usuário dá de entrada são enviados como parte de um comando ou consulta. Os atacantes confundem o interpretador para o mesmo executar comandos manipulados enviado dados modificados. As falhas de injeção habilitam o atacante a criar, ler, atualizar ou apagar arbitrariamente qualquer dado disponível para a aplicação.

As variáveis enviadas pelo formulário do HTML ao servidor, para tratamento

em uma consulta ao banco de dados, representam um risco em manipulação de um

comando, para que a resposta seja afirmativa de qualquer maneira, concedendo

acessos indevidos, visualização de informações ou exclusão de dados.

O tratamento em funções específicas no script PHP, para detectar conteúdo

em dados recebidos pelo cliente soluciona grande parte dos problemas de injeção

de SQL. É importante a validação de dados recebidos, antes que sejam enviados

para uma sintaxe do banco de dados.

2.7 BANCO DE DADOS MYSQL

MySQL é um sistema gerenciador de banco de dados (SGBD) relacional,

existindo uma versão com licença comercial e outra de código aberto com licença

General Public License (GPL). Foi desenvolvido por vários anos, pelos

Page 29: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

28

programadores Davi Axmark, Allan Larsson e Michael Widenius. MySQL foi

publicado em 1996, posteriormente adquirido pela Sun Microsystems, e em abril de

2009 pela Oracle, hoje já possui 10 milhões de instalações pelo mundo, incluindo

empresas do setor privado, entidades do governo e laboratórios de pesquisas

espaciais (STROPARO, 2010).

Este banco de dados tem como principal característica sua velocidade. Um

banco de dados permite armazenar e consultar os dados armazenados. O serviço

MySQL controla o acesso a estes dados, permitindo que vários usuários, consigam

incluir ou consultar grandes quantidades de informações ao mesmo tempo. O

MySQL é multiusuário e multitarefa, utiliza linguagem padrão Structured Query

Language (SQL).

Com a imensa facilidade de integração do MySQL com várias linguagens, a

sua utilização para web em portais imensos com missão critica, ou simples sites com

poucos acessos tornam-se uma solução viável e muito confiável.

Para Videiro (2008) o desempenho deste banco colabora na sua grande fama,

sendo considerado por grandes empresas o banco de dados mais popular existente.

Sua imensa compatibilidade e fácil integração com a linguagem PHP, tornam

o banco de dados MySQL um dos mais utilizados. Dentre as principais

características deste SGBD são a sua portabilidade, suportando qualquer plataforma

atual, compatibilidade com diversas linguagens, estabilidade e desempenho nas

transações de dados, exigindo muito pouco do hardware onde está hospedado.

2.7.1 Tipos de tabela

O MySQL possui diversos tipos de tabelas, divididos em dois grupos, tabelas

transacionais e não transacionais. A diferença entre elas consiste que no primeiro

grupo as tabelas possuem maior confiabilidade e segurança, ou seja, se o hardware

do servidor que hospeda o banco de dados falhar, provocando uma parada bruta, é

possível recuperar as informações através de um backup e o log de transição. Com

uma tabela transacional é possível combinar diversas instruções e processá-las

todas com um só comando (MUTO, 2006).

Page 30: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

29

As tabelas não transacionais são muito mais rápidas, não tendo nenhuma

sobrecarga de transação, ocupam menos espaço em disco e usam menos memória

para atualizações de dados.

Para Muto A. (2006 p.198):

Um banco de dados pode conter tabelas de diferentes tipos, ou seja, pode-se desenvolver uma aplicação tranquilamente utilizando os vários tipos de tabelas disponíveis, aproveitando dessa forma o melhor de dois mundos.

As opções e vantagens garantidas pelo MySQL, conseguem atender diversas

exigências das aplicações, que podem precisar de desempenho extremo ou garantia

e confiabilidade. Mesmo trabalhando com tabelas transacionais a performance

obtida é superior a de qualquer outro banco de dados.

Muto (2006) descreve que as tabelas do tipo MyISAM, é o padrão utilizado,

tem seus índices em um arquivo com extensão ‘.MYI’ (MYIndex), e os dados em um

arquivo ‘.MYD’ (MYData). MyISAM suporta diversos itens como:

a) suporte a campos VARCHAR de tamanho fixo ou dinâmico;

b) campos VARCHAR e CHAR podem ser maiores que 64 Kbytes (KB);

c) valores NULL são permitidos em colunas indexadas;

d) colunas BLOB e TEXT podem ser indexadas;

e) as tabelas MyISAM podem ser estáticas, dinâmicas e compactadas, os

dois primeiros são escolhidos automaticamente, e o terceiro pode ser criado

com uma ferramenta.

HEAP são tipos de tabelas que fazem parte do grupo das não transacionas tal

como o MyISAM, mas seus índices são armazenados na memória, isso as torna

muito mais rápidas e vulneráveis, pois se o MySQL falhar os dados armazenados

nesse tipo de tabela serão perdidos.

O tipo transacional InnoDB foi desenvolvido para obter o máximo de

performance ao processar um grande volume de dados, é usado largamente em

sites que possuem banco de dados superiores a um Terra byte (TB). As tabelas

podem ser de qualquer tamanho, mesmo em sistemas operacionais onde o tamanho

do arquivo é limitado, pois um espaço da tabela pode consistir em diversos arquivos.

Mesmo sendo transacional, e possuir um mecanismo de armazenamento seguro, foi

Page 31: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

30

desenvolvido para eficiência em nível de central processing unit (CPU). Possui sua

própria área de buffer para armazenar dados e índices na memória principal (MUTO,

2006).

BerkeleyDB (BDB) é mais um tipo de tabelas existente no MySQL, possuem

diversos recursos de um ambiente transacional. Possuem uma maior chance de

sobrevivência a falhas e são capazes de realizar operações COMMIT e ROLLBACK.

2.7.2 Integridade referencial

Integridade referencial é um método utilizado nos banco de dados para

garantir que os dados não possam ser excluídos quando houver relacionamentos de

níveis hierárquicos nas tabelas, evitando assim que a informação seja corrompida.

Através das chaves estrangeiras é possível identificar se a informação é dependente

de outra tabela.

Segundo Duarte (2006):

Existem determinados recursos do SGBD (Sistema Gerenciador de Banco de Dados) que estão diretamente relacionados ao tipo de tabela escolhido, tais como, controle de transação, níveis de lock e integridade referencial.

Para utilizar a integridade referencial no MySQL é necessário criar tabelas do

tipo InnoDB. Este tipo de tabela é possível criar restrições de integridades incluindo

a diretriva constraint na chave estrangeira de uma tabela.

O MySQL permite incluir restrições de integridade dos tipos cascade, restrict,

set null e set default. No primeiro caso, ao se remover um registro da tabela

referenciada pela chave estrangeira, os registros relacionados com aquele removido

serão eliminados em todas as tabelas relacionadas. O restrict não permite nenhuma

remoção de registros que possuam relacionamentos em outras tabelas. Os dois

últimos atribuem os valores default ou null para as chaves estrangeiras cujos

registros relacionados foram excluídos (DUARTE, 2006).

Page 32: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

31

2.7.3 Suporte a transações

As transações simples em qualquer banco de dados são interpretadas

imediatamente, ou seja, após executado a sintaxe os dados são inseridos, editados,

consultados ou excluídos. O suporte de transações são delimitadores que indicam o

início e o fim de uma sintaxe, onde a execução do comando no MySQL é realizada

ou abortada somente quando o delimitador final é interpretado. (MADEIRA, 2004).

O comando que indica o início da diretiva SQL é start transaction. O conteúdo

da sintaxe só é aplicado no banco de dados se for finalizado com o comando

commit, caso não seja incluído nenhuma instrução de delimitador no final, a

operação ficará pendente. A sintaxe pode ser cancelada com algum mau

comportamento do software, que utilizará meios de tratamento de erros incluindo o

comando rollback como delimitador final, dessa forma todo o SQL da transação não

será interpretado pelo banco de dados.

2.7.4 phpMyAdmin

O software phpMyAdmin foi desenvolvido em linguagem PHP com uma

interface web para navegador, com este aplicativo é possível criar e remover banco

de dados, tabelas e campos, enfim, qualquer operação necessária para manipulação

e configuração do banco de dados MySQL. O software em si, é um conjunto de

ficheiros em PHP, isso permite que seja multiplataforma, necessitando apenas de um

servidor web que seja compatível com a versão do PHP a qual o phpMyAdmin foi

construído. Suas atualizações e desenvolvimento são criados por toda a

comunidade de software livre mundial, garantindo que esteja disponível em setenta

e duas linguagens (PHPMYADMIN DEVEL TEAM, 2003)

Atualmente o phpMyAdmin é amplamente utilizado em diversos servidores

pelo mundo, por ser de fácil integração e compatibilidade, concedendo acesso para

que administradores de banco de dados possam realizar qualquer operação

remotamente em qualquer plataforma que possua um browser e conexão a internet.

Page 33: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

32

2.8 AJAX

Ajax é o uso das tecnologias XML (eXtensible Markup Language) e

JavaScript, através de processos assíncronos e síncronos. O objetivo do Ajax é

evitar que a cada solicitação enviada pelo cliente ao servidor, não seja necessário

carregar toda a pagina (MORONI, 2007).

A metodologia proposta pelo Ajax, cria paginas web mais interativas e

rápidas, pois o trafego de dados é menor, visto que não existe a necessidade de

solicitar novamente uma página ao servidor e carregá-la no browser.

De acordo com Majer (2010, p. 2):

Um dos grandes problemas do HTML (e seus derivados PHP, ASP, ASP.NET, etc.) é o fato de que ao precisar acessar alguma informação (muitas vezes em função de uma interação com o usuário), numa determinada página, esta informação só pode ser recuperada através de uma chamada à outra página. Isto faz com que o processo seja lento e tedioso.

A criação de um objeto Ajax, tem como proposta solucionar uma grande parte

dos problemas atuais das linguagens web, permitindo que ele acesse as

informações de outra paginas, ou de um banco de dados, sem sair da página onde

se encontra. Garantindo não só um desempenho melhor durante a transição das

informações, como uma melhor experiência para o usuário.

Todas as requisições ao servidor são feitas através do objeto criado em

JavaScript com Ajax. O objeto faz a comunicação entre a interface HTML e o

servidor, no modo clássico a solicitação e a resposta são enviadas direto pelo

HTML. O esquema abaixo visualiza as duas arquiteturas comparando as camadas

onde os dados transitam.

Page 34: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

Esquema 1: Fonte: Paiva (2005

As requisições HTTP da metodologia Ajax,

síncronas, em uma seqüência assíncrona, não existe a necessidade

imediata do servidor para que

preenchimento de outro formulário, ou a pá

poderá continuar interagindo com a página, e quando as informações de uma ação

chegar, um método irá tratar estas informações,

necessidade. No modo síncrono, a aplicação só tomará

resposta da anterior, deste modo as respostas e req

(PAIVA, 2005).

1: Comparativo entre a arquitetura clássica e a AJAX(2005 p. 4)

As requisições HTTP da metodologia Ajax, podem ser assíncronas e

seqüência assíncrona, não existe a necessidade

imediata do servidor para que possa continuar uma determinada ação, como o

nto de outro formulário, ou a página acabar de carregar. O usuário

poderá continuar interagindo com a página, e quando as informações de uma ação

o irá tratar estas informações, imprimir algo na pagina se houver a

necessidade. No modo síncrono, a aplicação só tomará outra ação quando obtiver a

, deste modo as respostas e requisições se tornam seqüenciais

33

Comparativo entre a arquitetura clássica e a AJAX

podem ser assíncronas e

seqüência assíncrona, não existe a necessidade da resposta

possa continuar uma determinada ação, como o

gina acabar de carregar. O usuário

poderá continuar interagindo com a página, e quando as informações de uma ação

r algo na pagina se houver a

ação quando obtiver a

uisições se tornam seqüenciais

Page 35: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

34

2.8.1 XML

O XML significa linguagem de marcação extensível, foi criada pela World

Wide Web Consortium (W3C), tendo como principal objetivo da concepção a

necessidade de criar um padrão que poderia ser lido por diversos linguagens,

inclusive HTML. Sua estrutura é dividida entre tags de modo hierárquico, por ser

baseado em arquivo de texto, permite consultas e gravação em diversos banco de

dados, independente de qualquer plataforma (World Wide Web Consortium, 2006).

O arquivo XML possui um alto nível de legibilidade, permitindo que

computadores e humanos interpretem seu conteúdo facilmente, pode ser validado

utilizando arquivos de definição de tipo de documento. O XML armazena somente o

conteúdo, informações sobre estilos e formatações são utilizados em arquivos

separados, podendo ser HTML ou CSS.

2.8.2 JavaScript

A linguagem de programação JavaScript foi criada em 1995 por Brendan Eich,

enquanto era funcionário da Netscape. No começo chamava-se LiveScript, através

de um acordo entre a Netscape e a Sun, a linguagem passou a se chamar

JavaScript (AURELIO, 2004).

É interpretada por navegadores, sendo utilizada amplamente para validação

de formulários, animações e demais interações, é possível criar funções dentro de

uma estrutura HTML, possui um desempenho de resposta muito rápido, devido que

o JavaScript é carregado juntamente com o HTML, não dependendo de uma

resposta do servidor para uma determinada entrada de dados.

Conforme Triacca (2007), no começo a linguagem possuía diversos

problemas de compatibilidade entre navegadores. A Microsoft foi obrigada a criar

outra linguagem compatível, pois a Netscape não licenciou o JavaScript para o

browser Internet Explorer. Com duas linguagens diferentes, desenvolvedores de

paginas web tiveram que criar scripts diferentes para cada navegador, necessitando

em uma detecção de browser na hora de executar a pagina no cliente.

Page 36: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

35

2.8.3 Modelo de Objetos de Documentos (DOM)

O Modelo de Objetos de Documentos (DOM) é uma especificação da W3C de

forma totalmente neutra, sem nenhuma especificação de linguagem ou plataforma,

criada juntamente com o HTML quatro. Esse conceito mostra uma estrutura

hierárquica onde é possível alterar dinamicamente o estilo e o conteúdo de um site

ou uma pagina, através de uma entrada de dados pelo usuário ou de forma

automática (FLANAGAN, 2002).

A principal função do DOM em um browser é a representação de métodos,

onde uma linguagem possa exibir documentos em HTML, XML ou qualquer

linguagem de marcação. Quando o documento estiver carregado, é possível

manipulá-los através de uma estrutura de árvore.

2.8.4 Requisição XMLHttp

Conforme Moroni (2007), o XMLHttpRequest é um objeto na linguagem

JavaScript, utilizado para criar uma conexão entre a página e o servidor da aplicação

web. Com esse objeto, é possível detectar o browser do cliente, antes de qualquer

operação do Ajax.

A detecção é necessária devido que alguns navegadores utilizam o objeto

JavaScript nativamente, como Mozilla, Opera e Safari, já o Internet Explorer através

do objeto Active X. É necessária a construção de funções para tratamento antes da

criação do objeto, já que a W3C não especifica o padrão para a utilização do

XMLHttpRequest, sendo assim, cada navegador pode implementar de diversas

maneiras diferentes.

Utilizando métodos especificados no DOM, é possível enviar e receber dados

entre a página e o script do servidor.

Page 37: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

36

2.9 SERVIDOR WEB

Servidor web é o software instalado em um computador conectado a internet

ou em uma intranet, este computador possui hardware superior aos computadores

pessoais. O software é responsável em aceitar pedidos através do protocolo HTTP,

ele gerencia e armazena conteúdos de sites ou aplicativos web. Um servidor web

pode armazenar somente um site, ou milhares deles, o conteúdo de um site é

acessado através dos domínios que estão associados ao Internet Protocol (IP) do

servidor (STEVENS; FENNER; RUDOFF, 2004).

Os pedidos para visualização e download dos códigos HTML, imagens, sons

ou qualquer outro são feitos através dos navegadores instalados nas plataformas

dos clientes. Com a utilização de linguagens especificas para serem processadas e

executadas nos servidores, é possível uma interação com os clientes, como envio

de formulário, gravação e leitura de banco de dados.

Estes tipos de servidores devem estar ligados dia e noite para garantir a

disponibilidade do conteúdo armazenado, ou seja, que em qualquer momento possa

atender as solicitações dos usuários. Alguns servidores são configurados para

garantir milhares de acessos simultâneos que podem ocorrer em um site ou

aplicativo de grande porte, utilizando técnicas de redundância de link da internet,

energia elétrica, entre outras que visam a integrabilidade destes servidores.

2.9.1 Servidor Apache

O software Apache é um servidor web livre, e a sua utilização está presente

em mais de 50% de todos os servidores do mundo. Foi criado em 1995, por Rob Mc

Cool, funcionário da National Center for Super Computing Applications (NCSA). Com

saída de Rob da NCSA, várias pessoas começaram a adaptar o software as suas

necessidades. Brian Behlendorf e Cliff Skolnick foram os responsáveis pela

continuação do projeto, criaram a Fundação Apache com mais oito pessoas. A

fundação passou a controlar e disponibilizar patches com adição de recursos

(ALECRIM, 2006).

Page 38: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

37

A origem do nome Apache é baseado em uma tribo de índios americanos que

detinham de grandes estratégias e resistências em combate.

O servidor é compatível com o protocolo HTTP, existindo versões para

diversas plataformas. Composto por módulos que realizam as mais variadas funções

e recursos, como compatibilidade com PHP, Python, módulo de criptografia através

de camada SSL entre outros. Conforme Coar e Bowen (2008, XI):

O pacote básico distribuído pela Apache Software Foundation é razoavelmente abrangente e bastante poderoso, e foi feito um grande esforço por parte dos programadores para evitar que o software sofresse do problema de ter muitos recursos que ninguém usa. Um aspecto do pacote o torna especialmente interessante: ele inclui estensibilidade por padrão.

A estensibilidade por padrão, garante uma grande compatibilidade com novos

módulos, permitindo ao servidor Apache tornar-se mais competitivo com relação a

diversos recursos implementados por programadores de todo o mundo. Por ser um

software livre, continua sendo melhorado por diversas pessoas voluntárias,

garantindo sua inovação em manter novas versões com desempenho para os

servidores.

O Apache é capaz de executar códigos em diversas linguagens como PHP,

Perl, Shell Script e Active Server Pages (ASP). Pode ser configurado como servidor

HTTP ou FTP. Sua compatibilidade com o banco de dados MySQL, garante a

utilização do conjunto PHP e MySQL, utilizado por milhares de sites e aplicações.

2.9.2 XAMPP

A fundação Apache Friends é um projeto sem fins lucrativos que visa

promover o servidor Apache, fundada em 2002 por Kai 'Oswald' Seidler e Kay

Vogelgesang. Sua principal contribuição é a criação do XAMPP, um conjunto de

softwares para servidor web, incluindo MySQL, Apache, PHP, FileZilla entre outros.

Seu nome é um acrônimo que significa os principais softwares embutidos, a letra “x”

significa o sistema operacional, é multiplataforma, a letra “a” de Apache, “m” de

MySQL, e duas vezes a letra “p”, que significam PHP e PERL (APACHE FRIENDS,

2009).

Page 39: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

38

A principal característica do software, é sua facilidade de instalação e

configuração, por esse principio é muito utilizada em computadores locais para

testes de sites e aplicativos, sem a necessidade de upload em um servidor na

internet.

2.9.3 Microsoft Internet Information Services (IIS)

O Microsoft IIS (Internet Information Services) é um servidor de internet ou

intranet, utilizado essencialmente nos sistemas operacionais Windows, sendo o

segundo servidor web mais utilizado no mundo. A primeira versão do ISS foi

disponibilizada em 1996. Em sua versão atual, está mais integrado ao sistema

operacional, garantindo estabilidade e segurança (RODRIGUES DE FREITAS,

2006).

É utilizada a tecnologia proprietária ASP para ser interpretada no IIS, esta

linguagem igualmente ao PHP é capaz de gerar paginas HTML dinamicamente.

Através da inclusão de módulos de terceiros é possível adicionar funcionalidades

para executar outras linguagens. Suporta quase todos os principais protocolos

existentes, incluindo HTTP, FTP e SMTP.

As primeiras versões deste servidor careciam de segurança. A Microsoft

incorporou diversas características adicionais nas versões mais novas de seu

servidor web, diminuindo consideravelmente as vulnerabilidades. Ainda é possível

adicionar ferramentas de segurança de terceiros, criando uma camada adicional de

proteção.

2.10 ADOBE DREAMWEAVER

Segundo Remoaldo (2008), o Adobe Dreamweaver é um software para

desenvolvimentos de sites e aplicativos para web, possui um editor HTML e suporte

para tecnologias PHP, Ajax, ASP, JSP entre outras.

Page 40: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

39

Conta com uma interface que auxilia o desenvolvimento de código,

reconhecendo padrões de comandos. No seu método de design é possível criar

campos e botões de uma maneira simples e intuitiva. Com a opção preview, é

possível executar o código digitado chamando o navegador padrão ou outro, para ler

o arquivo salvo, este botão se torna acessível e prático para que se possa verificar a

compatibilidade.

2.10.1 Desenvolvimento de Formulários

O Dreamweaver possui um menu exclusivo para criação de formulários,

permitindo a inclusão de campos, checkbox, botões e menus variados. A criação

automática de formulários facilita o desenvolvimento do layout da aplicação,

permitindo que o desenvolvedor da aplicação concentre seus maiores esforços no

código da linguagem do servidor.

Gerar formulários automaticamente garante uma compatibilidade do código

com diversos navegadores, visto que o Dreamweaver utiliza os padrões definidos

pela W3C.

2.10.2 Spry

Spry é um framework integrado ao Adobe Dreamweaver, a partir da versão

CS3. São bibliotecas no formato JavaScript e CSS, permitindo a criação de

conteúdo dinâmico e rico visualmente, criando elementos interativas, comunicação e

leitura de arquivos XML. Utilizando a tecnologia Ajax é possível criar diversas

validações para campos de formulário, menus customizáveis, painéis entre outros. O

gerenciamento é realizado totalmente no Dreamweaver, na aba propriedades,

otimizamdo o desenvolvimento. O arquivo gerado em JavaScript é responsável por

qualquer ação, comportamento e interatividade, e o CSS se encarrega dos estilos de

cor, fontes e tamanhos (VIEIRA, 2007).

Page 41: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

40

A validação dos campos é realizada totalmente por código JavaScript,

permitindo uma reposta rápida, antes mesmo de o formulário ser enviado, pois as

instruções são baixadas na plataforma do usuário, ou seja, o processamento de

validação é feito localmente, assim não existe a necessidade de esperar uma

resposta do servidor.

O Spry pode ser utilizado com qualquer tecnologia de script para servidor,

pois ele está no front-end de uma aplicação integrado ao HTML.

2.11 METODOLOGIA

O projeto do aplicativo utiliza-se da fundamentação teórica para definição de

seus funcionamentos e requisitos técnicos. O código fonte é dividido em arquivos

PHP, onde cada um é responsável por um módulo.

2.11.1 Análise de Requisitos

A definição das características do aplicativo deve ser analisada conforme a

estrutura da empresa. Satisfazendo as necessidades dos usuários, automatizando

as atividades. Para determinar como o software deve acatar os processos, é

realizado a análise de requisitos da aplicação. Seguem em tópicos os requisitos do

aplicativo em questão:

• O aplicativo deve permitir a inclusão de pedidos com informações de clientes

e produtos pré-cadastrados;

• A soma de totais de impostos e produtos em um pedido deverá ser

automática;

• Deverá haver uma validação de CPF e CNPJ no cadastro de clientes;

• Cadastro de usuário em quatro departamentos: representante, faturamento,

Page 42: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

41

produção, administrador;

• Emissão de relatórios de vendas em PDF;

• Criação de ordens de carregamento com a seleção de um ou vários pedidos;

• O aplicativo deverá ser acessível de qualquer local com internet.

2.11.2 Caso de uso e diagrama de seqüência

Utilizando um diagrama de caso de uso, é possível visualizar as funções

exercidas por cada ator. Os atores são representados por usuários de cada

departamento, onde cada departamento realiza diversas atividades previstas e

algumas vezes exclusivas. O esquema demonstra as operações padrões realizadas,

instruindo no desenvolvimento do aplicativo, a fim de atender as especificações.

Esta representação visual ajuda o entendimento das possibilidades que o

usuário possui em relação ao software, compreendendo de um modo geral, as suas

ações, comportamento e interações.

O diagrama de seqüência, conforme presente no Apêndice A, descreve os

passos necessários para a utilização das funções presentes no aplicativo. Diversas

informações devem ser cadastradas anteriormente, liberando a utilização de outros

módulos.

Page 43: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

Esquema 2: Caso de uso Fonte: o autor

2.11.3 Diagrama de classes

O diagrama de classes permite visualizar as dependências entre os diversos

módulos e objetos, possibilitando um conhecimento antecipado das interações sobre

as variáveis e funções b

características que o diagrama deve representar:

Caso de uso

2.11.3 Diagrama de classes

O diagrama de classes permite visualizar as dependências entre os diversos

, possibilitando um conhecimento antecipado das interações sobre

as variáveis e funções básicas tratadas no aplicativo. Fowler (2005) descreve as

características que o diagrama deve representar:

42

O diagrama de classes permite visualizar as dependências entre os diversos

, possibilitando um conhecimento antecipado das interações sobre

Fowler (2005) descreve as

Page 44: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

43

Um diagrama de classes descreve o tipo de objetos presentes no sistema e os vários tipos de relacionamento estáticos existentes entre eles. Os diagramas de classes também mostram as propriedades e as operações de uma classe, e as restrições que se aplicam à maneira como os objetos estão conectados.

Diagramas de classes devem ser claros e objetivos, facilitando a sua

compreensão. O Anexo B contém o diagrama de classes dos principais objetos

propostos pelo aplicativo, seus atributos e operações. São diversos tipos de

relacionamentos utilizados para determinar as relações entre os objetos, que podem

ser múltiplas ou únicas.

2.11.4 Arquitetura geral

O aplicativo deve ser executado simultaneamente entre o cliente e o servidor

web. Através do browser, é solicitado todo código HTML e JavaScript para ser

processado, o navegador se comunica com o servidor, enviando e recebendo

diversos valores. O código PHP é interpretado, realizando operações de inserções

ou consultas no banco de dados. O esquema abaixo demonstra as relações entre as

arquiteturas:

Page 45: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

44

Esquema 3: Arquitetura Geral Fonte: o autor

2.11.5 Arquivo de configuração

O arquivo “config.php” possui os valores essências que devem ser preenchidos

para o funcionamento global do aplicação. Este repositório deve ser configurado

durante o processo de instalação. Seu conteúdo deve ser protegido pelo servidor

web, evitando acessos indevidos.

É formado inteiramente por variáveis declaradas que são utilizadas por

diversas paginas, para realizar funções de conexão ao banco de dados, envio de e-

mails e parâmetros de emissão de relatórios.

<?php $local_database = "localhost"; $database = "projeto"; $usuario_database = "root"; $senha_database = ""; $e_mailremetente = "[email protected]"; $e_maildestinatario = "[email protected]";

Page 46: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

45

//Configuração de relatórios $fonte = 'Arial'; $tamanho = '10'; ?>

2.11.6 Conexão com o banco de dados

Qualquer página PHP que utilize uma sintaxe de SQL para fazer qualquer

operação com o MySQL, deve possuir as funções nativas da linguagem para criar a

conexão com o banco de dados. O código descrito possui a função para conexão

com o MySQL e outra para selecionar a base de dados. É incluído tratamento em

caso de erro através do try e catch, que realiza a tentativa de conexão, e em caso de

falha exibe a mensagem de erro.

<?php include ("config.php"); try{ if(!$db = mysql_connect("$local_database","$usuario_database","$senha_database")){ throw new Exception("Erro ao estabelecer conexão! ".mysql_errno()." - ".mysql_error()); }else{ try{ if(!mysql_select_db("$database",$db)){ throw new Exception("Erro ao selecionar o banco de dados! ".mysql_errno()." - ".mysql_error()); } }catch(Exception $e){ echo $e->getMessage(); } } }catch(Exception $e){ echo $e->getMessage(); } ?>

As variáveis $local_database, $usuario_database, $senha_database e

$database, possuem a localização do banco de dados através de Internet Protocol

(IP) ou endereço HTTP, login, senha e nome da base respectivamente.

Page 47: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

46

2.11.7 Autenticação de usuário

Para acessar o aplicativo, o usuário deverá ser autenticado digitando login,

senha e escolhendo o departamento que pertence. Os departamentos padrões do

sistema são divididos em representante, faturamento, produção e administrador. O

usuário só poderá acessar o conteúdo determinado para a sua repartição, contendo

as suas funções utilizadas. O código HTML presente no apêndice C, contém o

formulário com os campos que devem ser preenchidos pelo usuário na sua

autenticação.

Após a validação, os dados de login e departamento são incluídos em

variáveis de sessão, ficando disponíveis para uso em rotinas de inclusão de pedidos

e geração de relatórios. O código para verificação de autenticidade é feito em PHP

conforme detalhado abaixo:

<? $login = $_POST['login']; $senha = $_POST['senha']; $departamento = $_POST['dpto']; include "conexao.php"; $sql = mysql_query("SELECT * FROM usuario WHERE login = '$login'"); $cont = mysql_num_rows($sql); while($linha = mysql_fetch_array($sql)){ $senha_db = $linha['senha']; $departamento_db = $linha['departamento']; } if($cont == 0){ echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=../login.php'> <script type=\"text/javascript\"> alert(\"O nome de usuario nao corresponde.\"); </script>"; }else{ if($senha_db != md5($senha)){//confere senha echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=../login.php'> <script type=\"text/javascript\"> alert(\"A senha nao corresponde.\"); </script>"; }else{ if($departamento_db != $departamento){//departamento echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=../login.php'> <script type=\"text/javascript\"> alert(\"Departamento incorreto.\");

Page 48: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

47

</script>"; } else{ session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; $_SESSION['departamento_usuario'] = $departamento; header('Location: ../index.php'); } }mysql_close($db);?>

A função include importa dados para a conexão realizada entre a linguagem e

o MySQL.Torna-se essencial a utilização de variáveis referente a conexão, em toda

página que existe a necessidades de transição de informação com o banco de

dados. O código de validação de usuário possui uma sintaxe de consulta, para

verificar a autenticidade das informações inseridas.

É utilizada a função md5() para converter o valor da senha digitada pelo

usuário, utilizando um algoritmo hash nativo da linguagem PHP. Com o valor

convertido é possível a comparação com a informação presente no banco de dados,

que já fora convertido no ato de cadastramento do usuário com sua senha.

Através de alertas em JavaScript, o usuário é informado caso os dados

inseridos estejam incorretos. Se a informação estiver correta, as variáveis de sessão

são criadas, e o usuário é redirecionado para a página contendo o menu com as

opções especificas para seu departamento.

2.11.8 Cadastros

O cadastro de informações sobre mercadorias e clientes é essencial para a

utilização de todas as funcionalidades de rotinas previstas no aplicativo. O

departamento de faturamento e administração é responsável sobre o cadastro de

produtos, bem como seus dados técnicos, como por exemplo, o campo peso que é

utilizado para emissão de uma ordem de carregamento e impostos freqüentemente

devem influenciar o valor total de um pedido. Somente após o cadastro, o produto

será liberado para ser utilizado com um item de venda ou para composição de um

resultado de relatório.

Page 49: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

48

O representante cadastrará os dados do cliente no ato de sua primeira

compra. Para evitar a inclusão de Cadastro Nacional de Pessoa Jurídica (CNPJ) e

Cadastro de Pessoa Física (CPF) incorretos, é utilizado uma função em JavaScript

capaz de verificar a autenticidade do código, realizando diversas operações e

comparando o resultado com os últimos algarismos inseridos. Caso a informação

cadastrada não seja válida, o usuário será alertado antes de continuar preenchendo

os demais campos. A tela para cadastro de cliente exige a inserção de todos os

parâmetros necessários para a emissão de pedido e emissão de nota fiscal por

software de terceiro.

Após os dados serem digitados no formulário da página, são enviados ao

servidor através do método POST, onde um arquivo PHP será o responsável de

receber as variáveis e fazer o tratamento da conversão do padrão de datas e

números decimais, conforme o modelo requisitado do banco de dados. Com as

informações armazenadas em objetos locais é realizado a inserção no MySQL.

Através do apêndice D, é possível visualizar o código utilizado para os cadastros.

2.11.9 Inclusão de pedidos

Na inclusão de pedidos o usuário irá selecionar um cliente cadastrado através

de uma busca por sua razão social. Com o cliente selecionada é habilitado a opção

de busca e escolha de produtos, onde devem ser informados a quantidade e o

preço. As informações referentes à cliente e totais do pedido serão armazenadas

em variáveis de session juntamente com um array de sessão para os itens. Após

clicar em confirmar pedido, os dados da sessão serão armazenados no banco de

dados e as variáveis são limpas.

O código do apêndice E, recebe todas as variáveis de pedido e itens,

realizando o tratamento e incluindo na sessão durante o processo. No final é

enviado por parâmetro a função “confirmar” que é responsável em armazenar os

dados.

Page 50: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

49

2.11.10 Inclusão e baixa de ordens de carregamento

Com um ou mais pedidos cadastrados é possível a inclusão de ordens de

carregamentos internas. O departamento de faturamento poderá compor a ordem

informando a transportadora, nome do motorista e previsão de carregamento.

A ordem será visualizada pela plataforma de carregamento, que contará com

os resultados das quantidades e o peso para do montante da mercadoria. Na

finalização da carga deverá ser feita sua baixa, registrando no banco de dados que

os pedidos já foram carregados.

O código fonte presente do apêndice F, é divido em duas funções, uma que

deve compor a ordem e outra responsável pela baixa:

2.11.11 Relatórios

É enorme a quantidade de opções de relatórios pré-definidos possíveis no

desenvolvimento, informações de diversas tabelas são juntadas e confrontadas. Os

usuários somente deverão informar as variáveis de uma consulta como data, cliente

ou produto.

Os relatórios são gerados em Portable Document Format (PDF). O sistema

utiliza a biblioteca FPDF para converter os resultados do banco de dados em um

arquivo PDF, é possível a configuração de fontes, tamanho, colunas e até inclusão

de imagens. O código abaixo gera um relatório com o cadastro de todos os clientes

inclusos no aplicativo.

<?php Include define('FPDF_FONTPATH', 'fpdf/font/'); require('fpdf/fpdf.php'); include("conexao.php"); $busca = mysql_query("SELECT id_cliente, nome, endereco, uf FROM cliente"); $pdf = new FPDF(); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('Arial', 'B', 10); $pdf->Cell(40, 5, 'CNPJ / CPF'); $pdf->SetX(35);

Page 51: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

50

$pdf->Cell(135, 5, 'Nome'); $pdf->SetX(90); $pdf->Cell(135, 5, 'Endereco'); $pdf->SetX(150); $pdf->Cell(40, 5, 'UF'); while ($resultado = mysql_fetch_array($busca)) { $pdf->ln(); $pdf->Cell(40, 5, $resultado['id_cliente']); $pdf->SetX(35); $pdf->Cell(135, 5, $resultado['nome']); $pdf->SetX(90); $pdf->Cell(135, 5, $resultado['endereco']); $pdf->SetX(150); $pdf->Cell(40, 5, $resultado['uf']); } $pdf->Output(); ?>

2.11.12 Logoff

Para garantir a segurança na utilização do aplicativo é necessário dispor de

mecanismos para realizar o logoff do usuário, destruindo as informações de sessão

pertinentes. Em toda página se encontra a opção de logout ao lado do menu,

quando clicado nesta opção o usuário será redirecionado na pagina inicial, para uma

nova autenticação.

O código utilizado abaixo recebe o parâmetro “sair”, destruindo as variáveis

de sessão login e senha. É utilizada uma função para imprimir o nome do usuário ao

lado da opção de logout.

<?php include "conexao.php"; $sair = $_GET['sair']; session_start(); if (isset($_SESSION['ultima_acao']) && (time() - $_SESSION['ultima_acao'] > 300)) { session_destroy(); session_unset(); } $_SESSION['ultima_acao'] = time(); $sql_nome = mysql_query("SELECT nome FROM usuario WHERE login = '$login_usuario'"); while($linha = mysql_fetch_array($sql_nome)){ $nome_dousuario = $linha['nome']; } if ($_GET['sair']== "sair"){ unset($_SESSION["login_usuario"]); unset($_SESSION["senha_usuario"]); header("Location: ../login.php"); }

Page 52: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

51

?>

A função “time()” recupera a hora atual, comparando-a com o horário da

ultima ação do usuário no sistema, se for menor que trezentos segundos, ou cinco

minutos, as sessões são destruídas, exigindo um novo login. Esta estrutura de

tempo limite sem ação permite uma garantia para quando o usuário esquecer o

sistema autenticado não possa ser utilizado por outra pessoa não autorizada,

enquanto sua ausência no computador.

2.11.13 Tratamento e conversão de dados

Algumas informações digitadas pelos usuários necessitam ser tratadas,

convertendo alguns detalhes em sua orientação e organização. Dados como códigos

cadastrais, datas e números decimais precisam ser convertidos entre o padrão

apresentando ao usuário com o que é gravado no banco de dados.

Durante vários anos, a comunidade de código aberto criou vários scripts em

diversas linguagens para a conversão entre dados com padrões diferentes. O

algoritmo abaixo é capaz de detectar o padrão de data contido na variável, e

converter o dado para gravar no banco de dados MySQL ou apresentar na tela para

o usuário. O código foi escrito em linguagem PHP e criado por Marcelo Bento da

Rocha (2010 p. 1)

<?php /** * @param $data * @return $data */ Marcelo Bento da Rocha function converterData($data) { if(substr($data,2,1) == "/") { $dd = substr($data, 0,2); $mm = substr($data, 3,2); $aa = substr($data, 6,4); $time = substr($data, 11,8); if($time != "") $data = $aa."-".$mm."-".$dd." ".$time; else $data = $aa."-".$mm."-".$dd; }

Page 53: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

52

else { $dd = substr($data, 8,2); $mm = substr($data, 5,2); $aa = substr($data, 0,4); $time = substr($data, 11,8); if($time != "") $data = $dd."/".$mm."/".$aa." ".$time; else $data = $dd."/".$mm."/".$aa; } if($data=='//') { $data = ''; } return $data; }

Os valores decimais conforme o padrão português brasileiro é utilizado vírgula

entre os algarismos de unidades e décimas, mas o padrão exigido por muito banco

de dados, como é o caso do MySQL, é o americano onde é utilizado ponto no lugar

da virgula. O PHP possui uma função nativa chamada “str_replace”, ela é capaz de

percorrer todo o conteúdo da variável, buscando o algarismo a ser alterado. Para

isso é necessário informar o valor a ser procurado, e para qual deve ser convertido.

A função pode ser demonstrada abaixo, com o valor de uma variável digitada pelo

usuário que deve ser convertida antes da gravação no banco de dados.

<?php $ipi = str_replace(",", ".", $ipi); ?>

O valor da chave primária no cadastro de clientes é o CNPJ ou CPF,

conforme padronizado, este código possui pontos e barras que dividem parte dos

algarismos. Para isso é utilizado uma máscara no campo em que o usuário digita a

informação, completando automaticamente as divisões necessárias, tornando-o

legível para conferência. É possível validar os números digitados comparando

resultados dos algarismos com o código verificador, se o valor informado não estiver

correto é executada uma caixa de dialogo informando o erro.

Para essas funções é utilizada um script livre e aberto em linguagem

JavaScript, presente no anexo A, o código foi escrito por Leandro Alexandre (2009 p.

2).

Page 54: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

53

2.11.14 Confirmações e avisos em JavaScript

A linguagem JavaScript permite criar caixas de diálogos geradas no meio da

tela, requisitando que o usuário leia a mensagem interagindo com os botões

apresentados. A função “alert()” recebe uma mensagem que será exibida na tela

requisitando a confirmação do usuário para que ela seja fechada. O código abaixo é

utilizado após a inserção de um pedido no aplicativo, ele deve informar o número do

pedido gerado.

<script LANGUAGE=\"Javascript\"> alert(\"Pedido cadastrado - Numero: $numero_pedido\"); </script>

A função “alert” no caso citado acima fica encapsulada dentro do código PHP

para que seja possível preencher a variável “$numero_pedido” com o código do

último pedido cadastrado.

É utilizada uma caixa de diálogo que requisita uma confirmação do usuário

antes de realizar uma determinada ação. A função “confirm()” gera uma mensagem

com dois botões: um “OK” e outro “CANCELAR”. Dependendo da escolha do usuário

o script retorna “true” ou “false”, estes valores são utilizados para confirmar uma

execução do código PHP ou cancelá-la. O script abaixo é utilizado para a

confirmação na exclusão de qualquer registro nos módulos de cadastros.

function show_confirm(pagina,funcao,id,retorno) { var id var retorno var r=confirm("Aperte OK para deletar"); if (r==true) { window.location=pagina+"?funcao="+funcao+"&id="+id+"&retorno="+retorno; } else { window.location=retorno; } }

Page 55: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

54

A função “show_confirm(“) recebe diversas variáveis que armazenam o local

de onde foi chamada, permitindo que ela seja utilizada por varias paginas,

retornando para seu local correto após a interação com o usuário.

2.11.15 Envio automático de e-mails

Com a inclusão de um pedido no sistema é possível enviar informações como

número do pedido e razão social do cliente para outro arquivo PHP, que será

responsável por enviar um aviso para o e-mail do departamento de faturamento.

Segue abaixo um exemplo de código utilizado, a qual detecta o sistema operacional

utilizado no servidor para determinar configurações de cabeçalho, antes do envio do

e-mail.

<?php include "../config.php"; $emailsender = "$e_mailremetente"; /* Verifica qual é o sistema operacional do servidor para ajustar o cabeçalho de forma correta. */ if(PATH_SEPARATOR == ";") $quebra_linha = "\r\n"; //Se for Windows else $quebra_linha = "\n"; //Se "não for Windows" // Passando os dados obtidos pelo formulário para as variáveis abaixo $nomeremetente = "Sistema gerenciador de vendas de Bebidas"; $emailremetente = "$e_mailremetente"; $emaildestinatario = "$e_maildestinatario"; $comcopia = ""; $assunto = "Novo pedido adicionado"; $n_pedido = $numero_pedido= $_POST['n_pedido']; $mensagemHTML = '<P></P> <P>Um novo pedido foi adicionado número</P> <p><b><i>'.$n_pedido.'</i></b></p> <hr>'; $headers = "MIME-Version: 1.1" .$quebra_linha; $headers .= "Content-type: text/html; charset=iso-8859-1" .$quebra_linha; $headers .= "From: " . $emailsender.$quebra_linha; $headers .= "Cc: " . $comcopia . $quebra_linha; $headers .= "Bcc: " . $comcopiaoculta . $quebra_linha; $headers .= "Reply-To: " . $emailremetente . $quebra_linha; if(!mail($emaildestinatario, $assunto, $mensagemHTML, $headers ,"-r".$emailsender)){ $headers .= "Return-Path: " . $emailsender . $quebra_linha; mail($emaildestinatario, $assunto, $mensagemHTML, $headers ); } ?>

Page 56: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

55

2.11.16 Menus e departamentos

O aplicativo possui um menu personalizado para cada departamento,

habilitando funções específicas a cada repartição. É realizado um rastreamento da

sessão criada a partir do login, para determinar qual departamento o usuário

pertence. A função “switch()” do código abaixo, identifica que valor possui a variável,

encaminhando um “include” para cada tipo de usuário.

<script src="menu/js/menu.js" type="text/javascript"></script> <link href="menu/css/menu.css" rel="stylesheet" type="text/css" /> <link href="menu/css/pagina.css" rel="stylesheet" type="text/css" /> <?php session_start(); $departamento_usuario = $_SESSION["departamento_usuario"]; switch ($departamento_usuario) { case 1: include "representante.php"; break; case 2: include "faturamento.php"; break; case 3: include "producao.php"; break; case 4: include "admin.php"; break; } ?>

Para evitar que um usuário consiga acessar uma página responsável por um

modulo não pertencente ao departamento a qual é registrado, é utilizadas funções

de verificação de setor, sendo assim o usuário será alertado por um diálogo

avisando que o acesso não está autorizado, caso esteja tentando acessar

manualmente um local não permitido.

A figura abaixo representa o aplicativo sendo executado através de um

navegador, com o menu do usuário administrador e a página de cadastro de

clientes.

Page 57: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

56

Figura 1: Tela do aplicativo com cadastro de clientes Fonte: o autor

Em toda página se encontra uma ou mais chamadas de funções para

bloquear acesso a um departamento especifico. Esta função verifica a sessão do

usuário, identificando em qual repartição pertence. O arquivo de verificação também

possui um script global para ser executada sempre quando for abrangido, esse

código verifica se o usuário realmente realizou o login antes de obter qualquer

conteúdo do aplicativo. O código do apêndice G é executado sempre que incluído

em outra página, e suas funções quando são chamadas especificamente.

Page 58: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

57

3 CONCLUSÃO

A qualidade das informações inseridas no sistema são essências para a

tomada de decisões e organização gerencial da empresa. É importante que o

software exija aos usuários operacionais, a inserção de todas as informações

necessárias para poder automatizar um determinado processo de lançamentos de

pedidos, ordens de vendas ou especificação de carregamento. O gerenciamento de

conhecimento é gerado através da utilização de emissões de relatórios com dados

concisos. Este sistema deve estar disponível para acesso em qualquer lugar, visto a

necessidade de usuários remotos pelo país inteiro, sendo assim é interessante, não

criar mecanismos que possam proibir o acesso de uma determinada faixa de

localização. Para garantir a eficácia do conjunto do software é necessária a

utilização de treinamento ao usuário remoto e local.

A criação dos diagramas para determinar processos e rotinas em que o

sistema deverá cumprir, moldam um padrão, que ajudam na sua construção e

expansão de seus módulos. A cada atualização, com a implementação de novas

funções, deverá ser realizada uma nova análise para que o contexto proposto não

seja afetado em sua estrutura principal, garantindo que o aplicativo somente deve

ser melhorado quando adicionado mecanismos úteis ao objetivo.

A criação de um sistema a partir de uma linguagem confiável e robusta foi de

grande importância para atingir o objetivo planejado. O PHP é mundialmente

conhecido por ser uma linguagem legível, que ao mesmo tempo consegue construir

projetos complexos, com ambiente de missão critica. Validações locais garantem um

grande nível de interação com o usuário, permitindo que o desempenho do aplicativo

seja melhorado, dividindo serviços de carga de dados entre o servidor e a plataforma

do cliente.

O banco de dados MySQL que é totalmente compatível com a linguagem

PHP, tem como principal característica sua velocidade, é utilizado quase

essencialmente para web, já que conta um desempenho superior para este nicho.

Pode-se dizer que utilizar a internet como um meio para disponibilizar o

acesso a um sistema portátil, representa uma grande facilidade de concentração e

disponibilização das informações, onde usuários de vários departamentos podem

Page 59: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

58

usufruir de sistema útil, tanto para vendedores quanto gerenciadores, organizando

os dados conforme as necessidades que os departamentos especificam.

Para ampliação do projeto no futuro é necessário utilizar a informação gerada

pelo aplicativo de uma forma mais integrada com toda a empresa, é possível que

seja implementado mecanismos de integração com outros aplicativos locais ou

remotos, a fim de aproveitar os dados para serem utilizado em operações fiscais e

administrativas. Essa integração pode ser gerada, permitindo acessos simultâneos

de outros aplicativos ao banco de dados, onde poderão resgatar dados para

emissão de uma nota fiscal ou lançamentos na contabilidade. Para garantir uma total

automatização de todos os procedimentos decorrentes da vendas de bebidas é

necessária uma grande integração com mais de um aplicativo.

Page 60: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

59

REFERÊNCIAS

ALECRIM, Emerson. Conhecendo o Servidor Apache .2006. Disponível em: <http://www.infowester.com/servapach.php>. Acesso em: 21 ago. 2010.

ALEXANDRE, Leandro. Validação de CPF e CNPJ no mesmo campo em JavaScript . 2009. Disponível em:<http://www.vivaolinux.com.br/script/Validacao-de-CPF-e-CNPJ-no-mesmo-campo-em-javascript>. Acesso em: 01 abr. 2011. ANTUNES LAMIM, Jonatham. Gerando PDFs com PHP e a classe FPD . 2010. Disponível em: <http://www.oficinadanet.com.br/artigo/php/gerando_pdfs_com_php_e_a_classe_fpdf_instalacao_e_primeiras_linhas_de_codigo>. Acesso em: 23 out. 2010. APACHE FRIENDS. XAMPP.2009. Disponível em: <http://www.apachefriends.org/pt_br/xampp.html>. Acesso em: 10 out. 2010. AURELIO, Dorival Eloy. JavaScript . 2004. Disponível em: <http://orbita.starmedia.com/~edaurelio/javascript.htm>. Acesso em: 23 out. 2010. BENTO, Marcelo; Convertendo data com PHP . 2009. Disponível em: <http://www.marcelobento.com.br/tag/converter-data/>. Acesso em: 25 abr. 2011 COAR, Ken; BOWEN, Rich. Apache Guia Prático . Rio de Janeiro: Alta Books, 2008. 272 p. DELLA VALLE, James; ULBRICH, Henrique Cesar. Universidade Hacker . 5. ed. São Paulo: Digerati Books, 2006. 352 p. DUARTE, Eber; Implementando Integridade Referencial no MySQL 2006. Disponível em: <http://www.devmedia.com.br/post-1996-Implementando-Integridade-Referencial-no-MySQL.html>. Acesso em: 12 abr. 2011. FERREIRA, Felipe. Linguagem PHP – Vantagens e Aplicações . 2010. Disponível em: <http://www.artigonal.com/internet-artigos/linguagem-php-vantagens-e-aplicacoes-1788643.html>. Acesso em: 23 out. 2010.

Page 61: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

60

FIGUEIREDO, Antonio. Administração de sistemas e segurança . 1999. Disponível em: <http://www.ccuec.unicamp.br/revista/infotec/admsis/admsis6-1.html>. Acesso em: 25 out. 2010. FLANAGAN, David. JavaScript: O Guia Definitivo . 4 ed. São Paulo: Artmed, 2002. 816 p. FOROUZAN, A. Behrouz. Comunicação de dados e redes de computadores .3.ed. São Paulo: Artmed, 2004. 840 p. GOURLEY, David; TOTTY, Brian. HTTP: TheDefinitiveGuide. Sebastopol, Ucrânia: O’Reilly Media, 2002. 635 p. FOWLER, Martin. UML essencial : um breve guia para a linguagem padrão de modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2005. 165 p. LOGMAN, Wesley Addison. A history of HTML .1998. Disponível em: <http://www.w3.org/People/Raggett/book4/ch02.html>. Acesso em: 23 out. 2010. MADEIRA, Frederico; Suporte a transações . 2004. Disponível em: <http://imasters.com.br/artigo/2787/mysql/suporte_a_transacoes/>. Acesso em: 14/04/2011. MAJER, Carlos. Desenvolvimento Web: Introdução ao AJAX . [São Paulo], 07 maio. 2010. Disponível em: <http://www.ebah.com.br/desenvolvimento-web-introducao-ao-ajax-pdf-a48787.html>. Acesso em: 23 ago. 2010. MCLEAN, Epharaim; TURBAN, Efraim; WETHERBE, James. Tecnologia da informação para gestão . 3. ed. São Paulo: Artmed, 2002. 645 p. MELO, Alexandro Altair; G.F. NASCIMENTO, Mauricio. PHP Profissional. São Paulo: Novatec, 2007. 464 p. MORONI, Herbert. Criação de sites em Ajax. São Paulo: Digeratti Books, 2007. 128 p. MUTO, Claudio Adonai. PHP e MySQL – Guia Introdutório . 3. ed. Rio de Janeiro: Brasport, 2006. 412 p.

Page 62: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

61

OTSUKA, Joice Lee. SAACI - Sistema de Apoio à Aprendizagem Colaborativa na Internet . Fluxograma. 1999. 127 f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal do Rio Grande do Sul, Porto Alegre, 1999. PAIVA, Raphael. Desmitificando o Ajax. Esquema. 2005. Disponível em: <http://www.jack.eti.br/www/arquivos/apostilas/web/apostila_ajax.pdf>. Acesso em: 23 ago. 2010. PHP GROUP. PHP. 2010. Disponível em: <http://php.net/>. Acesso em: 23 out. 2010. PHPMYADMIN DEVEL TEAM. phpMyAdmin: About.2003. Disponível em: <http://www.phpmyadmin.net/home_page/index.php>. Acesso em: 19 out. 2010. PLATHEY, Oliver. FPDFLibrary . 2008. Disponível em: <http://www.fpdf.org>. Acesso em: 15 ago. 2010. REMOALDO, Pedro. Guia Pratico do Dreamweaver CS3 com PHP, JavaScript e Ajax . Lisboa, Portugal:Centro Atlântico, 2008. 676 p. RODRIGUES DE FREITAS; Andrey. Pericia forense aplicada a informática: ambiente Microsoft. Rio de Janeiro: Brasport, 2006. 215 p. SANTOS, Alfredo. Quem mexeu no meu sistema?: Segurança em sistemas de informação. Rio de Janeiro: Brasport, 2008. 212 p. SOMERA, Guilherme. Treinamento prático em CSS. São Paulo: Digeratti Books, 2006. 160 p. SOUZA, Sandro J. A extensão MySQLi. 2007. Disponível em: <http://www.htmlstaff.org/ver.php?id=10071>.Acesso em: 22 ago. 2010. STALLINGS, William. Redes e Sistemas de Comunicação de Dados . Rio de Janeiro: Elsevier, 2005. 460 p. STEVENS, W. Richard; FENNER, Bill; RUDOFF, M. Andrew. Programação de Rede Unix . São Paulo: Artmed, 2004. 906 p.

Page 63: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

62

STROPARO, Elder. Historia do MySQL . 2010. Disponível em: <http://elderstroparo.blogspot.com/2010/01/historia-do-mysql.html>. Acesso em: 23 out. 2010. TRIACCA, Anderson. História do Javascript. Disponível em: <http://www.andersontriacca.com/index.php?Hist%F3ria-do-Javascript&id_postagem=2>. Acesso em: 15 out. 2010. TURBAN, Efraim; MCLEAN, Ephraim; WETHERBE, James. Tecnologia da Informação para Gestão. São Paulo: Artmed, 2002. 660 p. VIDEIRO, Rafael. Criação de bases de dados em linguagem SQL. Disponível em: <http://mysql.softonic.com.br/>. Acesso em: 20 out. 2010. VIEIRA, Leandro. As novas funcionalidade do Dreamweaver CS3 . Disponível em: <http://www.imasters.com.br/artigo/5858/dreamweaver/as_novas_funcionalidades_do_dreamweaver_cs3/>. Acesso em: 22 out. 2010. WELLING, Luke; THOMSON, Laura. PHP e MySQL Desenvolvimento Web. Rio de Janeiro: Elsevier, 2003. 675 p. WORLD WIDE WEB CONSORTIUM. Extensible Markup Language (XML). Disponível em: <http://www.w3.org/XML/>. Acesso em: 15 out. 2010.

Page 64: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

63

APÊNDICES

Page 65: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

APÊNDICE A APÊNDICE A – Diagrama de sequência

64

Page 66: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

APÊNDICE B APÊNDICE B – Diagrama de classes

65

Page 67: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

66

APÊNDICE C – Código HTML do formulário para a autenticação do usuário

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link href="menu/css/menu.css" rel="stylesheet" type="text/css" /> <link href="menu/css/pagina.css" rel="stylesheet" type="text/css" /> </style><br /> <table width="400" border="0" align="center"><table width="400" height="144" border="0" align="center"> <form id="form1" name="form1" method="post" action="admin/logar.php"> <tr> <td width="94">&nbsp;</td> <td width="296"><h3><strong>Efetue o login</strong></h3></td> </tr> <tr> <td><div align="right">Usu&aacute;rio:</div></td> <td> <label> <input type="text" name="login" id="login" /> </label> </td> </tr> <tr> <td><div align="right">Senha:</div></td> <td> <label> <input type="password" name="senha" id="senha" /> </label> </td> </tr> <tr> <td><div align="right">Departamento:</div></td> <td><select name="dpto" id="dpto"> <option value="1">Representante</option> <option value="2">Faturamento</option> <option value="3">Producão</option> <option value="4">Admin</option> </select></td> </tr> <tr> <td height="37"></td> <td><input type='submit' value='Logar' class='botao' /></td> </tr> </form> </table> </html>

Page 68: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

67

APÊNDICE D – Código PHP utilizado para cadastro <?php include "../conexao.php"; include "dataconverter.php"; $id = $_POST['id']; $nome = $_POST['nome']; $endereco = $_POST['endereco']; $uf = $_POST['uf']; $cidade = $_POST['cidade']; $enderecoentrega = $_POST['enderecoentrega']; $data = $_POST['data']; $observacoes = $_POST['observacoes']; $usuario = $_POST['usuario']; $id = preg_replace("/\D+/", "", $id); // remove qualquer caracter não numérico $data = converterData($data); if($_POST['id']=='' and $_GET['funcao'] != "excluir_cliente" and $_GET['funcao'] != "editar_cliente" ) { echo "<script type='text/javascript'>alert('Inclua o CNPJ do CLIENTE!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } if($_POST['nome']=='' and $_GET['funcao'] != "excluir_cliente") { echo "<script type='text/javascript'>alert('Inclua o NOME!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } if($_POST['endereco']=='' and $_GET['funcao'] != "excluir_cliente") { echo "<script type='text/javascript'>alert('Inclua o ENDERECO!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } if($_POST['data']=='' and $_GET['funcao'] != "excluir_cliente") { echo "<script type='text/javascript'>alert('Inclua a data do cadastro!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } if($_POST['uf']=='' and $_GET['funcao'] != "excluir_cliente") { echo "<script type='text/javascript'>alert('Selecione o Estado!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } if($_POST['cidade']=='' and $_GET['funcao'] != "excluir_cliente") { echo "<script type='text/javascript'>alert('Inclua a cidade!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } else if($_GET['funcao'] == "gravar_cliente" and $_POST['id']!='' and $_POST['nome']!='' and $_POST['endereco']!='' and $_POST['data']!='' ) { $sql_gravar = mysql_query("INSERT INTO cliente (id_cliente, nome , endereco, uf, cidade,enderecoentrega, data, observacoes, usuario) value ('$id','$nome','$endereco','$uf','$cidade', '$enderecoentrega','$data','$observacoes','$usuario')"); echo "<script type='text/javascript'>alert('Cliente Cadastrado!');</script>"; echo "<script>window.location='../cliente.php';</script>"; } else if($_GET['funcao'] == "editar_cliente" and $_POST['nome']!='' and $_POST['endereco']!='' and $_POST['data']!='') { $id = $_GET['id'];

Page 69: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

68

$retorno = $_GET['retorno']; $sql_alterar = mysql_query("UPDATE cliente SET nome='$nome', endereco='$endereco', uf='$uf', cidade='$cidade', enderecoentrega='$enderecoentrega',data='$data', observacoes='$observacoes' WHERE id_cliente = '$id'"); header("Location: $retorno?nome_busca=$nome"); } if($_GET['funcao'] == "excluir_cliente"){ $id = $_GET['id']; $retorno = $_GET['retorno']; $sql_del = mysql_query("DELETE FROM cliente WHERE id_cliente = '$id'"); header("Location: $retorno"); } ?>

Page 70: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

69

APÊNDICE E – Código de inclusão de pedidos <?php include "../conexao.php"; include "dataconverter.php"; $condicao = $_POST['condicao']; if($_GET['funcao']=="inclui_pedido") { $id_cliente = $_GET['id_cliente']; session_start(); $_SESSION[pedido_dados][id_cliente] = $id_cliente; header("location: ../pedido_inclui.php?funcao=editar_cliente"); //&id_cliente=$id_cliente } if($_GET['funcao']=="incluir_iten") { $id_produto = $_GET['id_produto']; $quantidade = $_POST['quantidade']; $preco = $_POST['preco']; session_start(); $_SESSION[indice] = $_SESSION[indice]+1; $indice = $_SESSION[indice]; $_SESSION[pedido][$indice][id_produto] = $id_produto; $_SESSION[pedido][$indice][quantidade] = $quantidade; $_SESSION[pedido][$indice][preco] = $preco; $sql_ipi = mysql_query("SELECT ipi FROM produto WHERE id_produto = '$id_produto'"); if (isset($sql_ipi)){ while($linha_produto = mysql_fetch_array($sql_ipi)){ $tabela_ipi = $linha_produto['ipi']; } } $_SESSION[pedido][$indice][ipi] = $tabela_ipi; $_SESSION[pedido][$indice][total] = (($preco+$tabela_ipi)*$quantidade); //--- DESCOBRIR TOTAL DO PEDIDO $indice = $_SESSION[indice]; $_SESSION[pedido_dados][total] = $_SESSION[pedido_dados][total] + $_SESSION[pedido][$indice][total]; header("location: ../pedido_inclui.php?funcao=editar_cliente"); } if($_GET['funcao']=="adicionais") { $sql_adicionais = mysql_query("UPDATE pedido SET condpgto = ('$condicao') where id_pedido = ('$id_pedido')"); $sql_adicionais = mysql_query("UPDATE pedido SET confirmado = ('1') where id_pedido = ('$id_pedido')"); } //**CONFIRMAÇÃO DO PEDIDO if($_GET['funcao'] == "confirmar") { //--- PEDIDO session_start(); $id_cliente = $_SESSION[pedido_dados][id_cliente]; $vltotal = $_SESSION[pedido_dados][total];

Page 71: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

70

//---INSERINDO PEDIDO $login_usuario = $_SESSION["login_usuario"]; $sql_confirma_pedido = mysql_query("INSERT INTO pedido (id_cliente, valor, condpgto, login, carregamento) value ('$id_cliente','$vltotal','$condpgto','$login_usuario','0')"); $tabela_pedido = mysql_query("SELECT max(id_pedido) FROM pedido"); if (isset($tabela_pedido)){ while($linha_pedido = mysql_fetch_array($tabela_pedido)){ $numero_pedido = $linha_pedido['max(id_pedido)']; } } $_SESSION[pedido_dados][id_pedido] = $numero_pedido; //---------ITENS $indice = $_SESSION[indice]; $contador_itens = 1; while ($contador_itens<=$indice) { $id_produto = $_SESSION[pedido][$contador_itens][id_produto]; $quantidade = $_SESSION[pedido][$contador_itens][quantidade]; $preco = $_SESSION[pedido][$contador_itens][preco]; $total_itens = $_SESSION[pedido][$contador_itens][total]; $sql_confirma_itens = mysql_query("INSERT INTO itens (id_produto, id_pedido, quantidade, vlunitario, vltotal) value ('$id_produto','$numero_pedido','$quantidade','$preco','$total_itens')"); $contador_itens = $contador_itens+1; } $_SESSION[pedido_dados] = NULL; $_SESSION[pedido] = NULL; echo"<script LANGUAGE=\"Javascript\">alert(\"Pedido cadastrado - Numero: $numero_pedido\");</SCRIPT>"; echo "<script>window.location='../pedido_inclui.php';</script>"; } //**INSERE ITEM NA EDIÇÃO DO PEDIDO if($_GET['funcao'] == 'incluir_iten_edita') { $id = $_POST['id_pedido']; } ?>

Page 72: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

71

APÊNDICE F – Código de inclusão e baixas de ordens <?php include "../conexao.php"; include "dataconverter.php"; if ($_POST['funcao'] == "adicionar") { $transportadora = $_POST['transportadora']; $motorista = $_POST['motorista']; $datacarreg = $_POST['datacarreg']; if ($transportadora == "" or $motorista == "" or $datacarreg == "") { echo "<script type='text/javascript'>alert('Preencha todos os campos!');</script>"; echo "<script>window.location='../ordem.php';</script>"; } if ($_POST['id_pedido'] != "") { $ordem_id1 = mysql_query("insert into ordem (quantidade, peso) values (0,0)"); $ordem_id2 = mysql_query("SELECT max(id_ordem) FROM ordem"); $ordem_id3 = mysql_fetch_array($ordem_id2); $ordem_id = $ordem_id3['max(id_ordem)']; $entregas = 0; foreach ($_POST['id_pedido'] as $pedido_id) { $entregas = $entregas + 1; $sql = " update pedido set id_ordem = '$ordem_id' where id_pedido = '$pedido_id'"; if ($sql) { $sql = mysql_query($sql); } } $outras1 = mysql_query("select sum(peso), sum(quantidade) from pedido, produto, itens where pedido.id_ordem = '$ordem_id' and pedido.id_pedido = '$pedido_id' and itens.id_pedido = pedido.id_pedido and itens.id_produto = produto.id_produto"); if (isset($outras1)) { while ($linha_ordem = mysql_fetch_array($outras1)) { $peso = $linha_ordem['sum(peso)']; $quantidade = $linha_ordem['sum(quantidade)']; } } //--TRATAMENTO FINAL $peso = $peso * $quantidade; $datacarreg = converterData($datacarreg); //--INSERÇÃO FINAL $final = mysql_query("update ordem set quantidade = '$quantidade', peso = '$peso', entregas ='$entregas', transportadora = '$transportadora', motorista = '$motorista', datacarreg = '$datacarreg' where id_ordem = '$ordem_id'"); echo "<script type='text/javascript'>alert('Ordem criada - Número: $ordem_id');</script>"; echo "<script>window.location='../ordem.php';</script>"; } else { echo "<script type='text/javascript'>alert('Selecione algum pedido!');</script>"; echo "<script>window.location='../ordem.php';</script>"; } } //-- BAIXA DE ORDEM if ($_POST['funcao'] == "baixar") { if ($_POST['id_ordem'] == "") { echo "<script type='text/javascript'>alert('Selecione alguma ordem!');</script>"; echo "<script>window.location='../ordem_baixa.php';</script>";

Page 73: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

72

} if ($_POST['datacarreg'] == "") { echo "<script type='text/javascript'>alert('Cadastre a data de carregamento!');</script>"; echo "<script>window.location='../ordem_baixa.php';</script>"; } if ($_POST['id_pedido'] != "" or $_POST['datacarreg'] != "") { $datacarreg = converterData($_POST['datacarreg']); foreach ($_POST['id_ordem'] as $ordem_id) { $sql = "update pedido, ordem set carregamento = '1', datacarreg = '$datacarreg' where pedido.id_ordem = '$ordem_id' and ordem.id_ordem = '$ordem_id'"; $sql = mysql_query($sql); } echo "<script type='text/javascript'>alert('Orden(s) baixadas');</script>"; echo "<script>window.location='../ordem_baixa.php';</script>"; } }?>

Page 74: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

73

APÊNDICE G – Verificação de departamento e usuário logado

<?php include "conexao.php"; session_start(); if (isset($_SESSION["login_usuario"]) AND isset($_SESSION['senha_usuario'])) { $login_usuario = $_SESSION["login_usuario"]; $senha_usuario = $_SESSION["senha_usuario"]; $departamento_usuario = $_SESSION["departamento_usuario"];

$sql = mysql_query("SELECT * FROM usuario WHERE login = '$login_usuario'"); $cont = mysql_num_rows($sql); while ($linha = mysql_fetch_array($sql)) { $senha_db = $linha['senha']; $departamento_db = $linha['departamento']; } if ($cont == 0) { unset($_SESSION["login_usuario"]); unset($_SESSION["senha_usuario"]); unset($_SESSION["departamento_usuario"]); echo " <META HTTP-EQUIV=REFRESH CONTENT='0; URL=login.php'> <script type=\"text/javascript\"> alert(\"O nome de usuario nao corresponde.\"); </script>"; } if ($senha_db != md5($senha_usuario)) {//confere senha unset($_SESSION["login_usuario"]); unset($_SESSION["senha_usuario"]); unset($_SESSION["departamento_usuario"]); echo " <script type=\"text/javascript\"> alert(\"Senha incorreta.\"); window.location='login.php';</script>"; } }else { echo " <script type=\"text/javascript\"> alert(\"Autentique-se para entrar no sistema.\"); window.location='login.php';</script>"; } function dep_representante(){ if ($_SESSION["departamento_usuario"] == '1') { echo " <script type=\"text/javascript\"> alert(\"Pagina nao autorizada.\"); window.location='login.php';</script>"; } } function dep_faturamento(){ if ($_SESSION["departamento_usuario"] == '2') { echo " <script type=\"text/javascript\"> alert(\"Pagina nao autorizada.\"); window.location='login.php';</script>"; } } function dep_producao(){

Page 75: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

74

if ($_SESSION["departamento_usuario"] == '3') { echo " <script type=\"text/javascript\"> alert(\"Pagina nao autorizada.\"); window.location='login.php';</script>"; } } function dep_admin(){ if ($_SESSION["departamento_usuario"] == '4') { echo " <script type=\"text/javascript\"> alert(\"Pagina nao autorizada.\"); window.location='login.php';</script>"; } } ?>

Page 76: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

75

APÊNDICE H – Sintaxe SQL para criação das tabelas do banco de dados

CREATE TABLE `itens` ( `id_itens` int(11) NOT NULL AUTO_INCREMENT, `id_produto` int(11) NOT NULL, `id_pedido` int(11) NOT NULL, `quantidade` int(11) DEFAULT NULL, `vlunitario` float DEFAULT NULL, `vlst` float DEFAULT NULL, `vltotal` float DEFAULT NULL, PRIMARY KEY (`id_itens`), KEY `id_pedido` (`id_pedido`), KEY `id_produto` (`id_produto`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `cliente` ( `id_cliente` varchar(20) NOT NULL, `nome` varchar(255) NOT NULL, `endereco` varchar(255) NOT NULL, `uf` varchar(2) NOT NULL, `cidade` varchar(100) NOT NULL, `enderecoentrega` varchar(255) DEFAULT NULL, `data` date NOT NULL, `observacoes` varchar(255) DEFAULT NULL, `usuario` varchar(50) NOT NULL, PRIMARY KEY (`id_cliente`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `ordem` ( `id_ordem` int(10) unsigned NOT NULL AUTO_INCREMENT, `quantidade` int(11) NOT NULL, `peso` float NOT NULL, `entregas` varchar(255) DEFAULT NULL, `transportadora` varchar(30) DEFAULT NULL, `motorista` varchar(30) DEFAULT NULL, `datacarreg` date DEFAULT NULL, PRIMARY KEY (`id_ordem`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `pedido` ( `id_pedido` int(11) NOT NULL AUTO_INCREMENT, `id_ordem` int(11) DEFAULT NULL, `id_cliente` varchar(20) NOT NULL, `valor` float DEFAULT NULL, `desconto` int(11) DEFAULT NULL, `condpgto` varchar(60) DEFAULT NULL, `login` varchar(50) DEFAULT NULL, `carregamento` binary(1) NOT NULL, PRIMARY KEY (`id_pedido`), KEY `id_ordem` (`id_ordem`), KEY `id_cliente` (`id_cliente`), FULLTEXT KEY `id_cliente_2` (`id_cliente`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `produto` ( `id_produto` int(11) NOT NULL AUTO_INCREMENT, `produto` varchar(60) NOT NULL, `peso` float NOT NULL,

Page 77: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

76

`data` date NOT NULL, `observacoes` varchar(255) DEFAULT NULL, `ipi` double DEFAULT NULL, PRIMARY KEY (`id_produto`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `usuario` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(80) NOT NULL, `login` varchar(80) NOT NULL, `senha` varchar(80) NOT NULL, `email` varchar(255) NOT NULL, `departamento` int(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Page 78: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

77

ANEXOS

Page 79: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

78

ANEXO A – Código JavaScript para validação de CNPJ e CPF

function campo_numerico (){ if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false; } /*function cnpj_cpf verifica qual das funcoes tem que chamar cpf ou cnpj*/ function cnpj_cpf(campo,documento,f,formi){ form = formi; for (Count = 0; Count < 2; Count++){ if (form.rad[Count].checked) break; } if (Count == 0){ mascara_cpf (campo,documento,f); } else{ mascara_cnpj (campo,documento,f); } } function mascara_cnpj (campo,documento,f){ var mydata = ''; mydata = mydata + documento; if (mydata.length == 2){ mydata = mydata + '.'; ct_campo = eval("document."+f+"."+campo+".value = mydata"); ct_campo; } if (mydata.length == 6){ mydata = mydata + '.'; ct_campo = eval("document."+f+"."+campo+".value = mydata"); ct_campo; } if (mydata.length == 10){ mydata = mydata + '/'; ct_campo1 = eval("document."+f+"."+campo+".value = mydata"); ct_campo1; } if (mydata.length == 15){ mydata = mydata + '-'; ct_campo1 = eval("document."+f+"."+campo+".value = mydata"); ct_campo1; } if (mydata.length == 18){ valida_cnpj(f,campo); } } function mascara_cpf (campo,documento,f){ var mydata = ''; mydata = mydata + documento; if (mydata.length == 3){ mydata = mydata + '.'; ct_campo = eval("document."+f+"."+campo+".value = mydata"); ct_campo; } if (mydata.length == 7){ mydata = mydata + '.';

Page 80: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

79

ct_campo = eval("document."+f+"."+campo+".value = mydata"); ct_campo; } if (mydata.length == 11){ mydata = mydata + '-'; ct_campo1 = eval("document."+f+"."+campo+".value = mydata"); ct_campo1; } if (mydata.length == 14){ valida_cpf(f,campo); } } function valida_cnpj(f,campo){ pri = eval("document."+f+"."+campo+".value.substring(0,2)"); seg = eval("document."+f+"."+campo+".value.substring(3,6)"); ter = eval("document."+f+"."+campo+".value.substring(7,10)"); qua = eval("document."+f+"."+campo+".value.substring(11,15)"); qui = eval("document."+f+"."+campo+".value.substring(16,18)"); var i; var numero; var situacao = ''; numero = (pri+seg+ter+qua+qui); s = numero; c = s.substr(0,12); var dv = s.substr(12,2); var d1 = 0; for (i = 0; i < 12; i++){ d1 += c.charAt(11-i)*(2+(i % 8)); } if (d1 == 0){ var result = "falso"; } d1 = 11 - (d1 % 11); if (d1 > 9) d1 = 0; if (dv.charAt(0) != d1){ var result = "falso"; } d1 *= 2; for (i = 0; i < 12; i++){ d1 += c.charAt(11-i)*(2+((i+1) % 8)); } d1 = 11 - (d1 % 11); if (d1 > 9) d1 = 0; if (dv.charAt(1) != d1){ var result = "falso"; } if (result == "falso") { alert("CNPJ inválido!"); aux1 = eval("document."+f+"."+campo+".focus"); aux2 = eval("document."+f+"."+campo+".value = ''"); } } function valida_cpf(f,campo){ pri = eval("document."+f+"."+campo+".value.substring(0,3)"); seg = eval("document."+f+"."+campo+".value.substring(4,7)"); ter = eval("document."+f+"."+campo+".value.substring(8,11)"); qua = eval("document."+f+"."+campo+".value.substring(12,14)"); var i; var numero;

Page 81: Desenvolvimento de sistema web para gerenciamento de vendas do setor de bebidas - (Monografia - Ciência da Computação)

80

numero = (pri+seg+ter+qua); s = numero; c = s.substr(0,9); var dv = s.substr(9,2); var d1 = 0; for (i = 0; i < 9; i++){ d1 += c.charAt(i)*(10-i); } if (d1 == 0){ var result = "falso"; } d1 = 11 - (d1 % 11); if (d1 > 9) d1 = 0; if (dv.charAt(0) != d1){ var result = "falso"; } d1 *= 2; for (i = 0; i < 9; i++){ d1 += c.charAt(i)*(11-i); } d1 = 11 - (d1 % 11); if (d1 > 9) d1 = 0; if (dv.charAt(1) != d1){ var result = "falso"; } if (result == "falso") { alert("CPF inválido!"); aux1 = eval("document."+f+"."+campo+".focus"); aux2 = eval("document."+f+"."+campo+".value = ''"); } }