joao g n - estagio supervisionado em sistemas de informacao

92
JOÃO GARIBALDI NETO REENGENHARIA DO SISTEMA DE ADMINISTRAÇÃO DE ALMOXARIFADO DO TRIBUNAL DE CONTAS DO ESTADO DO TOCANTINS UTILIZANDO PHP 5 E ORIENTAÇÃO A OBJETO PALMAS 2006

Upload: bianca-maria-silva-reis

Post on 20-Feb-2016

215 views

Category:

Documents


1 download

DESCRIPTION

Projeto de sistema

TRANSCRIPT

Page 1: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

JOÃO GARIBALDI NETO

REENGENHARIA DO SISTEMA DE ADMINISTRAÇÃO DE ALMOXARIFADO DO TRIBUNAL DE CONTAS DO ESTADO DO TOCANTINS UTILIZANDO PHP 5 E

ORIENTAÇÃO A OBJETO

PALMAS 2006

Page 2: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

JOÃO GARIBALDI NETO

REENGENHARIA DO SISTEMA DE ADMINISTRAÇÃO DE ALMOXARIFADO DO TRIBUNAL DE CONTAS DO ESTADO DO TOCANTINS UTILIZANDO PHP 5 E

ORIENTAÇÃO A OBJETO “Trabalho apresentado com requisito da disciplina Prática de Sistemas de Informação (Estágio) do curso de Sistemas de Informação, orientada pelo Profº. Fernando Luiz de Oliveira”.

PALMAS 2006

Page 3: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

SUMÁRIO

1. INTRODUÇÃO............................................................................................................... 8

2. REVISÃO DE LITERATURA ....................................................................................... 9

2.1. Administração de almoxarifado................................................................................... 9

2.2. As 4 atribuições básicas do Almoxarifado ................................................................ 10

2.2.1. Recebimento .......................................................................................................... 10

2.2.2. Guarda de Materiais............................................................................................... 11

2.2.3. Controle de Materiais ............................................................................................ 11

2.2.4. Entrega de Materiais.............................................................................................. 12

2.3. Programação Orientada a Objeto............................................................................... 12

2.3.1. Classes e Objetos ................................................................................................... 13

2.3.2. Abstração............................................................................................................... 13

2.3.3. Encapsulamento..................................................................................................... 14

2.3.4. Herança.................................................................................................................. 16

2.3.5. Polimorfismo ......................................................................................................... 17

2.3.6. Interfaces ............................................................................................................... 17

3. MATERIAIS E MÉTODOS.......................................................................................... 19

3.1. Estrutura física e lógica ............................................................................................. 19

3.2. Métodos aplicados ..................................................................................................... 19

4. RESULTADOS E DISCUSSÃO .................................................................................. 20

4.1. Diagramas de casos de uso ........................................................................................ 20

4.2. Casos de Uso Reais ................................................................................................... 21

4.2.1. Logar...................................................................................................................... 21

4.2.2. Incluir Classe de Produto....................................................................................... 22

4.2.3. Consultar Classe de Produto.................................................................................. 23

4.2.4. Alterar Classe de Produto ...................................................................................... 24

4.2.5. Excluir Classe de Produto ..................................................................................... 24

4.2.6. Incluir Grupo de Produtos ..................................................................................... 25

4.2.7. Consultar Grupos de Produto ................................................................................ 26

4.2.8. Alterar Grupos de Produto..................................................................................... 26

4.2.9. Excluir Grupos de Produto ................................................................................... 26

Page 4: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

4.2.10. Incluir Unidades de Produto .................................................................................. 27

4.2.11. Consultar Unidades de Produto ............................................................................. 28

4.2.12. Alterar Unidades de Produto ................................................................................. 28

4.2.13. Excluir Unidades de Produto................................................................................. 28

4.2.14. Incluir Produto....................................................................................................... 29

4.2.15. Consultar Produto.................................................................................................. 30

4.2.16. Alterar Produto ...................................................................................................... 31

4.2.17. Excluir Produto...................................................................................................... 31

4.2.18. Incluir Fornecedores .............................................................................................. 32

4.2.19. Consultar Fornecedores ......................................................................................... 34

4.2.20. Alterar Fornecedores ............................................................................................. 34

4.2.21. Excluir Fornecedores............................................................................................. 34

4.2.22. Incluir Movimentação Externa (Compra De Materiais)........................................ 35

4.2.23. Consultar Movimentação Externa ......................................................................... 36

4.2.24. Alterar Movimentação Externa ............................................................................. 37

4.2.25. Excluir Movimentação Externa ............................................................................. 37

4.2.26. Incluir Itens da Movimentacao Externa................................................................. 38

4.2.27. Alterar Itens da Movimentação Externa................................................................ 39

4.2.28. Excluir Itens da Movimentação Externa ............................................................... 40

4.2.29. Incluir Movimentação Interna (Requisições de Materiais) ................................... 41

4.2.30. Consultar Movimentação Interna .......................................................................... 42

4.2.31. Alterar Movimentação Interna............................................................................... 43

4.2.32. Excluir Movimentação Interna .............................................................................. 43

4.2.33. Incluir Itens da Movimentação Interna.................................................................. 44

4.2.34. Alterar Itens da Movimentação Interna ................................................................. 45

4.2.35. Excluir Itens da Movimentação Interna ................................................................ 46

4.3. Diagrama de Classes do Projeto ................................................................................ 47

4.4. Modelo Relacional do Banco de Dados .................................................................... 48

4.5. Implementação do Sistema........................................................................................ 49

4.5.1. Cadastro de Unidades ............................................................................................ 49

4.5.2. Cadastro de Produtos ............................................................................................. 53

4.5.3. Cadastro de Classes ............................................................................................... 58

4.5.4. Cadastro de Grupos ............................................................................................... 62

Page 5: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

4.5.5. Cadastro de Fornecedores...................................................................................... 66

4.5.6. Movimentação Externa.......................................................................................... 72

4.5.7. Itens de Moviementação Externa .......................................................................... 76

4.5.8. Movimentação Interna........................................................................................... 79

4.5.9. Itens de Movimentação Interna ............................................................................. 83

4.5.10. Classe DBConnector ............................................................................................. 87

4.5.11. Classe systemcomponents ..................................................................................... 88

4.5.12. Script SQL Banco de Dados.................................................................................. 88

5. CONSIDERAÇÕES FINAIS ........................................................................................ 91

6. REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 92

Page 6: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

LISTA DE FIGURAS

Figura 1: Estrutura organizacional do Tribunal de Contas do Estado do Tocantins......... 10

Figura 2: Exemplo de abstração........................................................................................ 14

Figura 3: Exemplo de encapsulamento ............................................................................. 15

Figura 4: Exemplo de Herança.......................................................................................... 16

Figura 5: Diagrama de Casos de Uso................................................................................ 20

Figura 6: Caso de Uso Logar ............................................................................................ 21

Figura 7: Caso de uso logar com erro ............................................................................... 22

Figura 8: Caso de uso inclusão de classe de produto ........................................................ 23

Figura 9: Caso de uso inclusão de grupo de produto ........................................................ 25

Figura 10: Caso de uso inclusão de unidades de produto ............................................... 27

Figura 11: Caso de uso inclusão de produtos.................................................................. 30

Figura 12: Caso de uso inclusão de Fornecedores .......................................................... 33

Figura 13: Caso de uso inclusão de Movimentação Externa .......................................... 36

Figura 14: Caso de uso inclusão de Itens da Movimentação Externa............................. 39

Figura 15: Caso de uso inclusão de Movimentação Interna ........................................... 42

Figura 16: Caso de uso inclusão de Itens da Movimentação Interna.............................. 45

Figura 17: Diagrama de Classes em UML...................................................................... 47

Figura 18: Dicionário de Dados ...................................................................................... 48

Page 7: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

RESUMO

O presente trabalho tem por objetivo classificar e apresentar as operações básicas

pertinentes a qualquer setor de almoxarifado eficiente de uma empresa ou órgão.

Posteriormente, tendo como base o padrão da modelagem UML, será realizado e

apresentado a reengenharia do setor de almoxarifado do Tribunal de Contas do Estado do

Tocantins, readequando a implementação existente ao paradigma da programação orientada

a objeto, que deverá atender rigorosamente a sistemática das operações propostas para um

eficaz controle dos materiais de almoxarifado. Pela importância deste setor para o referido

órgão público, foi desenvolvida uma solução informatizada, no padrão web, que viesse

auxiliar e automatizar todas as atividades por este importante setor. Este trabalho foi

desenvolvido no próprio Tribunal de Contas do Estado do Tocantins e teve como resultado

um sistema de elevada qualidade no que se diz respeito aos aspectos de manutenção e

suporte a softwares. O referido sistema já encontra-se em plena utilização no órgão

supracitado, atendendo as exigências propostas por este trabalho.

Page 8: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

8

1. INTRODUÇÃO O presente trabalho visa salientar a importância da utilização da tecnologia da informação

no apoio as atividades pertinentes ao setor de almoxarifado do Tribunal de Contas do Estado

do Tocantins. A priori, este trabalho mostrará o funcionamento básico de um setor de

almoxarifado, tomando como exemplo o funcionamento do Tribunal de Contas do Estado

do Tocantins, passando por todas as suas etapas de funcionamento. Em seguida, mostrará

que o auxílio da tecnologia da informação é fundamental dentro deste setor. Isto porque a

tecnologia agrega para o profissional responsável por este setor um substancial ganho de

produtividade, contribuindo assim para um melhor desempenho dos trabalhos desenvolvidos

dentro do órgão em questão, uma vez que a função primordial do almoxarife é dar apoio aos

demais setores do órgão supracitado, no que diz respeito a suprimento do material de

expediente. Por fim, será apresentada a reengenharia da implementação existente do Sistema

de Administração de Almoxarifado, utilizando a linguagem de programação PHP 5,

enfocando o paradigma da orientação a objetos, e todos os benefícios que a utilização desta

técnica de programação traz para aqueles que se utilizam dela para desenvolver aplicações

eficientes e fáceis de manutenir.

Page 9: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

9

2. REVISÃO DE LITERATURA

Para que os objetivos desse trabalho sejam alcançados, torna-se necessário fazer um

levantamento bibliográfico sobre os conceitos que envolvem a administração de um

almoxarifado, bem como os conceitos gerais relacionados ao paradigma da orientação a

objetos. Esses conceitos, assim como outros necessários para a fundamentação desse

trabalho, serão apresentados nas seções seguintes.

2.1. Administração de almoxarifado

O funcionamento de toda e qualquer empresa depende, entre outras coisas, de que ela conte

com material de trabalho em quantidade e qualidade suficientes para atender às suas

necessidades. O setor que se encarrega do suprimento de materiais a todas as unidades da

empresa é o almoxarifado. A função básica do almoxarifado no âmbito de uma empresa, em

relação aos demais setores desta, é apoiá-los no que diz respeito a suprimento do material de

expediente.

O almoxarifado, de modo geral, no âmbito de uma empresa constitui um setor

organizado para a execução de quatro atividades básicas: recebimento, guarda, controle e

entrega de material (SENAC, p. 15, 1993).

Neste trabalho será apresentada uma solução informatizada compreendendo

todos os procedimentos acima descritos que compreendem a rotina normal de

administração, bem como a rotina propriamente dita de um almoxarifado.

Para que um sistema de administração de almoxarifado de fato atenda as

necessidades tanto do almoxarife chefe, quanto aos anseios dos demais setores de uma

empresa ou órgão público com excelência, é necessário que o desenvolvedor da solução

informatizada conheça bem a sua organização. Dependendo do porte, da área de atividade

em que atua e do tipo de trabalho desenvolvido, cada empresa ou órgão tem uma forma

própria de se organizar e de localizar o almoxarifado em sua estrutura. No caso do Tribunal

de Contas do Estado do Tocantins, este órgão segue a seguinte estrutura:

Page 10: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

10

Figura 1: Estrutura organizacional do Tribunal de Contas do Estado do Tocantins

Segundo SENAC (2003), dentro de um almoxarifado, podem existir também

seções específicas para tratar de cada uma das atividades executadas (recebimento, guarda,

controle e entrega). Cada uma dessas seções possui atribuições bem definidas, que serão

detalhadas na seção subseqüente.

2.2. As quatro atribuições básicas do Almoxarifado

2.2.1. Recebimento No almoxarifado informatizado, o almoxarife, após conferir o material recebido, digitará no

terminal de computador os dados constantes na Autorização de Fornecimento e na Nota

Fiscal, assim como quaisquer outras observações, e o sistema automaticamente emitirá o

respectivo aviso de recebimento e a nova ficha de prateleira, dando assim, entrada ao

material de estoque (SENAC, p. 30, 1993).

Page 11: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

11

2.2.2. Guarda de Materiais

O processo de guarda é bastante simplificado no sistema de almoxarifado, pois todo o

trabalho manual de lançamento nas Fichas de Prateleira ou de Identificação do Material é

substituído pela impressão de uma nova Ficha para o material a ser estocado. Para isso,

basta que o almoxarife digite os dados de entrada e dê o comando para que o computador

imprima a nova ficha (SENAC, p.40, 1993).

2.2.3. Controle de Materiais O controle é o cérebro do almoxarifado, ou seja, trata-se da função mais importante deste

setor de atividades. Todo material deve ser constantemente controlado; é necessário saber a

quantidade de cada material existente, se o estoque está suficiente ou se é preciso

reabastecê-lo (SENAC, p. 11, 1993).

Esta é a atribuição mais delicada do almoxarifado, pois engloba o regime pelo

qual o setor de almoxarifado de uma determinada empresa é submetido, por questões de

política interna da própria empresa, bem como a disciplina e o bom senso do almoxarife

encarregado. Por exemplo, na ocasião de um pedido de um material que não conste no

estoque, o almoxarife encarregado deverá emitir uma nova Requisição de Compras, para o

material solicitado. Após todo o processo administrativo natural referente a uma compra no

âmbito de uma empresa, este funcionário fará o recebimento do material comprado, o

cadastrará no sistema, digitando os dados pertinentes a este (especificação e quantidade).

Realizado este processo, o referido material passa a existir e será passível de ser controlado

pelo sistema, podendo assim ser registrado normalmente a saída do material, antes ausente,

do estoque. Uma outra situação é que, no caso do estoque de um determinado material

atingir o limite do estoque mínimo, o almoxarife encarregado deverá também emitir uma

nova Requisição de Compras, para o material em questão. Nesta ocasião, o almoxarife

encarregado necessita determinar os cálculos de ressuprimento não só para planejar a

aquisição de novos estoques, como também para facilitar o controle, impedindo que haja

estoque ocioso no almoxarifado, bem como evitar a repetição exagerada de Requisições de

Compra para um mesmo produto.

Page 12: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

12

2.2.4. Entrega de Materiais

Autorizado pelo controle a liberar uma Requisição de Material, o almoxarife digita o código

do material, a especificação, a quantidade pedida e o código do setor solicitante. O sistema

então emite duas vias da ficha com os dados da Requisição de Material que servirá no ato da

entrega ao departamento solicitante (SENAC, p. 1993).

2.3. Programação Orientada a Objeto

A programação Orientada a Objetos surgiu como uma técnica de desenvolvimento de

softwares, onde o foco maior é atribuído aos dados, que nada mais são do que objetos,

modelando as características de objetos abstratos ou reais através de classes e objetos.

Segundo MEILIR (1997, p. 60), o termo ‘orientação a objetos’ é intrinsecamente

desprovido de significado, uma vez que os termos, vistos isoladamente, são poucos

significativos. Por exemplo, o termo ‘objeto’ representa qualquer coisa que pode ser

identificado por algum dos sentidos humano. Já o termo ‘orientado’ pode ser substituído por

‘dirigido’ ou ‘voltado a’, restando então o papel de moldar a expressão ‘orientado a objetos’

através de um adjetivo: ‘dirigido a qualquer coisa que se possa pensar’. Desta forma, a

Programação Orientada a Objetos é na verdade um paradigma de programação para

computadores que enfatiza aspectos relacionados a: objetos, classes, herança,

encapsulamento, polimorfismo e mensagens. Estes aspectos da Orientação a Objetos serão

detalhados nas seções seguintes.

Existem outros aspetos importantes, porém os relacionados acima já servem

como um bom exemplo, haja vista a incoerência encontrada na literatura voltada a

Programação Orientada a Objeto sobre quais são as abstrações (aspectos) mais importantes

envolvidas nesta teoria.

Page 13: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

13

2.3.1. Classes e Objetos

Objetos e classes são os dois principais conceitos de qualquer linguagem de programação

Orientada a Objetos. A definição de classe descreve quais propriedades, atributos e métodos

os objetos terão. Já a definição de um objeto é a de uma entidade que pode ser manipulada,

ou seja, qualquer coisa que tenha significado e limites bem definidos é um objeto, podendo

ter seu estado modificado através da invocação dos métodos das classes a que os mesmos

pertencem.

2.3.2. Abstração

Em termos de desenvolvimento de sistemas, abstração consiste em identificar os aspectos

essenciais inerentes a uma entidade. Isto significa concentrar-se no que um objeto é e o quê

ele fará antes de decidir como ele será implementado (RICARTE, 2001, p. 52). Assim, um

desenvolvedor, ao abstrair um objeto do mundo real, deve atentar-se a qual conjunto de

objetos do mundo real, no qual o mesmo está inserido, e quais são as características

semelhantes deste objeto com os outros, descartando seus pontos desprezíveis, dando maior

enfoque nos seus pontos essenciais. Desta forma, cada objeto que compõe um sistema é um

modelo, um ator abstrato que pode apresentar variações em seu estado, comunicar-se com

outros objetos, conforme as características abstraídas, tornando possível a implementação

das classes, objetos, dos métodos e funções do sistema.

Page 14: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

14

Figura 2: Exemplo de abstração

No exemplo apresentado na Figura 2, o desenvolvedor teve a habilidade de

classificar e categorizar os meios de transportes, de forma a agrupar todos aqueles com

características comuns. Ou seja, o desenvolvedor captou os atributos e operações comuns

aos objetos, e os agrupou nas classes e subclasses acima descritas.

2.3.3. Encapsulamento

Encapsulamento permite ao desenvolvedor restringir os acessos às classes e as declarações

de uma classe, utilizando-se de palavras reservadas denominadas qualificadores que são

elas: public, private, protected.

Caso haja omissão na declaração, o método ou a propriedade será declarada, por

padrão em algumas linguagens, do tipo public, ou seja, os membros desta serão visíveis a

todas as outras classes. No caso da declaração ser feita do tipo protected os membros

Page 15: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

15

declarados nesta classe, serão visíveis somente para as classes e subclasses dentro do

mesmo pacote. E, por último, caso a declaração seja feita do tipo private¸ os membros

declarados nesta classe serão isolados, escondidos das demais, e somente poderão ser

acessadas pela classe que as declarou. Essa prática é válida quando, o desenvolvedor

necessita de que os atributos declarados em uma classe sejam apenas utilizados por ela.

A idéia é simples, deve-se fornecer ao usuário, cliente de uma classe, o

necessário, e somente o necessário para que ele tire proveito da funcionalidade desta classe.

Os detalhes devem ser omitidos, somente a lista de operações a qual uma classe deve

atender fica visível (CESTA, 1996, p. 56).

Figura 3: Exemplo de encapsulamento

A Figura 3 apresenta um breve exemplo do uso da técnica de encapsulamento,

onde as variáveis definidas como do tipo protected, só poderão ser acessadas pela classe

ContaCorrente ou por aquelas que estenderem-se a partir dela (suas subclasses),

simplesmente pelo fato da mesma ter sido declarada como do tipo protected. Neste caso, a

<?php class ContaCorrente { protected $titularID; protected $agenciaID; protected $contaID; protected $saldo;

public function __construct() { $this->titularID = NULL; $this->agenciaID = NULL; $this->contaID = NULL; $this->saldo = NULL; } }

class ContaCorrenteEspecial extends ContaCorrente {

protected $limite; function setLimiteConta($valorLimite){ $this->limite = $valorLimite; }

} ?>

Page 16: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

16

classe ContaCorrenteEspecial (classe filha) além de ter acesso aos atributos próprios

também herdará todos os atributos da classe ContaCorrente (classe pai).

2.3.4. Herança

Herança é o mecanismo do paradigma de orientação a objetos que permite compartilhar

atributos e operações entre classes, baseada em um relacionamento hierárquico. Uma classe

pode ser definida de forma genérica e depois refinada sucessivamente em termos de

subclasses ou classes derivadas. Cada subclasse incorpora, ou herda, todas as propriedades

de sua superclasse (ou classe base) e adiciona suas propriedades únicas e particulares. As

propriedades da classe base não precisam ser repetidas em cada classe derivada. Esta

capacidade de fatorar as propriedades comuns de diversas classes em uma superclasse pode

reduzir dramaticamente a repetição de código em um projeto ou programa, sendo esta uma

das principais vantagens da abordagem de orientação a objetos (RICARTE, 2001, p. 61).

Resumidamente, é o meio de se criar, especializar novas classes ou objetos

aproveitando-se de outros objetos ou classes já implementadas anteriormente.

Figura 4: Exemplo de Herança

Page 17: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

17

Na Figura 4, tem-se o exemplo simples de um sistema bancário, onde através da

superclasse Conta Bancária foi possível a definição de duas subclasses distintas (conta

corrente e conta poupança) e que, além de herdar e compartilhar suas características com

sua classe pai, podem também receber características particulares como saldo e limite.

2.3.5. Polimorfismo

“A palavra polimorfismo advém da língua grega e significa muitas formas. A

partir daí surge a idéia de permitir que o mesmo código seja utilizado de

diferentes tipos, apresentando variados tipos de comportamentos, dependendo do

tipo real de um objeto tendo como resultado, implementações mais

generalizadas” (RICARTE, 2001, p. 52).

Este conceito de programação orientado a objeto usado para denotar o suporte a

utilização do mesmo identificador para métodos de classes distintas. Geralmente, emprega-

se polimorfismo quando se é necessário o uso de nomes idênticos para tarefas similares em

classes distintas.

A utilização deste acaba tornando o código da aplicação, mais simples, claro e

fácil de compreender, uma vez que, na sua ausência, o desenvolvedor necessitaria de criar

uma lista, muitas vezes enorme de métodos, com diferentes nomes para cada um deles,

porém com um comportamento bastante parecido, o que deixaria o código confuso e

trabalhoso. Portanto, polimorfismo consiste na atribuição de comportamentos proprietários

de uma classe a outra.

2.3.6. Interfaces

As Interfaces permitem que o desenvolvedor necessite conhecer apenas um conjunto

reduzido de conceitos e métodos, podendo desacoplar funcionalidades da abstração de uma

classe (ZEND, 2006).

Page 18: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

18

Interface é semelhante a uma classe, porém possuem um aspecto mais restritivo.

Em interface todos os métodos são declarados juntamente com suas assinaturas (nome,

parâmetros e tipo de retorno), porém não possuem implementação.

Page 19: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

19

3. MATERIAIS E MÉTODOS

Para o desenvolvimento desse trabalho, vários recursos foram utilizados: material

bibliográfico, hardware e software, os quais serão citados a seguir.

3.1. ESTRUTURA FÍSICA E LÓGICA Para o desenvolvimento deste trabalho foi utilizado um microcomputador padrão IBM,

composto por um processador Pentium® IV 3.0 GHz, com sistema operacional Slackware®

Linux 10.2, sendo utilizado como software, o banco de dados MySql® 5.0 e o servidor WEB

Apache®, com a extensão PHP 5. Foram utilizadas como ferramentas para o

desenvolvimento do trabalho o Umbrello UML®, utilizada para desenvolver a modelagem

do sistema, utilizando a linguagem UML, e o NVU®, utilizado para criação de páginas

WEB, envolvendo design e programação.

3.2. MÉTODOS APLICADOS Foram realizados estudos a cerca da Engenharia de Softwares, aplicado ao desenvolvimento

orientado a objetos, além de pesquisas sobre a linguagem de programação PHP em sua

versão 5.

Já para os requisitos do sistema foi realizado um levantamento das tarefas básicas de

um almoxarifado para que o sistema fosse de fato concebido e atendendo as necessidades

daquele setor.

Page 20: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

20

4. RESULTADOS E DISCUSSÃO

Para que o objetivo deste trabalho fosse alcançado diversos trabalhos foram desenvolvidos.

Neste capítulo serão apresentados estes trabalhos, de forma seqüencial, levando ao fim ao

objetivo conquistado.

Nesta fase, encontram-se os diagramas de casos de uso, seguindo a modelagem em

UML, os casos de uso reais, o diagrama de classe do sistema proposto, o modelo relacional

do banco de dados, bem como a implementação das classes que compõe o referido sistema.

4.1. DIAGRAMAS DE CASOS DE USO

Figura 5: Diagrama de Casos de Uso

Page 21: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

21

4.2. Casos de Uso Reais

4.2.1. Logar

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O usuário acessa a área de login. 2. O sistema apresenta o formulário de login

3. O usuário preenche o formulário digitando os dados necessários nos campos Login e Senha conforme Figura 6.

4. O usuário possui a opção Logar, representada pelo botão Logar conforme Figura 6.

5. O sistema faz a autenticação e redireciona para sua área de trabalho

Seqüências Alternativas: 5. Senha incorreta ou Usuário inválido: o sistema exibe uma

mensagem informativa, conforme apresentado na Figura 7.

Figura 6: Caso de Uso Logar

Page 22: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

22

Figura 7: Caso de uso logar com erro

4.2.2. Incluir Classe de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma nova classe de produtos.

2. O sistema apresenta o formulário para a inclusão da nova classe de produtos.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados Nome, Grupo e Natureza conforme Figura 8.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome conforme Figura 8.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro, informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 23: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

23

Figura 8: Caso de uso inclusão de classe de produto

4.2.3. Consultar Classe de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para consultar uma classe de produtos.

2. O sistema apresenta o formulário para a consulta da classe de produtos.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 8.

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 8.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

Page 24: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

24

4.2.4. Alterar Classe de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma classe de produtos.

2. O sistema apresenta o formulário de cadastro de classe de produtos.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 8.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 8.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.5. Excluir Classe de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma classe de produtos.

2. O sistema apresenta o formulário de cadastro de classe de produtos.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 8.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 8.

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário nao selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 25: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

25

4.2.6. Incluir Grupo de Produtos

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir um novo grupo de produtos.

2. O sistema apresenta o formulário para a inclusão de novo grupo de produtos.

3. O usuário preenche o formulário digitando/selecionando os dados necessários nos campos denominados Nome e Natureza conforme Figura 9.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome conforme Figura 9.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Figura 9: Caso de uso inclusão de grupo de produto

Page 26: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

26

4.2.7. Consultar Grupos de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para consultar um grupo de produto.

2. O sistema apresenta o formulário para a consulta de grupos de produtos.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 9.

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 9.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

4.2.8. Alterar Grupos de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar um grupo de produtos.

2. O sistema apresenta o formulário de cadastro de grupo de produtos.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 9.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 9.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.9. Excluir Grupos de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar um grupo de produtos.

2. O sistema apresenta o formulário de cadastro de grupo de produtos.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 9.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 9.

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário não selecionou nenhuma caixa de seleção: O

Page 27: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

27

sistema exibe uma mensagem, informando ao usuário.

4.2.10. Incluir Unidades de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma nova unidade de produtos.

2. O sistema apresenta o formulário para a inclusão da nova unidade de produtos.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados Código e Descrição conforme Figura 10.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome conforme Figura 10.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Figura 10: Caso de uso inclusão de unidades de produto

Page 28: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

28

4.2.11. Consultar Unidades de Produto

Seqüência Típica de Eventos

Ação do Ator Resposta do Sistema 1. O ator escolhe a funcionalidade para consultar uma unidade de produto.

2. O sistema apresenta o formulário para a consulta de unidade de produtos.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 10.

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 10.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

4.2.12. Alterar Unidades de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma unidade de produtos.

2. O sistema apresenta o formulário de cadastro de unidade de produtos.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 10.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 10.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.13. Excluir Unidades de Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma unidade de produtos.

2. O sistema apresenta o formulário de cadastro de unidades de produtos.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 10.

4. O usuário possui a opção Excluir (da parte 5. O sistema realiza a exclusão e exibe uma

Page 29: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

29

inferior da tela), representada pelo botão de mesmo nome conforme Figura 10.

mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário nao selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

4.2.14. Incluir Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir um novo produto.

2. O sistema apresenta o formulário para a inclusão do novo produto.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados Nome, Unidade, Classe e o Estoque Mínimo, conforme Figura 11.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme Figura 11.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 30: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

30

Figura 11: Caso de uso inclusão de produtos

4.2.15. Consultar Produto

Seqüência Típica de Eventos

Ação do Ator Resposta do Sistema 1. O ator escolhe a funcionalidade para consultar um produto.

2. O sistema apresenta o formulário para a consulta de produtos.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 11.

4. O usuário possui a opção Pesquisar, 5. O sistema realiza a consulta exibindo seu

Page 31: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

31

representada pelo botão de mesmo nome conforme Figura 11.

resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

4.2.16. Alterar Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar um produto.

2. O sistema apresenta o formulário de cadastro de produtos.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 11.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 11.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.17. Excluir Produto

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar produtos.

2. O sistema apresenta o formulário de cadastro de produtos.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 11.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 11.

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário não selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 32: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

32

4.2.18. Incluir Fornecedores

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir um novo fornecedor.

2. O sistema apresenta o formulário para a inclusão do novo Fornecedor.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados CNPJ, Razão Social, Nome Fantasia,Inscrição Estadual, Endereço, Bairro, Cidade, CEP, UF, Fone, Fax e Email, conforme Figura 12

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme Figura 12.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 33: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

33

Figura 12: Caso de uso inclusão de Fornecedores

Page 34: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

34

4.2.19. Consultar Fornecedores

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para consultar um fornecedor.

2. O sistema apresenta o formulário para a consulta de fornecedores.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 12.

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 12.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

4.2.20. Alterar Fornecedores

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar um fornecedor.

2. O sistema apresenta o formulário de cadastro de fornecedores.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de itens exibida neste formulário, conforme Figura 12.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 12.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.21. Excluir Fornecedores

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar fornecedores.

2. O sistema apresenta o formulário de cadastro de fornecedores.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 12.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no

Page 35: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

35

mesmo nome conforme Figura 12. rodapé da página. Seqüências Alternativas: 5. Usuário não selecionou nenhuma caixa de seleção: O

sistema exibe uma mensagem, informando ao usuário.

4.2.22. Incluir Movimentação Externa (Compra De Materiais)

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma movimentação externa.

2. O sistema apresenta o formulário para a inclusão da movimentação externa.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados, Data, Número da Nota Fiscal, Número do Documento de Origem, Data Documento Origem, Nome da Transportadora (se houver) e selecionando o Fornecedor do Material adquirido conforme Figura 13.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme Figura 13.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página e direciona para o módulo de inclusão de itens de movimentação externa.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe

uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 36: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

36

Figura 13: Caso de uso inclusão de Movimentação Externa

4.2.23. Consultar Movimentação Externa

Seqüência Típica de Eventos

Ação do Ator Resposta do Sistema 1. O ator escolhe a funcionalidade para consultar uma entrada de material.

2. O sistema apresenta o formulário para a consulta de entrada de materiais.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 13.

Page 37: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

37

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 13.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no rodapé da mesma página, informando ao usuário.

4.2.24. Alterar Movimentação Externa

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma entrada de material.

2. O sistema apresenta o formulário de cadastro de entrada de material.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de itens exibida neste formulário, conforme Figura 13.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 13.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.25. Excluir Movimentação Externa

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma entrada de material.

2. O sistema apresenta o formulário de cadastro de entrada de material.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de itens exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 13.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 13.

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário não selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 38: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

38

4.2.26. Incluir Itens da Movimentacao Externa

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma movimentação externa.

2. O sistema apresenta o formulário para a inclusão da movimentação externa.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados, Data, Número da Nota Fiscal, Número do Documento de Origem, Data Documento Origem, Nome da Transportadora (se houver) e selecionando o Fornecedor do Material adquirido, conforme figura 13.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme figura 13.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página e direciona para o módulo de inclusão de itens de movimentação externa apresentando o respectivo formulário.

6. O usuário preenche o formulário informando os dados necessários nos campos denominados Produto, Quantidade Adquirida e Valor Unitário do Material Adquirido, conforme figura 14.

7. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme figura 14.

8. O sistema faz a validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 8. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 39: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

39

Figura 14: Caso de uso inclusão de Itens da Movimentação Externa

4.2.27. Alterar Itens da Movimentação Externa

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma entrada de material.

2. O sistema apresenta o formulário de cadastro de entrada de material.

3. O usuário seleciona a movimentação externa que deseja alterar seus itens.

4. o sistema apresenta o formulário de cadastro dos itens de entrada de material

5. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de itens exibida neste formulário, conforme Figura

Page 40: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

40

14. 6. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 14.

7. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.28. Excluir Itens da Movimentação Externa

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma entrada de material.

2. O sistema apresenta o formulário de cadastro de entrada de material.

3. O usuário seleciona a movimentação externa que deseja alterar seus itens.

4. o sistema apresenta o formulário de cadastro dos itens de entrada de material

5. O usuário seleciona a(s) linha(s) escolhida(s), diretamente na lista de itens exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 14.

6. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 14.

7. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüência Alternativa 5. Usuário não selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 41: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

41

4.2.29. Incluir Movimentação Interna (Requisições de Materiais)

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma movimentação interna.

2. O sistema apresenta o formulário para a inclusão da movimentação interna.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados, Data da Solicitação e selecionando o Departamento e o Funcionário que originaram a Requisição de Material, conforme a figura 14.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme a figura 14.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página e direciona para o módulo de inclusão de items de movimentação interna.

Seqüências Alternativas: 5. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

Page 42: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

42

Figura 15: Caso de uso inclusão de Movimentação Interna

4.2.30. Consultar Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para consultar uma saida de material.

2. O sistema apresenta o formulário para a consulta de saida de materiais.

3. O usuário digita o dado desejado para a referida consulta no campo denominado Procurar conforme Figura 15.

4. O usuário possui a opção Pesquisar, representada pelo botão de mesmo nome conforme Figura 15.

5. O sistema realiza a consulta exibindo seu resultado de acordo com o(s) dado(s) informados pelo ator.

Seqüências Alternativas: 5. Consulta retorna nulo: O sistema exibe uma mensagem no

Page 43: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

43

rodapé da mesma página, informando ao usuário.

4.2.31. Alterar Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma saída de material.

2. O sistema apresenta o formulário de cadastro de saída de material.

3. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 14.

4. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 14.

5. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.32. Excluir Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma saida de material.

2. O sistema apresenta o formulário de cadastro de saída de material.

3. O usuário seleciona o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 14.

4. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 14.

5. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüências Alternativas: 5. Usuário nao selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 44: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

44

4.2.33. Incluir Itens da Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para incluir uma movimentação interna.

2. O sistema apresenta o formulário para a inclusão da movimentação interna.

3. O usuário preenche o formulário digitando os dados necessários nos campos denominados, Data da Solicitação e selecionando o Departamento e o Funcionario que originaram a Requisicao de Material, conforme a figura 15.

4. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme a figura 15.

5. O sistema faz validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página e direciona para o módulo de inclusão de items de movimentação interna apresentando o respectivo formulário.

6. O usuário preeenche o formulário informando os dados necessários nos campos denominados Produto e Quantidade Solicitada do Material, conforme a figura 16.

7. O usuário possui a opção Salvar, representada pelo botão de mesmo nome, conforme a figura 16.

8. O sistema faz a validação dos dados e exibe uma mensagem de confirmação do cadastrado no rodapé da página.

Seqüências Alternativas: 8. Dados cadastrais incorretos / em brancos: O sistema exibe uma mensagem de erro no rodapé da mesma página de cadastro informando ao usuário que os dados estão preenchidos de maneira incorreta.

8. Estoque Insuficiente: Sistema Exibe uma mensagem de erro no rodapé da mesma página informando ao usuário que a quantidade solicitada é superior a contida no estoque.

Page 45: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

45

Figura 16: Caso de uso inclusão de Itens da Movimentação Interna

4.2.34. Alterar Itens da Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma saida de material.

2. O sistema apresenta o formulário de cadastro de saida de material.

3. O usuário seleciona a movimentação interna que deseja alterar seus items.

4. O sistema apresenta o formulário de cadastro dos itens de saída de material

5. O usuário altera o(s) dado(s) da(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, conforme Figura 16.

Page 46: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

46

6. O usuário possui a opção Salvar (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 16.

7. O sistema realiza a atualização exibindo seu novo resultado de acordo com o(s) dado(s) informados pelo ator e exibe uma mensagem de confirmação da alteração no rodapé da página..

4.2.35. Excluir Itens da Movimentação Interna

Seqüência Típica de Eventos Ação do Ator Resposta do Sistema

1. O ator escolhe a funcionalidade para cadastrar uma saida de material.

2. O sistema apresenta o formulário de cadastro de saida de material.

3. O usuário seleciona a movimentação interna que deseja alterar seus items.

4. o sistema apresenta o formulario de cadastro dos itens de saida de material

5. O usuário seleciona a(s) linha(s) escolhida(s), diretamente na lista de items exibida neste formulário, através das caixas de seleção desta lista, conforme Figura 16.

6. O usuário possui a opção Excluir (da parte inferior da tela), representada pelo botão de mesmo nome conforme Figura 16.

7. O sistema realiza a exclusão e exibe uma mensagem de confirmação da exclusão no rodapé da página.

Seqüencia Alternativa 5. Usuário nao selecionou nenhuma caixa de seleção: O sistema exibe uma mensagem, informando ao usuário.

Page 47: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

47

4.3. Diagrama de Classes do Projeto

Figura 17: Diagrama de Classes em UML

Page 48: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

48

4.4. Modelo Relacional do Banco de Dados

Figura 18: Dicionário de Dados

Page 49: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

49

4.5. Implementação do Sistema

4.5.1. Cadastro de Unidades <?php include("DBConnector.php"); class Unidade { private $Codigo; private $Nome; function __construct() { $this->Codigo = NULL; $this->Nome = NULL; } function setCodigo($codigo) { $this->Codigo = $codigo; } function getCodigo() { return $this->Codigo; } function setNome($nome) { $this->Nome = $nome; } function getNome() { return $this->Nome; } function incluirUnidade($cod, $nome) { $db = new DBConnector(); $this->setCodigo($cod); $this->setNome($nome); $sql = "INSERT INTO Unidade (UnidadeCodigo, UnidadeNome) VALUES ('".$this->getCodigo()."', '".$this->getNome()."')"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirUnidade function atualizarUnidade($nomeUnd, $codUnid) { $db = new DBConnector(); $sql = "UPDATE Unidade SET UnidadeNome = '$nomeUnd' WHERE UnidadeCodigo = '$codUnid'"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarUnidade function excluirUnidade($codUnidade) { $db = new DBConnector(); $sql = "DELETE FROM Unidade WHERE UnidadeCodigo = '$codUnidade'"; $db->Manipulate_Data($sql);

Page 50: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

50

$db->DbDisconnect(); } // end of member function excluirUnidade function buscarUnidade($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM Unidade WHERE UnidadeNome Like '".$unidNome."%' ORDER BY UnidadeNome"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmUnidades" method="post" action="atualizarUnidades.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>">

Page 51: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

51

<input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else {

Page 52: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

52

echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarUnidade } // end of Unidade ?>

<?php session_start(); require_once("../../includes/classes/unidade.php"); if ($_SERVER['REQUEST_METHOD'] =='POST') { $codUnid = strtoupper(trim($_POST['fldCodUnidade'])); $descUnid = strtoupper(trim($_POST['fldDescUnidade'])); } $unidade = new Unidade(); $unidade->incluirUnidade($codUnid, $descUnid); $_SESSION['mensagem']="Unidade Incluida com Sucesso"; header("Location: index.php?pagina=1"); ?>

<?php session_start(); require_once("../../includes/classes/unidade.php"); for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; $unidade = new Unidade(); $unidade->excluirUnidade($indice); $cont++; } if ($cont > 0) $_SESSION['mensagem'] = "$cont registro(s) excluido(s) com &Ecirc;xito!"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/unidade.php"); $cont = 0; for ($i=0; $i<count($_POST['fldUndCod']); $i++)

Page 53: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

53

{ $indice = $_POST['fldUndCod'][$i]; for ($j=0; $j<count($_POST['fldIndiceCod']); $j++) { if ($indice == $_POST['fldIndiceCod'][$j]) { $novoNome = trim(strtoupper($_POST['fldUnidDescr'][$j])); $unidade = new Unidade(); $unidade->atualizarUnidade($novoNome, $indice); $cont++; } } } if ($cont > 0) session_register('mensagem'); $_SESSION['mensagem'] = "$cont unidade(s) atualizada(s) com exito!!!"; header("Location: index.php?pagina=1"); ?>

4.5.2. Cadastro de Produtos <?php class Produto { private $Nome; private $Classe; private $Unidade; private $EstoqueMin; private $EstoqueAtual; function __construct() { $this->Nome = NULL; $this->Classe = NULL; $this->Unidade = NULL; $this->EstoqueMin = NULL; $this->EstoqueAtual = NULL; } function setNome($nome) { $this->Nome = $nome; } function getNome() { return $this->Nome; } function setClasse($classe) { $this->Classe = $classe; } function getClasse() { return $this->Classe; } function setUnidade($und) { $this->Unidade = $und; } function getUnidade() {

Page 54: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

54

return $this->Unidade; } function setEstoqueMin($em) { $this->EstoqueMin = $em; } function getEstoqueMin() { return $this->EstoqueMin; } function setEstoqueAtual($ea) { $this->EstoqueAtual = $ea; } function getEstoqueAtual() { return $this->EstoqueAtual; } function incluirProduto($nome, $classe, $und, $ea, $em) { $db = new DBConnector(); $this->setNome($nome); $this->setClasse($classe); $this->setUnidade($und); $this->setEstoqueMin($em); $this->setEstoqueAtual($ea); $sql = "INSERT INTO Produto (Unidade_UnidadeCodigo, Classe_ClasseCodigo, ProdutoNome, ProdutoEstoqueMin, ProdutoEstoqueAtual) VALUES('".$this->getUnidade()."', ".$this->getClasse().", '".$this->getNome()."', ".$this->getEstoqueMin().", ".$this->getEstoqueAtual().")"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirProduto function excluirProduto($codProd) { $db = new DBConnector(); $sql = "DELETE FROM Produto WHERE ProdutoCodigo = $codProd"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function excluirProduto function buscarProduto($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM Produto WHERE ProdutoNome Like '".$unidNome."%' ORDER BY ProdutoNome"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmProduto" method="post" action="atualizarProdutos.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10...

Page 55: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

55

else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['ProdutoCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['ProdutoCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['ProdutoCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['ProdutoCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['ProdutoCodigo'])?>')" value="<?=strtoupper(trim($linha['ProdutoNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center">

Page 56: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

56

<?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarProduto function atualizarProduto($nome, $classe, $und, $ea, $em, $cod) { $db = new DBConnector(); $sql = "UPDATE Produto SET Unidade_UnidadeCodigo = '$und', Classe_ClasseCodigo = '$classe', ProdutoNome = '$nome', ProdutoEstoqueMin = $em, ProdutoEstoqueAtual = $ea WHERE ProdutoCodigo = $codUnid"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarProduto

Page 57: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

57

} // end of Produto ?> <?php session_start(); require_once("../../includes/classes/produto.php"); if ($_SERVER['REQUEST_METHOD'] =='POST') { $nome = strtoupper(trim($_POST['fldNomeProd'])); $classe = $_POST['selClasse']; $und = $_POST['selUnid']; $ea = $_POST['fldProdEstAtual']; $em = $_POST['fldProdEstMin']; } $produto = new Produto(); $produto->incluirProduto($nome, $classe, $und, $ea, $em); $_SESSION['mensagem']="Produto Incluido com Sucesso"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/produto.php"); for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; $produto = new Produto(); $produto->excluirProduto($indice); $cont++; } if ($cont > 0) $_SESSION['mensagem'] = "$cont registro(s) excluido(s) com &Ecirc;xito!"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/produto.php"); $cont = 0; for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; for ($j=0; $j<count($_POST['fldIndiceCod']); $j++) { if ($indice == $_POST['fldIndiceCod'][$j]) { $nome = trim(strtoupper($_POST['fldProdNome'][$j])); $classe = $_POST['selProdClasse'][$j]; $und = $_POST['selProdUnid'][$j]; $ea = $_POST['fldProdEstAt'][$j]; $em = $_POST['fldProdEstMin'][$j]; $produto = new Produto(); $produto->atualizarProduto($nome, $classe, $und, $ea, $em, $indice); $cont++; } } } if ($cont > 0)

Page 58: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

58

session_register('mensagem'); $_SESSION['mensagem'] = "$cont produto(s) atualizado(s) com exito!!!"; header("Location: index.php?pagina=1"); ?>

4.5.3. Cadastro de Classes <?php class Classe { public $GrupoClasse; public $ClasseDescricao; public $ClasseNatureza; function __construct() { $this->GrupoClasse = NULL; $this->ClasseDescricao = NULL; $this->ClasseNatureza = NULL; } function setGrupoClasse($grupoClasse) { $this->GrupoClasse = $grupoClasse; } function setClasseDescr($classeDescr) { $this->ClasseDescricao = $classeDescr; } function setClasseNatureza($classeNat) { $this->ClasseNatureza = $classeNat; } function getGrupoClasse() { return $this->GrupoClasse; } function getClasseDescr() { return $this->ClasseDescricao; } function getClasseNatureza() { return $this->ClasseNatureza; } function incluirClasse($grupoClasse,$classeDescr, $classeNat) { $db = new Conexao(); $this->setGrupoClasse($grupoClasse); $this->setClasseDescr($classeDescr); $this->setClasseNatureza($classeNat); $query = "INSERT INTO Classe (ClasseNome, ClasseGrupoCd, ClasseGrupoNat) VALUES ('".$this->getClasseDescr()."', ".$this->getGrupoClasse().", ".$this->getClasseNatureza().")" ; $db->Manipular($sql); $db->Fechar(); } function excluirClasse($classeID)

Page 59: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

59

{ $db = new Conexao(); $sql = "DELETE FROM Classe WHERE ClasseCodigo=$classeID"; $db->Manipular($sql); $db->Fechar(); } function atualizarClasse($grupoClasse,$classeDescr, $classeNat, $classeID) { $db = new Conexao(); $this->setGrupoClasse($grupoClasse); $this->setClasseDescr($classeDescr); $this->setClasseNatureza($classeNat); $sql = "UPDATE Classe SET ClasseNome = '".$this->getClasseDescr()."' , ClasseGrupoCd = ".$this->getGrupoClasse().", ClasseGrupoNat = ".$this->getClasseNatureza()." WHERE ClasseCodigo = $classeID"; $db->Manipular($sql); $db->Fechar(); } function buscarClasse($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM Classe WHERE ClasseNome Like '".$unidNome."%' ORDER BY ClasseNome"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmClasse" method="post" action="atualizarClasses.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td>

Page 60: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

60

<td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; }

Page 61: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

61

else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } } ?>

<?php session_start(); require_once("../../includes/classes/classe.php"); if ($_SERVER['REQUEST_METHOD'] =='POST') { $nome = strtoupper(trim($_POST['fldNomeClasse'])); $grupo = $_POST['cmbGrupo']; $natur = $_POST['cmbNat']; } $classe = new Classe(); $classe->incluirClasse($nome, $grupo, $natur); $_SESSION['mensagem']="Classe Incluida com Sucesso"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/classe.php"); for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; $classe = new Classe(); $classe->excluirClasse($indice);

Page 62: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

62

$cont++; } if ($cont > 0) $_SESSION['mensagem'] = "$cont registro(s) excluido(s) com &Ecirc;xito!"; header("Location: index.php?pagina=1"); ?>

<?php session_start(); require_once("../../includes/classes/classe.php"); $cont = 0; for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; for ($j=0; $j<count($_POST['fldIndiceCod']); $j++) { if ($indice == $_POST['fldIndiceCod'][$j]) { $grupoClasse = $_POST['selclassegrupo'][$j]; $classeDescr = trim(strtoupper($_POST['fldclasseDescr'][$j])); $classeNat = $_POST['selclassenat'][$j]; $classe = new Classe(); $classe->atualizarClasse($grupoClasse,$classeDescr, $classeNat, $indice); $cont++; } } } if ($cont > 0) session_register('mensagem'); $_SESSION['mensagem'] = "$cont classe(s) atualizada(s) com exito!!!"; header("Location: index.php?pagina=1"); ?>

4.5.4. Cadastro de Grupos <?php include("DBConnector.php"); class Grupo { public $GrupoNome; public $GrupoNatureza; function __construct() { $this->GrupoNome = NULL; $this->GrupoNatureza = NULL; } function setGrupoNome($grupoNome) { $this->GrupoNome = $grupoNome; } function setGrupoNatureza($grupoNatureza) { $this->GrupoNatureza = $grupoNatureza; }

Page 63: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

63

function getGrupoNome() { return $this->GrupoNome; } function getGrupoNatureza() { return $this->GrupoNatureza; } function incluirGrupo($nome, $natureza) { $db = new DBConnector(); $this->setGrupoNome($nome); $this->setGrupoNatureza($natureza); $sql = "INSERT INTO Grupo (GrupoNatureza,GrupoNome) VALUES ('".$this->getGrupoNome()."', '".$this->getGrupoNatureza()."')"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } function excluirGrupo($codGrupo) { $db = new DBConnector(); $sql = "DELETE FROM Grupo WHERE GrupoCodigo = $codGrupo"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } function atualizarGrupo($grupoNome, $grupoNat, $codGrupo ) { $db = new DBConnector(); $sql = "UPDATE Grupo SET GrupoNome = '$grupoNome', GrupoNatureza = '$grupoNat' WHERE GrupoCodigo = $codGrupo"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } function buscarGrupo($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM Grupo WHERE GrupoNome Like '".$unidNome."%' ORDER BY GrupoNome"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmGrupos" method="post" action="atualizarGrupos.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; }

Page 64: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

64

$linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; }

Page 65: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

65

else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } } ?> <?php session_start(); require_once("../../includes/classes/grupo.php"); if ($_SERVER['REQUEST_METHOD'] =='POST') { $nomeGrupo = strtoupper(trim($_POST['fldNomeGrupo'])); $natGrupo = $_POST['cmbNatGrupo']; } $grupo = new Grupo(); $grupo->incluirGrupo($nomeGrupo, $natGrupo);

Page 66: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

66

$_SESSION['mensagem']="Grupo Incluido com Sucesso"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/grupo.php"); for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; $grupo = new Grupo(); $unidade->excluirGrupo($indice); $cont++; } if ($cont > 0) $_SESSION['mensagem'] = "$cont registro(s) excluido(s) com &Ecirc;xito!"; header("Location: index.php?pagina=1"); ?>

<?php session_start(); require_once("../../includes/classes/grupo.php"); $cont = 0; for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; for ($j=0; $j<count($_POST['fldIndiceCod']); $j++) { if ($indice == $_POST['fldIndiceCod'][$j]) { $novoNome = trim(strtoupper($_POST['fldUnidDescr'][$j])); $novaNat = $_POST['selNat'][$j]; $grupo = new Grupo(); $grupo->atualizarGrupo($novoNome, $novaNat, $indice); $cont++; } } } if ($cont > 0) session_register('mensagem'); $_SESSION['mensagem'] = "$cont grupo(s) atualizado(s) com exito!!!"; header("Location: index.php?pagina=1"); ?>

4.5.5. Cadastro de Fornecedores <?php include("DBConnector.php"); class Fornecedores { public $FornecedorCNPJ; public $RazaoSocial; public $NomeFantasia; public $InscrEstadual; public $Endereco; public $Bairro; public $Cidade;

Page 67: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

67

public $CEP; public $UF; public $Fone; public $Fax; public $Email; function setFornecedorCNPJ($cnpj){ $this->FornecedorCNPJ = $cnpj; } function setRazaoSocial($razao){ $this->RazaoSocial = $razao; } function setNomeFantasia($nome){ $this->NomeFantasia = $nome; } function setInscrEstadual($inscrEst){ $this->InscrEstadual = $inscrEst; } function setEndereco($endereco){ $this->Endereco = $endereco; } function setBairro($bairro){ $this->Bairro = $bairro; } function setCidade($cidade){ $this->Cidade = $cidade; } function setCEP($cep){ $this->CEP = $cep; } function setUF($uf){ $this->UF = $uf; } function setFone($fone){ $this->Fone = $fone; } function setFax($fax){ $this->Fax = $fax; } function setEmail($mail){ $this->Email = $mail; } function getFornecedorCNPJ(){ return $this->FornecedorCNPJ; } function getRazaoSocial(){ return $this->RazaoSocial; } function getNomeFantasia(){ return $this->NomeFantasia; } function getInscrEstadual(){ return $this->InscrEstadual; } function getEndereco(){ return $this->Endereco; } function getBairro(){ return $this->Bairro; } function getCidade(){ return $this->Cidade; } function getCEP(){ return $this->CEP;

Page 68: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

68

} function getUF(){ return $this->UF; } function getFone(){ return $this->Fone; } function getFax(){ return $this->Fax; } function getEmail(){ return $this->Email; } function incluirFornecedor($cnpj,$razao, $nome, $inscrEst,$endereco, $inscrEst, $endereco, $bairro, $cidade, $cep, $uf, $fone, $fax, $mail) { $db = new Conexao(); $this->setFornecedorCNPJ($cnpj); $this->setRazaoSocial($razao); $this->setNomeFantasia($nome); $this->setInscrEstadual($inscrEst); $this->setEndereco($endereco); $this->setBairro($bairro); $this->setCidade($cidade); $this->setCEP($cep); $this->setUF($uf); $this->setFone($fone); $this->setFax($fax); $this->setEmail($mail); $sql = "INSERT INTO Fornecedor (FornecedorCNPJ, FornecedorRazaoSocial, FornecedorNome, FornecedorInscrEstadual, FornecedorEndereco, FornecedorBairro, FornecedorCidade, FornecedorCEP, FornecedorUF, FornecedorFone, FornecedorFax, FornecedorEmail) VALUES('".$this->getFornecedorCNPJ()."','".$this->getRazaoSocial()."','".$this->getNomeFantasia()."','".$this->getInscrEstadual()."','".$this->getEndereco()."','".$this->getBairro()."','".$this->getCidade."','".$this->getCEP."','".$this->getUF()."','".$this->getFone()."','".$this->getFax()."','".$this->getEmail()."')"; $db->Manipular($sql); $db->Fechar(); } function excluirFornecedor($cnpj) { $db = new Conexao(); $sql = "DELETE FROM Fornecedor WHERE FornecedorCNPJ=$cnpj"; $db->Manipular($sql); $db->Fechar(); } function atualizarFornecedor($cnpj,$razao, $nome, $inscrEst,$endereco, $endereco, $bairro, $cidade, $cep, $uf, $fone, $fax, $mail) { $db = new Conexao(); $this->setRazaoSocial($razao); $this->setNomeFantasia($nome); $this->setInscrEstadual($inscrEst); $this->setEndereco($endereco); $this->setBairro($bairro); $this->setCidade($cidade); $this->setCEP($cep); $this->setUF($uf); $this->setFone($fone);

Page 69: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

69

$this->setFax($fax); $this->setEmail($mail); $sql = "UPDATE Fornecedor SET FornecedorRazaoSocial = '".$this->getRazaoSocial()"', FornecedorNome = '".$this->getNome()"', FornecedorInscrEstadual = '".$this->getInscrEstadual()"', FornecedorEndereco = '".$this->getInscrEstadual()"', FornecedorBairro = '".$this->getInscrEstadual()"', FornecedorCidade = '".$this->getCidade()"', FornecedorCEP = '".$this->getCEP()"', FornecedorUF = '".$this->getUF()"', FornecedorFone = '".$this->getFone()"', FornecedorFax = '".$this->getFax()"', FornecedorEmail = '".$this->getEmail()"' WHERE FornecedorCNPJ = '$cnpj'"; $db->Manipular($sql); $db->Fechar(); } function buscarFornecedor($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM Fornecedor WHERE FornecedorRazaoSocial Like '".$unidNome."%' ORDER BY FornecedorRazaoSocial"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmFornecedores" method="post" action="atualizarFornecedores.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php

Page 70: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

70

while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; }

Page 71: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

71

if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } } // end of Fornecedores ?>

<?php session_start(); require_once("../../includes/classes/fornecedores.php"); if ($_SERVER['REQUEST_METHOD'] =='POST') { $cnpj = trim(strtoupper($_POST['fldforncnpj'])); $razao = trim(strtoupper($_POST['fldfornrazao'])); $nome = trim(strtoupper($_POST['fldfornnome'])); $inscrEst = trim(strtoupper($_POST['fldforninscEst'])); $endereco = trim(strtoupper($_POST['fldfornender'])); $bairro = trim(strtoupper($_POST['fldfornbairro'])); $cidade = trim(strtoupper($_POST['fldforncidade'])); $cep = trim(strtoupper($_POST['fldforncep'])); $uf = trim(strtoupper($_POST['fldfornuf'])); $fone = trim(strtoupper($_POST['fldfornfone'])); $fax = trim(strtoupper($_POST['fldfornfax'])); $mail = trim(strtoupper($_POST['fldfornmail'])); } $fornecedores = new Fornecedores(); $fornecedores->incluirFornecedor($cnpj,$razao, $nome, $inscrEst,$endereco, $inscrEst, $endereco, $bairro, $cidade, $cep, $uf, $fone, $fax, $mail); $_SESSION['mensagem']="Fornecedor Incluido com Sucesso"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/fornecedores.php"); for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; $fornecedores = new Fornecedores(); $fornecedores->excluirFornecedor($indice); $cont++;

Page 72: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

72

} if ($cont > 0) $_SESSION['mensagem'] = "$cont registro(s) excluido(s) com &Ecirc;xito!"; header("Location: index.php?pagina=1"); ?> <?php session_start(); require_once("../../includes/classes/fornecedores.php"); $cont = 0; for ($i=0; $i<count($_POST['fldUndCod']); $i++) { $indice = $_POST['fldUndCod'][$i]; for ($j=0; $j<count($_POST['fldIndiceCod']); $j++) { if ($indice == $_POST['fldIndiceCod'][$j]) { $razao = trim(strtoupper($_POST['fldfornrazao'][$j])); $nome = trim(strtoupper($_POST['fldfornnome'][$j])); $inscrEst = trim(strtoupper($_POST['fldforninscEst'][$j])); $endereco = trim(strtoupper($_POST['fldfornender'][$j])); $bairro = trim(strtoupper($_POST['fldfornbairro'][$j])); $cidade = trim(strtoupper($_POST['fldforncidade'][$j])); $cep = trim(strtoupper($_POST['fldforncep'][$j])); $uf = trim(strtoupper($_POST['fldfornuf'][$j])); $fone = trim(strtoupper($_POST['fldfornfone'][$j])); $fax = trim(strtoupper($_POST['fldfornfax'][$j])); $mail = trim(strtoupper($_POST['fldfornmail'][$j])); $fornecedores = new Fornecedores(); $fornecedores->atualizarFornecedor($indice,$razao, $nome, $inscrEst,$endereco, $endereco, $bairro, $cidade, $cep, $uf, $fone, $fax, $mail); $cont++; } } } if ($cont > 0) session_register('mensagem'); $_SESSION['mensagem'] = "$cont fornecedor(es) atualizado(s) com exito!!!"; header("Location: index.php?pagina=1"); ?>

4.5.6. Movimentação Externa <?php include("DBConnector.php"); class MovEx { public $FornecedorCodigo; public $Data; public $NotaFiscal; public $DocOrigem; public $Transportadora; function __construct() { $this->FornecedorCodigo = NULL; $this->Data = NULL; $this->NotaFiscal = NULL; $this->DocOrigem = NULL; $this->Transportadora = NULL; }

Page 73: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

73

function setFornecedorCodigo($fornec) { $this->FornecedorCodigo = $fornec; } function setData($data){ $this->Data = $data; } function setNotaFiscal($NF){ $this->NotaFiscal = $NF; } function setDocOrigem($Doc){ $this->DocOrigem = $Doc; } function setTransportadora($transp){ $this->Transportadora = $transp; } function getFornecedorCodigo(){ return $this->FornecedorCodigo; } function getData(){ return $this->Data; } function getNotaFiscal(){ return $this->NotaFiscal; } function getDocOrigem(){ return $this->DocOrigem; } function getTransportadora(){ return $this->Transportadora; } function incluirME($fornec, $data, $NF, $Doc, $transp) { $db = new DBConnector(); $this->setFornecedorCodigo($fornec); $this->setData($data); $this->setNotaFiscal($NF){ $this->setDocOrigem($Doc); $this->setTransportadora($transp); $sql = "INSERT INTO MovEx (Fornecedor_FornecedorCNPJ, MovExData, MovExNumNotaFiscal, MovExDocOrigem, MovExTransportadora) VALUES('".$this->getFornecedorCodigo()."', '".$this->getData()."','".$this->getNotaFiscal()."', '".$this->getDocOrigem()."','".$this->getTransportadora()."')"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirME function excluirME($codME) { $db = new DBConnector(); $sql = "DELETE FROM MovEx WHERE MovExCodigo = $codME"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function excluirME function buscarME($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector();

Page 74: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

74

$sql = "SELECT * FROM MovEx WHERE MovExCodigo Like '".$unidNome."%' ORDER BY MovExCodigo"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmmovEx" method="post" action="atualizarME.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')"

Page 75: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

75

value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php

Page 76: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

76

} else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarME function atualizarME($fornec, $data, $NF, $Doc, $transp, $codME) { $db = new DBConnector(); $sql = "UPDATE MovEx SET Fornecedor_FornecedorCNPJ = '$fornec', MovExData = '$data', MovExNumNotaFiscal = '$NF', MovExDocOrigem = '$Doc', MovExTransportadora = '$transp' WHERE = MovExCodigo = $codME"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarME } // end of MovEx ?>

4.5.7. Itens de Moviementação Externa

<?php include("DBConnector.php"); class ItemMovEx { public $MovimExCodigo; public $ProdutoCodigo; public $QuantAdquirida; public $ValorUnitario; function __construct() { $this->MovimExCodigo = NULL; $this->ProdutoCodigo = NULL; $this->QuantAdquirida = 0; $this->ValorUnitario = 0; } function setMovimExCodigo($MECod){ $this->MovimExCodigo = $MECod; } function setProdutoCodigo($prod){ $this->ProdutoCodigo = $prod. } function setQuantAdquirida($qtde){ $this->QuantAdquirida = $qtde; } function setValorUnitario($vlrunit){ $this->ValorUnitario = $vlrunit; } function getMovimExCodigo(){ return $this->MovimExCodigo; } function getProdutoCodigo(){ return $this->ProdutoCodigo; } function getQuantAdquirida(){ return $this->QuantAdquirida; } function getValorUnitario(){ return $this->ValorUnitario; }

Page 77: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

77

function incluirItemME($MIcod,$prod,$qtde,$vlrunit) { $db = new DBConnector(); $this->setMovimExCodigo($MIcod); $this->setProdutoCodigo($prod); $this->setQuantAdquirida($qtde); $this->setValorUnitario($vlrunit); $sql = "INSERT INTO ItemMovEx (MovEx_MovExCodigo, Produto_ProdutoCodigo, ItemMovExQtdAdq, ItemMovExValorUnit) VALUES(".$this->getMovimExCodigo().",".$this->getProdutoCodigo().",".$this->getQuantAdquirida().",".$this->getValorUnitario().")"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirItemME function buscarItemME($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM ItemMovEx WHERE ItemMovExCodigo Like '".$unidNome."%' ORDER BY ItemMovExCodigo"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmMovItemEx" method="post" action="atualizaritemME.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php

Page 78: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

78

while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; }

Page 79: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

79

if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarItemME function atualizarItemME($prod,$qtde,$vlrunit, $codME) { $db = new DBConnector(); $sql = "UPDATE ItemMovEx SET Produto_ProdutoCodigo = $prod, ItemMovExQtdAdq=$qtde, ItemMovExValorUnit=$vlrunit WHERE MovEx_MovExCodigo = $codME"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarItemME function excluirItemME($codItemME) { $db = new DBConnector(); $sql = "DELETE FROM ItemMovEx WHERE ItemMovExCodigo = $codItemME"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function excluirItemME } // end of ItemMovEx ?>

4.5.8. Movimentação Interna

<?php include("DBConnector.php"); class MovInt { public $DeptoCodigo; public $FuncsMatr; public $DataSolicitacao; public $DataAtendimento; public $FuncionarioAlmoxAtend; public $FuncionarioAlmoxResposta;

Page 80: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

80

function __construct() { $this->DeptoCodigo = NULL; $this->FuncsMatr = NULL; $this->DataSolicitacao = NULL; $this->DataAtendimento = NULL; $this->FuncionarioAlmoxAtend = NULL; $this->FuncionarioAlmoxResposta = NULL; } function setDeptoCodigo($depto){ $this->DeptoCodigo = $depto; } function setFuncsMatr($funcMatr){ $this->FuncsMatr = $funcMatr; } function setDataSolicitacao($dtSol){ $this->DataSolicitacao = $dtSol; } function setDataAtendimento($dtAtend){ $this->DataAtendimento = $dtAtend; } function setFuncionarioAlmoxAtend($funcAtend){ $this->FuncionarioAlmoxAtend = $funcAtend; } function setFuncionarioAlmoxResposta($resposta){ $this->FuncionarioAlmoxAtend = $resposta; } function getDeptoCodigo(){ return $this->DeptoCodigo; } function getFuncsMatr(){ return $this->FuncsMatr; } function getDataSolicitacao(){ return $this->DataSolicitacao; } function getDataAtendimento(){ return $this->DataAtendimento; } function getFuncionarioAlmoxAtend(){ return $this->FuncionarioAlmoxAtend; } function getFuncionarioAlmoxResposta(){ return $this->FuncionarioAlmoxResposta; } function incluirMI($depto,$funcMatr,$dtSol,$dtAtend,$funcAtend,$resposta) { $db = new DBConnector(); $this->setDeptoCodigo($depto); $this->setFuncsMatr($funcMatr); $this->setDataSolicitacao($dtSol); $this->setDataAtendimento($dtAtend); $this->setFuncionarioAlmoxAtend($funcAtend); $this->setFuncionarioAlmoxResposta($resposta); $sql = "INSERT INTO MovInt (Funcionario_FuncionarioMatricula, Departamento_DepartamentoCodigo, MovIntDataSolic, MovIntDataAtend, MovIntFuncAlmoxMatr, MovIntResposta) VALUES('".$this->getFuncsMatr()."', '".$this->getDeptoCodigo."','".$this->getDataSolicitacao()."','".$this->getDataAtendimento()."','".$this->getFuncionarioAlmoxAtend()."','".$this->getFuncionarioAlmoxResposta()."')";

Page 81: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

81

$db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirMI function excluirMI($codMI) { $db = new DBConnector(); $sql = "DELETE FROM MovInt WHERE MovIntCodigo = $codMI"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function excluirMI function atualizarMI($depto,$funcMatr,$dtSol,$dtAtend,$funcAtend,$resposta,$codMI) { $db = new DBConnector(); $sql = "UPDATE MovInt SET Funcionario_FuncionarioMatricula = '$funcMatr', Departamento_DepartamentoCodigo = '$depto', MovIntDataSolic = '$dtSol', MovIntDataAtend = '$dtAtend', MovIntFuncAlmoxMatr='$funcAtend', MovIntResposta = '$resposta' WHERE MovIntCodigo = $codMI"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarMI function buscarMI($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM MovInt WHERE MovIntCodigo Like '".$unidNome."%' ORDER BY MovIntCodigo"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmMovInt" method="post" action="atualizarMI.php"> <?php if ($quant <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4">

Page 82: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

82

<tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) {

Page 83: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

83

echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarMI } // end of MovInt ?>

4.5.9. Itens de Movimentação Interna

<?php include("DBConnector.php"); class ItemMovInt { public $MovimIntCodigo; public $ProdutoCodigo; public $QuantSolicitada; public $QuantAtendida; function __construct() { $this->MovimIntCodigo = NULL; $this->ProdutoCodigo = NULL; $this->QuantSolicitada = 0; $this->QuantAtendida = 0; } function setMovimIntCodigo($MIcod){ $this->MovimIntCodigo = $MIcod; } function setProdutoCodigo($prod){

Page 84: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

84

$this->ProdutoCodigo = $prod; } function setQuantSolicitada($qtdeadq){ $this->QuantSolicitada = $qtdeadq; } function setQuantAtendida($qtdeAtend){ $this->QuantAtendida = $qtdeAtend; } function getMovimIntCodigo(){ return $this->MovimIntCodigo; } function getProdutoCodigo(){ return $this->ProdutoCodigo; } function getQuantSolicitada(){ return $this->QuantAdquirida; } function getQuantAtendida(){ return $this->ValorUnitario; } function incluirItemMI($MIcod,$prod,$qtdeadq,$qtdeAtend) { $db = new DBConnector(); $this->setMovimIntCodigo($MIcod); $this->setProdutoCodigo($prod); $this->setQuantSolicitada($qtdeadq); $this->setQuantAtendida($qtdeAtend); $sql = "INSERT INTO ItemMovInt (MovInt_MovIntCodigo, Produto_ProdutoCodigo, ItemMovIntQtdeSolic, ItemMovIntQtdeAtend) VALUES(".$this->getMovimExCodigo().",".$this->getProdutoCodigo().",".$this->getQuantSolicitada().",".$this->getQuantAtendida().")"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function incluirItemME function excluirItemMI($codItemMI) { $db = new DBConnector(); $sql = "DELETE FROM ItemMovInt WHERE ItemMovIntCodigo = $codItemMI"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function excluirItemME function buscarItemMI($unidNome, $qntporpag, $paginacao) { $cores = array("#e0f0fd", "#ffffff"); $i = 0; $db = new DBConnector(); $sql = "SELECT * FROM ItemMovInt WHERE ItemMovIntCodigo Like '".$unidNome."%' ORDER BY ItemMovIntCodigo"; $res=array($db->Execute_Query($sql)); $quant = $res[0][1]; $total_reg = $qntporpag; $pagina = $paginacao; if ($quant > 0 ){ ?> <form name="frmMovItemInt" method="post" action="atualizaritemMI.php"> <?php if ($quant <= $total_reg) {

Page 85: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

85

$total_paginas = 1; } // mais de 10 registros com valor multiplo de 10.. if ($quant%$total_reg == 0) { $total_paginas = $quant / $total_reg; } // mais de 10 registros porem o valor nao e multiplo de 10... else { // como a divisao exata, teremos que subtrair a parte que n?o ? inteira e // acrescentar 1 pagina. $total_paginas = ($quant/$total_reg) - (($quant%$total_reg)/$total_reg) + 1; } $linha_inicial = ($pagina - 1) * $total_reg; $linha_final = $linha_inicial + $total_reg - 1; // escrevendo os registros... // vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial... $marcador = 0; ?> <table align="center" border="0" width="650" cellspacing="2" bgcolor="#8dc6e4"> <tr> <td style="width: 20px;" valign="middle">&nbsp;</td> <td style="width: 80px;" align="center" class="headerTable">C&oacute;digo</td> <td style="width: 500px;" class="headerTable">&nbsp;Descri&ccedil;&atilde;o</td> </tr> </table> <table align="center" border="0" width="650" bgcolor="#8dc6e4"> <?php while($linha = $db->Get_Rows()) { if ($marcador >= $linha_inicial and $marcador <= $linha_final) { ?> <tr bgcolor="<?=$cores[$i%2]?>"> <td style="width: 20px;" align="center" valign="middle"> <input type="hidden" name="fldIndiceCod[]" value="<?=trim($linha['UnidadeCodigo'])?>"> <input name="fldUndCod[]" type="checkbox" value="<?=trim($linha['UnidadeCodigo'])?>" id="linha<?=trim($linha['UnidadeCodigo'])?>" /></td> <td style="width: 80px;" align="center"> <input name="fldUnidCod[]" type="text" title="Clique aqui para editar..." style="width: 70px; background-color:<?=$cores[$i%2]?>" value="<?=strtoupper(trim($linha['UnidadeCodigo']))?>" maxlength="3" class="inputsText" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" /></td> <td style="width: 500px;" align="left">&nbsp;<input name="fldUnidDescr[]" type="text" title="Clique aqui para editar..." style="width: 480px; background-color:<?=$cores[$i%2]?>" onChange="check('linha<?=trim($linha['UnidadeCodigo'])?>')" value="<?=strtoupper(trim($linha['UnidadeNome']))?>" maxlength="30" class="inputsText" /></td> </tr> <?php } //incrementamos o marcador... $marcador = $marcador + 1; $i++; } ?></table>

Page 86: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

86

<table align="center" border="0" width="650" bgcolor="#8dc6e4"> <tr> <td width="75" align="center"><input type="submit" name="btnSalvar" value="Salvar" ></td> <td width="75" align="center"><input type="button" name="btnExcluir" value="Excluir" onClick="removerUnidade()"></td> <td width="500" align="center"> <?php if ($pagina == 1) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">&lt;&lt; ANTERIOR | </font> "; } else { echo "<a href=\"index.php?pagina=".($pagina - 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">&lt;&lt; anterior |</a> "; } $i = 1; while ($i <= $total_paginas) { if ($i == $pagina) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\"><b><u>$i</u></b></font> "; } else { echo " <a href=\"index.php?pagina=".$i."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">".$i."</a> "; } $i = $i + 1; } if ($pagina == $total_paginas) { echo "<font color=\"#FFFFFF\" face=\"Verdana\" size=\"1\">| PR&Oacute;XIMA &gt;&gt;</font>\n"; } else { echo " <a href=\"index.php?pagina=".($pagina + 1)."&palavra=".$unidNome."&num=".$total_reg."\" class=\"headerTable\" target=\"_self\">| pr&oacute;xima &gt;&gt;</a> \n"; } ?> </td> <td width="160" class="headerTable">Total de P&aacute;ginas: <?=$total_paginas?></td> </tr> </table> <?php echo ("<div align=\"center\" class=\"msgAlerts\">".$_SESSION['mensagem']."</div>"); ?> </form> <?php } else { echo ("<font color=\"#ff0000\" size=\"2\"> Nenhum resultado encontrado para essa consulta!</font>"); } $db->Free_Result(); $db->DbDisconnect(); } // end of member function buscarItemME function atualizarItemMI($prod,$qtdeSol,$qtdeAtend, $codME) {

Page 87: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

87

$db = new DBConnector(); $sql = "UPDATE ItemMovInt SET Produto_ProdutoCodigo = $prod, ItemMovIntQtdeSolic=$qtdeSol, ItemMovIntQtdeAtend=$qtdeAtend WHERE MovInt_MovIntCodigo = $codME"; $db->Manipulate_Data($sql); $db->DbDisconnect(); } // end of member function atualizarItemME } // end of ItemMovInt ?>

4.5.10. Classe DBConnector

<?php require_once('systemcomponents.php'); class DBConnector extends systemcomponents { var $link; var $result; var $lines; var $erro; function DBConnector() { $settings = new systemcomponents(); $this->link = mysql_connect($settings->dbhost, $settings->dbusername, $settings->dbpasswd) or die ("Configuracao de BD errada (longin, senha, host) ". mysql_error($this->link)); mysql_select_db($settings->dbname) or die ("Banco de Dados Inexistente!"); } function Execute_Query($sql){ $this->result = mysql_query($sql,$this->link) or die ("Erro ao executar Consulta ". mysql_error($this->link)); $this->lines = mysql_num_rows($this->result); return array($this->result, $this->lines); } function Manipulate_Data($sql) { if (mysql_query($sql, $this->link)) { $this->lines = mysql_affected_rows($this->link); return TRUE; } else { $this->erro = mysql_error($this->link); //return 0; return FALSE; } } function Free_Result(){ mysql_free_result($this->result); } function Get_Rows(){ $this->lines = mysql_fetch_array($this->result); return $this->lines; }

Page 88: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

88

// Fecha conexao function DbDisconnect(){ mysql_close($this->link); } } ?>

4.5.11. Classe systemcomponents

<?php class systemcomponents { public $enterpriseName; public $systemName; public $footerName; public $dbhost; public $dbusername; public $dbpasswd; public $dbname; function __construct() { $this->enterpriseName = "Tribunal de Contas do Estado do Tocantins"; $this->systemName = "Sistema de Administra&ccedil;&atilde;o de Almoxarifado"; $this->footerName = date("Y")." TCE/TO - Todos os direitos reservados"; $this->dbhost = "localhost"; $this->dbusername = "root"; $this->dbpasswd = "1234"; $this->dbname = "almox"; } } ?>

4.5.12. Script SQL Banco de Dados

CREATE TABLE Unidade ( UnidadeCodigo CHAR(3) NOT NULL AUTO_INCREMENT, UnidadeNome VARCHAR(100) NULL, PRIMARY KEY(UnidadeCodigo) ); CREATE TABLE Grupo ( GrupoCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, GrupoNatureza VARCHAR(100) NOT NULL, GrupoNome VARCHAR(100) NULL, PRIMARY KEY(GrupoCodigo, GrupoNatureza) ); CREATE TABLE Fornecedor ( FornecedorCNPJ CHAR(18) NOT NULL AUTO_INCREMENT, FornecedorRazaoSocial VARCHAR(100) NULL, FornecedorNome VARCHAR(100) NULL, FornecedorInscrEstadual VARCHAR(30) NULL, FornecedorEndereco VARCHAR(200) NULL, FornecedorBairro VARCHAR(80) NULL, FornecedorCidade VARCHAR(80) NULL, FornecedorCEP CHAR(10) NULL, FornecedorUF CHAR(2) NULL,

Page 89: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

89

FornecedorFone CHAR(15) NULL, FornecedorFax CHAR(15) NULL, FornecedorEmail CHAR(80) NULL, PRIMARY KEY(FornecedorCNPJ) ); CREATE TABLE Departamento ( DepartamentoCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, DepartamentoNome CHAR(80) NULL, PRIMARY KEY(DepartamentoCodigo) ); CREATE TABLE MovEx ( MovExCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Fornecedor_FornecedorCNPJ CHAR(18) NOT NULL, MovExData DATE NULL, MovExNumNotaFiscal CHAR(25) NULL, MovExDocOrigem CHAR(25) NULL, MovExDataDocOrigem DATE NULL, MovExTransportadora VARCHAR(80) NULL, PRIMARY KEY(MovExCodigo), INDEX MovEx_FKIndex1(Fornecedor_FornecedorCNPJ), FOREIGN KEY(Fornecedor_FornecedorCNPJ) REFERENCES Fornecedor(FornecedorCNPJ) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE Classe ( ClasseCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Grupo_GrupoNatureza VARCHAR(100) NOT NULL, Grupo_GrupoCodigo INTEGER UNSIGNED NOT NULL, ClasseNome VARCHAR(50) NULL, PRIMARY KEY(ClasseCodigo), INDEX Classe_FKIndex1(Grupo_GrupoCodigo, Grupo_GrupoNatureza), FOREIGN KEY(Grupo_GrupoCodigo, Grupo_GrupoNatureza) REFERENCES Grupo(GrupoCodigo, GrupoNatureza) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE Funcionario ( FuncionarioMatricula INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Departamento_DepartamentoCodigo INTEGER UNSIGNED NOT NULL, FuncionarioNome CHAR(100) NULL, PRIMARY KEY(FuncionarioMatricula), INDEX Funcionario_FKIndex1(Departamento_DepartamentoCodigo), FOREIGN KEY(Departamento_DepartamentoCodigo) REFERENCES Departamento(DepartamentoCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE Produto ( ProdutoCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Unidade_UnidadeCodigo CHAR(3) NOT NULL, Classe_ClasseCodigo INTEGER UNSIGNED NOT NULL, ProdutoNome VARCHAR(100) NULL, ProdutoEstoqueMin INTEGER UNSIGNED NULL, ProdutoEstoqueAtual INTEGER UNSIGNED NULL, ProdutoDataUltMov DATE NULL, PRIMARY KEY(ProdutoCodigo), INDEX Produto_FKIndex1(Classe_ClasseCodigo), INDEX Produto_FKIndex2(Unidade_UnidadeCodigo), FOREIGN KEY(Classe_ClasseCodigo) REFERENCES Classe(ClasseCodigo) ON DELETE NO ACTION

Page 90: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

90

ON UPDATE NO ACTION, FOREIGN KEY(Unidade_UnidadeCodigo) REFERENCES Unidade(UnidadeCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE MovInt ( MovIntCodigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Funcionario_FuncionarioMatricula INTEGER UNSIGNED NOT NULL, Departamento_DepartamentoCodigo INTEGER UNSIGNED NOT NULL, MovIntDataSolic DATE NULL, MovIntDataAtend DATE NULL, MovIntFuncAlmoxMatr INTEGER UNSIGNED NULL, MovIntResposta CHAR(100) NULL, PRIMARY KEY(MovIntCodigo), INDEX MovInt_FKIndex1(Departamento_DepartamentoCodigo), INDEX MovInt_FKIndex2(Funcionario_FuncionarioMatricula), FOREIGN KEY(Departamento_DepartamentoCodigo) REFERENCES Departamento(DepartamentoCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(Funcionario_FuncionarioMatricula) REFERENCES Funcionario(FuncionarioMatricula) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE ItemMovEx ( MovEx_MovExCodigo INTEGER UNSIGNED NOT NULL, Produto_ProdutoCodigo INTEGER UNSIGNED NOT NULL, ItemMovExQtdAdq INTEGER UNSIGNED NOT NULL, ItemMovExValorUnit DECIMAL(10.5) NOT NULL, INDEX ItemMovEx_FKIndex1(MovEx_MovExCodigo), INDEX ItemMovEx_FKIndex2(Produto_ProdutoCodigo), FOREIGN KEY(MovEx_MovExCodigo) REFERENCES MovEx(MovExCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(Produto_ProdutoCodigo) REFERENCES Produto(ProdutoCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION ); CREATE TABLE ItemMovInt ( MovInt_MovIntCodigo INTEGER UNSIGNED NOT NULL, Produto_ProdutoCodigo INTEGER UNSIGNED NOT NULL, ItemMovIntQtdeSolic INTEGER UNSIGNED NOT NULL, ItemMovIntQtdeAtend INTEGER UNSIGNED NOT NULL, INDEX ItemMovInt_FKIndex1(Produto_ProdutoCodigo), INDEX ItemMovInt_FKIndex2(MovInt_MovIntCodigo), FOREIGN KEY(Produto_ProdutoCodigo) REFERENCES Produto(ProdutoCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION, FOREIGN KEY(MovInt_MovIntCodigo) REFERENCES MovInt(MovIntCodigo) ON DELETE NO ACTION ON UPDATE NO ACTION );

Page 91: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

91

5. CONSIDERAÇÕES FINAIS Após seguir as recomendações preestabelecidas pela disciplina de Prática em Sistemas de

Informação, concluiu-se este trabalho com a implementação do novo Sistema de

Almoxarifado do Tribunal de Contas do Estado Tocantins. Este sistema já encontra-se em

plena atividade dada a sua relevante importância, no que tange ao auxílio informatizado das

atividades de administração dos materiais de consumo no âmbito deste órgão.

Este sistema seguiu a risca o paradigma da Orientação a Objetos, tendo sua

modelagem também seguindo os padrões da linguagem UML, sendo implementado com

base na linguagem de programação PHP. Todos esses pontos aliados, convergiram na

produção de um sistema que atende aos requisitos pré-estabelecidos, que tem como sua

principal característica de qualidade a facilidade às eventuais manutenções, tanto para

ajustes as possíveis falhas, quanto para a adição de novas funcionalidades, sendo que a

presente documentação servirá também como importante ferramenta de auxílio ao

desenvolvedor dessa tarefa.

Page 92: Joao G N - Estagio Supervisionado Em Sistemas de Informacao

92

6. REFERÊNCIAS BIBLIOGRÁFICAS

SENAC. DN. Organizando o Almoxarifado. 2. ed. Rio de Janeiro, SENAC/DN/DFP, 1993. 2v. II. Conteúdo: v.1 Recebimento e guarda de material. – v2. Controle e entrega de Material. 71p.

MEILIR (1997) PAGE-JONES, Meilir. O que todo programador deveria saber sobre

projeto orientado a objetos. Makron Books: São Paulo, 1997.

RICARTE (2001) RICARTE, Ivan L. Marques. Introdução a Orientação a Objetos. Campinas: Universidade Estadual de Campinas, jun. 2001. Disponível em <http://www.dca.fee.unicamp.br/courses/POOCPP/node3.html>. Acesso em 31/8/2006.

CESTA (1996) CESTA, André Augusto. TUTORIAL: A linguagem de programação Java. Campinas: Universidade Estadual de Campinas, jun. 1996. Disponível em < http://www.ic.unicamp.br/~cmrubira/aacesta/java/javatut9.html >.

Acesso em 31/08/2006.

ZEND (2006) Classes e Objetos (PHP 5). Manual do PHP. Interfaces de Objetos: 2006. Disponível em <http://br2.php.net/manual/pt_BR/language.oop5.interfaces.php>. Acesso em: 31/08/2006