GERENCIADOR DE TRANSPORTE RODOVIÁRIO



FACULDADE ORÍGENES LESSA ? FACOL
BACHARELADO EM SISTEMAS DE INFORMAÇÃO




JOÃO MARCOS FAXINA
LÚCIO FLÁVIO BOAVENTURA
MARCOS VASSOLÉR
RODRIGO MARCOLINO
VÉRLEI RICARDO DA SILVA









GERENCIADOR DE TRANSPORTE RODOVIÁRIO: SOFTWARE PARA EMISSÃO DE CONHECIMENTO DE TRANSPORTE



















LENÇÓIS PAULISTA
2008
JOÃO MARCOS FAXINA
LÚCIO FLÁVIO BOAVENTURA
MARCOS VASSOLÉR
RODRIGO MARCOLINO
VÉRLEI RICARDO DA SILVA





















GERENCIADOR DE TRANSPORTE RODOVIÁRIO: SOFTWARE PARA EMISSÃO DE CONHECIMENTO DE TRANSPORTE


Trabalho de Conclusão de Curso apresentado como requisito às exigências do Curso de Sistemas de Informação para obtenção do grau de Bacharel.

Orientador: Prof. Mrs. João Paulo Papa











LENÇÓIS PAULISTA
2008



















JOÃO MARCOS FAXINA
LÚCIO FLÁVIO BOAVENTURA
MARCOS VASSOLÉR
RODRIGO MARCOLINO
VÉRLEI RICARDO DA SILVA






GERENCIADOR DE TRANSPORTE RODOVIÁRIO: SOFTWARE PARA EMISSÃO DE CONHECIMENTO DE TRANSPORTE


Trabalho de Conclusão de Curso apresentado como requisito às exigências do Curso de Sistemas de Informação para obtenção do grau de Bacharel.


Aprovado em 21 de Novembro de 2008



BANCA EXAMINADORA

Mrs. João Paulo Papa ? Faculdade Orígenes Lessa "FACOL"



Esp. Frederico José Camiloti Dallalana ? Faculdade Orígenes Lessa "FACOL"



Esp. José Francisco Nadaletto ? Faculdade Orígenes Lessa "FACOL"





















Dedico este trabalho:
Aos meus pais, João e Helena Maria;
Aos meus inrmãos, Luis Gustavo e Daniel Henrique.
(João Marcos)


Dedico este trabalho:
Aos meus pais, Antonio e Aneilda;
Aos meus irmãos Luciano, Gustavo e Bruna;
A todos colegas de classe que nos acompanharam ou por motivo maior ficaram pelo caminho nesses últimos 4 anos.
(Lucio)


Dedico este trabalho a memória de meu pai, Joaquim,
falecido em Fevereiro de 2007.
(Marcos)


Dedico ao meu Pai.
(Rodrigo)


Dedico este trabalho:
A minha esposa Janíana e aos meus filhos, Vérlei Filho e Vitor Augusto.
(Vérlei)
Agradecemos ao nosso orientador João Paulo Papa, aos convidados da banca examinadora e todos aqueles que nos ajudaram para o nosso crescimento pessoal e profissional.

Agradeço Deus, a minha família e aos meus colegas de grupo pela confiança, apoio e dedicação na elaboração desse trabalho. Agradeço em especial, todos os colegas de classes e professores, pois nesses anos nos tornamos amigos e parceiros. (João Marcos)

Agradeço a Deus acima de tudo, a minha família, aos colegas de grupo e de classe, aos amigos da escola da família que participaram diretamente durante esses 4 anos e a todos que acreditaram em nós. (Lucio Flávio)

Agradeço primeiro a Deus. Em segundo a minha mãe, Neuza, por ser a minha maior incentivadora. Depois agradeço a minha família, esposa e filhos, pela paciência e carinho demonstrados nesta etapa de minha vida. Por último, agradeço os professores e amigos da faculdade, em especial, Vérlei, Rodrigo, Lúcio e João, que estiveram presentes comigo em todos os trabalhos em grupo deste curso, inclusive neste último. (Marcos)

Agradeço primeiramente a Deus, em especial a minha Mãe que me ajudou e apoiou todos esses anos de luta, a minha família, a minha namorada Juliana que também sempre apoiou o sucesso deste trabalho, aos meus parceiros João Marcos, Marcos Vassoler, Lucio Flávio, Vérlei, que no decorrer desses anos, nos tornamos uma família. (Rodrigo)

Agradeço a Deus por ter me iluminado durante a realização deste trabalho, a minha família pelas horas que estive fora para realização de pesquisas e desenvolvimento aos meus amigos João Marcos, Rodrigo Marcolino, Lúcio Flávio e Marcos Vassoler pelos quatro anos que passamos juntos desenvolvendo os trabalhos que nos foram destinados sempre buscando fazer sempre o melhor. (Vérlei)
















































A experiência que não é convertida em conhecimento é apenas informação!
Denílson Alves
FAXINA, João Marcos; BOAVENTURA, Lucio Flavio; VASSOLÉR, Marcos; MARCOLINO, Rodrigo; SILVA, Vérlei Ricardo. Gerenciador de Transporte Rodoviário: Software para emissão de conhecimento de transporte. Lençóis Paulista, FACOL, 2008.


RESUMO

A logística tem a responsabilidade de gerenciar todos os processos que envolvem a aquisição, armazenamento, uso e transporte de materiais de uma empresa, a qual pode decidir assumir todo o seu processo ou terceirizá-lo. Um importante ramo da logística é o transporte rodoviário, o qual é responsável pelo transporte de cargas e produtos, sendo obrigatório, para toda empresa deste ramo, a emissão do documento denominado Conhecimento de Transporte Rodoviário e Cargas (CTRC). Existem diversas soluções para o ramo de transporte, desenvolvidas por inúmeras empresas de software, as quais apresentam características que não atendem a reais necessidades de certas empresas, ora por serem obsoletas em tecnologia outrora por não serem customizadas. Assim, o presente trabalho tem por objetivo a automação do processo de emissão do CTRC e o desenvolvimento de um sistema customizado para o gerenciamento do transporte rodoviário de cargas. A pesquisa descreve as etapas utilizadas para o desenvolvimento do software, sendo eles a apresentação do projeto, o levantamento de requisitos, diagrama de sistema, a codificação, os testes e a implantação. Como estudo de caso, será utilizado a empresa Adriano Zentil Polzin ? ME, situada no município de Lençóis Paulista, São Paulo, a qual realiza, dentre outras áreas, o transporte rodoviário de cargas e demais produtos.























FAXINA, João Marcos; BOAVENTURA, Lucio Flavio; VASSOLÉR, Marcos; MARCOLINO, Rodrigo; SILVA, Vérlei Ricardo. Manager of Road Transport: Software for emission of transport knowledge. Lençóis Paulista, FACOL, 2008.


ABSTRACT

The logistics have the responsibility of managing all the processes that involve the acquisition, storage, using and transporting materials of a company, which can decide to assume all it?s process or outsourse it. An important logistics branch is the road transport, which is responsible for the transport of loads and products, being obligatory, for every company of this branch, the document emission denominated Knowledge of Road Transport and Loads (KRTL). Several solutions exist for the transport branch, developed by countless software companies, which present characteristics that don't assist to real needs of certain companies, or for being obsolete in technology formerly or being not customize. Like this, the present work has for objective the process automation of KRTL emission and the evelopment of a system customized for road transport of loads administration. The research describes the stages used for the software development, being them the project presentation , requirements rising, the system diagram, the code, the tests and the implantation. As studied, the Adriano Zentil Polzin - ME company will be used, located in Lençóis Paulista, São Paulo, which accomplishes, among other areas, the road transport of loads and other products.

























LISTA DE ILUSTRAÇÕES

FIGURA I ? Camadas de Software no Modelo .NET 30
FIGURA II ? Formulário de inicialização do Programa 45
FIGURA III ? Formulário Principal 46
FIGURA IV ? Formulário Estado Aba Registro 47
FIGURA V ? Formulário Estado Aba Editar 48
FIGURA VI ? Formulário Estado Aba Filtros 48
FIGURA VII ? Formulário Estado Aba Relatório 49
FIGURA VIII ? Janela de Visualização do Relatório dos Estados 50
FIGURA IX ? Configuração do driver ODBC 51
FIGURA X ? Dados da configuração do driver ODBC 51
































LISTA DE TABELAS

TABELA I ? Participantes do Projeto 25
TABELA II ? Lista de Materiais 25
TABELA III ? Modelo de Levantamento de Requisitos do Sistema 26
TABELA IV ? Requisitos de Negócio 26
TABELA V ? Requisitos de Hardware e Software 27
TABELA VI ? Requisitos de Hardware e Software 28
TABELA VII ? Cardinalidades 29





































LISTA DE ABREBIATURAS E SIGLAS

ASCII American Standard Code for Information Interchange (Código de Padrão Americano para o Intercâmbio de Informação)
CIF Coast Insurance Freight (Frete por Conta do destinatário)
CNH Carteira Nacional de Habilitação
DBF Data Base File (Arquivo de Banco de Dados)
FOB Free On Board (Frete por conta do remetente)
GUI Grapfical User Interface (Interface Gráfica do Usuário)
IRRF Imposto de Renda Retido na Fonte
ICMS Imposto sobre Circulação de Mercadorias e Serviços
IP Internet Protocol (Protocolo de Internet)
MRP Material Requirements Planning (Planejamento das Necessidades de Materiais)
ODBC Open Data Base Connectivity (Conectividade Aberta do Banco de Dados)
POO Programação Orientada a Objetos
PL Procedural Language (Idioma Processual)
SCM Supply Chain Management (Administração de Cadeia Ordenada)
SGBD Sistema Gerenciador de Banco de Dados
SQL Structured Query Language (Idioma de Questão Estruturada)
TI Técnologia da Informação
UML Unified Modeling Language (Idioma Modelado Unificado)













SUMÁRIO

INTRODUÇÃO 13
I ? TRANSPORTE RODOVIÁRIO NO BRASIL, SOFTWARES DE LOGÍSTICA PARA EMPRESAS DE TRANSPORTE E AS FERRAMENTAS PARA O DESENVOLVIMENTO DE UM SISTEMA 16
1 ? O TRANSPORTE RODOVIÁRIO 16
2 ? SOFTWARES DE TRANSPORTE 17
3 ? ENGENHARIA DE SOFTWARE 19
4 ? FERRAMENTAS DE DESENVOLVIMENTO 21
II ? DESENVOLVIMENTO DO SOFTWARE GERENCIADOR DE TRANSPORTE RODOVIÁRIO 24
1 ? IDENTIFICAÇÃO DO PROJETO, LEVANTAMENTO DE REQUISITOS E DIAGRAMAÇÃO DO SISTEMA 24
1.1 ? Identificação do projeto 24
1.2 ? Levantamento de requisitos 25
1.3 ? Diagramação do sistema 27
1.3.1 ? DER 27
1.3.2 ? DFD 27
2 ? IMPLEMENTAÇÃO E TESTES 29
2.1 ? Implementação 29
2.1.1 - Banco de Dados 30
2.1.2 ? Classes 41
2.1.3 ? Interface homem-máquina 44
2.2 ? Testes de Software 53
2.2.1 ? Por que testar e validar o Software? 53
2.2.2 ? Testes funcionais do Software SGTR versão 1.0 54
2.2.3 ? Regras de Negócios 54
3 ? Implantação do Sistema SGTR versão 1.0 55
3.1 ? Avaliação e Adequação Física do Ambiente 56
3.2 ? Familiarização e treinamento dos usuários 56
3.3 ? Finalização e Análise Críticas da Implantação 57
CONCLUSÃO 58
REFERENCIAL BIBLIOGRÁFICO 65
ANEXO A ? Ordem de Carregamento 69
ANEXO B ? Nota CTRC 70
APÊNDICE A ? Cronograma do Projeto 71
APÊNDICE B ? Levantamento de requisitos 72
APÊNDICE C ? Tabelas do Banco de Dados 77
APÊNDICE D ? DFD (Dados Faturista/Administrador) 83
APÊNDICE E ? DFD do Usuário 84
APÊNDICE F ? DFD do CTRC 85
APÊNDICE G ? Diagrama de Entidade e Relacionamento (DER) 86
APÊNDICE H ? Manual do Sistema CTRC 87
























































INTRODUÇÃO
Inúmeras são as definições relacionadas à palavra empresa. Para Sandroni (2002), empresa é uma "organização destinada a produção e/ou comercialização de bens e serviço, tendo como objetivo o lucro" (SANDRONI, 2002, 203), e para ele, elas podem ser distintas em empresas agrícolas, industriais, comerciais e financeiras. A administração de empresas, contudo, pode ser definida como "um conjunto de atividades dirigidas a utilização eficiente e eficaz dos recursos, no sentido de alcançar um ou mais objetivos ou metas organizacionais" (SILVA, 2001, 6).
Dentre os vários ramos de bens ou serviços que uma empresa pode oferecer encontra-se a logística, a qual segundo Barbosa e Rabaça (2001), gerência todas as necessidades de uma empresa, provendo a mesma de recursos, equipamentos e informações. Ainda segundo eles, a logística em uma empresa envolve as "atividades de desenvolvimento, aquisição, construção, instalação, provisão, armazenamento, transporte, distribuição, [?] movimentação, informação, controle" (BARBOSA & RABAÇA, 2001, 440) entre outras.
Segundo a Enciclopédia Barsa (2000), a logística na antiguidade e na idade média, ficava sob tutela dos militares, tendo como principal exemplo os romanos, os quais necessitavam mover grandes contingentes de homens e recursos, ora para expandir o seu território outrora para defender suas fronteiras. Para Mira (2004), foi após a Segunda Guerra Mundial, que a necessidade de reconstruir as cidades devastadas pela mesma, foi que a logística deixou de ser uma estratégia somente militar e passou a fazer parte da estratégia das empresas. Dessa forma, segundo ele, a área de atuação da logística sofreu grandes transformações, sendo utilizada, principalmente, como ferramenta de satisfação dos clientes nas décadas seguintes.
Nesse período, o gerenciamento dos processos de logística eram executados manualmente. Toda requisição de reposição e retirada de materiais, bem como a descrição dos produtos e sua quantidade disponível, eram anotadas em fichas e guardadas em armários. Para o transporte, todos os dados referentes a transportadores, veículos e clientes eram também armazenados nestas fichas, as emissões dos documentos de qualquer natureza eram feitas em máquinas de escrever ou a mão, processo este que, além de ser lento, não era seguro. Entretanto, segundo O?Brien (2003), com o advento de técnicas de tecnologia de informação (TI) nas empresas, os processos relacionados a elas, inclusive na área de logística, foram totalmente modificados e automatizados.
Posteriormente, surgiu o conceito de Material Requirements Planning (MRP), a qual pode ser definido como uma "técnica que permite determinar as necessidades de compras dos materiais que serão utilizados na fabricação de um certo produto" (MARTINS & ALT, 2002,97). Martins e Alt (2002) destacam também o começo do uso da tecnologia para auxiliar no controle do MRP. A partir da década de 80, a logística passou a ser impulsionada pela globalização, na qual as empresas passaram a competir em escala mundial. O MRP evoluiu para o Supply Chain Managment (SCM), "conceito administrativo que integra o gerenciamento da cadeia de suprimentos" (O?BRIEN,2003,198), através da utilização da TI para gerenciar a logística de um modo mais eficiente. Para Mira (2004), a introdução do SCM trouxe um novo impulso a logística, pois ela deixou de ser tratada como um setor a parte, e passou a trabalhar integrada com todos os setores de uma empresa. Desta forma, as empresas puderam, segundo O?Brien (2003), cortar custos, aumentar o lucro, melhorar seu desempenho junto a clientes e fornecedores, além de agregar valor aos seus serviços.
Contudo, para muitas empresas segundo Dias (1993), o ato de gerenciar todos os processos de logística pode ser trabalhoso e muito custoso. Para ele, muitas empresas escolhe terceirizar certas áreas da logística, entre elas, o transporte, seja pelo modal marítimo, ferroviária, aéreo ou rodoviário, pois adquirir e manter uma frota própria pode exigir da empresa um grande investimento. É no ramo de transporte rodoviário que se encontra a Adriano Zentil Polzin ? ME, empresa criada em 2007 no município de Lençóis Paulista, interior do Estado de São Paulo, a qual é o objeto de estudo da presente trabalho.
Segundo um estudo previamente executado, a Adriano Zentil Polzin ? ME não possui no momento nenhum software para gerenciamento de seu processo de logística. Embora existam diversos softwares para o gerenciamento do transporte rodoviário, tais como o Cargas, o Tecnovia Smal Bussness, o CTRC, o Controle de Transportador 3.0, o CTMS e o Active Trans, os mesmos têm como principal problema não atender a todas as necessidades da empresa, ou por não atenderem a certos requisitos, ou por excesso de módulos no software. Assim, existe atualmente a necessidade desta empresa de um software de controle de transporte rodoviário customizado, ou seja, um software que seja implementado sob medida para ela. Desta forma, o software a ser desenvolvido propiciará à empresa um controle sobre todo o serviço de transporte prestado por ela, permitindo que a mesma adquira informações que a auxiliem em suas estratégias de negócio, e maior competitividade no mercado.
O objetivo principal deste trabalho é desenvolver um software gerenciador de transporte rodoviário que atenda aos requisitos levantados na empresa. Este software tem que ser desenvolvido em um ambiente gráfico (ambiente Windows®), utilizando componentes visuais (formulários, botões, caixas de textos, caixas de mensagens, etc.) empregados atualmente em softwares, onde o usuário, através de módulos (telas) poderá inserir, atualizar, excluir, selecionar e imprimir dados localizados na base de dados. O software tem que ser codificado em camadas, separando a parte do cliente, do negócio e do servidor de dados, para facilitar a compreensão do código, a sua manutenção e o seu reaproveitamento. O programa tem que ser capaz de gerenciar dados de pessoas físicas e jurídicas, veículos, semi-reboques, produtos, pedidos, programações de retiradas e ter que emitir as ordens de coleta e, principalmente, o Conhecimento de Transporte Rodoviário e Cargas (CTRC).
O presente trabalho terá dois capítulos. O capítulo I aborda a importância do transporte rodoviário no Brasil, e como a empresa pretende atuar neste mercado. São citados diversos softwares que apresentam características semelhantes ao presente software do trabalho. Este capítulo aborda a Engenharia de Software e seus processos que auxiliam os desenvolvedores de software. Nele também é descrito as ferramentas necessárias para codificar o software - o Visual Basic.Net (VB.Net) e o PostgreSQL - além da importância do Sistema Gerenciador de Banco de Dados (SGBD) e da linguagem SQL (Structured Query Language).
O capítulo II aborda o desenvolvimento do software. É apresentado o projeto, onde é definido o que é o sistema, quais ferramentas serão necessárias para seu desenvolvimento, os participantes e todas as etapas do mesmo. O levantamento de requisitos apresenta os dados necessários para o funcionamento do software colhidos junto à empresa, assim também como as regras de negócio que regem o sistema. O Diagrama de Entidade e Relacionamento (DER) demonstra todas as tabelas que compõem o sistema, com seus campos, tipos de dados, restrições e relacionamento. O Diagrama de Fluxo de Dados (DFD) apresenta uma visão em alto nível do fluxo dos dados pelo sistema, com um DFD mais pormenorizado do módulo do CTRC. A implementação explica a codificação do sistema, abordando a divisão do sistema em camadas através das funções do banco (camada servidor), das classes (camada de negócios) e dos módulos (camada cliente). Os testes descrevem como o programa foi testado. A implantação aborda o sistema funcionando na empresa, como a entrega do manual aos responsáveis pelo software na mesma.







I ? TRANSPORTE RODOVIÁRIO NO BRASIL, SOFTWARES DE LOGÍSTICA PARA EMPRESAS DE TRANSPORTE E AS FERRAMENTAS PARA O DESENVOLVIMENTO DE UM SISTEMA
Este capítulo discute a importância do transporte rodoviário no Brasil, abordando como ele detém o monopólio dos transportes no país. Aponta como a empresa pretende atuar neste ramo e abordando a sua estratégia, e apresenta alguns softwares que gerenciam o setor de transporte, descrevendo algumas de suas características. Os passos da Engenharia de Software para o desenvolvimento de um software estão descritos neste capítulo, bem como a ferramenta de desenvolvimento Visual Basic.Net e o Sistema Gerenciador de Banco de Dados PostgreSQL.

1 ? O TRANSPORTE RODOVIÁRIO
"O sistema de distribuição de produtos de uma empresa sempre foi importante e complexo, pois o transporte é um considerável elemento de custo em toda atividade industrial e comercial" (DIAS, 1993, 319). É por este custo, segundo Dias (1993), que as empresas discutem a forma de contratar um serviço de transporte, seja pelo sistema CIF ou pelo sistema FOB. No primeiro deles, o responsável pelo frete é o próprio fornecedor, que cuidará da escolha do meio de transporte (modal) e do cumprimento dos prazos de entrega. O segundo transfere esta responsabilidade para o comprador, e segundo Dias (1993) tem sido o sistema mais negociado entre as empresas.
Dias (1993) discute ainda todos os tipos de transporte (ferroviário, marítimo, aéreo), mas destaca principalmente o transporte pelo modal rodoviário, que segundo ele responde por 70% a 80% de todas as cargas movimentadas no Brasil. Ainda segundo Dias (1993), apesar dos investimentos nos outros modais, o meio rodoviário ainda continuará sendo o mais utilizado no país. Destaca ainda a grande quantidade de empresas prestadoras deste serviço, aliada a uma das maiores frotas de veículos do planeta. O fato do transporte pelo modal rodoviário ser a maioria no Brasil deve-se a quatro principais fatores:
- política do governo que privilegiou a construção de rodovias, que praticamente interligam o país;
- implantação e grande crescimento das indústrias automobilísticas no país;
- criação do parque nacional de refinação de petróleo;
- grandeza do território nacional, deixando a maioria dos municípios sem cobertura de outros modais (ferroviário e marítimo principalmente).
Dias (1993) aponta ainda as formas como as empresas devem conduzir os seus serviços de transporte. Para ele, diferentes tipos de produtos, conforme a quantidade em que são produzidos pode determinar se uma empresa assume o transporte de seus produtos com uma frota própria, ou como uma frota terceirizada, ou se repassa todo o transporte a uma empresa especializada.
É para se encaixar neste mercado da terceirização do transporte, que a Adriano Zentil Polzin ? ME, tem como um de seus objetivos de negócio, o transporte rodoviário de produtos. Embora sendo uma empresa de pequeno porte e com poucos recursos, pretende adotar a estratégia de modo a se tornar grande, valendo-se principalmente, dos serviços prestados por veículos autônomos (proprietários de um único veículo e que trabalham com este veículo), que segundo Dias (1993), respondem por mais da metade da frota nacional.
Para poder prestar este serviço, toda empresa tem que emitir um documento fiscal chamado Conhecimento de Transporte Rodoviário e Cargas, o CTRC. A emissão desse documento é regulamentada pela lei nº 11442, de 05 de janeiro de 2007, especificada em seu artigo 6º com o seguinte texto: "O transporte rodoviário de cargas será efetuado sob contrato ou conhecimento de transporte, que deverá conter informações para a completa identificação das partes e dos serviços e de natureza fiscal". Para emitir o CTRC e gerenciar todas as informações necessárias para este fim, a empresa necessita de um software que controle todos os processos relacionados ao transporte rodoviário de produtos.

2 ? SOFTWARES DE TRANSPORTE
Existem, atualmente, diversos softwares de gerenciamento de transporte. A Matheus & Cia. Ltda. e a Zanlorenssi & Cia. Ltda. utilizam há mais de quinze anos o programa Cargas Controle Emissão de Conhecimento ECO-v40, desenvolvido pela empresa Teorema Informática. O software contém muitos módulos que a empresa necessita, porém possui algumas desvantagens. Entre elas podemos citar o fato de o software ser produzido no início da década de 90, sendo desenvolvido para o sistema operacional MS-DOS, antecessor do Microsoft Windows. O MS-DOS tem como principais pontos negativos utilizar linhas de comando o que dificulta a interação com o usuário e ser monoprogramado, ou seja, executa apenas um programa por vez. O banco de dados utilizado por este programa é o Data Base File (DBF), antigo Sistema Gerenciador de Banco de Dados (SGBD) do Dbase, obsoleto atualmente. Além disso, o software não possui alguns módulos necessários para a empresa, tais como o controle de pedidos de retirada e programação de retirada, além de seu cadastro de veículos não permitir a incorporação dos novos tipos que estão sendo lançados atualmente.
Desenvolvido pela Tecnovia Software, o Tecnovia Smal Business, é um software que agrega uma grande quantidade de ferramentas. Entre as principais estão tabelas que permitem cálculos de frete, controle de vendas, controle de coleta e entrega de produtos, o controle de veículos e de motoristas, tabelas de ocorrências, tabela de faturamento e a emissão do CTRC.
A Enter & Plug Informática desenvolve o CTRC, software que têm como principal finalidade controlar a emissão do Conhecimento de Transporte Rodoviário e Cargas, sendo focado principalmente em empresas que possuam várias filiais. A Talentum oferece módulos para o controle de multas e CNH, controle de frota, manutenção entre outros, embora seu objetivo principal seja empresas de transporte de passageiros.
A Bsoftsistemas desenvolve o Controle de Transportadora 3.00. Este software possui diversos módulos, entre os principais podem ser citados o cadastro de veículos, motoristas, clientes, rotas, funcionários, controle bancário, fretes, despesas, controle de manutenção, financeiro, emissão de ordem de coleta e do CTRC.
A Trust Consultores e Associados ? IT Resource oferece soluções para o setor de transporte. O seu software, o CTMS, é especializado em gerenciar custos de transporte e foi desenvolvido para ser utilizado através de um servidor pela Internet. O Active Trans, desenvolvido pela Active System, oferece ferramentas para o controle de vendas, faturamento, cadastro de motoristas, contas a pagar, segurança, emissão do CTRC, dentre outras.
Como pode ser notado, existem muitos softwares para a área de transporte de materiais. Contudo, alguns não são focados na área de interesse da empresa, objeto de estudo do presente trabalho, e outros possuem ferramentas e módulos que não são necessários para empresa, a qual deseja um software especializado e que atenda somente os requisitos determinados por ela. Outro fator importante e que deve ser levado em consideração é o custo, pois todos os softwares citados anteriormente são pagos. Segundo a Adriano Zentil Polzin ? ME, outras duas desvantagens desses programas são a sua manutenção e atualização. Para a empresa, é importante que o desenvolvedor do seu software esteja próximo, permitindo que qualquer manutenção ou atualização seja realizada da forma mais rápida possível.
Os requisitos principais levantados pelo trabalho junto à empresa, que um software de gerenciamento de transporte rodoviário deve possuir são, dentre outros, o cadastro e controle de níveis de usuário e o cadastro de pessoas físicas e jurídicas. O sistema deve contemplar o cadastro de vários tipos de veículos e semi-reboques, de transportadores e dados para a seguradora. Com relação ao aporte financeiro, o software deve cadastrar a tabela do IRRF (Imposto de Renda Retido na Fonte) e os códigos fiscais, cadastrar produtos, pedidos, programação e ordem de coleta e, finalmente, emitir o CTRC. Outros objetivos secundários, mas não menos importantes, é o desenvolvimento do software em ambiente gráfico que permita o mesmo ser utilizado em um sistema operacional multiusuário e o emprego de um sistema de banco de dados mais atual. Pretende-se, assim, que o software customizado seja de fundamental importância para o crescimento da empresa no mercado atual de transportes rodoviário de produtos.

3 ? ENGENHARIA DE SOFTWARE
Para o desenvolvimento de um software, torna-se necessária a compreensão da necessidade das informações para a competitividade da empresa, tornando essencial o tratamento dado a elas pela gestão da informação, a qual pode ser vista, segundo Pereira "como um conjunto estruturado de atividades que incluem o modo como as empresas obtêm, distribuem e usam a informação e o conhecimento". A tecnologia entra como uma ferramenta para implementar este processo, garantindo que a informação chegue a quem necessite. Visando uma padronização nas etapas envolvidas no desenvolvimento de um software, várias determinações foram criadas e são, atualmente, regidas pela engenharia de software, a qual propicia todas as metodologias para um desenvolvimento de software mais seguro e coeso com o projeto.
Segundo Fernandes , "a área de engenharia engloba um conjunto de profissões que possuem características de trabalho em comum". Assim, engenharia de software é um dos ramos dedicados ao auxílio de desenvolvimento de software baseado em certos padrões e normas. Pfleeger (2004) afirma que a função dos engenheiros de software é utilizar seu conhecimento em computação para resolver problemas, sendo estes definidos em torno de um computador ou sistema computacional. Os principais processos destacados pela engenharia de software para o desenvolvimento de programas computacionais sãos: a definição do projeto, análise de requisitos, desenho, implementação, testes e implantação.
Segundo Filho (2000), "projeto tem uma data de início e fim, uma equipe [...] e outros recursos" (FILHO, 2000, 13). Algumas características de um projeto é de ser geralmente, temporário (datas de início e fim pré-estabelecidas), planejado, desenvolvido em etapas e possuir recursos limitados. Posteriormente ao projeto, inicia-se a parte de maior contato com a empresa, o levantamento de requisitos, o qual corresponde ao segundo processo.
Segundo Kern , "Requisito é algo que um produto deve fazer, ou uma qualidade que deve ter". Para Macoratti (2006), "requisitos expressam as características e restrições do produto de software do ponto de vista de satisfação das necessidades do usuário [...] sendo a parte mais crítica e propensa a erros no desenvolvimento de software". Macoratti (2006) especifica ainda dois tipos de requisitos, funcionais e não funcionais. O primeiro deles corresponde a tudo o que o sistema é capaz de fazer, ou seja, processos, eventos ou cálculos. Já requisitos não funcionais compreendem aquilo que o sistema poderia ter, mas não influem em seu funcionamento. Segundo Filho (2000), existem outros dois importantes tipos de requisitos, os quais compreendem os requisitos de hardware e de software. Os requisitos de hardware envolvem toda a parte física que a empresa deve possuir, bem como equipamentos e infra-estrutura necessária para o desenvolvimento do projeto. Requisitos de software descrevem o que o software propriamente dito, precisa ter para ser funcional e outros softwares necessários para sua implantação na empresa (Sistema Operacional, Anti Vírus, etc.). Após a fase de levantamento de requisitos, inicia-se o terceiro processo, responsável pela diagramação do software através de ferramentas de desenho.
Segundo Filho (2000), é nesta fase em que todas as funções do software são ilustradas em forma de fluxogramas e/ou outros tipos de diagramas. O desenho propicia uma visão de alto nível do funcionamento do software, auxiliando os programadores na sua codificação, fornecendo uma visão global do sistema e uma visão particular de cada módulo. O desenho tem a função de auxiliar na busca por erros, além de evitar que funções sejam duplicadas dentro do software. Atualmente, existem muitas formas para diagramar um software. Entre as principais, Filho (2000) destaca o Diagrama de Entidade e Relacionamento (DER), que mostra a estrutura do banco de dados e suas relações, o Diagrama de Fluxo de Dados (DFD) que fornece uma visão em alto nível do fluxo dos dados pelo sistema, e a Linguagem de Modelagem Unificada (Unified Modeling Language ou UML), a qual é capaz de unir o DER e o DFD em um só desenho.
A implementação é o quarto processo na etapa no desenvolvimento de software, compreendendo a etapa de codificação do sistema. Para Filho (2000), é nesta fase em que todas as funções que manipulam os registros no banco de dados são construídas, como todas as classes necessárias para o correto funcionamento do sistema. É nesta etapa que a interface gráfica, responsável pela interação do usuário com o programa é construída, sendo dividida em módulos para melhor estruturar o programa.
Finalizado o desenvolvimento, iniciam-se os procedimentos de testes, sendo estes o quinto processo, os quais têm a função de procurar falhas no sistema através da execução de seus módulos. Um dos métodos comumente utilizados é submeter ao sistema uma determinada entrada e verificar se a saída foi condizente com a esperada que o sistema realizasse. Pfleeger (2004) pontua diversos tipos de testes, tais como o teste de unidade, que visa encontrar defeitos nos componentes de software; o teste de integração, o qual verifica a integração do sistema e finalmente o teste geral do sistema, o qual verifica sua funcionalidade em uma aplicação real.
Finalmente, o sexto e último processo compreende à implantação do sistema. Pfleeger (2004) entende a implantação não como somente a entrega de um produto a um cliente, mas sim como "o momento que o desenvolvedor ajuda os usuários a entenderem e a se familiarizarem com o produto" (PFLEEGER, 2004, 123). Nesta fase, um treinamento aos usuários sobre a correta utilização do sistema é aplicado e a sua documentação é entregue aos responsáveis pelo mesmo. Um manual de consulta ao usuário deve ser fornecido. Vale ressaltar que a engenharia de software trata ainda dos processos que vão além da implantação do sistema para um cliente, abordando ainda a manutenção do mesmo e suas possíveis atualizações.

4 ? FERRAMENTAS DE DESENVOLVIMENTO
Para implementar um software é necessário aplicar o uso de ferramentas que possibilitam a transformação de um problema em solução. Entre elas, podemos citar os softwares de desenvolvimento e o Sistema Gerenciador de Banco de Dados (SGBD), responsável pelo gerenciamento da base de dados.
Existem diversos softwares que podem ser aplicados na codificação de um sistema. Entre eles podemos-se citar o Delphi, desenvolvido pela Borland, o Netbeans, desenvolvido pela comunidade Java e o Visual Basic.Net (VB.Net) da Microsoft. Segundo Cavalcanti (2006), o VB.Net pode ser utilizado para desenvolver aplicativos para desktop e internet, além de produzir softwares multiplataformas, ou seja, aplicativos para aparelhos móveis, como o Palm Top, o Pocket PC e o Smartphone. Outra característica do VB.Net é sua biblioteca ADO.NET, a qual permite controlar a conexão e acesso a diferentes banco de dados, melhorando a performance de acesso ao banco. O VB.Net utiliza conceitos de Programação Orientada a Objetos (POO) que, segundo Winblad (1993), as quais definem classes, métodos, herança, sobrecarga, polimorfismo, encapsulamento e persistência. Para Cavalcanti (2006), no VB.Net "o tempo todo estamos lidando com classes, objetos, métodos, propriedades e eventos" (CAVALCANTI, 2006, 11).
O VB.Net oferece suporte a diferentes SGBDs, tais como o Oracle 10g da Oracle, o SQL Server da Microsoft e o DB2 da IBM, todos comerciais, MySql e o PostgreSQL, bancos de código aberto e licença gratuita. O SGBD tem um importante papel em um projeto de software, pois é ele que armazena o banco de dados do sistema, no qual todas as informações são armazenadas e depois recuperadas. Segundo Elmasri e Navathe (2005), "banco de dados é uma coleção de dados relacionados. "Os dados são fatos que podem ser gravados e que possuem um significado implícito" (ELMASRI & NAVATHE, 2005, 4). Visto que representam um papel crítico onde existe a necessidade de uso de computadores, existem diversas formas de banco de dados, tais como: bancos multimídias para armazenar figuras, vídeos e sons; bancos de informações geográficas para mapas, dados do tempo e imagens de satélite; "data warehouses", utilizadas por empresas para grandes quantidades de informações e os, banco de dados ativos e real time, utilizados no controle de processos industriais e de produção.
Um SGBD pode conter diversos bancos de dados e um sistema de grande porte pode conter vários SGBDs trabalhando em conjunto, localizados em uma central de dados, "data warehouse". Para a comunicação entre diferentes bancos de dados armazenados em diferentes SGBDs, existe uma linguagem universal, a SQL (Structured Query Language). É através dela que empresas com diferentes bancos de dados conseguem extrair informações e transformá-las em uma única base de dados. A SQL é a base para uma linguagem procedimental, a PL/SQL. (Procedural Language/ SQL) que segundo Urman (2002), utiliza um ou mais comandos SQL dentro um bloco de instruções para acessar dados no banco, atuando de forma integrada como o banco de dados para ser processada de forma mais rápida e eficiente.
Esta linguagem permite a codificação das funções que manipulam informações na base de dados, diretamente na camada do servidor (banco de dados), melhorando assim o desempenho do aplicativo. Isto é possível, segundo Urman (2002), graças aos vários recursos da PL/SQL, entre eles posicionar um ou mais comandos SQL em estrutura de blocos, permitir o tratamento de erros, manipular variáveis e tipos de dados, oferecer estruturas condicionais, laços de execução, cursores para simplificar a consulta de dados, montagem de procedimentos e funções e a construção de pacotes, que permitem agrupar diversos procedimentos e funções em um único bloco.
Segundo Niederauer (2004), dentre os vários SGBDs existentes atualmente, podemos citar o PostgreSQL, o qual é um "SGBD [...] relacional e orientado a objetos [...], que oferece suporte a linguagem SQL [...] além de outras características modernas" (NIEDERAUER, 2004, 5). O PostgreSql tem suporte a diversos tipos de dados, como texto, número, data e monetário, dentre outros, podendo implementar através da PlpgSQL (linguagem procedural do PostgreSQL) blocos de instruções para manipulação da base de dados, através do uso de funções e procedimentos, gatilhos para regras de negócios e funções que realizam consultas mais complexas. O PostgreSql administra as regras de integridade, visando garantir o relacionamento e a integridade das tabelas armazenadas no banco, sendo capaz de suportar grandes bases de dados, provendo segurança e confiança ao sistema. Ele controla os níveis de usuários e os privilégios que cada um possui para acessar a base de dados. Para Niederauer (2004), o PostgreSQL é capaz de realizar o mesmo trabalho que os grandes SGBDs comerciais realizam, com a vantagem de possuir uma licença gratuita.














II ? DESENVOLVIMENTO DO SOFTWARE GERENCIADOR DE TRANSPORTE RODOVIÁRIO
Este capítulo trata do desenvolvimento do software, o qual será realizado em três etapas: a primeira consiste na identificação do projeto, levantamento de requisitos e diagramação do sistema, a segunda etapa consiste na implementação, codificação e testes do sistema e, finalmente, a terceira etapa consiste na implantação e avaliação do software pela empresa.

1 ? IDENTIFICAÇÃO DO PROJETO, LEVANTAMENTO DE REQUISITOS E DIAGRAMAÇÃO DO SISTEMA
A identificação do projeto consiste em abordar o tema, os envolvidos, os materiais necessários e o tempo de duração. O levantamento de requisitos apresenta os requisitos de dados levantados na empresa, os requisitos de negócios para o sistema e o requisito de hardware para a implantação do mesmo. A diagramação apresenta o desenho do sistema, através do DFD e do DER.

1.1 ? Identificação do projeto
A identificação do projeto corresponde, dentre outros objetivos, a identifição do tema bem como a sua metodologia de desenvolvimento, determinando seus prazos de início e finalização. Assim, foram realizadas reuniões com os representantes da empresa contratante do serviço, a Adriano Zentil Polzin ? ME, com o intuito de definir os prazos do projeto. (ver Apendice A ? Cronograma do Projeto).
Segundo Pfleeger (2004), é extremamente importante nesta etapa definir os participantes do projeto (ver Tabela I ? Participantes do Projeto), ou seja, o cliente, os desenvolvedores e os usuários. O cliente é caracterizado pela entidade que solicitou a aquisição de um software e detém os recursos; o desenvolvedor é aquele que implementará o produto, responsável por definir os responsáveis pelo levantamento de requisitos, diagramação e testes. Finalmente, temos o usuário, isto é, aquele que realmente utilizará o software.

Participantes do projeto
Nomes Funções
Adriano Polzin Cliente
Emílio Polzin Usuário
João Marcos Faxina Levantamento de Requisitos
Vérlei Ricardo da Silva Diagramação
Marcos Vassolér Codificação e Implementação
Lucio Flávio Boaventura Testes
Rodrigo Marcolino Documentação/Implantação

TABELA I ? Participantes do Projeto
A lista de materiais apresenta as necessidades para que o projeto seja realizado, entendendo que a lista identifica os materiais de hardware, software e meios que foram utilizados para produção do sistema. A tabela a seguir consta os materiais que foram utilizados. (ver Tabela II ? Lista de Materiais).

Lista de Materiais
Dois computados desktop?s
Dois notebooks
Software Visual Studio.Net 2005 Express
Banco de Dados PostGreSQL
Uma impressora matricial para testes de impressão do sistema
Uma impressora jato de tinta
Um automóvel para deslocamento até a empresa do cliente

TABELA II ? Lista de Materiais
1.2 ? Levantamento de requisitos
No período de 21/04/2008 a 28/04/2008, em reunião com um representante da empresa Adriano Polzin ? ME, foi realizado um levantamento das necessidades do sistema. Foram levantados os requisitos de dados que o sistema precisa gerenciar os requisitos das regras de negócio que a empresa adota e os requisitos de hardware e software que determinam um equipamento padrão que a empresa necessita para instalar e usufruir do sistema.
A tabela seguinte (ver Tabela III ? Modelo de Levantamento de Requisitos) apresenta o modelo que foi utilizado para o levantamento dos requisitos de dados levantados na empresa, sendo que, foram considerados como dados a serem levantados: Nome da Tabela, Nomes do Campo, Tipos de Dados, Obrigatoriedade e Restrições. Com esse modelo foi gerado uma listagem de dados que deram origem as tabelas do sistema. (ver Apendice B ? Levantamento de Requisitos).

DADOS "TABELA"
Nome do Campo Tipo de dado Obrigatoriedade Restrições

TABELA III ? Modelo de Levantamento de Requisitos do Sistema
Para um bom funcionamento do sistema, no levantamento de requisitos realizado junto com a empresa, ouve a necessidade de requisitos referênte ao negócio da empresa. A necessidade de restringir ações que podem se tornar problemas na manipulação do sistema, gerando informações incorretas. A tabela abaixo apresenta os requisitos de negócio da empresa necessários para a manipulação do sistema. (ver Tabela IV ? Requisitos de Negócio).

1º Não fechar o pedido, igualar a quantidade total do pedido com a quantidade de retirada e zerar o saldo.
2º Só cancelar o pedido quando a quantidade de retirada for igual a zero.
3º Não permitir programação com o pedido fechado ou cancelado
4º Não permitir programar retirada com data acima da data de fim da retirada do pedido
5º Não permitir programar quantidade maior que a quantidade do pedido
6º Ao alterar a quantidade total do pedido, alterar a programação
7º Não permitir ordens de coleta para o pedido fechado ou cancelado
8º Não permitir a emissão de ordem de coleta para uma data programada abaixo da data atual
9º Atualizar a programação com data do programador abaixo da data atual que não foi retirada
10º Ajustar quantidade de programação se a necessidade de coleta for acima da programação, retirando quantidade da última data programada
11º Não emitir ordem de coleta para motorista com data do seguro vencida
12º Excluir em bloco quando cancelar pedido e tiver programação
13º Emitir pedido à Emitir programação
14º Atualizar pedido à Atualizar programação
15º Cancelar pedido à Excluir programação
16º Fechar pedido à Normalizar programação

TABELA IV ? Requisitos de Negócio
Com base no levantamento de requisitos do sistema e as ferramentas utilizadas para o desenvolvimento, a necessidade de uma configuração de hardware basica para que o sistema funcione era eminente. Com base nesse levantamento, foi proposta a empresa adquerir uma configuração de um computador para dar suporte ao sistema, juntamente com softwares necessários para o seu funcionamento. A tabela abaixo apresenta os requisitos de hardware e software que o sistema necessita para ser implantado. (ver Tabela V ? Requisitos de Hardware e Software).

Configuração INTEL Configuração AMD
- Processador Intel Core 2 Duo - Processador AMD Athlon 64 X2
- Memória 1Gb - Memória 1Gb
- Placa de Vídeo 256Mb - Placa de Vídeo 256Mb
- Monitor 17" - Monitor 17"
- Placa de Rede - Placa de Rede
- Impressora Matricial para impressão do conhecimento de transporte
- Impressora Jato de Tinta para impressão de relatórios
Softwares Necessários
- Windows XP ou Superior
- PostGreeSQL

TABELA V ? Requisitos de Hardware e Software
1.3 ? Diagramação do sistema
A diagramação do sistema consiste em apresentar em "desenho" como o sistema deve funcionar, sendo que, para isso a utilização de recursos como: o DER (Diagrama de Entidade Relacional) e o DFD (Diagrama de Fluxo de Dados) são necessários para o entendimento de como o sistema funciona e se relaciona com o banco de dados.

1.3.1 ? DER
Segundo Pressman (2006), o DER representa graficamente um banco de dados e seus relacionamentos. Através de formas geométricas e simbolos, "o desenvolvedor pode indicar as tabelas de um banco de dados bem como suas cardinalidades, as quais podem e defende como sendo a especificação do número de ocorrências de um objeto que pode ser relacionado ao número de ocorrências de outro objeto" (PRESSMAN, 2006, 151).
Devido à complexidade da estrutura de dados e aos relacionamentos do sistema em questão, o DER é de suma importância para a organização dos dados, classificando-os em tabelas e melhorando a visualização do relacionamento entre as mesmas de uma forma mais visível. (ver apêndice G ? Diagrama de Entidade Relacional).

1.3.2 ? DFD
Segundo Pressman (2006), o DFD, "permite ao engenheiro de software desenvolver modelos do domínio informacional e do domínio funcional ao mesmo tempo" (PRESSMAN, 2006, 160). Para ele, o DFD permite dividir o sistema em níveis, onde o nível 0 representa o sistema de forma global, e os níveis acima detalham cada processo que o mesmo executa. No DFD, as setas indicam o fluxo dos dados, os retângulos as entradas feitas pelos usuários e a circunferência, os processos que o sistema chama para realizar outras tarefas. (ver apêndice D ? DFD do Dados Faturista/Administrador, apêndice E ? DFD do Usuário e apêndice F ? DFD do CTRC ).

1.3.2.1 ? Tabelas no banco de dados
Com o levantamento de requisitos, a diagramação do sistema e análise feita pelos participantes do projeto a disposição das tabelas no banco de dados foram divididas em vinte e uma (21) tabelas que compõe a base de dados. A tabela a seguir (ver Tabela VI ? Tabela Cidade), é apresentada como exemplo de estrutura onde as demais tabelas estão inseridas. As colunas apresentam: Nome do campo, Tipo de dado, Obrigatoriedade e Restrições em liguagem de banco, que cada uma dispõe para tratar da informação na qual o sistema necessita. Para as verificar as demais tabelas do banco (ver Apêndice C - Tabelas do Banco de Dados).

TABELA CIDADE
Campo Tipo de dado Obrigatoriedade Restrições
CidID Smalling Not Null Primary Key
CidNome Character Varying(50) Not Null Unique Key
EstID Smalling Not Null Foreign Key

TABELA VI ? Requisitos de Hardware e Software
A cardinalidade consiste em demonstrar o relacionamento entre as tabelas. Exemplificando vamos observar o relacionamento da tabela Cidade com a tabela Estado, a interação entre ambas é feita a partir do princípio que uma Cidade pode ter um Estado e um Estado pode ter várias cidades. Assim tomando como base a tabela a seguir (ver Tabela VII ? Cardinalidades), é demonstrada como está o processo de cardinalidade incluso no DER (ver Apêndice G ? Diagrama de Entidade Relacional) que cada tabela possui.

CARDINALIDADES
TABELA 1 TIPO CARDINALIDADE TABELA 2
Cidade N PARA 1 Estado
CTRC 1 1 Ordem Coleta
Histórico N 1 Usuário
Ordem Coleta N 1 Programação
Ordem Coleta N 1 Transportador
Pedido 1 N Programação
Pedido N 1 Pessoa Fisica/Juridica
Pedido N 1 Codigo Fiscal
Pessoa Fisica 1 1 Pessoa Fisica/Juridica
Pessoa Fisica/Juridica N 1 Cidade
Pessoa Fisica/Juridica N 1 Estado
Pessoa Juridica 1 1 Pessoa Fisica/Juridica
Pedido N 1 Produto
Seguradora 1 1 Pessoa Fisica/Juridica
Semi Reboque N 1 Cidade
Semi Reboque N 1 Estado
Semi Reboque N 1 Tipo Veículo
Semi Reboque N 1 Pessoa Fisica/Juridica
Transportador 1 1 Pessoa Fisica/Juridica
Transportador 1 1 Veiculo
Veiculo N 1 Cidade
Veiculo N 1 Estado
Veiculo N 1 Tipo Veículo
Veiculo N 1 Pessoa Fisica/Juridica

TABELA VII ? Cardinalidades

2 ? IMPLEMENTAÇÃO E TESTES
A implementação aborda o codificação do sistema, criação das tabelas e funções localizadas no banco, criação das classes e a criação da interface gráfica. Os testes descrevem a fase na qual o sistema é testado, verificando o seu correto funcionamento.

2.1 ? Implementação
A implementação é a fase da codificação do sistema, a qual foi desenvolvida utilizando o método das três camadas. Segundo Macoratti (2006), a programação em camadas constitui a divisão do sistema em partes separadas. A terceira camada é a parte da codificação realizada diretamente no banco de dados (servidor), sendo responsável por realizar todos os eventos realizados nele. A segunda camada é a parte na qual são codificadas as regras de negócios (classes) do sistema, sendo responsável por fazer a ligação entre o cliente e o servidor. A primeira camada é a parte responsável pela interface gráfica (cliente) do sistema, sendo ela a responsável por colher as informações do cliente e transmití-las de volta a ele. A figura a seguir demonstra a relação entre estas camadas. (ver FIGURA I ? Camadas de Software no Modelo .NET).







Fonte: http://www.macoratti.net/07/08/vbn_rec3.htm, acessado em 09 de setembro de 2008
FIGURA I ? Camadas de Software no Modelo .NET

Para Macoratti (2006), a divisão da codificação em três camadas torna o sistema mais compreensível, seguro e simplifica a sua manutenção. Outra característica importante é a reutilização de código, pois torna as camadas independentes dos tipos de ferramentas de desenvolvimento. Por exemplo, a camada do cliente de um programa desenvolvido para um SGBD Oracle, pode ser reutilizada para uma aplicação que utiliza um SGBD SQL Server, pois a camada cliente não possui nenhuma ligação direta com banco de dados.

2.1.1 - Banco de Dados
O PostgreSQL é o SGBD utilizado pelo sistema. Segundo Niederauer (2004), ele é um banco gratuito e de código aberto, e "pode ser comparado aos melhores bancos de dados comerciais existentes" (Niederauer, 2004, 5). Entre as funcionalidades do PostgreSQL estão a criação de funções (function), seqüenciais (sequence), gatilhos (trigger), restrições (constraint) e tipos (type) de estruturas. Permite a utilização de comandos SQL e da linguagem PlPgSQL, que permite a criação de rotinas utilizando comandos SQL.
Niederauer (2004) destaca outras características do PostgreSQL. Entre elas a capacidade de gerenciar usuários e os acessos ao banco; uma grande diversidade de tipos de dados como datas, números e valores alfanuméricos; ferramentas para backup e recuperação da base de dados; funções prontas, como cálculos geométricos, cálculos de datas e conversões de dados, dentre muitas outras características.
A utilização deste SGBD permitiu o desenvolvimento da terceira camada do sistema, responsável por codificar a parte do servidor. Além das tabelas, todas as funções responsáveis por inserir, atualizar, excluir e consultar dados direto do banco de dados, foram desenvolvidas dentro do próprio banco, utilizando a linguagem SQL, através dos comandos Create, Update, Delete e Select.
A primeira etapa da codificação do banco consiste em criar um usuário com um nome de login e uma senha para ser o administrador do banco. Este usuário é considerado pelo banco, um superusuário, tendo total controle sobre os objetos do banco. Ele tem total liberdade de criar e excluir estes objetos, além de poder incluir e excluir outros usuários e fornecer e retirar acesso dos objetos para estes outros usuários. Abaixo segue o comando responsável por criar um superusuário para o banco:

create role emilio login encrypted password ?senhaencriptada? superuser inherit createdb create role;

As características deste comando estão nas palavras encrypted e superuser. A palavra encrypted determina que a senha seja criptografada, oferecendo maior segurança ao usuário. A palavra superuser informa ao banco que o usuário criado, Emilío, é um superusuário, ou seja, um usuário que tem total acesso ao banco de dados, para modificá-lo se houver necessidade.
Após a criação do superusuário é preciso criar a base de dados. No PostgreSQL, as bases de dados permitem separar diferentes projetos. Todos os objetos que serão criados para atender a uma determinada aplicação de um cliente serão armazenados em uma base de dados própria. Estas divisões dos objetos em base de dados facilitam a manutenção e a identificação dos mesmos. Abaixo está o comando que cria uma base de dados:

create database ctrc with owner = emilio enconding = 'SQL_ASCII';

As características deste comando estão nas palavras owner e SQL_ASCII. A palavra owner informa ao banco qual usuário é proprietário da base de dados. A palavra SQL_ASCII identifica a linguagem que o banco interpretará o comando. Todos os objetos criados para o sistema pertencerão ao mesmo usuário, emilio, e a mesma base de dados, a ctrc. Com o usuário e a base de dados criados, é necessário criar os objetos. Estes correspondem a todas as tabelas e funções que o sistema necessita para executar as atividades nesta camada.
É preciso inicialmente criar as tabelas. Como descrito no DER, o sistema utilizará vinte e uma tabelas, relacionadas entre si. A criação destas é feita através do comando create table. Segundo Niederauer (2004), a integridade entre tabelas é fundamental em qualquer construção de base de dados, pois é ela que determina qual campo constituirá a chave primária (primary key) de uma tabela, qual campo liga uma tabela à outra tabela (foreign key) e qual campo além da chave primária só pode ser único em uma tabela (unique). Ainda segundo ele, sem a integridade, na restauração de uma base dados podem ocorrer erros de duplicação de dados nas tabelas.
Segundo Niederauer (2004), o PostgreSQL cria uma integridade de uma tabela utilizando suas palavras reservadas e a identificação do campo, mas o correto é criá-las através de restrições (constraint). Uma constraint é um objeto, que assim como uma tabela, tem um nome único em uma base de dados, e é capaz de informar qual campo de uma tabela é uma chave primária ou estrangeira e quais campos são únicos. A constraint pode controlar valores que podem ser inseridos em um campo, como exemplo, um salário que não pode ser menor que o piso adotado por uma empresa. A constraint facilita a manutenção do banco, podendo ser alterada e excluída, além de facilitar na identificação de tentativas de violação das restrições. A constraint é declarada dentro do comando de criação da tabela, conforme o exemplo abaixo, que cria a tabela veiculo:

create table veiculo
(
veiid integer not null,
veiplaca character varying(8) not null,
cidid smallint not null,
estid smallint not null,
veiano integer not null,
veichassi character varying(20) not null,
veimarca character varying(70),
veicor character varying(40),
veirenavan character varying(10) not null,
veidatacad timestamp with time zone not null,
tipid integer not null,
pfjid integer not null,
constraint pk_veiid_veiculo primary key (veiid),
constraint fk_cidid_veiculo foreign key(cidid) references cidade (cidid) match simple on update no action on delete no action,
constraint fk_estid_veiculo foreign key (estid) references estado (estid) match simple on update no action on delete no action,
constraint fk_pfjid_veiculo foreign key (pfjid) references pessoafisjur (pfjid) match simple on update no action on delete no action,
constraint fk_tipid_veiculo foreign key (tipid) references tipoveiculo (tipid) match simple on update no action on delete no action,
constraint uk_veichassi_veiculo unique (veichassi),
constraint uk_veiplaca_veiculo unique (veiplaca),
constraint uk_veirenavan_veiculo unique (veirenavan)
)
With (oids=false);
Alter table veiculo owner to emilio;

Neste comando destacam-se a identificação dos campos da tabela, com seus respectivos tipos, acompanhados ou não da expressão not null (indica se o campo é de preenchimento obrigatório). A chave primária, campo único e crescente, é responsável por identificar um registro em uma tabela, é criada pela constraint pk_veiid_veiculo, através da expressão primary key. As constraints fk_cidid_veiculo, fk_estid_veicul, fk_pfjid_veiculo e fk_tipid_veicul, que possuem a expressão foreign key, criam uma ligação do campo da tabela com a chave primária de outra tabela, identificada logo após a expressão references, criando uma relação entre elas. As constraints uk_veichassi_veiculo, uk_veiplaca_veiculo e uk_veirenavan_veiculo, com a expressão unique, determinam que os valores atribuídos a estes campos, não se pode repetir em nenhum outro registro da mesma tabela.
Depois de criada as tabelas é preciso criar as funções que manipularão os dados nelas. Segundo Niederauer (2004), no PostgreSQL, uma função é uma rotina que executa um ou mais comandos SQL dentro de um bloco, além de permitirem a criação de rotinas condicionais e de repetição. A função no PostgreSQL sempre retorna um tipo de valor para a rotina que a chamou, alem de permitir a passagens de parâmetros (dados) para dentro da função. No sistema, todas as inserções, atualizações, exclusões e seleções de dados nas tabelas, são feitas através das funções.
A estrutura de uma função é composta pelo comando de criação, com a identificação do nome e dos parâmetros (se necessários); local de declaração, onde são criadas as possíveis variáveis que a função venha precisar; delimitação do início e do fim das instruções SQL e a identificação da linguagem de codificação utilizada pelo banco, sendo a SQL para a execução de um único comando SQL, e a PlPgSQL, para mais de um comando. A função abaixo é responsável por inserir dados na tabela veículos, utilizando o comando insert:

//comando de criação
Create or replace function fnc_veiculo_inserir (placa character varying, vcidade character varying, vestado character varying, ano integer, chassi character varying, marca character varying, cor character varying, renavan character varying, vtipoveiculo character varying, nomerazao character varying)
returns void as
$BODY$
//local de declaração
declare codvei integer;
codcid integer;
codest integer;
codtpveiculo integer;
codpessoafj integer;
//inicio da rotina
begin
select cidid into codcid from cidade where cidnome = upper(vcidade);
select estid into codest from estado where estnome = upper(vestado);
select pfjid into codpessoafj from pessoafisjur where pfjnomerazao = upper(nomerazao);
select tipid into codtpveiculo from tipoveiculo where tipdescricao = upper(vtipoveiculo);
select max(veiid) into codvei from veiculo;
//acrescenta um valor na chave primaria
if codvei is null then
codvei = 1;
else
codvei = codvei + 1;
end if;
//comando SQL que insere um registro na tabela
Insert into veiculo
(
veiid, veiplaca, cidid, estid, veiano, veichassi, veimarca, veicor, veirenavan, veidatacad, tipid, pfjid
)
values
(
codvei, upper(placa), codcid, codest, ano, upper(chassi), upper(marca), upper(cor), upper(renavan), current_timestamp, codtpveiculo, codpessoafj
);
end;
//fim da rotina
$BODY$
//identificação da linguagem
language 'plpgsql' volatile

Para que uma função no PostgreSQL retorne uma ou mais linhas de registros de uma tabela, é preciso criar um tipo de estrutura que declare diferentes tipos de dados dentro dela. Isto é possível através do comando create type, com uma estrutura semelhante ao comando create table. Abaixo um exemplo da criação de uma estrutura de tipo de dados:

Create type tipogeral
(
Numero integer, nome character varying, data timestamp with time zone
);

Após a sua criação, o tipogeral pode ser utilizado como tipo de retorno por uma função. Ele representa o conjunto de dados que estão declarados dentro de sua estrutura. Para ilustrar melhor esta idéia, segue abaixo uma função que retorna todos os registros da tabela veiculo.

//comando de criação
//esta função não possui parâmetros
Create or replace function fnc_veiculo_selecaogeral ( )
Returns setof tipovei as
$BODY$
//local da declaração
//a variável tp recebe como tipo de dado o tipovei
declare tp tipovei%rowtype;
veiculos record;
//inicio rotina
begin
for veiculos in
select
a.veiid, a.veiplaca, b.cidnome, c.estnome, a.veiano, a.veichassi, a.veimarca, a.veicor, a.veirenavan, a.veidatacad, d.tipdescricao, e.pfjnomerazao
from
veiculo a, cidade b, estado c, tipoveiculo d, pessoafisjur e
where
a.cidid = b.cidid and a.estid = c.estid and b.estid = c.estid and a.tipid = d.tipid and a.pfjid = e.pfjid
order by
a.veiplaca asc
loop
tp.id = veiculos.veiid;
tp.placa = veiculos.veiplaca;
tp.cidade = veiculos.cidnome;
tp.estado = veiculos.estnome;
tp.ano = veiculos.veiano;
tp.chassi = veiculos.veichassi;
tp.marca = veiculos.veimarca;
tp.cor = veiculos.veicor;
tp.renavan = veiculos.veirenavan;
tp.datacad = to_char(veiculos.veidatacad,'dd/mm/yyyy hh:mm:ss');
tp.tipoveiculo = veiculos.tipdescricao;
tp.proprietario = veiculos.pfjnomerazao;
return next tp;
end loop;
return;
end;
//fim da rotina
$BODY$
//identificação da linguagem
language 'plpgsql' volatile

Explicando a função acima:

//comando de criação
create or replace funciotn fnc_veiculo_selecaogeral() returns setof tipovei as

O comando cria ou atualiza a função fnc_veiculo_seleçãogeral, que não recebe nenhum tipo de parâmetro, mas que retorna para o aplicativo que a chamou, o tipo de estrutura tipovei. Ele representa um conjunto de dados que serão responsáveis por receber os valores contidos nos campos da tabela. Toda vez que uma função retorna um conjunto de dados, o tipo de retorno tem que ser precedido pela palavra reservada setof.

//local da declaração
//variável tp recebe como tipo de dado o tipovei
declare tp tipovei%rowtype;
veiculos record;

Neste local da função, estão sendo declaradas duas variáveis que serão utilizadas por ela. A variável tp em vez de receber como tipo de dado um número, uma data ou um texto, recebe o tipo tipovei. A expressão tipovei%rowtype indica que a variável tp terá a mesma estrutura que o tipo tipovei possui. A variável veículos recebe um tipo de dado record, significando que ela representa um conjunto de registro que armazenara os campos do comando select. Esta condição é controlada pelo próprio PostgreSQL.

//inicio rotina
begin
for veiculos in
select a.veiid, a.veiplaca, b.cidnome, c.estnome, a.veiano, a.veichassi, a.veimarca, a.veicor, a.veirenavan, a.veidatacad, d.tipdescricao, e.pfjnomerazao
from
veiculo a, cidade b, estado c, tipoveiculo d, pessoafisjur e
where
a.cidid = b.cidid and a.estid = c.estid and b.estid = c.estid and a.tipid = d.tipid and a.pfjid = e.pfjid
order by
a.veiplaca asc
loop

Nesta parte da função tem-se o inicio da rotina, através da palavra reservada begin. O comando for informa que será executado um laço repetitivo dentro da função, até que uma condição seja satisfeita, neste caso, enquanto houver registros que combinem com as condições passadas pelo comando select na clausula where. A variável veículos esta recebendo como valores os campos das tabelas identificados dentro do comando select. Os dados estão sendo ordenados de forma crescente pelo campo especificado na clausula order by.

tp.id = veiculos.veiid;
tp.placa = veiculos.veiplaca;
tp.cidade = veiculos.cidnome;
tp.estado = veiculos.estnome;
tp.ano = veiculos.veiano;
tp.chassi = veiculos.veichassi;
tp.marca = veiculos.veimarca;
tp.cor = veiculos.veicor;
tp.renavan = veiculos.veirenavan;
tp.datacad = to_char(veiculos.veidatacad,'dd/mm/yyyy hh:mm:ss');
tp.tipoveiculo = veiculos.tipdescricao;
tp.proprietario = veiculos.pfjnomerazao;
return next tp;
end loop;

Nesta parte da função, os campos da variável tp, que representa o tipo tipovei, estão recebendo os valores que foram armazenados na variável veículos através do comando select, se os mesmos cumpriram as condições do comando. As palavras reservadas return next, retorna para o aplicativo que chamou a função, a variável tp, e com ela os valores armazenados dentro de seus campos. Dependendo do número de registros que cumpram a clausula where, o laço vai se repetindo, retornando um conjunto de registros por vez, até que o laço chegue ao final.

return;
end;
//fim da rotina
$BODY$
//identificação da linguagem
language 'plpgsql' volatile

Ao fim do comando for esta a palavra reservada return. Ela é responsável por retornar todos os registros recebidos dentro do comando for para o aplicativo. Por fim, fecha-se a rotina através da palavra reservado end, e a função através da identificação da linguagem.
No total foram construídas 158 funções no banco de dados. Todas seguem praticamente o mesmo princípio de construção, respeitando a estruturas das tabelas, e a regras de integridades impostas a elas através do DER. As funções deixam o código das camadas superiores mais limpos, por trazerem para elas, a execução dos comandos SQL exigidos pelo sistema, e permitem uma maior legibilidade do mesmo, além da facilitar a sua manutenção.
Niederauer (2004) destaca no PostrgreSQL as ferramentas que permitem copiar e restaurar um banco de dados. A execução de backup é realizada através de dois comandos, o pg_dump e o pg_restore. O pg_dump cria um script onde são guardadas, de acordo com as opções do comando, todas as informações necessárias para restaurar o banco de dados. O pg_restore executa a restauração através das informações contidas neste script. Abaixo segue exemplos de uso dos comandos:

pg_dump -i -h localhost -p 5432 -U emilio -F c -b -v -f "f:\copiabd\banco.backup" ctrc;
pg_restore -i -h localhost -p 5432 -U emilio -d ctrc -v "f:\copiabd\banco.backup";

A palavra reservada localhost indica onde esta o servidor do banco de dados, neste caso na própria máquina do usuário. Para identificar um servidor de banco de dados em outra máquina, informe a opção localhost pelo seu número IP (Internet Protocol) de rede. A informação emilio representa o usuário e o ctrc a base de dados. O script será criado com o nome de banco.backup. Os comandos não podem ser executados dentro de uma função, sendo preciso encontrar uma alternativa, no caso do sistema, dois arquivos com extensão bat. Abaixo segue dois exemplos, um para o backup, e outro para a restauração:

- Arquivo copia.bat.
@echo off
SET PGUSER=emilio
SET PGPASSWORD=suasenha
c:
chdir c:\copiabd
del banco.backup
echo "Aguarde, realizando a copia do banco"
C:\Arquiv~1\PostgreSQL\8.3\bin\pg_dump -i -h localhost -p 5432 -U emilio -F c -b -v -f "c:\copiabd\banco.backup" ctrc
Exit

- Arquivo restaurar.bat.
@echo off
SET PGUSER=emilio
SET PGPASSWORD=suasenha
rem(indo para a raiz do disco)
c:
rem(selecionando a pasta onde esta o bachup)
chdir c:\copiabd
echo "Aguarde, realizando a restauracao do banco"
C:\Arquiv~1\PostgreSQL\8.3\bin\pg_restore -i -h localhost -p 5432 -U emilio -d ctrc -v "c:\copiabd\banco.backup"
Exit

Outro fator importante destacado por Niederauer (2004) é a necessidade de se executar uma analise periódica das tabelas do banco de dados, ou do próprio banco. Segundo ele, essa tabela é necessária para atualizar as estatísticas das tabelas no PostgreSQL, que conforme tem seu volume de dados aumentado constantemente, sofrendo inserções, atualizações e exclusões, corre-se o risco de a base de dados ter perdas de dados. A análise pode ser feita através do comando vacuumdb, o qual executa uma análise e atualização das estatísticas em toda a base de dados. Abaixo segue um arquivo bat para executar o comando vacuumdb.

- Arquivo analise.bat
@echo off
@echo "Analize e limpeza do banco de dados"
SET PGUSER=emilio
SET PGPASSWORD=suasenha
c:
chdir c:\copiabd
C:\Arquiv~1\PostgreSQL\8.3\bin\vacuumdb -d ctrc -z -v -h localhost -p 5432 -U emilio
Exit

Após a criação das tabelas e funções do sistema, a camada do servidor esta concluída. O próximo passo é codificar a camada das regras de negócio, através da criação de classes.

2.1.2 ? Classes
As classes, na implementação do sistema, representam a camada das regras de negócios do mesmo. Segundo Macoratti (2006), esta é a camada responsável por fazer a comunicação entre a camada do servidor e a do cliente.
No sistema foram desenvolvidos dois tipos de classes. O primeiro consiste em representar os objetos que o sistema necessita, trabalhando seus atributos e métodos. O segundo tipo trabalha com métodos que acessam diretamente as funções localizadas no banco de dados. Os dois tipos são interligados através do conceito de herança que, segundo Cavalcanti (2003), permite a uma classe acessar propriedades e métodos de outra classe. Apesar desta interligação, o primeiro tipo é totalmente independente do segundo tipo, com a finalidade de poder ter seu código reutilizado para outra aplicação que apresente características semelhantes, independente do SGBD que seja utilizado.
Cavalcanti (2003) define classes como "códigos que definem um tipo de dado. Elas são compostas de membros de dados [...], métodos [...] e eventos [...]" (Cavalcanti, 2003, 65). Outros conceitos que se aplicam as classes são os de encapsulamento, sobrecarga, construtor e polimorfismo, além da própria herança. O Visual Studio.Net (VS.Net) através de suas linguagens, e entre elas o Visual Basic.Net (VB.Net), oferece aos desenvolvedores a capacidade de construir suas próprias classes. O VB.Net é a linguagem de codificação empregada na codificação das camadas de negócio e cliente do presente projeto.
Outra ferramenta importante do VB.Net segundo Cavalcante (2003) é a criação de bibliotecas, as quais são classes criadas pelo desenvolvedor, ou já existentes no próprio VB.Net, e que podem ser importadas para qualquer aplicativo que esteja sendo desenvolvido utilizando esta linguagem. Esta capacidade permite ao desenvolvedor a reutilização de código, diminuindo tempo e obtendo ganho de produção.
O sistema utiliza duas bibliotecas criadas pelos próprios desenvolvedores. A primeira consiste em manipular objetos do VB.Net, e a segunda é responsável por fazer a conexão do sistema com o banco de dados.
Esta classe pode ser utilizada por qualquer aplicativo desenvolvido no VB.Net e que utilize como SGBD o PostgreSQL, somente sendo necessária a mudança no texto de conexão, o nome da base de dados.
Cada tabela no banco de dados possui uma classe que a represente na camada de negócio. E cada uma destas classes possui uma classe correspondente que faz a comunicação direta com o banco de dados. Uma classe no VB.Net é dividida, segundo Cavalcanti (2003), da seguinte forma:
- atributos: características específicas de cada objeto. Como exemplo, um objeto livro pode possuir características como tamanho, cor, número de páginas, titulo, autor, assunto, etc.;
- propriedades: tipo especial de método que atua diretamente sobre os atributos, passando ou recuperando informações das mesmas;
- métodos: rotinas que realizam um conjunto de instruções dentro da classe;
- construtores: "métodos especiais, chamados automaticamente quando um objeto qualquer da classe é criado" (Cavalcanti, 2003, 70). Os construtores podem passar ou não parâmetros que serão passados aos atributos;
- encapsulamento: capacidade de uma classe proteger seus atributos, propriedades e métodos. "Os dados internos da classe e os detalhes da implementação do código estão escondidos atrás da interface. É nesse sentido que se diz às vezes que os objetos são caixa-pretas" (CAVALCANTI, 2003, 131). O encapsulamento é definido através dos seguintes escopos:
- public (atributos, propriedades e métodos podem ser chamados dentro e fora da classe),
- private (atributos, propriedades e métodos podem ser chamados somente dentro da classe)
- protected (atributos, propriedades e métodos podem ser chamados pela própria classe e pela classe filha).
Os métodos se comunicam com o banco de dados através de uma biblioteca do próprio PostgreSql (Npgsql) e da biblioteca pertecente os VS.Net, a ADO.Net. Segundo Cavalcante (2003), o ADO.Net disponibiliza recursos que acessam bancos de dados, permitindo a "recuperação, manipulação e atualização de dados, de uma forma simples e efeciente" (CAVALCANTI, 173). Entre os principais objetos destacados por ele estão:
- Dataset: objeto da classe ADO.Net. Armazena na memória os dados das tabelas carregados pelo comando select;
- Datatable: objeto da classe ADO.Net. Organiza os dados na memória por linha e colunas;
- Datagrid: objeto da classe ADO.Net. Um dos mais utilizados dentro do VB.Net, armazena dados na memória por linha e colunas, e os exibe em um formulário em forma de tabela;
- Npgsqlconnection: objeto da classe Npgsql que faz a conexao com o banco de dados, utilizando a string de conexão;
- Npgsqlcommand: objeto da classe Npgsql que passa para objeto Npgsqldataadapter qual comando sql ele ira executar. A propriedade commandtype permite identificar que uma Stored Procedure (função) do banco de dados será chamado pelo comando. A propriedade parameter.add, permite adicionar um parametro que será passado a esta Stored Procedure. A propriedade executenonquery executa realmente o comando;
- Npgsqldataadapter: objeto da classe Npgsql que permite fazer leituras no banco de dados. A propriedade selectcommand permite receber um objeto Npgsqlcommand, ou outra instrução SQL. A sua proprieade fill preenche o obejto dataset com os dados recuperados pelo comando select, ou por uma função do servidor que executa uma consulta em uma tabela;
Cavalcanti (2003) destaca que estas duas bibliotecas trabalham em conjunto, e que os objetos da biblioteca do Postgresql são adaptdados conforme o SGBD que estiver sendo utilizado, como por exemplo: o objeto npgsqlconnection do Postgresql seria o sqlconnection da biblioteca Sqlclient, pertencente ao SGBD SQL Server.
Outro fator importante, é que os métodos acima possuem o escopo private, sendo visíveis e acessados somente dentro da classe. Para cada método private, é necessário um método com o escopo public, pois eles serão acessíveis pelo cliente, que executará as operações de inserção, atualização, exclusão e seleção no banco, mas não tem acesso e nem conhecimento do que realmente a classe realiza para executar estas operações. Este processo é encapsulamento da classe, e tem a função de proteger a mesma, oferecendo ao cliente, somente o que ele necessita.
Todas as tabelas do sistema, como já citado, possuem uma classe que a represente nesta camada, mais a classe que se comunica com o banco. Todas seguem a mesma estrutura, sendo adaptadas conforme o número de campos de cada tabela. Concluída a camada de negócio, é preciso codificar a camada do cliente, onde se encontra a interface homem-máquina.

2.1.3 ? Interface homem-máquina
O cliente corresponde à primeira camada do sistema. É nesta camada que o usuário passará e receberá informações do sistema. É nesta que a interface homem-máquina é construida.
Uma interface no VB.Net é composta pela GUI (Grapfical User Interface). Segundo Deitel (2004) uma "GUI [...] permite que usuários interajam visualmente com um programa" (DEITEL, 2004, 388), evitando que o usuário perca tempo em lembrar seqüências de comandos (sistema de interação do MS-DOS) podendo, assim, se dedicar mais ao sistema.
No VB.Net, a GUI é composta pelos componentes visuais, os quais tem a função de interagir com o usuário. Entre os principais componentes, Deitel (2004) cita:
- formulários: elemento gráfico que aparece na área de trabalho em forma de janela, podendo ser minimizada, maximizada e fechada;
- rótulos: textos que informam o usuário, como mensagens, nomes de campos, etc., e não podem ser editados;
- caixas de texto: caixas que podem receber dados digitados pelo usuário;
- botões: tem a função de desviar o programa ou executar algum evento quando acionado pelo usuário;
- menus: permitem ao usuário escolher uma opção entre uma lista apresentada a ele, é muito usado para abrir outros formulários no programa;
- combos: componente semelhante às caixas de texto, mas capaz de armazenar várias linhas de dados distintos;
- caixas de seleção: permite ao usuário escolher uma opção em um grupo de opções, onde a escolha de uma desabilita as outras;
- caixas de escolha: permite ao usuário marcar itens em uma lista de seleção, ao contrário da caixa de escolha, podem-se marcar várias opções em uma mesma lista;
- datagridview: fornece uma janela com uma tabela com informações (principalmente de tabelas de banco) ao usuário, podendo ou não ser editadas pelo mesmo.
O VB.Net oferece uma grande quantidade de componentes, e a escolha dos mesmos para compor um sistema depende da necessidade do mesmo. Como já citado, o VB.Net trabalha com o conceito de classes, e os componentes são tratados por ele como sendo classes. Todos os componentes possuem atributos, propriedades, métodos, construtores, encapsulamento, etc. Entre os atributos mais comuns aos componentes estão: nome, fonte, cor, formato, tamanho, posição na tela, texto de rótulo (texto que aparece para o usuário, como o texto gravar em um botão), entre outros. Alguns componentes possuem atributos particulares, como o datagridview, que possui a propriedade datasource, responsável por receber um objeto dataset e popular a tabela como os dados contidos neste.
Outra característica do VB.Net é a sua capacidade em trabalhar com eventos. Segundo Deitel (2004), um evento é a capacidade de o componente interagir com uma ação do usuário, como um clicar de mouse, clicar em um botão, selecionar um itém de um menu, dentre outros. Os eventos são passados para o tratador de eventos do VB.Net, que nada mais é do que métodos que são chamados quando o usuário faz uma ação no sistema.
A primeira ação quando o usuário executa o sistema, é a abertura do formulário de inicialização do programa, onde o usuário informará o seu login e sua senha, e será executada a conexão com o banco de dados. O formulário (como qualquer outro componente no ambiente VB. Net) é uma classe dotada de atributos, propriedades e métodos próprios, os quais podem ser manipuladas pelo desenvolvedor, mas que permita ao mesmo criar seus próprios atributos, propriedades e métodos. No formulário, o desenvolvedor posiciona os componentes necessários para que o usuário possa interagir com ele, neste caso, rótulos, caixas de textos e botões. (ver FIGURA II ? Formulário de inicialização do Programa).








FIGURA II ? Formulário de inicialização do Programa
Após a entrada do usuário no sistema, o formulário principal é chamado, o qual possui como componentes menus e botões. Os menus permitem ao usuário acessar os diversos módulos do sistema e os botões, acessar funções que são particulares ao superusuário. Quando o formulário é carregado ele executa seu construtor e recebe do formulário de inicialização, o nome e o status do usuário. Este recurso tem a função de controlar as restrições que o sistema precisa ter para cada nível de usuário que acessa o sistema, sendo somente o superusuário do mesmo que possui liberdade. Este controle é realizado no método do evento load do formulário principal. (ver FIGURA III ? Formulário Principal).

FIGURA III ? Formulário Principal
Dentre os vários existentes, o formulário Estado contém um padrão que é utilizado praticamente por todos os módulos do sistema. Ele é dotado de componentes como menus, botões, rótulos, caixas de textos, combos, grupoboxes, painéis, datagridview, entre outros, que permitem ao usuário inserir, atualizar, excluir e filtrar registros da tabela. Ele, assim como os outros formulários, possui um componente importante do VB.Net, o tabcontrol. Este componente permite ao desenvolvedor criar várias páginas de componentes dentro de um mesmo formulário, através da adição de abas, eliminando a necessidade da criação de muitos formulários. O acesso a estas abas são controladas pelo desenvolvedor através de sua propriedade selectedindex.
Visão do módulo Estado, estando em primeiro plano à aba registros. Nesta aba se encontra o componente datagridview, que permite ao usuário ter uma visão dos registros contidos na tabela estado. (ver FIGURAS IV, V, VI e VII).


FIGURA IV ? Formulário Estado Aba Registro
Visão do módulo Estado, com a aba Editar ativada:

FIGURA V ? Formulário Estado Aba Editar
Visão do módulo Estado, com a aba Filtros ativada:

FIGURA VI ? Formulário Estado Aba Filtros
Visão do módulo Estado, com a aba Relatório ativada:

FIGURA VII ? Formulário Estado Aba Relatório
O sistema oferece ao usuário a capacidade de realizar filtros nos registros contidos nas tabelas do banco de dados. No módulo estado, os filtros foram realizados através do nome do estado ou de sua unidade federal, através dos botões btnfiltrarnome e btnporuf e dos menus menupornome e menuporuf. O método do evento click destes objetos chama o método realizarfiltro(), passando para ele uma condição de filtro. Abaixo segue os métodos do evento click destes componentes.
O VB.Net, segundo Macoratti(2006), oferece várias possibilidades de se gerar relatórios. Uma delas é através da classe PrintDocument, a qual é representada no método imprimir, pelo objeto pd. Esta classe permite ao desenvolvedor trabalhar manualmente na criação de um relatório, permitindo a criação dos tipos de fonte, definição da margens, campos que serão exibidos, entre outros, através da codificação direta dos mesmos. Dentro do método imprimir(), é adicionado ao método PrintPage do objeto pd, o método rptestado, responsável por gerar uma nova página no relatório. Foi criado um objeto para representar a classe PrintPreviewDialog, o objPrintPreview. Este objeto gera uma janela de interação como o usuário, permitindo uma pré-visualização do relatório. Os dados que contém os campos da tabela são fornecidos pelo objeto dataset carregado na realização do filtro.


Abaixo segue a janela de pré-visualização do relatório gerado:


FIGURA VIII ? Janela de Visualização do Relatório dos Estados
Outro modo destacado por Macoratti para gerar um relatório é a utilização do Crystal Reports, da Crystal Decisions. Ele, ainda segundo Macoratti (2006), é um dos geradores de relatórios mais utilizados. Através de um assistente é possível configurar todo o relatório de forma prática e mais produtiva. Para se utilizar o Crystal Reports no VB.Net, é necessário que o drive ODBC (Open Data Base Connectivity) do banco de dados (no caso o PostgreSQL) esteja instalado e configurado na máquina em que o SGBD estiver instalado. Este drive é importante, pois o Crystal Reports precisa fazer uma conexão com o banco de dados, para poder visualizar as tabelas que estão contidas nele.
Para configurar o drive ODBC, pode-se seguir os seguintes passos:
- menu iniciar;
- configurações;
- painel de controle;
- ferramentas administrativas;
- fonte de dados (ODBC);
Será aberta a seguinte janela:












FIGURA IX ? Configuração do driver ODBC
Se o drive ODBC do PostegreSQL aparecer na aba Fontes de dados de usuário, basta selecioná-lo e clicar em configurar. Caso contrário, é preciso adicioná-lo através do botão adicionar, onde será exibida uma lista com todos os drives para banco de dados instalados na máquina. Ao clicar no botão configurar, aparecerá a seguinte janela:








FIGURA X ? Dados da configuração do driver ODBC
É preciso preencher os campos conforme a configuração utilizada pelo sistema que esta sendo desenvolvido. No sistema deste trabalho a configuração está da forma como se encontra na figura acima. Com os campos preenchidos, clica-se no botão Test, para verificar se a conexão está funcionando, e depois no botão save. Quando se abre o Crystal Report pela primeira vez no projeto, determinar a conexão com o banco de dados é uma das primeiras tarefas a ser feita pelo desenvolvedor. E é nesta lista de fonte de dados de usuário, que o assistente dele buscará o drive correto, bastando ao desenvolvedor apenas selecioná-lo.
Para que o relatório gerado pelo Crystal Reports imprima os campos contidos no banco de dados, é preciso que o desenvolvedor selecione as tabelas que compoem este relatório, e arraste os campos destas tabelas para o formulário, posicionando-os conforme sua necessidade. O Crystal Reports ainda oferece muitos recursos para a edição do formato do relatório. O método do evento click do menu MenuImprimir posiciona a tela na aba Relatório e chama o método imprimirpelocristal.

Private Sub MenuImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuImprimir.Click
Me.tabestado.SelectedIndex = 3
imprimirpelocristal()
End Sub

Na aba Relatório se encontra o componente CrystalReportViewer, que têm a função de controlar a chamada dos relatórios, através do seu método ReportSource. Pode-se optar por criar um único formulário que é capaz de chamar todos os relatórios do sistema, ou criar um objeto para cada módulo, opção esta, adotada por este sistema. Quando o CrystalReportViewer chama um relatório, ele na verdade chama um objeto que representa este relatório. Isto por que o Crystal Reports exporta para o VB.Net as classes que ele precisa para funcionar corretamente. Através deste objeto é possivel usar os métodos destas classes, que permitem ao desenvolvedor controlar vários fatores de um relatório, tais como tamanho da página, margens, fontes, cores, impressora padrão, entre outras.
Com o relatório criado, o ciclo do módulo estado está completo. Através dele, o usuário é capaz inserir, atualizar, excluir, selecionar e filtrar dados nesta tabela. Todo este ciclo repete-se em todos os módulos que acessam informações no banco de dados, sendo adaptados conforme as necessidades de cada tabela do banco. Existem tabelas que não permitem que dados sejam excluídos depois de editados, como a tabela pedido, que após ter um número de pedido com o campo quantidade retirada acima de zero, só pode ser fechado, ou a tabela CTRC, que após a impressão do documento Conhecimento de Transporte, não pode ter o registro excluído se houver algum erro, mas somente cancelado, pelo motivo do número do registro ser idêntico ao número do formulário. Todas as telas do sistema e descrição de seu funcionamento estão descritas no manual do sistema, em anexo neste documento (ver Apêndice H ? Manual do Sistema CTRC). Com o programa codificado, tem início a fase de testes do sistema.

2.2 ? Testes de Software
Segundo Palma (2007), o teste de software teve seu início "entre o fim da década de cinqüenta e início de sessenta, onde começava a ser criado o conceito de teste de software" (PALMA, 2007). Para realizar testes em um software, o profissional dessa área deve ter o conhecimento do mesmo desde seu início, processo esse que se torna eficaz à medida que o analista de testes é capaz de imaginar e descrever o máximo de cenários, de forma criativa e intuitiva.

2.2.1 ? Por que testar e validar o Software?
Segundo a SOFIST (Intelligent Software Testing), essa etapa é fundamental para o bom funcionamento do software, a qual visa garantir a qualidade do mesmo, tornando-o mais confiável, com o objetivo de garantir que o produto final atenda aos requisitos especificados, avaliando os comportamentos funcionais, tais como desempenho, confiabilidade, usabilidade e segurança do sistema.
Segundo Myers "a fase de testes e manutenções consome 60% de tempo e recursos utilizados no desenvolvimento de software" (MYERS, 1979). O seu desenvolvimento envolve muitas atividades, como a escrita dos códigos, aumentando assim a chance de falhas ou esquecimentos de algumas funções e funcionalidades do sistema. As falhas podem acontecer no início da especificação de requisitos e no decorrer do projeto, podendo haver mudanças no seu planejamento, fase na qual, começam os primeiros erros. Ao encontrar um erro, é realizada uma depuração, documentação e correção da falha.
Segundo a RSI Informática (2006), ao detectar um erro na sua fase inicial de levantamento de requisitos, o seu custo é de R$1,00, ao ser detectado nas demais fases do projeto, o seu valor fica 10 vezes maior, até o seu teste final. Dependendo do tamanho do projeto, os testes são realizados por componentes, grupos, módulos, ou por todo o sistema antes da liberação ao cliente, garantindo a entrega do software com todas as funcionalidades.


2.2.2 ? Testes funcionais do Software SGTR versão 1.0
Os testes funcionais verificam se o sistema atende os requisitos funcionais especificados pelo cliente, sendo realizados em todo sistema, atendendo as exigências da especificação. Para verificação de falhas e posteriores correções, os testes descritos abaixo foram realizados no software SGTR versão 1.0:
- Inserindo um novo registro, verificação dos botões NOVO e no Menu, as suas funcionalidades, limpar caixas de textos, e trazendo novo ID para o registro;
- Verificação de inibição de botões, conforme acesso de outros botões;
- Verificação de existência de um registro já gravado em banco, com o intuito de evitar duplicidades, emitindo mensagens de erro na tela;
- Verificação de entrada e saída de dados nas caixas de textos, tais como data, valores;
- Na gravação do registro se, ao gravar o dado no banco ou ocorrer erro de gravação, emitir status de retorno na tela;
- Atualização de registro, na gravação no banco e emitindo mensagem de erro ou de gravação na tela;
- Exclusão de registros, retornando mensagens de erro ou de confirmação;
- Listagem de filtros na tela, quando haver erro emitir mensagens, ou imprimir os dados na tela;
- Emissão de relatórios, realizar a verificação de existências de impressoras instaladas, ou retornando mensagens de erro geradas pelo sistema;
Foram realizados muitos testes no software desenvolvido, SGTR versão 1.0, para que não houvesse falhas na sua aprovação junto ao cliente.

2.2.3 ? Regras de Negócios
No sistema SGTR versão 1.0 do presente trabalho, foram necessárias certas regras de negócio para atender aos requisitos de software levantados junto a empresa Adriano Polzin ? ME. Segundo Pereira (2008), as regras de negócio em um sistema operacional "têm como principal função assegurar que as mesmas sejam obedecidas, garantindo a consistência das informações e fornecendo dados importantes aos gestores, os quais podem ser usados em tomadas de decisões" (PEREIRA, 2008), determinando ações rápidas.
No sistema SGTR versão 1.0, foram especificadas as seguintes regras de negócios, na tabela pedido e tabela ordens de coleta, nos quais essas regras são descritas conforme abaixo:
Tabela Pedido:
- Na execução de um novo pedido, só realizar esta tarefa quando a quantidade retirada for igual a zero;
- Ao fechar um pedido, igualar a quantidade total do pedido com a quantidade retirada, zerando o seu saldo;
- Não permitir programação com pedido fechado ou cancelado;
- Não permitir programar com data acima da data do fim da retirada do pedido;
- Não permitir programar quantidade maior que a quantidade do pedido;
- Ao alterar a quantidade total do pedido, alterar a programação;
- No cancelamento de pedidos, excluir o pedido da programação;
Tabela Ordens de Coleta:
- Não permitir ordens de coleta para pedidos fechados ou cancelados;
- Não permitir a emissão da ordem de coleta para uma data programada abaixo da atual;
- Atualizar a programação com data programada abaixo da data atual que não foi retirada;
- Ajustar quantidade de programação se a necessidade de coleta for acima da programação, retirando quantidade da última data programada;
- Não emitir ordem de coleta para motorista com data do seguro vencido;
A definição das regras citadas acima é essencial para que o sistema funcione corretamente, especificando entrada e saída de dados, com o intuito de atender as especificações do planejamento inicial do sistema.

3 ? Implantação do Sistema SGTR versão 1.0
Conforme a Engenharia de Software, a implantação do sistema é a última parte do projeto e o tempo de implantação levantada na análise de requisito, sendo realizada em três etapas conforme estratégia de implantação: Avaliação e adequação física do ambiente, familiarização e treinamento dos usuários com sistema em módulo protótipo ou ambiente teste após implantação em base real, e por último a finalização e análise crítica da implantação.
A implantação de um sistema é um processo que exige muita atenção e cuidado. Segundo Dantas e Alves (2002), existem uma série de fatores que torna essa etapa complexa e devem-se tomar cuidados:
- custos elevados
- Alteração dos processos produtivos e administrativos;
- Customizações;
- Resistência com a adoção do Sistema;

3.1 ? Avaliação e Adequação Física do Ambiente
Eleger em colegiado com o cliente qual será o T.I responsável pelo o contado direto com o desenvolvedor do sistema, para que todos os usuários passem por ele, filtrando os assuntos, dúvidas ou correções que surgirão no decorrer da implantação ou após a implantação.
Avaliação da estrutura das estações onde será implantado o sistema, verificando se o equipamento suporta rodar o sistema e seus componentes necessários para que o sistema funcione perfeitamente.

3.2 ? Familiarização e treinamento dos usuários
Demonstração de todos os módulos do sistema para todos os usuários e diretores da empresa que farão uso do sistema, para uma familiarização com sua interface gráfica, regras de negócios
Treinamento dos usuários é realizado individualmente, para verificação dos processos que o usuário exerce na empresa e passará a usar com a implantação do sistema, como descreve Pfleeger, "... o treinamento dos usuários tem como base, principalmente, as principais funções do sistema e a necessidade do usuário de poder acessá-las..." (PFLEEGER, 2007, pg. 367).
O treinamento é realizado de várias maneiras, não importando por quanto tempo seja, deve fornecer informações para os usuários em todos os momentos, e não apenas quando o sistema é entregue, conforme relata Pfleeger, "... algumas vezes os usuários se esquecem de como acessar um arquivo ou utilizar uma nova função, o treinamento inclui métodos para que o usuário possa encontrar e aprender essa informação ..." (PFLEEGER, 2007, pg. 368).
Após o treinamento dos usuários, é baixada uma cópia do sistema em base teste da rede do cliente, por durante duas ou três semanas, os usuários irão exercendo paralelamente ao sistema atual de trabalho as rotinas diárias exercidas, comparando e familiarizando com os módulos, tirando suas dúvidas, ajustes e implementação do sistema que vierem a ocorrer.
Após a familiarização dos usuários, e correções de possíveis erros, implementações, é baixado em base real o sistema, começando do ponto zero de sua massa de dados, com acompanhamento no dia-a-dia de um profissional desenvolvedor do software, para qualquer problema que venha surgir.

3.3 ? Finalização e Análise Críticas da Implantação
Após realizar a implantação e treinamentos, conforme relata Oliveira "... quando o sistema começou a ser utilizado no dia-a-dia organizacional tornou-se possível verificar os acertos e as falhas do projeto, isto é, impactos positivos e negativos ..." (OLIVEIRA, 2008), será possivel a verificação das funcionalidades estão sendo realizadas de acordo com o projeto inicial.
Conforme especifica a Engenharia de software, após realizar a implantação de todos os módulos, e os usuários estando aptos a realizar suas funções, é realizada uma reunião com o T.I e diretoria do cliente, para realizar os levantamentos de fatores críticos da implantação, o que foi e o que será realizado, após o final, é assinada uma documentação de fechamento, concluindo assim a implantação do sistema.





















CONCLUSÃO
O SGTR Versão 1.0, foi desenvolvido para atender à necessidade de gerenciar a prestação de serviços de transporte rodoviário da empresa Adriano Polzin ? ME, tem como objetivo principal atender aos requisitos levantados na empresa e como objetivos secundários, possuir um ambiente gráfico (interface home-máquina), ser codificado em camadas, dividido em módulos e manipular os dados armazenados no banco de dados.
O levantamento de requisitos é a etapa mais sensível no desenvolvimento, o qual foi realizado em reuniões com o representante da empresa, onde foram coletadas diversas informações que a mesma utiliza para gerenciar o seu transporte. A empresa mostrou total cooperação com o projeto, não negando acesso algum a documentos e dados. O grande problema desta fase foi a preocupação da não compreensão dos processos de trabalho e das regras de negócio da empresa. Para certificar a integridade dos mesmos, os dados foram documentados e estruturados, e depois apresentados à empresa. As regras de negócio foram revistas e ao final desta etapa, a empresa aprovou a documentação final. Todas as outras etapas foram desenvolvidas conforme estes requisitos. O DER, que representa graficamente o banco de dados, foi construído conforme as devidas especificações, garantindo a integridade dos dados através da implementação de chaves primárias, relacionando as tabelas através das chaves estrangeiras e garantido que campos importantes como CNPJ, CPF, Renavan, Chassi, nome de produto, entre outros, não fossem duplicados no banco. Sobre as tabelas e seus relacionamentos, foi construído o DFD, desenho que representa graficamente o fluxo de dados pelo sistema e demonstra de uma forma geral todo o sistema, e de forma mais específica o processo de emissão do CTRC. A etapa de codificação foi desenvolvida utilizando as informações dos requisitos e regras de negócios da empresa, as tabelas especificadas no DER e os módulos especificados no DFD. De uma forma geral, pode-se afirmar que o sistema implementa todos os requisitos levantados na empresa. Mas, ainda que os requisitos estejam implantados, não existe a garantia da funcionalidade do sistema. Para responder a essa pergunta, é preciso analisar os objetivos secundários.
O primeiro dos objetivos secundários do sistema é a sua interface homem-máquina. No projeto, houve a preocupação de produzir uma interface amigável e atualizada, seguindo um padrão adotado por outros programas. O VB.Net oferece uma grande variedade de componentes de tela, mas foi decidido reduzir este número àqueles mais importantes. Para cada cadastro no banco de dados foi projetada uma tela própria (formulário), permitindo ao usuário identificar-se com elas. Estas telas são compostas por menus, barras de ferramentas, caixas de textos, rótulos, caixas de seleção, calendários, entre outros. Os menus são importantes em uma interface, pois permitem ao usuário acessar as telas ou outros processos do sistema. Foi procurado utilizar o menu em quase todas as telas. Outro componente importante, muito comum em programas com padrão Windows, é a barra de ferramentas, composta por vários botões. Estes botões executam as mesmas funções que os menus, mas de uma forma mais direta, pois uma função em que o usuário precisaria seguir um caminho por vários menus, é executada no único clique do botão. No sistema, foi procurado colocar para processos importantes como gravar, atualizar, excluir, filtrar, fechar, cancelar, acesso tanto por menus quanto por botões na barra de ferramentas. Os rótulos e as caixas de textos são fundamentais para o usuário receber e enviar informações pelo sistema, o qual foi colocado de forma ao usuário seguir um padrão quando estiver manipulando registros do banco. Um componente muito interessante e extremamente utilizado no software é o tabcontrol, componente em forma de um fichário, que permite a criação de diversas telas em um único formulário. Este componente facilitou o trabalho de desenvolvimento, poupando formulários, menus, botões e tornando as telas mais amigáveis. O sistema não permite ao usuário modificar cores de tela, rótulos, caixas, pois este não é objetivo do software. Entretanto, como ele trabalha em um ambiente Windows, quando o usuário altera os padrões da área de trabalho, o padrão dos formulários do sistema é alterado. Para finalizar, pode-se afirmar que a interface homem-máquina permite uma boa interação do usuário com o sistema, pois ela não abusa de cores extravagantes que poderiam prejudicar a visão, de excessos de componentes que poderiam deixar o usuário desorientado e segue um padrão definido, para que o usuário não tenha que se adaptar a diferentes ambientes para diferentes cadastros.
O segundo dos objetivos secundários do sistema é a codificação do mesmo em camadas. Essa etapa foi importante, pois permitiu um maior entendimento do funcionamento do sistema, uma melhor facilidade de manutenção e um possível reaproveitamento do código. O entendimento do sistema se dá pelo motivo de separar as camadas do programa, onde cada uma realiza sua tarefa específica sem depender diretamente da outra. A camada do servidor, responsável por administrar as tabelas e funções que acessam os dados, fica localizada no próprio banco de dados. A camada de negócios é o local no qual se localizam as classes de objetos e as classes que fazem a ligação da camada do servidor com a camada do cliente. A camada do cliente é o local do software onde esta localizada a interface gráfica, e é a única visível para o usuário. A divisão em camadas torna a manutenção mais eficiente, pois se um problema ocorrer (por exemplo: um processo não grava mais dados na tabela estado) pode-se isolar uma das camadas para localizá-lo, e se ele não for identificado nesta, faz-se o teste na próxima camada. O grande objetivo deste método é o reaproveitamento do código. A programação em camadas foi muito positiva pelo lado do aprendizado. Através dela, foi possível empregar conceitos da POO (Programação Orientada a Objetos), utilizados atualmente por grandes desenvolvedores de software. O uso de classes, atributos, propriedades, métodos, herança e encapsulamento foram plenamente utilizadas neste projeto, mas não foi possível implementar dois conceitos importantes da POO, polimorfismo e interface, já que eles permitem realmente codificar classes totalmente reaproveitáveis. Pelos seus conceitos serem difíceis de assimilar, e pelo não aprofundamento no estudo destes, até pelo tempo do projeto, eles não foram utilizados.
O terceiro dos objetivos secundários é a divisão do sistema em módulos, com a tarefa de facilitar o entendimento do software pelo usuário. Um módulo agrupa cadastros que se relacionam primeiro entre si, para depois se relacionarem com os outros módulos. Analisando o correto funcionamento dos módulos é que pode ser verificado se o sistema é funcional:
? O módulo Pessoa é formado pelos cadastros das tabelas Estado, Cidade e Pessoa Física/Jurídica. Este módulo atendeu a necessidade da empresa em gerenciar os dados de seus clientes e dos profissionais que dirigem caminhões e simplificou o trabalho do usuário, ao unir um único formulário, os dados de pessoas físicas e jurídicas. As tabelas Estado e Cidade permitiram que o lançamento dos dados destas fossem recuperados na edição de dados na tabela Pessoa Física/Jurídica, poupando trabalho de digitação destes campos pelo usuário;
? O módulo Veículo é formado pelos cadastros das tabelas Tipo Veículo, Veículo, Semi-Reboque, Transportador e Segurador. O cadastro de Tipo de Veículo permitiu ao usuário armazenar dados dos diferentes tipos de veículos que fazem transporte no Brasil e identificar os veículos e semi-reboques sem a necessidade de digitação deste tipo de informação a cada novo lançamento destes. As tabelas Veículos e Semi-Reboque atendem a necessidade de cadastrar os veículos e carretas que prestam serviços para a empresa. Aqui percebeu-se um primeiro erro do projeto. As duas tabelas guardam o mesmo tipo de informação, sendo separadas só pela identificação do tipo de veículo. Elas poderiam ter sido unificadas, como feito com a tabela Pessoa Física/Jurídica, diminuindo o número de processos. A tabela Transportador atendeu à necessidade da empresa de constituir um cadastro formado pelo conjunto transportador, onde são identificados os dados do veículo, do semi-reboque, do proprietário e do motorista, os quais são enviados para a seguradora, responsável por liberar o carregamento do motorista. O cadastro cumpre a função, mas apresentou um problema na atualização dos dados. Como regra de negócio da empresa, um motorista só pode dirigir um único veículo, e um veículo só pode aparecer uma única vez neste cadastro. Esta se justifica pelo motivo de os dados do motorista e do veículo serem passados para a seguradora, e se a empresa informa que um motorista e seu veiculo carregam para uma determinada empresa, este motorista não pode aparecer no mesmo dia com outro veiculo, transportando para esta mesma ou outra empresa, sendo por isso, barrado pela seguradora. Para um motorista trocar de veículo e os mesmos já estiverem cadastrados, é preciso que ele seja excluído do banco de dados, mas a exclusão não é permitida se o identificador (chave primária) deste registro estiver sendo utilizado na tabela Ordem de Coleta. Como troca de veículos entre motoristas é algo constante, a tabela Transportador tornou-se um problema e precisa ser revista no projeto. O cadastro da tabela Seguro trouxe uma solução para a empresa, pois a mesma não tinha controle sobre o prazo de validade que a seguradora fornecia a cada motorista após a sua liberação. Em uma tentativa de emitir uma ordem de coleta, o sistema, através desta tabela, informa o usuário se a liberação do trabalho do motorista venceu.
? O módulo Carga Tributária é formado pelas tabelas Código Fiscal, IRRF e ICMS. O cadastro Código Fiscal gerencia a natureza da operação, identificando o estado de origem do produto e seu estado de destino. O cadastro do IRRF gerencia as faixas de cobrança do imposto de renda. Ele seria utilizado para fazer o cálculo do IRRF sobre o faturamento de motoristas autônomos, mas a empresa decidiu não mais realizar esta função, por não haver obrigação de destacar o imposto na emissão do CTRC. Este cadastro não foi retirado a pedido da própria empresa, prevendo uma possível mudança da lei. O cadastro de ICMS permite ao usuário identificar a taxa do imposto cobrado por cada estado brasileiro, não precisando mais digitá-lo na emissão do CTRC, se houver incidência do imposto;
? O módulo Retirada é formado pelas tabelas Produto, Pedido, Programação e Ordem de Coleta. Este módulo apresentou uma solução de gerenciamento de retirada de produtos para empresa, pois a mesma não possuía nenhuma ferramenta que realiza-se esta tarefa. O único controle da empresa é uma ficha manual, na qual ela anota os produtos a serem retirados e a quantidade que já foi transportada. O cadastro de Produto gerencia todos os produtos que a empresa transporta. O cadastro Pedido gerencia os pedidos de retirada que a empresa recebe de seus clientes e traz para ele informações que eram lançadas na emissão do CTRC, como produto, local de retirada e entrega, responsável pelo frete, valor do frete cobrado, valor do frete pago ao motorista, natureza da operação, incidência de ICMS, etc.. O cadastro de Programação permite a empresa programar a retirada dos pedidos recebidos dentro dos prazos estabelecidos por eles. A programação é uma ferramenta a qual a empresa pode verificar o cumprimento de suas metas de retiradas. O cadastro da Ordem de Coleta permite a empresa gerenciar as autorizações que ela fornece para seus veículos transportadores. A ordem de coleta pode ser impressa em um formulário para o motorista apresentá-lo a portaria da empresa, processo este que é feito manualmente. Este módulo apresenta uma falha na elaboração dos relatórios. Por serem cadastros de estrema importância, pois são os principais gerenciadores dos negócios da empresa, seriam necessários relatórios com dados específicos sobre os pedidos e as programações, objetivando-se principalmente as metas e os resultados. Relatórios requerem tempo para a aprendizagem, e este não foi o suficiente para a busca de informações que ajudassem na elaboração dos mesmos.
? O módulo CTRC é formado pelo cadastro do CTRC. O usuário, para emitir um novo documento, precisa lançar manualmente todos os dados que o compõem. Através do cadastro, o usuário somente identifica a programação e a ordem de coleta para o sistema recuperar a grande maioria dos dados. Somente dados que são característicos a cada CTRC são lançado pelo usuário. O cadastro executa automaticamente todos os cálculos necessários, além de fazer atualizações de saldo no Cadastro Pedido e Programação. A impressão não é realizada diretamente, pois é aberta uma janela de visualização de impressão, onde o usuário pode identificar a integridade do documento antes de imprimí-lo. A geração da tela de impressão foi o ponto negativo deste módulo, pois mesmo, em uma máquina com um processador de dois núcleos com 2.0 Ghz de clock e 1 GB de memória, demorou 10 segundos para ser gerada. Esta demora comprometeu o tempo ganho com recursos do módulo. O ponto positivo é que o usuário ganhou produtividade para a edição dos dados de um CTRC.
? O módulo Usuário permite ao administrador do programa criar novos usuários para o banco de dados e para o sistema e também excluí-los. Neste módulo, o administrador decide quais os níveis de acesso que os usuários possuirão sobre as informações do banco, sendo um fator positivo, pois estas são vitais para a empresa, e o administrador precisa ter um controle sobre quem as acessa.
? O módulo Sistema permite ao administrador realizar tarefas do banco de dados, que só seriam possíveis dentro de um aplicativo administrador do PostgreSQL. Estas tarefas são o backup, a limpeza do banco, a atualização das estatísticas das tabelas e o processo que permite restaurar a base de dados. Permitir que o usuário realize estas tarefas sem um conhecimento específico de banco de dados, é o ponto positivo deste módulo, já que tarefas de backup são importantes para a preservação dos dados, e a limpeza e atualização são necessárias quando o banco possuir uma grande quantidade de informações. O processo de restauração é importante, pois após algum evento que venha a causar danos no sistema, o usuário pode recuperar sua base de dados com a última atualização do backup. O ponto negativo é o software não realizar um backup quando o usuário finaliza o sistema (o backup é realizado na inicialização) e nem emitir qualquer aviso de que ele deva ser feito, pois o usuário pode utilizar o sistema por um longo período sem executar um processo de backup e se na saída do sistema ocorrer algum problema, todas as informações deste período serão perdidas.
Ao final da análise dos objetivos primários e secundários é possível concluir que o programa é funcional e que atende a todos os requisitos levantados na empresa. Muitos dos problemas detectados nesta análise são provenientes de soluções procuradas para resolver as necessidades da empresa, a qual não possuía até o presente momento nenhuma ferramenta para sua utilização. O único cadastro que apresentou um problema que pode causar falhas no programa, através do relacionamento de dados, é o do Transportador. Ele precisará ser revisto, com a mudança de algumas regras de restrições, para facilitar a atualização dos dados. A questão dos conceitos de polimorfismo e interface, referentes à POO, podem ser aprendidos através da consulta a autores e implementados em outros projetos, assim como o aprendizado do uso de relatórios mais elaborados, e que podem trazer mais informações ao usuário. Todas as tabelas do banco de dados são gerenciadas pelo usuário através das telas divididas em módulos, assim como é possível ao usuário administrar os recursos do banco de dados, tais como backups e análise de estatísticas para preservar a integridade do banco. O programa tinha proposto ser capaz de imprimir o CTRC, o qual é o objetivo final deste software, sendo este atingido. O objetivo de possuir uma interface gráfica atual, condizente com os atuais programas, foi atingido mesmo com a utilização somente de componentes básicos, mas que oferecem ao usuário uma boa interação com o programa. O PostgreSQL demonstrou ser um SGBD confiável, estável e seguro, capaz de oferecer recursos semelhantes aos SGBDs comerciais, e ser uma alternativa viável para empresas de pequeno e médio porte. Para finalizar, o sistema não é um produto final. Como qualquer outro, ele precisa passar por manutenções e atualizações e, no decorrer destes processos, essas falhas serão analisadas e corrigidas com o objetivo de aumentar a confiabilidade do sistema.






























REFERENCIAL BIBLIOGRÁFICO

BARBOSA, G.; RABAÇA C. A.. Dicionário de comunicação. Rio de Janeiro: Campus, 2001 ? 2º Edição.

BRASIL, C/C++. Diagrama Entidade Relacionamento. Disponível em http://www.cbrasil.org/wiki/index.php?title=Diagrama_Entidade_Relacionamento. Acessado em 09 de março de 2008.

CAVALCANTI, J. C. D.. VB.NET plataforma profissional : teoria e aplicações práticas da linguagem. São Paulo: Érica, 2006 ? 2ª Edição.

DANTAS, Daniela Cristina Giorgetti; ALVES, Rafael Ferreira. Sistemas de Informação ERP: Uma visão gerencial de ciclo de vida de implantação. Disponível em http://www.abepro.org.br/biblioteca/ENEGEP2002_TR91_0816.pdf. Acessado em 24 de outubro de 2008.

DIAS, M. A. P.. Administração de materiais: uma abordagem logística. São Paulo: Atlas, 1993 ? 4º Edição.

ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. São Paulo: Pearson Addison Wesley, 2005 ? 4º Edição.

DEITEL, Harvey M. & Paul J.. JAVA: Como Programar. Ed. Prentice-Hall, 2005 ? 6ª Edição.

DOCUMENTATION, KDE. Capitulo 2. Fundamentos da UML. Disponível em http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-basics.html. Acessado em 09 de março de 2008.

FERNANDES, J. H. C. Textos e Notas sobre a Engenharia de Software e Sistemas de Informação. Disponível em http://www.cic.unb.br/~jhcf/MyBooks/iess/index.html. Acessado em 01 de março de 2008.

FILHO, W. de P.. Engenharia de Software: fundamento, métodos e padrões. Março de 2000. Disponível em http://www.wppf.uaivip.com.br/praxis/livro.htm. Acessado em 08 de março de 2008.

INFORMATICA, Talentum. Software Gestor. Disponível em http://www.talentuminformatica.com.br/produtos.htm. Acessado em: 01 de março de 2008.

KERN, V. M.. O que são requisitos. Disponível em http://209.85.165.104/search?q=cache:t2jGrkQndi4J:webmail.faac.unesp.br/~paula/Paula/requisitos.doc+requisitos&hl=pt-BR&ct=clnk&cd=2&gl=br&lr=lang_pt. Acessado em 09 de março de 2008.

MACORATTI, J. C.. A gestão de requisitos. Disponível em http://imasters.uol.com.br/artigo/3860/des_de_software/a_gestao_de_requisitos/. Acessado em 09 de março de 2008.

MACORATTI, J. C. Aplicação de acesso a dados em 3 camadas. Disponível em http://www.macoratti.net/vbn_a3c1.htm. Acessado em 18 de abril de 2008.

MARTINS, P. G.; ALT, P. R. C.. Administração de materiais e recursos patrimoniais. São Paulo: Saraiva, 2002.

MIRA, C. A.. Logística: o último rincão do marketing. São Paulo: Lettera.doc, 2004.

MYERS, G.. The Art of Software Testing. Wiley, 1979.

NIEDERAUER, J.. Guia de consulta rápida PostgreSQL. São Paulo: Novatec Editora Ltda, 2004 - 2ª Edição.

NOVA ENCICLOPÉDIA BARSA. Logística. São Paulo: Encyclopaedia Britannica do Brasil Publicações, 2000.

O?BRIEN, J. A.. Sistemas de Informação e as decisões gerenciais na era da Internet. São Paulo: Saraiva, 2003 - 9º Edição.

OLIVEIRA, Marilene Olivier Ferreira de; JESUS, Renata Gomes de. Implantação de Sistemas ERP: Tecnologia e Pessoas na Implantação do SAP R/3. Disponível em http://www.scribd.com/doc/100614/Implementacao-de-ERP. Acessado em 30 de outubro de 2008.

PALMA, Fernando. Artigo ? I: Execução de Testes e Gerência de Testes. Abril, 2007. Disponível em http://testesdesoftware.blogspot.com. Acessado em 09 de setembro de 2008.

PALMA, Fernando. Artigo ? II: Como Amadurecer o Processo de Testes. Maio, 2007. Disponível em http://testesdesoftware.blogspot.com. Acessado em 09 de setembro de 2008.

PALMA, Fernando. Artigo ? III: O Custo da Não Qualidade. Maio, 2007. Disponível em http://testesdesoftware.blogspot.com. Acessado em 09 de setembro de 2008.

PEREIRA, Paulo Sergio. Artigo SQL Magazine 55 ? Mantendo as regras de negócios no banco de dados: os prós e os contras. Disponível em http://www.devmedia.com.br/articles/viewcomp.asp?comp=10350&hl=. Acessado em 23 de outubro de 2008.

PEREIRA, W. P.. Delphi 2005: aplicações com banco de dados com Interbase 7.5 e MySQL 4.0.23. São Paulo: Érica, 2005 ? 1ª Edição.

PEREIRA, R. O.. O que é a gestão da informação. Disponível em http://www.fae.edu/intelligentia/opiniao/lerOpiniao.asp?lngIdArtigo=7148&lngIdArea=194. Acessado em: 08 de março de 2008.

PFLEEGER, S. L.. Engenharia de Software: teoria e prática. São Paulo: Prentice Hall, 2004 ? 2º Edição.

PRESSMAN, R.S.. Engenharia de software. São Paulo: McGraw-Hill, 2006 ? 6 Edição.

RSI, Informática Modelo de ROI para teste de software. Disponível em http://www.comuni.com.br/default.asp?link=releases&ativo=clientes&id_releases=511&id_cliente=106. Acessado em 17 de outrubro de 2008.

SANDRONI, Paulo. Novíssimo dicionário de economia. São Paulo: Beste Seller. 2002 ? 8 Edição.

SANTOS, S. dos. Sucesso no desenvolvimento de software usando uma metodologia de desenvolvimento. Disponível em http://imasters.uol.com.br/artigo/6566/sucesso_no_desenvolvimento_de_software_usando_uma_metodologia_de_desenvolvimento. Acessado em 01 de março de 2008.

SILVA, R. O. da. Teoria da administração. São Paulo: Pioneira Thomsom Learning - 2001.

SISTEMAS, BSoft. Sobre o controle de transportadoras. Disponível em HTTP://www.bsoftsistemas.com/index.php?area=sobre. Acessado em 01 de março de 2008.

SILVA, Luiz Inácio Lula da. Lei nº 11.442, de 5 de janeiro de 2007. Disponível em http://www.planalto.gov.br/CCIVIL/_Ato2007-2010/2007/Lei/L11442.htm. Acessado em 01 de março de 2008.

SOFIST. Testes de Sistema. Disponível em http://www.sofist.com.br/solucoes/projeto/testes_sistema/. Acessado em 23 de outubro de 2008.

SYSTEM, Active. Active Trans. Software de gerenciamento de transportes. Disponível em http://www.activesystem.com.br/atrans.html?gclid=CIPv_pzH7JECFQZbHgodzAqJqg. Acessado em 01 de março de 2008.

URMAN, S. Oracle 9i: Programação PL/SQL. Rio de Janeiro, Campus - 2002.

WINBLAD, A. L; EDWARDS S. D.;KING D. P.. Software orientado a objeto. São Paulo: Makron Books - 1993.



ANEXO A ? Ordem de Carregamento



ANEXO B ? Nota CTRC





APÊNDICE A ? Cronograma do Projeto
























APÊNDICE B ? Levantamento de requisitos
DADOS DO USUÁRIO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Usuário Número Inteiro Sim Chave Primária
Nome do Usuário Texto Sim Campo Único
Login Texto Sim Campo Único
Senha Texto Sim
Status Texto Sim
Data Dia/Mês/Ano Sim
DADOS DA CIDADE
Campo Tipo de dado Obrigatoriedade Restrições
Código da Cidade Número Inteiro Sim Chave Primária
Nome da Cidade Texto Sim Campo Único
Herda Estado Número Inteiro Sim Chave Estrangeira
DADOS DE ESTADO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Estado Número Inteiro Sim Chave Primária
Nome do Estado Texto Sim Campo Único
UF do Estado Texto Sim Campo Único
DADOS ICMS
Campo Tipo de dado Obrigatoriedade Restrições
Código ICMS Número Inteiro Sim Chave Primária
Código do Estado Número Inteiro Sim Chave Estrangeira
Taxa do ICMS Número Sim Campo Único
DADOS PESSOA FÍSICA/JURÍDICA
Campo Tipo de dado Obrigatoriedade Restrições
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Primária
Nome Razão Texto Sim Campo Único
Endereço Texto Sim
Bairro Texto Sim
Código da Cidade Número Inteiro Sim Chave Estrangeira
Código do Estado Número Inteiro Sim Chave Estrangeira
CEP Texto Sim
Caixa Postal Texto Sim
Telefone Texto Sim
Celular Texto Não
E-mail Texto Não
Data Cadastro Dia/Mês/Ano Sim
Tipo Texto Sim
DADOS PESSOA FÍSICA
Campo Tipo de dado Obrigatoriedade Restrições
CPF Texto Sim Chave Primária
RG Texto Sim Campo Único
Data de Nascimento Dia/Mês/Ano Sim
CNH Texto Sim Campo Único
CNH Prontuário Texto Sim
Letra da CNH Texto Sim
Data de Validade da CNH Dia/Mês/Ano Sim
Nome do Pai Texto Sim
Nome da Mãe Texto Sim
Número de Dependentes Número Inteiro Não
INSC/INSS Texto Não
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
DADOS PESSOA JURÍDICA
Campo Tipo de dado Obrigatoriedade Restrições
CNPJ Texto Sim Chave Primária
IE Texto Sim Campo Único
Contato Texto Não
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
DADOS VEÍCULO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Veículo Número Inteiro Sim Chave Primária
Placa Texto Sim Campo Único
Código da Cidade Número Inteiro Sim Chave Estrangeira
Código do Estado Número Inteiro Sim Chave Estrangeira
Ano Número Inteiro Sim
Chassis Texto Sim Campo Único
Marca Texto Não
Cor Texto Não
Renavan Texto Sim Campo Único
Data Cadastro Dia/Mês/Ano Sim
Código do Tipo do Veículo Número Inteiro Sim Chave Estrangeira
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
DADOS TIPO VEÍCULO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Tipo do Veículo Número Inteiro Sim Chave Primária
Descrição Texto Sim Campo Único
DADOS SEMI REBOQUE
Campo Tipo de dado Obrigatoriedade Restrições
Código do Semi Reboque Número Inteiro Sim Chave Primária
Placa Texto Sim Campo Único
Código da Cidade Número Inteiro Sim Chave Estrangeira
Código do Estado Número Inteiro Sim Chave Estrangeira
Ano Número Inteiro Sim
Chassis Texto Sim Campo Único
Marca Texto Não
Cor Texto Não
Renavan Texto Sim
Data Cadastro Dia/Mês/Ano Sim
Código do Tipo do Veículo Número Inteiro Sim Chave Estrangeira
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
DADOS TRANSPORTADOR
Campo Tipo de dado Obrigatoriedade Restrições
Código do Transportador Número Inteiro Sim Chave Primária
Frota Texto Sim
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
Campo Único
Código do Veículo Número Inteiro Sim Chave Estrangeira
Campo Único
Placa 1 Texto Não
Placa 2 Texto Não
Placa 3 Texto Não
Capacidade de Carga Número Preciso Não
Conjunto Texto Não
DADOS SEGURADORA
Campo Tipo de dado Obrigatoriedade Restrições
Código da Seguradora Número Inteiro Sim Chave Primária
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
Campo Único
Número da Seguradora Número Inteiro Sim Campo Único
Data de Lançamento Dia/Mês/Ano Sim
Data de Validade Dia/Mês/Ano Sim
DADOS ORDEM COLETA
Campo Tipo de dado Obrigatoriedade Restrições
Código Ordem de Coleta Número Inteiro Sim Chave Primária
Data de Cadastro Dia/Mês/Ano Sim
Data de Retirada Dia/Mês/Ano Sim
DADOS PRODUTO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Produto Número Inteiro Sim Chave Primária
Descrição Texto Sim Campo Único
Volume Texto Sim
Sigla Texto Sim
DADOS CÓDIGO FISCAL
Campo Tipo de dado Obrigatoriedade Restrições
Código para Código Fiscal Número Inteiro Sim Chave Primária
Descrição Texto Sim Campo Único
Natureza da Operação Texto Não
DADOS PEDIDO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Pedido Número Inteiro Sim Chave Primária
Código do Produto Número Inteiro Sim Chave Estrangeira
Remetente Texto Não
Destinatário Texto Não
Local de Retirada Texto Não
Local de Entrega Texto Não
Consignatário Texto Não
Data de Lançamento Dia/Mês/Ano Sim
Data de Início Dia/Mês/Ano Sim
Data de Finalização Dia/Mês/Ano Sim
Quantidade do Pedido Número Preciso Sim
Quantidade de Retirada Número Preciso Sim
Saldo Número Preciso Não
Valor Frete Total Número Preciso Não
Primeira Condição para Pedido Texto Não
Valor Frete Motorista Número Preciso Não
Segunda Condição para Pedido Texto Não
Índice ICMS Texto Sim
Taxa ICMS Número Preciso Sim
Status Texto Sim
Código Pessoa Física/Jurídica Número Inteiro Sim Chave Estrangeira
Código para Código Fiscal Número Inteiro Sim Chave Estrangeira
DADOS PROGRAMAÇÃO
Campo Tipo de dado Obrigatoriedade Restrições
Código da Programação Número Inteiro Sim Chave Primária
Data Dia/Mês/Ano Sim Campo Único
Código do Pedido Número Inteiro Sim Chave Estrangeira
Quantidade Programada Número Preciso Sim
Quantidade Retirada Número Preciso Não
Saldo Número Preciso Não
DADOS IRRF
Campo Tipo de dado Obrigatoriedade Restrições
Código do IRRF Número Inteiro Sim Chave Primária
IRRF Percentual Número Inteiro Sim
IRRF Faixa Inicial Número Sim
IRRF Faixa Final Número Sim
IRRF Parcela de Dedução Texto Não
irfdedpordep Número Inteiro Sim
DADOS CTRC
Campo Tipo de dado Obrigatoriedade Restrições
Código CTRC Número Inteiro Sim Chave Primária
Data de Emissão Dia/Mês/Ano Sim
Código Ordem de Coleta Número Inteiro Sim Chave Estrangeira
Número da Nota Fiscal Número Inteiro Sim
Peso Bruto Número Preciso Sim
Peso Líquido Número Preciso Sim
Valor da Nota Fiscal Número Preciso Sim
Quantidade Inteiro Não
Descrição Texto Não
Taxa de Seguro Número Preciso Não
Valor do Seguro Número Preciso Não
Valor do Frete Número Preciso Sim
Primeiro Vapor Carga Descarga Número Preciso Não
Primeiro Valor Pedágio Número Preciso Não
Valor Total do Frete Número Preciso Sim
Valor do ICMS Número Preciso Não
Mensagem Texto Não
Frete do Motorista Número Preciso Sim
Segundo Valor Carga Descarga Número Preciso Não
Segundo Valor Pedágio Número Preciso Não
Subtotal do Frete do Motorista Número Preciso Não
Valor do IRRF Número Preciso Não
Valor SESTSENAT Número Preciso Não
Adiantamento Número Preciso Não
Valor Final do Frete do Motorista Número Preciso Sim
Observações Texto Não
Status Texto Não
DADOS HISTÓRICO
Campo Tipo de dado Obrigatoriedade Restrições
Código do Histórico Número Inteiro Sim Chave Primária
Data do Histórico Dia/Mês/Ano Sim
Tabela Texto Sim
Evento Texto Sim
Código do Usuário Número Inteiro Sim Chave Estrangeira
DADOS MENSAGEM
Campo Tipo de dado Obrigatoriedade Restrições
Mensagem de Texto Texto Sim Chave Primária



APÊNDICE C ? Tabelas do Banco de Dados

TABELA CIDADE
Campo Tipo de dado Obrigatoriedade Restrições
CidID Smalling Not Null Primary Key
CidNome Character Varying(50) Not Null Unique Key
EstID Smalling Not Null Foreign Key
TABELA CÓDIGO FISCAL
Campo Tipo de dado Obrigatoriedade Restrições
CodID Integer Not Null Primary Key
CodDescricao Character Varying(50) Not Null Unique Key
CodNaturezaOperacao Character Varying(50)
TABELA CTRC
Campo Tipo de dado Obrigatoriedade Restrições
CtrcID Integer Not Null Primary Key
CtrcDataEmissao Timestamp With Time Zone Not Null
OrdID Integer Not Null Foreign Key
CtrcNotaFiscal Integer Not Null
CtrcPesoBruto Double Precision Not Null
CtrcPesoLiquido Double Precision Not Null
CtrcValorNotaFiscal Double Precision Not Null
CtrcQtde Integer
CtrcDescricao Character Varying(50)
CtrcTaxaSeguro Double Precision
CtrcValorSeguro Double Precision
CtrcValorFrete Double Precision Not Null
CtrcCargaDescarga1 Double Precision
CtrcPedagio1 Double Precision
CtrcValorFreteTotal Double Precision Not Null
CtrcValorICMS Double Precision
CtrcMensagem Character Varying(1000)
CtrcFreteMotorista Double Precision Not Null
CtrcCargaDescarga2 Double Precision
CtrcPedagio2 Double Precision
CtrcSubTotalFreteMot Double Precision
CtrcValorIRRF Double Precision
CtrcValorSestSenat Double Precision
CtrcAdiantamento Double Precision
CtrcValorFinalFreteMot Double Precision Not Null
CtrcObservacoes Character Varying(1000)
CtrcStatus Character Varying(30)
TABELA ESTADO
Campo Tipo de dado Obrigatoriedade Restrições
EstID Smallint Not Null Primary Key
EstNome Character Varying(50) Not Null Unique Key
EstUF Character Varying(2) Not Null Unique Key
TABELA HISTÓRICO
Campo Tipo de dado Obrigatoriedade Restrições
HisID BigInt Not Null Primary Key
HisData Timestamp With Time Zone Not Null
HisTabela Character Varying(50) Not Null
HisEvento Character Varying(30) Not Null
UsuID Smallint Not Null Foreign Key
TABELA ICMS
Campo Tipo de dado Obrigatoriedade Restrições
IcmsID Integer Not Null Primary Key
EstID Smallint Not Null Foreign Key
IcmsTaxa Double Precision Not Null Unique Key
TABELA IRRF
Campo Tipo de dado Obrigatoriedade Restrições
IrfID Integer Not Null Primary Key
IrfPercentual Integer Not Null
IrfFaixaInicial Numeric(12,2) Not Null
IrfFaixaFinal Numeric(12,2) Not Null
IrfParDeducao Character Varying(12)
IrfDedPorDep Integer Not Null
TABELA MENSAGEM
Campo Tipo de dado Obrigatoriedade Restrições
MensTexto Character Varying(1000) Not Null Primary Key
TABELA ORDEM COLETA
Campo Tipo de dado Obrigatoriedade Restrições
OrdID Integer Not Null Primary Key
OrdDataCadastro Timestamp With Time Zone Not Null
OrdDataRetirada Timestamp With Time Zone Not Null
ProgID Integer Not Null Foreign Key
TraID Integer Not Null Foreign Key
OrdQuantidade Double Precision Not Null
OrdStatus Character Varying(20)
TABELA PEDIDO
Campo Tipo de dado Obrigatoriedade Restrições
PedID Integer Not Null Primary Key
ProID Integer Not Null Foreign Key
PedRemetente Character Varying(80)
PedDestinatario Character Varying(80)
PedLocalRetirada Character Varying(80)
PedLocalEntrega Character Varying(80)
PedConsignatario Character Varying(80)
PedDataLancamento Timestamp With Time Zone Not Null
PedDataInicio Timestamp With Time Zone Not Null
PedDataFim Timestamp With Time Zone Not Null
PedQtdePedido Double Precision Not Null
PedQtdeRetirada Double Precision Not Null
PedSaldo Double Precision
PedValorFreteTotal Double Precision
PedCondicao1 Character Varying(20)
PedValorFreteMotorista Double Precision
PedCondicao2 Ccharacter Varying(20)
PedIncideICMS Character Varying(10) Not Null
PedTaxaICMS Double Precision Not Null
PedStatus Character Varying(50) Not Null
PfjID Integer Not Null Foreign Key
CodID integer Not Null Foreign Key
TABELA PESSOA FÍSICA
Campo Tipo de dado Obrigatoriedade Restrições
PefCPF Character Varying(14) Not Null Primary Key
PefRG Character Varying(12) Not Null Unique Key
PefDataNasc Timestamp Without Time Zone Not Null
PefCNH Character Varying(15) Not Null Unique Key
PefCNHProntuario Character Varying(10) Not Null
PefLetraCarta Character Varying(3) Not Null
PefDataValidade Timestamp Without Time Zone Not Null
PefPai Character Varying(80) Not Null
PefMae Character Varying(80) Not Null
PefNúmeroDependentes Smallint
PefInscInss Character Varying(20)
PfjID Integer Not Null Foreign Key
TABELA PESSOA FÍSICA / JURÍDICA
Campo Tipo de dado Obrigatoriedade Restrições
PfjID Integer Not Null Primary Key
PfjNomeRazao Character Varying(80) Not Null Unique Key
PfjEndereco Character Varying(100) Not Null
PfjBairro Character Varying(50) Not Null
CidID Smallint Not Null Foreign Key
EstID Smallint Not Null Foreign Key
PfjCep Character Varying(9) Not Null
PfjCaixaPostal Character Varying(30) Not Null
PfjTelefone Character Varying(18) Not Null
PfjCelular Character Varying(18)
PfjEmail Character Varying(60)
PfjDataCad Timestamp With Time Zone Not Null
PfjTipo Character Varying(20) Not Null
TABELA PESSOA JURÍDICA
Campo Tipo de dado Obrigatoriedade Restrições
PejCnpj Character Varying(30) Not Null Primary Key
PejIe Character Varying(30) Not Null Unique Key
PejContato Character Varying(80)
PfjID Integer Not Null Foreign Key
TABELA PRODUTO
Campo Tipo de dado Obrigatoriedade Restrições
ProID Integer Not Null Primary Key
ProDescricao Character Varying(70) Not Null Unique Key
ProVolume Character Varying(50) Not Null
ProSigla Character Varying(3) Not Null
TABELA PROGRAMAÇÃO
Campo Tipo de dado Obrigatoriedade Restrições
ProgID Integer Not Null Primary Key
ProgData Timestamp With Time Zone Not Null Unique Key
PedID Integer Not Null Foreign Key
ProgQtdeProgramada Double Precision Not Null
ProgQtdeRetirada Double Precision
ProgSaldo Double Precision
TABELA SEGURADORA
Campo Tipo de dado Obrigatoriedade Restrições
SegID Integer Not Null Primary Key
PfjID Integer Not Null Foreign Key
Unique Key
SegNúmero Integer Not Null Unique Key
SegDataLancamento Timestamp With Time Zone Not Null
SegDataValidade Timestamp With Time Zone Not Null
TABELA SEMI REBOQUE
Campo Tipo de dado Obrigatoriedade Restrições
SemID Integer Not Null Primary Key
SemPlaca Character Varying(8) Not Null Unique Key
CidID Smallint Not Null Foreign Key
EstID Smallint Not Null Foreign Key
SemAno Smallint Not Null
SemChassi Character Varying(20) Not Null Unique Key
SemMarca Character Varying(50)
SemCor Character Varying(30)
SemRenavan Character Varying(10) Not Null
SemDataCad Timestamp With Time Zone Not Null
TipID Smallint Not Null Foreign Key
PfjID Integer Not Null Foreign Key
TABELA USUÁRIO
Campo Tipo de dado Obrigatoriedade Restrições
UsuID Smallint Not Null Primary Key
UsuNome Character Varying(60) Not Null Unique Key
UsuLogin Character Varying(30) Not Null Unique Key
UsuSenha Character Varying(15) Not Null
UsuStatus Character Varying(30) Not Null
UsuData Timestamp With Time Zone Not Null
TABELA TIPO VEÍCULO
Campo Tipo de dado Obrigatoriedade Restrições
TipID Integer Not Null Primary Key
TipDescricao Character Varying(100) Not Null Unique Key
TABELA TRANSPORTADOR
Campo Tipo de dado Obrigatoriedade Restrições
TraID Integer Not Null Primary Key
TraFrota Character Varying(50) Not Null
PfjID Integer Not Null Foreign Key
Unique Key
VeiID Integer Not Null Foreign Key
Unique Key
TraPlaca1 Character Varying(8)
TraPlaca2 Character Varying(8)
TraPlaca3 Character Varying(8)
TraCapCarga Double Precision
TraConjunto Character Varying(50)
TABELA VEÍCULO
Campo Tipo de dado Obrigatoriedade Restrições
VeiID Integer Not Null Primary Key
VeiPlaca Character Varying(8) Not Null Unique Key
CidID Smallint Not Null Foreign Key
EstID Smallint Not Null Foreign Key
VeiAno Integer Not Null
VeiChassi Character Varying(20) Not Null Unique Key
VeiMarca Character Varying(20)
VeiCor Character Varying(20)
VeiRenavan Character Varying(20) Not Null Unique Key
VeiDataCad Timestamp With Time Zone Not Null
TipID Integer Not Null Foreign Key
PfjID Integer Not Null Foreign Key



APÊNDICE D ? DFD (Dados Faturista/Administrador)
























APÊNDICE E ? DFD do Usuário
























APÊNDICE F ? DFD do CTRC
























APÊNDICE G ? Diagrama de Entidade e Relacionamento (DER)
























APÊNDICE H ? Manual do Sistema CTRC

























JOÃO MARCOS FAXINA
LUCIO FLÁVIO BOAVENTURA
MARCOS VASSOLER
RODRIGO MARCOLINO
VÉRLEI RICARDO DA SILVA

Manual do Usuário
(Instalação, Configuração e Operação)
SGTR ? Versão 1.0
(Sistema Gerenciador de Transporte Rodoviário)









1ª Edição
Setembro de 2008

SUMÁRIO

INTRODUÇÃO 6
SOBRE ESTE MANUAL 8
INFORMAÇÕES IMPORTANTES 9
FUNÇÃO DO BANCO DE DADOS 10
REQUISITO DE HARDWARE E SOFTWARE PARA O SISTEMA 11
I ? INSTALAÇÃO DO POSTGRESQL E DO SGTR VERSÃO 1.O 12
1 ? INSTALANDO O POSTGRESQL 12
2 ? CONFIGURANDO O DRIVE ODBC 25
3 ? INSTALANDO O SGTR VERSÃO 1.0 27
II ? INICIALIZAÇÃO DO SISTEMA E TELA PRINCIPAL 31
1 ? INICIALIZANDO O SGTR VERSÃO 1.0 31
2 ? CONEXÃO COM O BANCO DE DADOS 31
3 ? A TELA PRINCIPAL DO SISTEMA 32
III ? MÓDULO DE GERENCIAMENTO DE PESSOAS FISICAS E JURÍDICAS 35
1 ? CADASTRO DE ESTADO 35
1.1 ? INSERINDO UM NOVO ESTADO 37
1.2 ? ATUALIZANDO E FILTRANDO UM ESTADO 38
1.3 ? EXCLUINDO UM ESTADO 40
1.4 ? GERANDO O RELATÓRIO 41
2 ? CADASTRO DE CIDADES 42
2.1 ? INSERINDO UMA NOVA CIDADE 44
2.2 ? ATUALIZANDO E FILTRANDO UMA CIDADE 45
2.3 ? EXCLUINDO UMA CIDADE 47
2.4 ? GERANDO O RELATÓRIO 47
3 ? CADATRO PESSOA FÍSICA E JURÍDICA 48
3.1 ? INSERINDO UMA NOVA PESSOA FÍSICA 51
3.2 ? INSERINDO UMA NOVA PESSOA JURÍDICA 52
3.3? ATUALIZANDO E FILTRANDO UMA PESSOA FÍSICA OU JURÍDICA 53
3.4 ? EXCLUINDO UMA PESSOA FÍSICA OU JURÍDICA 56
3.5 ? GERANDO O RELATÓRIO GERAL DE PESSOAS FÍSICAS OU JURÍDICAS 56
IV ? MÓDULO DE GERENCIAMENTO DE VEÍCULOS 56
1 ? CADASTRO TIPO DE VEÍCULO 57
1.1 ? INSERINDO UM NOVO TIPO DE VEÍCULO 59
1.2? ATUALIZANDO E FILTRANDO UM TIPO DE VEÍCULO 60
1.3 ? EXCLUINDO UM TIPO DE VEÍCULO 62
1.4 ? GERANDO O RELATÓRIO GERAL DE TIPOS DE VEÍCULO 63
2- CADASTRO DE CAVALO MECÂNICO E TRUCK (VEÍCULO) 63
2.1 ? INSERINDO UM NOVO VEÍCULO 66
2.2? ATUALIZANDO E FILTRANDO UM VEÍCULO 67
2.3 ? EXCLUINDO UM VEÍCULO 70
2.4 ? GERANDO O RELATÓRIO GERAL DE VEÍCULOS 70
3 ? CADASTRO DE SEMI-REBOQUES 71
3.1 ? INSERINDO UM NOVO SEMI-REBOQUE 73
3.2? ATUALIZANDO E FILTRANDO UM SEMI-REBOQUE 75
3.3 ? EXCLUINDO UM SEMI REBOQUE 77
3.4 ? GERANDO O RELATÓRIO GERAL DE SEMI-REBOQUE 77
4 ? CADASTRO DO TRANSPORTADOR 78
4.1 ? INSERINDO UM NOVO TRANSPORTADOR 81
4.2? ATUALIZANDO E FILTRANDO UM TRANSPORTADOR 83
4.3 ? EXCLUINDO UM TRANSPORTADOR 85
4.4 ? GERANDO O RELATÓRIO GERAL DE TRANSPORTADORES 85
5 ? CONTROLE DA LIBERAÇÃO DO SEGURO 86
5.1 ? INSERINDO UM NOVO SEGURO 88
5.2? ATUALIZANDO E FILTRANDO UM SEGURO 90
5.3 ? EXCLUINDO UM SEGURO 92
5.4 ? GERANDO O RELATÓRIO GERAL DO SEGURO 92
V ? MÓDULO DE GERENCIAMENTO DA CARGA TRIBUTÁRIA 93
1 ? IRRF 93
1.1 ? INSERINDO UMA NOVA FAIXA DE IRRF 95
1.2? ATUALIZANDO UMA FAIXA DE IRRF 96
1.3 ? EXCLUINDO UMA FAIXA DE IRRF 96
1.4 ? GERANDO O RELATÓRIO GERAL DE IRRF 97
2- CADASTRO DO CÓDIGO FISCAL 97
2.1 ? INSERINDO UM NOVO CÓDIGO FISCAL 99
2.2? ATUALIZANDO UM CÓDIGO FISCAL 101
2.3 ? EXCLUINDO UM CÓDIGO FISCAL 101
2.4 ? GERANDO O RELATÓRIO GERAL DE CÓDIGO FISCAL 101
3 ? CADASTRO DO ICMS (IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS E SERVIÇOS) 102
3.1 ? INSERINDO UMA TAXA DE ICMS 104
3.2? ATUALIZANDO UMA TAXA DE ICMS 105
3.3 ? EXCLUINDO UMA FAIXA DE IRRF 106
3.4 ? GERANDO O RELATÓRIO GERAL DE TIPOS DE VEÍCULO 106
VI ? MÓDULO DE GERENCIAMENTO DE RETIRADA 107
1 ? CADASTRO DE PRODUTO 107
1.1 ? INSERINDO UM NOVO PRODURO 109
1.2? ATUALIZANDO E FILTRANDO UM PRODUTO 110
1.3 ? EXCLUINDO UM PRODUTO 112
1.4 ? GERANDO O RELATÓRIO GERAL DE PRODUTOS 112
2 ? CADASTRO DE PEDIDO 113
2.1 ? EMITINDO UM NOVO PEDIDO 115
2.2? ATUALIZANDO E FILTRANDO UM PEDIDO 117
2.3 ? FECHANDO OU CANCELANDO UM PEDIDO 119
2.4 ? GERANDO O RELATÓRIO GERAL DE PEDIDOS 120
3 ? CADASTRO DE PROGRAMAÇÃO 121
3.1 ? EMITINDO UMA NOVA DATA PROGRAMAÇÃO 123
3.2? ATUALIZANDO E FILTRANDO UMA PROGRAMAÇÃO 124
3.3 ? EXCLUINDO UMA PROGRAMAÇÃO 127
3.4 ? GERANDO O RELATÓRIO GERAL DE PROGRAMAÇÃO 127
4 ? CADASTRO DE ORDEM DE COLETA 127
4.1 ? EMITINDO UMA NOVA ORDEM DE COLETA 130
4.2? FILTRANDO UMA PROGRAMAÇÃO 132
4.3 ? EXCLUINDO UMA ORDEM DE COLETA 133
4.4 ? GERANDO O RELATÓRIO GERAL DE ORDEM DE COLETA 134
VII ? MÓDULO DE EMISSÃO DO CTRC (CONHECIMENTO DE TRANSPORTE RODOVIÁRIO E CARGAS) 135
1 ? CADASTRO CTRC (CONHECIMENTO DE TRANSPORTE RODOVIÁRIO E CARGAS) 135
1.1 ? EMITINDO UM NOVO CTRC 137
1.2? FILTRANDO UM CTRC 145
1.3 ? EXCLUINDO UM CTRC 146
1.4 ?CANCELANDO UM CTRC 147
1.5 ? IMPRIMINDO NOVAMENTE UM CTRC SALVO 147
1.6 ? GERANDO O RELATÓRIO GERAL DO CTRC 148
VIII ? MÓDULO DE GERENCIAMENTO DE MENSAGENS 149
1 ? CADASTRO DE MENSAGEM 149
1.1 ? INSERINDO UMA NOVA MENSAGEM 151
1.2? ATUALIZANDO UMA MENSAGEM 151
1.3 ? EXCLUINDO UMA MENSAGEM 152
1.4 ? GERANDO O RELATÓRIO GERAL DE MENSAGENS 152
IX ? MÓDULO DO USUÁRIO 153
1 - CRIANDO UM NOVO USUÁRIO 153
2 ? EXCLUINDO UM USUÁRIO 155
X ? MÓDULO SISTEMA 157
1 ? COPIANDO A BASE DE DADOS 157
2 ? RESTAURANDO A BASE DE DADOS 158
3 ? VARREDURA E LIMPEZA DO BANCO DE DADOS 159
















INTRODUÇÃO
Diversos especialistas afirmam que estamos vivendo a era da informação. Ter o total controle sobre ela passou a ser um fator determinante na sobrevivência das empresas no mundo globalizado, onde uma empresa que concorria com seu vizinho dentro de sua cidade, passou a concorrer com empresas situadas em outros países.
Ter um controle sobre as informações não é uma tarefa simples. A velocidade em que elas trafegam pelos inúmeros meios como jornais, revistas, rádio, televisão e principalmente a Internet, somada a grande variedade e quantidade, tem obrigado as empresas, sejam elas pequenas, médias ou grandes, a encontrarem soluções na Tecnologia da Informação (TI).
Atualmente existe uma grande quantidade de empresas especializadas em desenvolvimento de softwares. Empresas como a IBM, SUN, Oracle, Microsoft, SAP, entre outras, apresentam soluções que vão desde pacotes específicos, ou seja, softwares para atender a área de contabilidade, ou finanças, ou estoque até aos sistemas ERP (Enterprise Resource Plain), que nada mais são que softwares que englobam toda a cadeia administrativa de uma empresa. Algumas destas empresas ainda oferecem agregadas aos seus softwares, soluções em hardware e banco de dados.
Para empresas de médio e pequeno porte uma solução tecnológica oferecida por estas grandes empresas pode ser inviável financeiramente, abrindo espaço para pequenos e médios desenvolvedores de software. E é para atender a empresas de pequeno e médio porte do ramo de transporte rodoviário, que este software foi desenvolvido.
O SGTR - Software Gerenciador de Transporte Rodoviário Versão 1.0 apresenta módulos que permitem a empresa controlar as informações referentes a clientes, transportadores, veículos, pedidos, além de oferecer suporte para a programação de retirada e emissão de ordens de coletas. O programa possui como módulo principal, a emissão do Conhecimento de Transporte Rodoviário e Cargas (CTRC), documento obrigatório para as empresas deste ramo de atividade.
Este manual ensina o usuário a instalar e a configurar corretamente o SGBD PostgreSQL, e instalar o SGTR Versão 1.0. Ele ensina o usuário a fazer o backup da base de dados, e a recuperação da mesma, após algum evento cause algum dano na base de dados. O manual descreve como o usuário deve interagir com o sistema, através da explicação de seus módulos. Um módulo consiste em telas, que manipulam informações relacionadas entre si, formadas por componentes como botões, caixas de texto, rótulos, tabelas com dados do banco de dados, relatório, entre outros, e que constituem a interface gráfica do usuário. O usuário aprenderá como inserir, atualizar, excluir, recuperar e filtrar informações localizadas no banco de dados, através da utilização desta interface.
























SOBRE ESTE MANUAL
Este manual contém as informações necessárias para o usuário utilizar corretamente o SGTR - Sistema Gerenciador de Transporte Rodoviário Versão 1.0. Ele descreve o procedimento a ser realizada para a instalação do PostgreSQL e dos passos para a instalação do SGTR Versão 1.0. O manual descreve como configurar o drive ODBC do SGBD PostgreSQL, necessário para se trabalhar com os relatórios do sistema. Nele se encontra as informações necessárias para o usuário trabalhar com cada módulo, descrevendo os procedimentos que ele precisa realizar para inserir, atualizar, excluir e consultar registros no banco de dados. Ele descreve como o usuário procederá para gerar relatórios, criar outros usuários e controlar o nível de acesso que estes terão dentro do sistema. O manual descreve como o usuário executará o backup do sistema e como proceder em uma eventual recuperação do mesmo. Este manual vem acompanhado do CD contendo o SGTR Versão 1.0, o instalador do SGBD PostgreSQL versão 8.3.0 a pasta cópiabd, necessária para a criação da base de dados. No CD se encontra uma cópia digital deste manual.

INFORMAÇÕES IMPORTANTES
O SGTR Versão 1.0 foi desenvolvido de acordo com os procedimentos que regem a construção dos softwares atualmente. Ele é dividido em camadas que se comunicam entre si, sendo elas: a camada cliente, onde se localiza a interface gráfica, que permite ao usuário interagir com o sistema; a camada de negócios, responsável por gerenciar as regras de funcionamento de cada módulo e a camada do servidor, que se localiza no banco de dados.
É por este motivo, que antes da instalação do sistema, é necessário a instalação do Sistema Gerenciador de Banco de Dados PostgreSQL e a correta configuração do mesmo. Depois de sua instalação, é preciso executar o script que constrói toda a camada do servidor. Este script contém as informações necessárias para a criação das tabelas e das funções que realizam eventos (inserção, atualização, exclusão e seleção de registros) diretamente no banco.
É importante que, o usuário do sistema, sempre realize uma cópia de segurança do banco de dados, para prevenir uma eventual ocorrência que pode causar danos ao sistema e para que possa ser realizada uma recuperação do mesmo. É importante que, ele anote e comunique aos desenvolvedores do software qualquer falha que este venha a ter, para que os mesmos possam rastrear estas falhas e buscar soluções para elas.
Este software não foi desenvolvido para trabalhar em rede, mas somente em uma máquina. Se no futuro, o usuário necessitar que o mesmo seja instalado em um servidor para ser acessado por estações de trabalho, é preciso fazer alterações no sistema, o que vai gerar uma nova versão. Isto ocorre para qualquer modificação ou inclusão de módulos no sistema que for requisitada pelo usuário.











FUNÇÃO DO BANCO DE DADOS
O SGBD utilizado pelo sistema é o PostgreSQL. Desenvolvido pela SUN, este banco tem sua licença livre, o que requer apenas que a empresa registre o software, mas sem nenhum custo para ela. Ele é um banco de grande capacidade, capaz de gerenciar grandes bases de dados. Ele é dotado de recursos que o igualam a SGBDs comerciais, como o Oracle e o SQL Server, dois dos bancos mais utilizados por grandes empresas.
O banco de dados é o responsável por armazenar todos os registros utilizados pelo sistema. Qualquer dano que ele venha a sofrer prejudicará o funcionamento do mesmo. Por isso é necessário que o administrador do sistema cuide de sua manutenção, garantindo que as estatísticas dos mesmos sejam sempre atualizadas assim como os backups sejam feitos constantemente. É função do administrador verificar quais usuários estão habilitados no banco, e qual o nível de acesso que eles possuem, pois usuários com livre acesso podem excluir ou corromper informações do banco que não são mais recuperadas.















REQUISITO DE HARDWARE E SOFTWARE PARA O SISTEMA
Abaixo segue a descrição de uma máquina com os requisitos mínimos para a instalação do SGTR Versão 1.0

Processador Intel Dual Core ou AMD Athlon X2 com 2.0 Ghz
Memória 1 GB DDR 2 533mhz
Disco Rígido 160 GB
Gravadora DVD/CD Obrigatório
Portas USB Recomendável
Placa de Rede Recomendável (placa 10/100/1000)
Sistema Operacional Windows XP Home ou Vista Home (Não instalar este sistema nas versões Start Edition do XP e do Vista)
Antivírus Avast, AVG, etc.

















I ? INSTALAÇÃO DO POSTGRESQL E DO SGTR VERSÃO 1.O
Este capítulo descreve como o usuário procederá para instalar o banco de dados, configurá-lo, executar o script que cria a base dados e configurar o drive ODBC. Este capítulo descreve os passos para a instalação do SGTR Versão 1.0.

1 ? INSTALANDO O POSTGRESQL
Antes de iniciar a instalação dos aplicativos, o usuário deve copiar para a unidade c:\ de sua máquina, as seguintes pastas: Banco de Cados, copiabd e Pacote SGTR. Todas estas pastas se encontram no DVD do sistema, que acompanha este manual.
O arquivo Setup.exe, que executa a instalação do PostgreSQL, se encontra na pasta Banco de Dados. Para iniciar a instalação, o administrador deve dar um duplo clique sobre o arquivo para abrir a tela inicial da instalação. (ver Figura 1).


FIGURA 1
Marque a opção Brazilian Portuguese e tecle no botão Start para seguir para a próxima tela. (ver Figura 2).


FIGURA 2
Tecle no botão Próximo para seguir para a próxima tela. (ver Figura 3).


FIGURA 3
Esta tela apresenta o contrato de licença do PostgreSQL. Tecle no botão Próximo para seguir para a próxima tela. (ver Figura 4).


FIGURA 4
Não marque nenhuma opção nesta tela e aperte o botão Próximo para seguir para a tela seguinte. (ver Figura 5).


FIGURA 5
Não é preciso alterar nenhuma das caixas desta tela. Se o usuário optar, não é preciso definir a senha nesta tela, deixando o sistema criar uma automaticamente. Esta senha não é a do usuário do banco. Tecle o botão próximo para seguir para a próxima tela.


FIGURA 6
Se o usuário optou por deixar que o sistema crie a senha na tela anterior, esta mensagem aparecerá, bastando apenas teclar sim para confirmar. (ver Figura 6). Esta mensagem não aparece se o usuário definiu uma senha na tela anterior. Na seqüência é aberta a tela que configura o usuário primário do sistema. (ver Figura 7).


FIGURA 7
Nesta tela, o único campo que o usuário deverá preencher é a caixa Senha. O usuário deve marcar a caixa Inicializar, o agrupamento de banco de dados. A senha escolhida é a do usuário principal do PostgreSQL, mas não a do sistema. E através dela que o usuário se conectará com o banco pela primeira vez. Na caixa Senha (novamente), confirme a senha e tecle no botão próximo, abrindo a próxima tela. (ver Figura 8).


FIGURA 8
Confirme a mensagem clicando no botão OK. É aberta a próxima tela. (ver Figura 9).


FIGURA 9
Marque a caixa PL/pgsql e tecle no botão próximo, seguindo para próxima a tela. (ver Figura 10).








FIGURA 10
Marque somente a caixa Adminpack e tecle no botão próximo para abrir a próxima tela. (ver Figura 11).


FIGURA 11
O sistema está pronto para a instalação. Tecle no botão próximo para iniciá-la. A figura abaixo (ver Figura 12) apresenta a tela da evolução do processo de instalação:


FIGURA 12

Depois de instalado o PostreSQL, a tela de conclusão é apresentada. (ver Figura 13).


FIGURA 13
Depois da instalação, o drive ODBC do PostgreSQL precisa ser instalado, mas é preciso que a máquina possua um acesso a Internet. Se ela possuir, marque a caixa Launch Stack Build at exit, tecle no botão Concluir e a próxima tela é inicializada. (ver Figura 14). Se a máquina não possuir uma conexão, desmarque a caixa, tecle no botão concluir e a instalação estará finalizada.


FIGURA 14
Nesta tela é preciso escolher uma entre as opções da caixa. Escolha a mesma apresentada na figura acima. Depois clique no botão Next, para seguir para a próxima tela. (ver Figura 15).


FIGURA 15
Procure na lista apresentada na tela, a opção psqlODBC v08.03.0200 e marque a sua caixa. Depois tecle no botão Next para seguir para a próxima tela. (ver Figura 16).


FIGURA 16
Nesta tela, marque o servidor de Internet em que o aplicativo de instalação buscará o drive ODBC. O usuário pode optar pelo mesmo servidor marcado nesta tela. Depois tecle no botão Next para seguir para a próxima tela. (ver Figura 17).

FIGURA 17
Nesta tela, selecione a opção que aparece na caixa Selected packages, (ver Figura 17). A caixa Download directory descreve o caminho em que o drive será instalado. Não é preciso alterá-lo. Clique no botão Next para seguir para a próxima tela. (ver Figura 18).


FIGURA 18
Nesta tela, o usuário acompanha a instalação do drive. Após o fim da instalação, confirme a mensagem que aparecerá e encerre o processo. Depois da instalação do PostgreSQL e do drive ODBC do mesmo, é preciso criar o usuário e a base de dados do sistema. Os nomes são individuais para cada instalação e será fornecido na entrega deste manual ao responsável da empresa. Para realizar esta tarefa, o usuário precisa abrir o pgAdmin, software de administração do PostgreSQL, que foi instalado durante o processo. Para abri-lo siga os seguintes passos:
? Menu iniciar;
? Programas;
? PostgreSQL 8.3;
? pgAdmin III.
Será aberta a tela do programa. (ver Figura 19).


FIGURA 19
Clique com o botão direito do mouse sobre o servidor PostgreSQL Database Server para ativar o menu. (ver Figura 20).


FIGURA 20
Escolha a opção Conectar. É aberta a caixa de conexão. (ver Figura 21).


FIGURA 21
Digite a senha do usuário principal do PostgreSQL. Esta senha é a mesma definida no processo de instalação. Clique no botão OK. Se a senha estiver correta, um sinal de + aparecerá à frente do servidor. Expanda este sinal para visualizar as árvores do pgAdmin. (ver Figura 22).


FIGURA 22
Descrição das árvores:
? Banco de Dados: é nesta árvore que se encontram todas as bases de dados criados para o sistema;
? Templates: esta árvore armazena as funções próprias do PostgreSQL;
? Roles de Grupo: nesta árvore podem ser criados grupos de usuários;
? Login Roles: árvore em que se encontram todos os usuários do banco de dados.
Para a montagem da base de dados do sistema SGTR Versão 1.0, é preciso primeiro criar o usuário do mesmo. Clique com o botão direito do mouse sobre a árvore Login de Roles e escolha a opção Nova Login de Role. É aberta a tela de criação de usuário. (ver Figura 23).


FIGURA 23
Na caixa Nome da Role informe o nome do usuário. Na caixa Senha entre com uma nova senha para ele. Confirme a senha na caixa Senha (novamente). Marque todas as caixas do grupo Privilégios de Role, conforme a figura acima. Isto é preciso somente para o super usuário do banco. Clique no botão OK e o pgAdmin criará o novo usuário. Agora, é preciso criar a base de dados. Clique com o botão direito do mouse sobre a árvore Banco de Dados e escolha a opção Novo Banco de Dados. É aberta a tela de criação do banco. (ver Figura 24).


FIGURA 24
Na caixa Nome informe o nome da base de dados do sistema. Na caixa Dono, informe o nome do usuário a quem a base de dados pertence. Este usuário é o mesmo criado a pouco. Na caixa Codificação, procure na lista a opção SQL_ASCII. Na caixa Tablespace, procure na lista a opção pg_default. Depois selecione a aba Privilégios. (ver Figura 25).


FIGURA 25
Marque a caixa ALL para fornecer todos os privilégios para a base de dados. Clique no botão OK e o pgAdmin criará a base de dados. Agora, é preciso construir todas as tabelas e funções que o sistema necessita. O arquivo que executa esta tarefa é o rest.bat. Ele se encontra na pasta copiabd, a qual o usuário copiou para a unidade c:\ de sua máquina. Certifique-se realmente de que esta pasta foi copiada para esta unidade. Abra a pasta e localize o arquivo. O usuário deve dar um duplo clique sobre ele e o mesmo montará toda a estrutura da base de dados. (ver Figura 26).


FIGURA 26
A estrutura do banco de dados do SGTR Versão 1.0 está pronta. Agora é preciso o usuário configurar o drive ODBC do PostgreSQL.

2 ? CONFIGURANDO O DRIVE ODBC
O drive ODBC (Open Database Connectivity) do PostgreSQL é de fundamental importância para o funcionamento do SGTR Versão 1.0. É através dele que o gerenciador de relatório do sistema se conecta com o banco de dados. Ele deve ser instalado no mesmo processo de instalação do PostgreSQL, mas se o mesmo não ocorrer, ele pode ser encontrado no site www.postgresql.org/br. Para configurar o drive OBDC no Windows XP, o administrador deve seguir os seguintes passos:
? Menu Iniciar;
? Configurações;
? Painel de controle;
? Ferramentas administrativas;
? Fonte de dados (ODBC);
Será aberta a seguinte janela. (ver Figura 27).

FIGURA 27
Se o drive ODBC PostegreSQL3.0 aparecer na aba Fontes de dados de usuário, basta selecioná-lo e clicar em configurar. Caso contrário, é preciso adicioná-lo clicando no botão Adicionar, onde é exibida uma lista com todos os drives para banco de dados instalados na máquina. (ver Figura 28).


FIGURA 28

Depois de localizar o drive ODBC do PostgreSQL na lista, basta selecioná-lo e apertar o botão Concluir. Depois clique no botão configurar da janela anterior e aparecerá a seguinte tela: (ver Figura 29).


FIGURA 29
É preciso preencher os campos com a mesma configuração utilizada para configurar o banco de dados do sistema. É preciso informar o mesmo usuário, a mesma senha e a mesma base de dados. Com os campos preenchidos, é só clicar no botão Test, para verificar se a conexão foi realizada corretamente, e depois no botão Save.

3 ? INSTALANDO O SGTR VERSÃO 1.0
O arquivo Setup.exe que instala o programa SGTR Versão 1.0 se encontra no DVD que acompanha este manual e pode ser localizado pelo caminho Pacote SGTR\SetupSGTR\Debug. Para iniciar a instalação, o administrador dará um duplo clique sobre o ícone do arquivo, abrindo a tela de instalação. (ver Figura 30).


FIGURA 30
Clique no botão Next para ir para a próxima tela. (ver Figura 31).

FIGURA 31
Nesta tela, o usuário pode escolher uma nova pasta para instalar o programa clicando no botão Browse. É recomendável aceitar o caminho padrão definido pelo sistema. Após a definição da pasta de instalação, clique no botão Next para seguir para a próxima tela. (ver Figura 32).


FIGURA 32
Clique no botão Next para iniciar a instalação. A tela abaixo demonstra o processo de instalação do sistema: (ver Figura 33).


FIGURA 33





Na tela abaixo clique no botão Close para finalizar a instalação: (ver Figura 34).


FIGURA 34
Para inicializar o sistema, o usuário tem que executar o arquivo do aplicativo (para este sistema, o aplicativo se chama AdrianoPolzin) localizado no caminho especificado durante a instalação. O usuário pode criar um atalho na área de trabalho clicando com o botão direito do mouse sobre o arquivo e selecionando a opção enviar para a área de trabalho.













II ? INICIALIZAÇÃO DO SISTEMA E TELA PRINCIPAL
Este capítulo descreve como o usuário deve inicializar o sistema e o funcionamento da tela principal do mesmo.

1 ? INICIALIZANDO O SGTR VERSÃO 1.0
A primeira inicialização do sistema tem que ser feita pelo administrador. É ele que detém o login e senha do banco de dados. Quando o usuário clicar duas vezes sobre o ícone do programa localizado na área de trabalho, é aberta a tela de login. (ver Figura 35).


FIGURA 35
Na caixa LOGIN DO USUÁRIO, o usuário informará seu nome de login, que deve ser o mesmo do usuário do banco de dados, em letras minúsculas. Ao teclar Enter, o foco passa para a caixa SENHA DO USUÁRIO, onde ele informará sua senha, em letras minúsculas, e que deve ser a mesma em que ele se conecta com o banco de dados. Com os dois campos preenchidos, o botão CONECTAR é habilitado, bastando ao usuário clicar neste botão para o sistema se conectar com o banco.

2 ? CONEXÃO COM O BANCO DE DADOS
Se o usuário informou corretamente os seus dados de login e senha, a tela principal é exibida, junto com uma mensagem informando o nome do usuário e seu status dentro do banco. O que o sistema faz neste momento, é enviar os dados através de uma conexão, onde eles serão autenticados no banco. Se houver algum erro nestas informações, o banco devolve para o sistema uma mensagem de falha na conexão, que é apresentada no campo MENSAGEM DE CONEXÃO.
Após a conexão realizada, é feita uma analise das estatísticas de todas as tabelas do banco de dados. Se houver alguma falha nesta análise, por falta de uma tabela, por exemplo, o sistema não se iniciará, sendo exibida uma mensagem de erro no campo ANÁLISE DE ESTATÍSTICA. Cabe ao administrador, verificar se todas as tabelas do banco foram realmente criadas.

3 ? A TELA PRINCIPAL DO SISTEMA
Se tudo ocorrer sem problemas, a tela principal do sistema é inicializada. (ver Figura 36).


FIGURA 36
A tela principal fornece acesso a todos os módulos do sistema. Ela é dividida em barra de menus (ver Figura 37), que contém os menus dos módulos, e barra de ferramentas (ver Figura 38), que fornece eventos específicos do administrador do sistema.




FIGURA 37
Componentes da barra de menus. (ver Figura 37).
? 1 ? Acesso ao módulo Administrador;
? 2 ? Acesso ao módulo Pessoas;
? 3 ? Acesso ao módulo Veículo;
? 4 ? Acesso ao módulo Carga Tributária;
? 5 ? Acesso ao módulo Retirada;
? 6 ? Acesso ao módulo CRTC;
? 7 ? Acesso ao módulo Mensagem;
? 8 ? Acesso ao Módulo Usuário;
? 9 - Acesso ao Módulo Sistema;
? 10 ? Acesso ao Módulo Programa;
? 11 ? Acesso ao Módulo Ajuda.




FIGURA 38
Componentes da barra de ferramentas (ver Figura 38).
? 1 ? Criar um novo usuário;
? 2 ? Excluir um usuário;
? 3 ? Fornecer permissões a um usuário;
? 4 ? Excluir permissões de um usuário;
? 5 ? Fazer backup da base de dados;
? 6 ? Restaurar a base de dados;
? 7 ? Apresentação de dados sobre o sistema;
? 8 ? Fechar o sistema.

O Módulo Administrador oferece ao administrador do sistema acesso aos usuários cadastrados no mesmo e ao histórico dos eventos realizados na base de dados. O acesso a este módulo só é permitido aos usuários com o nível de Administrador. O Módulo Pessoa oferece acesso ao cadastro de Estados, Cidades e Pessoas Físicas e Jurídicas. O Módulo Veículo oferece acesso aos cadastros de Tipos de Veículos, Veículos, Semi-Reboques, Transportador e controle da Seguradora. O Módulo Carga Tributária oferece suporte aos cadastros das faixas do IRRF (Imposto de Renda Retido na Fonte), dos Códigos Fiscais e das taxas do ICMS (Imposto de Circulação de Mercadorias e Serviços). O Módulo de Retirada oferece acesso aos cadastros de Produtos, Pedidos, Programação de Retirada e Ordem de Coleta. O Módulo CTRC (Conhecimento de Transporte Rodoviário e Cargas) oferece acesso ao cadastro e emissão do CTRC. O Módulo Mensagem oferece acesso ao cadastro de Mensagens. O Módulo Usuário permite a criação e exclusão de usuários do sistema, como fornecimento e retirada de permissões de acesso dos mesmos (mesmas funções dos botões 1, 2, 3 e 4 da Figura 38). O Módulo Sistema permite copiar a base de dados (botão 5 da Figura 38), restaurar a mesma (botão 6 da Figura 38) e fazer uma atualização das estatísticas do banco de dados. O Módulo Programa fornece acesso as informações sobre o sistema (botão 7 da Figura 38), par sair do programa (botão 8 da Figura 38) e para a troca de usuário. O Módulo Ajuda acessar este manual em sua forma digital.





















III ? MÓDULO DE GERENCIAMENTO DE PESSOAS FISICAS E JURÍDICAS
Este capítulo apresenta como o usuário gerenciará o cadastro das tabelas Estado, Cidade e Pessoa Física e Jurídica, inserindo, atualizando, excluindo, filtrando dados e gerando relatórios.

1 ? CADASTRO DE ESTADO
O cadastro de Estado tem a função de armazenar os estados brasileiros que servirão de base para a tabela Cidade. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados de um Estado. Ele fornece um relatório geral desta tabela. A tela a seguir apresenta a tela inicial deste cadastro. (ver Figura 39).


FIGURA 39
A tela é composta pela barra de menus (ver Figura 40), barra de ferramentas, (ver Figura 41), o componente fichário (ver Figura 42), onde a aba ativa no momento é de REGISTROS, e o grupo REGISTROS ESTADOS (ver Figura 43), onde são visualizados os registros da tabela.



FIGURA 40
Componentes da barra de menus (ver Figura 40):
? 1 ? Menu/Estado;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 41
Componentes da barra de ferramentas (ver Figura 41):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Filtrar Por Nome;
? 6 ? Botão Filtrar Por UF;
? 7 ? Botão Cancelar;
? 8 ? Botão Fechar;
? 9 ? Botão Último Registro;
? 10 ? Botão Próximo Registro;
? 11 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 12 ? Botão Registro Anterior;
? 13 ? Botão Primeiro Registro.



FIGURA 42
Componentes do fichário (ver Figura 42):
? 1 ? Aba Registros;
? 2 ? Aba Editar;
? 3 ? Aba Filtros;
? 4 ? Aba Relatórios.










FIGURA 43
Composição da tabela (ver Figura 43):
? 1 ? Colunas da Tabela Estado;
? 2 ? Linhas da Tabela Estado;

1.1 ? INSERINDO UM NOVO ESTADO
Para inserir um novo registro na tabela Estado, o usuário pode clicar no botão NOVO na barra de Ferramentas, ou pela barra de menus através do caminho Estado/Novo. É habilitado a aba EDITAR. (ver Figura 44).
Ao ser iniciada a tela, o campo ID ESTADO guarda o próximo valor da chave primária da tabela, evitando o problema de violação de restrição desta. Os campos de edição de dados são inicializados com valores em branco e todos eles são desabilitados. Somente o campo da caixa NOME ESTADO é habilitado. O usuário sairá de um campo para outro através da tecla enter, e todos os campos que forem obrigatórios, será informada uma mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
Além da chave primária, obrigatória em todas as tabelas do banco de dados, a tabela Estado possui mais duas restrições, os campos NOME ESTADO e UNIDADE FEDERAL. Eles não podem ter seus valores duplicados no banco. Se houver uma tentativa de cadastrar um novo Estado com um nome ou uma unidade federal já existente, o banco retorna uma mensagem de violação de restrição e não permite a inserção do registro editado. Ao clicar OK na mensagem, o sistema desabilita a aba EDITAR e habilita a aba REGISTROS.
Com todas as informações fornecidas, o botão Gravar é habilitado após a saída da caixa UNIDADE FEDERAL. Ao clicar neste botão, o sistema chama a função localizada na camada do servidor e se não houver nenhuma violação de restrição, o registro é gravado na tabela Estado, retornando ao usuário a mensagem "ESTADO CADASTRADO". Ao clicar Ok, o sistema abre novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário precise lançar novos registros, basta ele clicar no botão da caixa de ferramentas CANCELAR e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros já se encontram atualizados na tabela da aba REGISTROS.


FIGURA 44
1.2 ? ATUALIZANDO E FILTRANDO UM ESTADO
O sistema oferece dois métodos para o usuário recuperar uma informação para ser atualizada ou excluída. O primeiro consiste em o usuário localizar o registro na tabela localizada na aba REGISTROS. Ele pode navegar pela tabela através dos botões (9, 10, 12 e 13) de navegação localizados na barra de ferramenta (ver Figura 41). O usuário pode alterar a forma pela a qual a tabela ordena os dados, clicando em cima de uma das colunas com o campo a qual ele deseja ordenar (crescente e decrescente). Ao localizar o registro, ele precisa efetuar um duplo clique sobre a linha em que ele se encontra, e a aba EDITAR é ativada, com os campos preenchidos com os dados correspondentes. O usuário pode alterar os dados do registro, com exceção do campo ID, respeitando as restrições impostas à tabela, mas o botão ATUALIZAR só é habilitado na saída da caixa UNIDADE FEDERAL. Ao clicar neste botão, se nenhuma violação de restrição ocorrer, é retornada a mensagem "ESTADO ALTERADO" e o sistema retorna a aba REGISTROS.
O segundo método consiste em filtrar o registro na aba FILTROS (ver Figura 45). Esta aba é ativada quando o usuário clicar nos botões FILTRAR POR NOME e FILTRAR POR UF na barra de ferramentas (ver Figura 41) ou pelos menus Filtrar/Por Nome e Filtrar/Por UF.













FIGURA 45
Componentes da aba FILTROS (ver Figura 45).
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS;
? 3 ? Botão IMPRIMIR;
? 4 ? Botão SAIR;
? 5 ? Caixa Filtro;
? 6 ? Tabela DADOS ESTADOS.
Se o usuário optar filtrar um registro pelo nome do Estado, a Caixa Filtro é carregada com todos os nomes contidos na tabela Estado. O usuário pode digitar o nome na caixa, e conforme ele preenche o campo, a função auto preenchimento procura por algum registro que se assemelhe a edição escrita por ele. Ele pode clicar na seta a direita da caixa e procurar o registro em uma lista que aparece na tela.
Ao definir o nome do registro que se deseja filtrar, o usuário deve clicar no botão FILTRAR para o registro ser carregado na tabela DADOS ESTADOS. Para recuperar este registro para a aba EDITAR, o usuário precisa dar um duplo clique na linha em que ele se encontra. O registro é recuperado para edição e o usuário procederá da mesma forma que ele realizou no primeiro método de atualização. Se o usuário quiser gerar um relatório do registro filtrado, é só ele clicar no botão IMPRIMIR (3) e a tela de visualização (ver Figura 46) de impressão é ativada. O botão CARREGAR TODOS OS DADOS (2) preenche a tabela DADOS ESTADOS com todos os registros da tabela Estado. O botão SAIR (4) desabilita a aba FILTROS e habilita novamente a aba REGISTROS.


FIGURA 46
1.3 ? EXCLUINDO UM ESTADO
Para excluir um registro da tabela Estado, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos em que ele escolher, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar neste botão, a função que executa a exclusão da tabela Estado na camada do servidor, é chamada e o registro é excluído.
É importante notificar, que um registro somente é excluído do banco de dados, se o mesmo não estiver fornecendo dados para outra tabela através da sua chave primária. A base de dados do sistema é totalmente relacional, e uma tabela depende de outra. No caso da tabela Estado, se um determinado registro estiver referenciado na tabela Cidade, este registro não pode ser excluído, enquanto os registros da tabela Cidade que estiverem utilizando este registro não forem excluídos. Isto ainda, se, estes registros da tabela Cidade, não estiverem sendo utilizados por outras tabelas, como a tabela Pessoa Física/jurídica por exemplo. É por este motivo que o usuário deve ter total consciência quando quiser excluir um registro de qualquer tabela do banco.
O PostgreSQL realiza este controle automaticamente e ao verificar a tentativa de exclusão de um registro de uma tabela que esteja sendo utilizado por outra, ele retorna uma mensagem ao usuário, informando uma tentativa de violação da restrição da chave estrangeira. Se o registro não estiver sendo utilizado por outra tabela é retornado para o usuário a mensagem "ESTADO EXCLUÍDO", e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS habilitada.

1.4 ? GERANDO O RELATÓRIO
O menu Arquivo/Gerar Relatório, localizado na barra de menus, gera o relatório geral da tabela Estado (ver Figura 47).

FIGURA 47





2 ? CADASTRO DE CIDADES
O cadastro de Cidade tem a função de armazenar as cidades brasileiras, que servem de base para as tabelas Pessoa Físico-Jurídico, Veículo, Semi-Reboque, entre outras. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados de uma Cidade. Ele fornece um relatório geral desta tabela. A tela inicial do cadastro é apresentada a seguir. (ver Figura 48).


FIGURA 48
A tela é composta pela barra de menus (ver Figura 49), barra de ferramentas, (ver Figura 50), o componente fichário (ver Figura 51), onde a aba ativa no momento é de REGISTROS, e o grupo REGISTROS CIDADES (ver Figura 52), local em que são visualizados os registros da tabela.



FIGURA 49
Componentes da barra de menus (ver Figura 49):
? 1 ? Menu/Cidade;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.


FIGURA 50
Componentes da barra de ferramentas (ver Figura 50):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão FILTRAR POR CIDADE;
? 6 ? Botão FILTRAR PO ESTADO;
? 7 ? Botão Cancelar;
? 8 ? Botão Fechar;
? 9 ? Botão Último Registro;
? 10 ? Botão Próximo Registro;
? 11 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 12 ? Botão Registro Anterior;
? 13 ? Botão Primeiro Registro.



FIGURA 51
Abas do fichário (ver Figura 51):
? 1 ? Aba Registros;
? 2 ? Aba Editar;
? 3 ? Aba Filtros;
? 4 ? Aba Relatórios.














FIGURA 52
Componentes da tabela REGISTROS CIDADES (ver Figura 52):
? 1 ? Colunas da tabela;
? 2 ? Linhas tabela.

2.1 ? INSERINDO UMA NOVA CIDADE
Para inserir um novo registro na tabela Cidade, o usuário pode clicar no botão NOVO da barra de Ferramentas ou escolher pelo menu o caminho Cidade/Novo. É ativado a aba EDITAR. (ver Figura 53).


FIGURA 53
Ao ser iniciada a tela, o campo ID CIDADE guarda o próximo valor da chave primária da tabela Cidade, evitando o problema de duplicação desta chave. Os campos de edição de dados são inicializados com valores em branco, e todos eles são desabilitados, com exceção da caixa NOME CIDADE. O usuário sairá de um campo para outro através da tecla enter, e todos os campos obrigatórios, em uma tentativa do usuário de passá-lo como vazio, informam a mensagem "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
Além da chave primária, a tabela Cidade possui outra restrição, o campo NOME CIDADE. Ele não pode ter seu valor duplicado no banco. Se houver uma tentativa de cadastrar uma nova Cidade com um nome já existente, o banco retorna uma mensagem de violação da restrição de campo único e não permite a inserção do registro na tabela. Ao clicar OK na mensagem, o sistema desabilita a aba EDITAR e habilita a aba REGISTROS.
Uma característica importante desta tabela, é que ela herda dados da tabela Estado. Quando o usuário estiver na caixa Estado, todos os nomes dos estados cadastrados no banco são listados, e o usuário pode escolher um nome na lista.
Após a saída da caixa ESTADO, o botão GRAVAR é habilitado. Ao clicar neste botão, o sistema chama a função localizada na camada do servidor e se não houver nenhuma violação de restrição, o registro é gravado na tabela Cidade, retornando ao usuário a mensagem "CIDADE CADASTRADA?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar novos registros (excluir ou atualizar), basta ele clicar no botão da barra de ferramentas CANCELAR e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS CIDADES.

2.2 ? ATUALIZANDO E FILTRANDO UMA CIDADE
Como já citado, o sistema oferece dois métodos de o usuário recuperar uma informação para ser atualizada ou excluída, praticamente igual aos procedimentos da tabela Estado. O primeiro método é através da tabela REGISTROS CIDADES, na aba REGISTROS, onde o usuário pode dar um duplo clique na linha em que ele se encontra, para ser recuperado para a aba EDITAR. O segundo é pela aba FILTROS (FIGURA 54), onde o usuário pode filtrar um registro pelo nome da cidade ou pelo nome do estado a que ele pertence. É bom notificar que se o usuário escolher filtrar registros de cidades por seu Estado, a tabela DADOS CIDADES é carregada por todos os registros de cidades que pertencerem ao estado selecionado. Com a tabela DADOS CIDADES preenchida é só o usuário dar um duplo clique na linha em que o registro se encontra para ele ser recuperado para a aba EDITAR. Ao clicar no botão ATUALIZAR, é chamada a função localizada na camada do servidor que executa a atualização da tabela, e se nenhuma violação de restrição ocorrer, é retornada a mensagem "CIDADE ALTERADA" e o sistema retorna a aba REGISTROS.










FIGURA 54
Componentes da aba FILTROS (FIGURA 54)
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS;
? 3 ? Botão IMPRIMIR;
? 4 ? Botão SAIR;
? 5 ? Caixa Filtro;
? 6 ? Tabela DADOS CIDADES.
Se o usuário precisar gerar um relatório do registro filtrado, ele deve clicar no botão IMPRIMIR (3) e a tela de visualização de impressão (FIGURA 55) é ativada. O botão CARREGAR TODOS OS DADOS (2) preenche a tabela DADOS CIDADES com todos os registros da tabela Cidade. O botão SAIR (4) desabilita a aba FILTROS e habilita a aba REGISTROS.
















FIGURA 55

2.3 ? EXCLUINDO UMA CIDADE
Para excluir um registro da tabela Cidade, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos em que ele escolher, assim que o registro é recuperado na aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Cidade na camada do servidor é chamada e o registro é excluído. É importante notificar que a mesma regra para a exclusão de um registro na tabela Estado, é aplicada para a exclusão de dados na tabela Cidade. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "CIDADE EXCLUIDA" e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS habilitada.

2.4 ? GERANDO O RELATÓRIO
O menu Arquivo/Gerar Relatório, localizado na barra de menus, gera o relatório geral da tabela Cidade (Figura 56).









FIGURA 56

3 ? CADATRO PESSOA FÍSICA E JURÍDICA
O cadastro de Pessoas Físicas e Jurídicas tem a função de armazenar dados dos clientes, proprietários de veículos e motoristas de caminhão. Este cadastro é importante, pois fornece dados para as tabelas de cadastro de veículos, semi-reboques, pedidos e ordens de coletas. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados tanto das Pessoas Físicas, como das Pessoas Jurídicas. Ele fornece um relatório geral da tabela. A FIGURA 57 apresenta a tela inicial do cadastro.











FIGURA 57

A tela é composta pela barra de menus (FIGURA 58), barra de ferramentas, (FIGURA 59), o componente fichário (FIGURA 60), onde a aba ativa no momento é de REGISTROS, e o grupo REGISTROS PESSOAS FÍSICAS/JURÍDICAS (FIGURA 61), onde se encontram as tabelas PESSOA FÍSICA e PESSOA JURÍDICA.



FIGURA 58

Componentes da barra de menus (FIGURA 58):
? 1 ? Menu/Pessoa Física/Jurídica;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 59

Componentes da barra de ferramentas (FIGURA 59):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR PF POR NOME;
? 13 ? Botão FILTRAR PF POR CIDADE;
? 14 ? Botão FILTRAR PF POR ESTADO;
? 15 ? Botão FILTRAR PF POR CPF;
? 16 ? Botão FILTRAR PF POR RG;
? 17 ? Botão FILTRAR PJ POR NOME;
? 18 ? Botão FILTRAR PJ POR CIDADE;
? 19 ? Botão FILTRAR PJ POR ESTADO;
? 20 ? Botão FILTRAR PJ POR CNPJ;
? 21 ? Botão FILTRAR PJ POR INSCRIÇÃO ESTADUAL.




FIGURA 60

Abas do fichário (FIGURA 60):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIOS PESSOA FISÍCA/JURÍDICA.






FIGURA 61

Componentes do grupo REGISTROS PESSOAS FÍSICA/JURÍDICA:
? 1 ? Aba com a tabela de dados da PESSOA FÍSICA;
? 2 ? Aba com a tabela de dados da PESSOA JURÍDICA;
? 3 ? Colunas da tabela;
? 4 ? Linhas da tabela.

3.1 ? INSERINDO UMA NOVA PESSOA FÍSICA
Para inserir uma nova Pessoa Física no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Pessoa Física Jurídica/Novo. É habilitado a aba EDITAR, conforme a FIGURA 62.












FIGURA 62

Ao ser iniciada a tela, o campo ID PESSOA guarda o próximo valor da chave primária da tabela Pessoa Física/Jurídica, evitando a duplicação da mesma. Os campos de edição de dados são inicializados com valores em branco, e todos eles são desabilitados, com exceção da caixa NOME RAZÃO. O usuário sai de um campo para outro através da tecla enter e todos os campos obrigatórios, na tentativa do usuário de passá-los como vazio, é informada a mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
Além da chave primária, a tabela Pessoa Física/Jurídica possui outras restrições, que incluem o campo NOME/RAZÃO, número do CPF, número do RG, número da Habilitação para Pessoas Físicas, número do CNPJ e número da Inscrição Estadual para Pessoas Jurídicas. Estes campos não podem ter seus valores duplicados no banco. Se houver uma tentativa de cadastrar uma nova Pessoa Física ou Jurídica com um destes campos já existentes, o banco retorna a mensagem de tentativa de violação da restrição de campo único, e não permite a inserção do registro. Ao clicar OK na mensagem, o sistema desabilita a aba EDITAR e habilita a aba REGISTROS.
O usuário inicia a edição de um novo registro pela caixa NOME/RAZÃO, depois pela caixa ENDEREÇO, depois pela caixa BAIRRO. Na caixa CIDADE, é fornecida uma lista com todas as cidades cadastradas no Banco, e o usuário deve clicar na seta a direita da caixa para exibir a lista. Ao selecionar uma cidade, o usuário deve teclar enter para confirmar a seleção, trazendo automaticamente para a caixa ESTADO, o nome do Estado a qual a Cidade pertence. Na seqüência o usuário editará as caixas CEP, CAIXA POSTAL, TELEFONE, CELULAR e EMAIL. A DATA CADASTRO é gerada automaticamente pelo sistema. Na caixa TIPO PESSOA, o usuário tem duas opções, FISICA ou JURIDICA. O usuário deve optar pela opção FÍSICA. Ao teclar enter nesta caixa, a aba FISICA é habilitada, e o usuário editará na seqüência as caixas CPF, RG, DATA NASCIMENTO, CNH, PRONTUÁRIO (da CNH), LETRA (da CNH), DATA VALIDADE (da CNH), NOME DO PAI, NOME DA MÃE, NÚMERO DE DEPENDENTES e INSCRIÇÃO INSS.
Somente após a saída desta última caixa é que o botão GRAVAR é habilitado. Ao clicar neste botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violão de restrição, o registro é gravado na tabela Pessoa Física/Jurídica e os dados que são específicos somente a Pessoa Física, são gravados na tabela Pessoa Física. É retornada ao usuário a mensagem "PESSOA CADASTRADA?. Ao clicar Ok, o sistema habilitada novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar novos registros (excluir ou atualizar), basta ele clicar no botão da caixa de ferramentas CANCELAR e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS PESSOA FÍSICA/JURÍDICA.

3.2 ? INSERINDO UMA NOVA PESSOA JURÍDICA
Para inserir uma nova Pessoa Jurídica no banco de dados, o usuário deve seguir os mesmos procedimentos realizados para inserir uma nova Pessoa Física. A diferença está no fato de o usuário, quando for escolher uma opção na caixa TIPO PESSOA, ele deve optar pela opção JURIDICA, a qual apresenta o formulário conforme a Figura 63.












FIGURA 63

Com a escolha da opção JURIDICA, a aba JURIDICA é habilitada. O usuário editará as caixas do número do CNPJ, do número da INSCRIÇÃO ESTADUAL e a caixa do NOME DO CONTATO (Opcional). Somente após a saída desta última caixa é que o botão GRAVAR é habilitado. Ao clicar neste botão, o sistema chama a função localizada na camada do servidor e se não houver nenhuma violação de restrição, o registro é gravado na tabela Pessoa Física/Jurídica e os dados que são específicos somente a Pessoa Jurídica são gravados na tabela Pessoa Jurídica. É retornado ao usuário a mensagem "PESSOA CADASTRADA?. Ao clicar Ok, o sistema habilita novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta ele clicar no botão da caixa de ferramentas CANCELAR, e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS PESSOA FÍSICA/JURÍDICA.

3.3? ATUALIZANDO E FILTRANDO UMA PESSOA FÍSICA OU JURÍDICA
Os procedimentos que o usuário utilizará para atualizar um registro da tabela Pessoa Física/Jurídica são praticamente os mesmos dos cadastros já citados. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra as tabela com os dados das Pessoas Físicas (aba PESSOA FÍSICA) e a tabela com os dados das Pessoas Jurídicas (aba PESSOA JURIDICA), conforme FIGURA 61. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são recuperados para a aba EDITAR. Conforme o tipo da pessoa (Física ou Jurídica) o formulário se apresenta como a FIGURA 62 ou como a FIGURA 63.
O botão Atualizar somente é habilitado após a saída da última caixa de edição (INSCRIÇÃO INSS para Pessoa Física e NOME CONTATO para Pessoa Jurídica). Ao clicar neste botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "PESSOA ATUALIZADA" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado, e a aba REGISTROS é habilitada.
O usuário poderá selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 64. O usuário pode filtrar uma Pessoa Física pelo nome, pela Cidade, pelo Estado, pelo número do CPF e pelo número do RG. Uma Pessoa Jurídica pode ser filtrada pelo nome, pela Cidade, pelo Estado, pelo número do CNPJ e pelo número da Inscrição Estadual. Os filtros podem ser ativados pelos botões da barra de ferramentas (FIGURA 59) ou pelos menus Filtrar/Pessoa Física e Filtrar/Pessoa Jurídica.














FIGURA 64

Componentes da aba FILTROS (FIGURA 64)
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS PF;
? 3 ? Botão CARREGAR TODOS OS DADOS PJ;
? 4 ? Botão IMPRIMIR;
? 5 ? Botão SAIR;
? 6 ? Caixa Filtro;
? 7 ? Tabela com o registro filtrado;
Quando o usuário clica em uma das opções de filtro de dados, a caixa Filtro (6) é preenchida com os campos específicos do filtro escolhido. Se o usuário escolher filtrar uma pessoa pelo número do seu CPF, a caixa Filtro recebe todos os campos de CPF armazenados no banco. O usuário seleciona uma entre as opções e clica no botão FILTRAR (1) para realizar o filtro. Com o registro filtrado, é só o usuário dar um duplo clique na linha em que ele se encontra na tabela DADOS PESSOAS, e ele é recuperado para a aba EDITAR.
Se o usuário precisar gerar um relatório do registro filtrado, ele deve clicar no botão IMPRIMIR (4), e a tela de visualização de impressão (FIGURA 65) é ativada. O botão CARREGAR TODOS OS DADOS PF (2) preenche a tabela DADOS PESSOAS(7) com todos os registros de Pessoas Físicas. O botão CARREGAR TODOS OS DADOS PJ (30) preenche a tabela DADOS PESSOAS (7) com todos os registros de Pessoas Jurídicas. O botão SAIR (5) desaba a aba FILTROS e habilita novamente a aba REGISTROS.













FIGURA 65


3.4 ? EXCLUINDO UMA PESSOA FÍSICA OU JURÍDICA
Para excluir um registro da tabela Pessoa Física/Jurídica, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado na aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar neste botão, a função que executa a exclusão da tabela Pessoa Física/Jurídica na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Pessoa Física/Jurídica. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "PESSOA EXCLUIDA", e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS é habilitada.

3.5 ? GERANDO O RELATÓRIO GERAL DE PESSOAS FÍSICAS OU JURÍDICAS
O usuário pode gerar um relatório de Pessoas Físicas através do menu Arquivo/Gerar Relatório/Pessoa Física. Para gerar um relatório de Pessoas Jurídicas, ele deve acessar o menu Arquivo/Gerar Relatório/Pessoa Jurídica. Em ambos é habilitada a aba RELATÒRIO, conforme a FIGURA 66.












FIGURA 66


IV ? MÓDULO DE GERENCIAMENTO DE VEÍCULOS
O Módulo de Gerenciamento de veículos permite ao usuário inserir, atualizar, excluir, selecionar e filtrar dados dos Tipos de Veículo, Veículos, Semi-Reboques, Transportadores e Controle da Liberação do Seguro.

1 ? CADASTRO TIPO DE VEÍCULO

O cadastro de Tipo de Veículo tem a finalidade de armazenar os diferentes tipos de veículos de carga existentes no Brasil e também os que possam ser lançados no futuro. Tipos de Veículos engloba os diferentes modelos de caminhões, como os diferentes tipos de semi-reboques. Este cadastro vai alimentar a tabela Veículos, que cadastra os cavalos mecânicos e trucks, e a tabela de cadastro de Semi-Reboques. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados dos Tipos de Veículos. Ele fornece um relatório geral desta tabela. A FIGURA 67 apresenta a tela inicial do cadastro de Tipo de Veículos:


FIGURA 67

A tela é composta pela barra de menus (FIGURA 68), barra de ferramentas, (FIGURA 69), o componente fichário (FIGURA 70), onde a aba ativa no momento é de REGISTROS e o grupo REGISTROS TIPOS VEÍCULOS, onde se encontra a tabela do cadastro (FIGURA 71):



FIGURA 68

Componentes da barra de menus (FIGURA 68):
? 1 ? Menu/Tipo Veículo;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 69

Componentes da barra de ferramentas (FIGURA 69):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão FILTRAR POR DESCRIÇÃO;
? 6 ? Botão Cancelar;
? 7 ? Botão Fechar;
? 8 ? Botão Último Registro;
? 9 ? Botão Próximo Registro;
? 10 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 11 ? Botão Registro Anterior;
? 12 ? Botão Primeiro Registro.




FIGURA 70

Abas do fichário (FIGURA 70):
1 ? Aba REGISTROS;
2 ? Aba EDITAR;
3 ? Aba FILTROS;
4 ? Aba RELATÓRIO.







FIGURA 71

Componentes da tabela REGISTROS TIPOS DE VEÍCULOS (FIGURA 71):
? 1 ? Colunas da tabela;
? 2? Linhas de Registros da tabela.

1.1 ? INSERINDO UM NOVO TIPO DE VEÍCULO
Para inserir uma novo Tipo de Veículo no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Tipo Veículo/Novo. É habilitada a aba EDITAR, conforme a FIGURA 72. Ao ser iniciada a tela, o campo ID TIPO VEÍCULO guarda o próximo valor da chave primária da tabela Tipo Veículo, evitando o problema de duplicação da mesma. A caixa DESCRIÇÃO DO TIPO VEÍCULO é inicializada com um valor em branco e habilitada para a edição. Este campo não poder ser vazio, e se o usuário tentar passá-lo assim, o sistema o informará com a mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.







FIGURA 72

Além da chave primária, a tabela Pessoa Tipo Veículo possui como restrição o campo DESCRIÇÃO DO TIPO VEÍCULO. Este campo é do tipo único, e não pode ter seu valor duplicado no banco. Se houver uma tentativa de cadastrar um novo Tipo de Veículo com um campo DESCRIÇÃO já existente, o banco retorna a mensagem de violação da restrição do campo único e não permitirá a inserção do registro. Ao clicar OK na mensagem, o sistema desabilita a aba EDITAR e habilita a aba REGISTROS.
Somente após a saída da caixa DESCRIÇÃO TIPO VEÍCULO é que o botão GRAVAR é habilitado. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Tipo Veículo, e é retornada ao usuário a mensagem "TIPO VEÍCULO CADASTRADO?. Ao clicar Ok, o sistema abre novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta ele clicar no botão da caixa de ferramentas CANCELAR e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS TIPOSVEÍCULOS.

1.2? ATUALIZANDO E FILTRANDO UM TIPO DE VEÍCULO
O procedimento que o usuário utilizará para atualizar um registro da tabela Tipo Veículo segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra a tabela com os dados dos tipos de veículos. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são recuperados para a aba EDITAR.
O botão ATUALIZAR somente é habilitado após a saída da caixa DESCRIÇÃO DO TIPO DE VEÍCULO. Ao clicar no botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "TIPO DE VEÍCULO ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba REGISTROS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 73. Esta tabela realiza o filtro somente pela descrição do tipo de veículo. Este filtro pode ser acionado pelo usuário pelo botão FILTRAR POR DESCRIÇÃO ou pelo menu Filtrar/Por Descrição. Ao acionar o filtro, todos os valores do campo descrição são listados na caixa Filtro. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR, e os dados do registro filtrado são carregados na tabela DADOS TIPO VEÍCULO. Para recuperar o registro para a aba Editar, basta somente dar um duplo clique em cima da linha que ele se encontra.














FIGURA 73

Componentes da aba FILTROS (FIGURA 73)
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS;
? 3 ? Botão IMPRIMIR;
? 4 ? Botão SAIR;
? 5 ? Caixa Filtro;
? 6 ? Tabela DADOS TIPO VEÍCULO.

Se o usuário precisar gerar um relatório do registro filtrado, ele deve clicar no botão IMPRIMIR (3), e a tela de visualização de impressão (FIGURA 74) é ativada. O botão CARREGAR TODOS OS DADOS (2) preenche a tabela DADOS TIPO VEÍCULO (6) com todos os registros de Tipo de Veículo cadastrado no banco. O botão SAIR (4) desabilita a aba FILTROS e habilita novamente a aba REGISTROS.













FIGURA 74

1.3 ? EXCLUINDO UM TIPO DE VEÍCULO
Para excluir um registro da tabela Tipo de Veículo, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar neste botão, a função que executa a exclusão da tabela Tipo de Veículo na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Tipo de Veículo. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "TIPO DE VEÍCULO EXCLUIDO", e ao clicar ok, a aba EDITAR é desabilitado e a aba REGISTROS é habilitada.

1.4 ? GERANDO O RELATÓRIO GERAL DE TIPOS DE VEÍCULO
O usuário pode gerar um relatório de Tipo de Veículo através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário, a aba RELATÒRIO (FIGURA 75) é ativada.











FIGURA 75

2- CADASTRO DE CAVALO MECÂNICO E TRUCK (VEÍCULO)
O cadastro de Cavalo Mecânico e Truck têm a finalidade de cadastrar na tabela Veículo, os caminhões que prestam serviço para a empresa, ou caminhões que compõem a frota própria da mesma. A diferença entre o cavalo mecânico e o truck, esta no fato de o primeiro ser engatado a um semi-reboque para poder transportar cargas, enquanto no segundo, a carroceria é parte integrada do veículo. Entre os dois, existe a diferença da capacidade de carga, que no primeiro, para o transporte rodoviário, pode carregar até 75 toneladas de peso bruto e o segundo, para o transporte rodoviário, até 25 toneladas de peso bruto. Este cadastro fornece dados principalmente para a tabela Transportador. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados dos veículos. Ele também fornece um relatório geral da tabela. A FIGURA 76 apresenta a tela inicial do cadastro de Veículos:


FIGURA 76

A tela é composta pela barra de menus (FIGURA 77), barra de ferramentas, (FIGURA 78), o componente fichário (FIGURA 79), onde a aba ativa no momento é a de REGISTROS, e o grupo REGISTROS DE CAVALO MECÂNCIO/TRUCK, onde se encontra a tabela (FIGURA 80) com os dados da tabela:




FIGURA 77

Componentes da barra de menus (FIGURA 77):
? 1 ? Menu/Veículo;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.






FIGURA 78
Componentes da barra de ferramentas (FIGURA 78):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR POR PLACA;
? 13 ? Botão FILTRAR POR CHASSI;
? 14 ? Botão FILTRAR POR RENAVAN;
? 15 ? Botão FILTRAR POR TIPO DE VEÍCULO;
? 16 ? Botão FILTRAR POR PROPRIETÁRIO;
? 17 ? Botão FILTRAR POR ANO;
? 18 ? FILTRAR POR CIDADE;
? 19 ? Botão FILTRAR POR ESTADO.



FIGURA 79

Abas do fichário (FIGURA 79):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.








FIGURA 80

Componentes da tabela REGISTROS DE CAVALO MECÂNICO/TRUCK (FIGURA 80):
1 ? Colunas da tabela;
2 ? Linhas de Registros da tabela.

2.1 ? INSERINDO UM NOVO VEÍCULO
Para inserir uma novo Veículo no banco de dados, o usuário deve clicar no botão NOVO ou pelo menu Veículo/Novo. É ativado a aba EDITAR, conforme a FIGURA 81.











FIGURA 81

Ao ser iniciada a tela, o campo ID VEÍCULO guarda o próximo valor da chave primária da tabela Veículo, evitando a duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa PLACA. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.
O usuário entra com o número da placa na caixa PLACA. A caixa EMPLACAMENTO é preenchida com os nomes de todas as cidades cadastradas na tabela Cidade. Ao selecionar uma cidade na lista e teclar enter, a caixa ESTADO é preenchida com o nome do Estado a qual a Cidade pertence. Depois, o usuário entrará com o ano do veículo na caixa ANO, com o número do chassi na caixa CHASSI, a marca do veículo na caixa MARCA, a cor do veículo na caixa COR e o número do Renavan na caixa RENAVAN. A caixa DATA CADASTRO é preenchida pelo sistema pela data atual. A caixa TIPO VEÌCULO lista todos os tipos de veículos cadastrados no banco, bastando ao usuário selecionar um tipo na lista. A caixa PROPRIETÁRIO lista os nomes de todas as Pessoas Físicas e Jurídicas cadastradas no banco. O usuário deve selecionar qual pessoa é proprietária do veículo. Na saída desta última caixa é habilitado o botão GRAVAR.
Além da chave primária, a tabela Veículo possui outras restrições. O número da Placa, o número do Chassi e o número do Renavan são campos únicos, não podendo ser duplicados em nenhum outro registro da tabela. Se houver uma tentativa de cadastrar um novo Veículo duplicando estes campos, o banco retornará uma mensagem identificando a violação da restrição e não permitirá a inserção do registro. Ao clicar OK na mensagem, o sistema desabilitará a aba EDITAR e habilitará a aba REGISTROS.
Ao clicar no botão GRAVAR, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela, retornando ao usuário a mensagem "VEÍCULO CADASTRADO". Ao clicar Ok, o sistema abre novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar novos registros (ou excluir ou atualizar), basta ele clicar no botão cancelar da caixa de ferramentas, e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS CAVALO MECÂNICO/TRUCK.

2.2? ATUALIZANDO E FILTRANDO UM VEÍCULO
O procedimento para atualizar um registro da tabela Veículo segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra a tabela com os dados dos veículos. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são recuperados para a aba EDITAR.
O botão Atualizar somente é habilitado após a saída da caixa PROPRIETÁRIO. Ao clicar no botão, os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "VEÍCULO ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba REGISTROS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 82. Esta tabela realiza filtros por Placa, Chassi, Renavan, Tipo Veículo, Proprietário, Ano, Cidade e Estado. Os filtros podem ser acionados pelo usuário pelos botões localizados na barra de ferramentas (FIGURA 78) ou pelo menu Filtrar, localizado na barra de menu (FIGURA 77).
Ao ser executado qualquer um dos filtros possíveis, a caixa filtro é preenchida com os valores correspondentes do filtro. Como exemplo, se o usuário realizar um filtro por placas, todas as placas cadastradas na tabela veículo são listadas na caixa filtro. O usuário após selecionar uma opção na lista, deve clicar no botão Filtro, e os dados do registro filtrado são carregados na tabela DADOS CAVALO MECÂNICO/TRUCK. Para carregar o registro para a aba Editar, basta somente dar um duplo clique em cima da linha que se encontra o registro.













FIGURA 82

Componentes da aba FILTROS (FIGURA 82):
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS;
? 3 ? Botão IMPRIMIR;
? 4 ? Botão SAIR;
? 5 ? Caixa Filtro;
? 6 ? Caixa ANO 1;
? 7 ? Caixa ANO 2;
? 8 ? Tabela DADOS CAVALO MECÂNICO/TRUCK.

Ao ser executado qualquer um dos filtros, a caixa filtro é preenchida pelos valores correspondentes do filtro. Como exemplo, se o usuário realizar um filtro por placas, todas elas que estejam cadastradas na tabela veículo são listadas na caixa filtro. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR, e os dados do registro filtrado são carregados na tabela DADOS CAVALO MECÂNICO/TRUCK. Para recuperar o registro para a aba EDITAR, basta somente dar um duplo clique sobre a linha que se encontra o registro.
Se o usuário necessitar gerar um relatório do registro filtrado, é só clicar no botão IMPRIMIR (3), e a tela de visualização de impressão (FIGURA 83) é ativada. O botão CARREGAR TODOS OS DADOS (2) preenche a tabela (6) com todos os registros dos veículos cadastrados no banco. O botão SAIR (4) desabilita a aba FILTROS e habilita a aba REGISTROS.










FIGURA 83



2.3 ? EXCLUINDO UM VEÍCULO
Para excluir um registro da tabela Veículo, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos em que ele escolher, assim que o registro é carregado na aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Veículo na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Veículo. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "VEÍCULO EXCLUIDO", e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS é habilitada.

2.4 ? GERANDO O RELATÓRIO GERAL DE VEÍCULOS
O usuário pode gerar um relatório da tabela Veículo através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 84.











FIGURA 84




3 ? CADASTRO DE SEMI-REBOQUES
O cadastro de Semi-Reboque tem a finalidade de cadastrar as carretas (semi-reboque) que são utilizadas pelos veículos que prestam serviços para a empresa. Existem diferentes tipos de semi-reboques para diferentes tipos de produtos transportados, e este cadastro permite ao usuário identificar qual o tipo de semi-reboque esta sendo cadastrado. Os semi-reboques se diferenciam pelo número de eixos que possuem como a capacidade de carga permitida para eles, dependendo também, a qual tipo de veículo ele esta engatado. Este cadastro, assim como o do Veículo, fornece dados principalmente para a tabela Transportador. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados dos semi-reboques. Ele fornece um relatório geral desta tabela. A FIGURA 85 apresenta a tela inicial do cadastro:












FIGURA 85

A tela é composta pela barra de menus (FIGURA 86), barra de ferramentas, (FIGURA 87), o componente fichário (FIGURA 88), onde a aba ativa no momento é a de REGISTROS, e o grupo REGISTROS DE SEMI-REBOQUES, onde se encontra a tabela (FIGURA 89) do cadastro:



FIGURA 86
Componentes da barra de menus (FIGURA 86):
? 1 ? Menu/Semi-Reboque;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 87

Componentes da barra de ferramentas (FIGURA 87).
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR POR PLACA;
? 13 ? Botão FILTRAR POR CHASSI;
? 14 ? Botão FILTRAR POR RENAVAN;
? 15 ? Botão FILTRAR POR TIPO DE VEÍCULO;
? 16 ? Botão FILTRAR POR PROPRIETÁRIO;
? 17 ? Botão FILTRAR POR ANO;
? 18 ? FILTRAR POR CIDADE;
? 19 ? Botão FILTRAR POR ESTADO.







FIGURA 88

Abas do fichário (FIGURA 88):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.






FIGURA 89

Componentes da tabela REGISTROS DE SEMI-REBOQUES (FIGURA 89):
? 1 ? Colunas da tabela;
? 2 ? Linhas de Registros da tabela.

3.1 ? INSERINDO UM NOVO SEMI-REBOQUE
Para inserir uma novo Semi-Reboque no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Semi-Reboque/Novo. É habilitada a aba EDITAR, conforme a FIGURA 90. Ao ser iniciada a tela, o campo ID SEMI-REBOQUE guarda o próximo valor da chave primária da tabela Semi-Reboque, evitando a duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa PLACA. Os campos de edição obrigatória, ou seja, que não podem ser vazios, informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.












FIGURA 90

O usuário informa o número da placa na caixa PLACA. A caixa EMPLACAMENTO lista todos os nomes das cidades cadastradas na tabela Cidade. Ao selecionar uma cidade na lista e teclar enter, a caixa ESTADO é preenchida com o nome do Estado a qual a Cidade pertence. Depois o usuário entra com o ano do veículo na caixa ANO, com o número do chassi na caixa CHASSI, a marca do veículo na caixa MARCA, a cor do veículo na caixa COR e o número do Renavan na caixa RENAVAN. A caixa DATA CADASTRO é preenchida pela data atual do sistema. A caixa TIPO VEÌCULO lista todos os tipos de veículos cadastrados na tabela Tipo Veículo, bastando o usuário selecionar um tipo na lista. A caixa PROPRIETÁRIO lista todas as Pessoas Físicas e Jurídicas cadastradas na tabela Pessoa Física/Jurídica. O usuário deve selecionar qual pessoa é proprietária do veículo. Na saída desta última caixa é habilitado o botão GRAVAR.
Além da chave primária, a tabela Semi-Reboque possui outras restrições. O número da Placa, o número do Chassi e o número do Renavan são campos únicos, não podendo ter seus valores duplicados em outros registros da tabela. Se houver uma tentativa de cadastrar um novo Semi-Reboque duplicando estes campos, o banco retorna uma mensagem identificando a violação da restrição e não permitindo a inserção do registro editado. Ao clicar OK na mensagem, o sistema desabilita a aba EDITAR e habilita a aba REGISTROS.
Ao clicar no botão GRAVAR, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Semi-Reboque, retornando ao usuário a mensagem "SEMI-REBOQUE CADASTRADO?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar um novo registro (excluir ou atualizar), basta ele clicar no botão CANCELAR da caixa de ferramentas, e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS DE SEMI-REBOQUES.

3.2? ATUALIZANDO E FILTRANDO UM SEMI-REBOQUE
O procedimento que o usuário utilizará para atualizar um registro da tabela Semi-Reboque segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra a tabela com os dados dos semi-reboques. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são recuperados para a aba EDITAR.
O botão ATUALIZAR somente é habilitado após a saída da caixa PROPRIETÁRIO. Ao clicar no botão, os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "SEMI-REBOQUE ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba REGISTROS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 91. Esta tabela realiza filtros por Placa, Chassi, Renavan, Tipo Veículo, Proprietário, Ano, Cidade e Estado. Os filtros podem ser acionados pelo usuário pelos botões localizados na barra de ferramentas (FIGURA 87) ou pelo menu Filtrar, localizado na barra de menu (FIGURA 86).
Ao ser executado qualquer um dos filtros, a caixa filtro é preenchida com os valores correspondentes do filtro. Como exemplo, se o usuário realizar um filtro por placas, todas que estejam cadastradas no banco são listadas na caixa filtro. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR e os dados do registro filtrado são carregados na tabela DADOS SEMI-REBOQUE. Para recuperar o registro para a aba Editar, basta somente dar um duplo clique sobre a linha que se encontra o registro.





















FIGURA 91

Componentes da aba FILTROS (FIGURA 91)
? 1 ? Botão FILTRAR;
? 2 ? Botão CARREGAR TODOS OS DADOS;
? 3 ? Botão IMPRIMIR;
? 4 ? Botão SAIR;
? 5 ? Caixa Filtro;
? 6 ? Caixa ANO 1;
? 7 ? Caixa ANO 2;
? 8 ? Tabela DADOS SEMI-REBOQUE.

Se o usuário necessitar gerar um relatório do registro filtrado, é só ele clicar no botão IMPRIMIR (3), e a tela de visualização de impressão (FIGURA 92) é ativada. O botão CARREGAR TODOS OS DADOS (2) preenche a tabela (6) DADOS SEMI-REBOQUES com todos os registros de semi-reboques cadastrados no banco. O botão SAIR (4) desabilita a aba FILTROS e habilita a aba REGISTROS.













FIGURA 92

3.3 ? EXCLUINDO UM SEMI REBOQUE
Para excluir um registro da tabela Semi-Reboque, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos em que ele escolher, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Semi-Reboque na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Semi-Reboque. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "SEMI-REBOQUE EXCLUIDO", e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS habilitada.

3.4 ? GERANDO O RELATÓRIO GERAL DE SEMI-REBOQUE
O usuário pode gerar um relatório da tabela Semi-Reboque através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário, a aba RELATÓRIO é habilitada, conforme a FIGURA 93.


FIGURA 93

4 ? CADASTRO DO TRANSPORTADOR
O cadastro do Transportador tem a finalidade de cadastrar o conjunto de um veículo transportador que é formado pelo veículo do tipo cavalo mecânico e mais o semi-reboque ou somente por um veículo do tipo truck, mais o motorista. Através deste cadastro, o usuário emitirá um relatório para a empresa de seguro contratada por ele. Neste relatório têm que estar destacado, principalmente, os dados do motorista do veículo e do proprietário do mesmo, além dos dados do próprio veículo. Através destes dados, a seguradora realizará uma consulta na ficha do motorista e autorizará ou não a empresa a liberar o mesmo para fazer o transporte. Se a empresa liberar um determinado motorista a carregar uma carga sem a autorização da seguradora, ela esta assumindo todos os riscos envolvidos no transporte, entre eles, acidentes e assaltos. Este cadastro fornece dados para a tabela Ordem de Coleta. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados dos transportadores. Ele fornece um relatório geral da tabela. A FIGURA 94 apresenta a tela inicial do cadastro:












FIGURA 94

A tela é composta pela barra de menus (FIGURA 95), barra de ferramentas, (FIGURA 96), o componente fichário (FIGURA 97), onde a aba ativa no momento é a de REGISTROS, e o grupo REGISTROS DO TRANSPORTADOR (FIGURA 98) onde se encontra os dados da tabela:




FIGURA 95

Componentes da barra de menus (FIGURA 95):
? 1 ? Menu/Transportador;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 96

Componentes da barra de ferramentas (FIGURA 96):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR POR MOTORISTA;
? 13 ? Botão FILTRAR POR VEICULO;
? 14 ? Botão FILTRAR POR SEMI-REBOQUE;
? 15 ? Botão FILTRAR POR CAPACIDADE.




FIGURA 97

Abas do fichário (FIGURA 97):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.





FIGURA 98

Componentes da tabela REGISTROS DE TRANSPORTADOR (FIGURA 98):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

4.1 ? INSERINDO UM NOVO TRANSPORTADOR
Para inserir uma novo Transportador no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Transportador/Novo. A aba EDITAR é habilitada, conforme a FIGURA 99. Ao ser iniciada a tela, o campo ID TRANSPORTADOR guarda o próximo valor da chave primária, evitando a duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa TIPO FROTA. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.












FIGURA 99

Na caixa TIPO FROTA, o usuário escolherá entre as opções:
? 1 ? FROTA: quando o conjunto transportador pertencer à própria empresa;
? 2 ? AGREGADO: quando o conjunto transportador pertencer à outra empresa;
? 3 ? AUTÔNOMO: quando o veículo transportador pertencer a um proprietário autônomo.
Na caixa motorista são listadas todas as pessoas físicas cadastradas no banco. Este campo é único na tabela Transportador, pois uma pessoa só conduz um único veículo. Na caixa PLACA VEÍCULO, são listadas todas as placas dos veículos cadastrados. Este campo é único e não há permissão para se cadastrar outro transportador com uma placa já cadastrada. Na caixa CAPACIDADE (TN), o usuário informa a capacidade de carga do veículo, onde a sigla TN representa tonelada. Na caixa TIPO CONJUNTO, o usuário pode escolher entre as opções:
? 1 ? TRUCK: para o conjunto formando somente por um veículo do tipo truck. Se for esta a opção, após a sua saída, é habilitado o botão GRAVAR.
? 2 ? CAVALO MECÂNICO E SEMI-REBOQUE: para o conjunto composto por um veículo do tipo cavalo mecânico e de um semi-reboque. Na saída desta opção é habilitado a caixa PLACA SEMI-REBOQUE 1. Este campo é único e não pode haver duplicação no banco, pois uma carreta não pode servir a dois veículos. Após sua saída é habilitado o botão GRAVAR.
? 3 ? BITREM: para o conjunto composto por um veículo do tipo cavalo mecânico e por dois semi-reboques. Estes semi-reboques possuem medidas que variam entre 7 metros e 7,5 metros, e transportam até 20 toneladas de carga cada um. Para esta opção é habilitada a caixa PLACA SEMI-REBOQUE 1 e a caixa PLACA SEMI-REBOQUE 2. Assim como a primeira, a segunda caixa é um campo único e não pode haver duplicação no banco. Após a saída da caixa PLACA SEMI-REBOQUE 2, o botão GRAVAR é habilitado.
? 4 ? TRITREM: para o conjunto formado por um veículo do tipo cavalo mecânico e por três semi-reboques, com as mesmas características do BITREM. Este conjunto é muito utilizado por empresas que transportam cana de açúcar e madeira para celulose. Além das duas caixas abertas na opção BITREM, esta opção habilita a caixa PLACA SEMI-REBOQUE 3, e como as outras duas, esta é um campo único no banco. Após a sua saída é habilitada o botão GRAVAR.
Ao clicar no botão GRAVAR, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Transportador, retornando ao usuário a mensagem "TRANSPORTADOR CADASTRADO?. Ao clicar Ok, o sistema ativa a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar um novo registro (excluir ou atualizar), basta ele clicar no botão CANCELAR na caixa de ferramentas, e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS SEMI-REBOQUES.
4.2? ATUALIZANDO E FILTRANDO UM TRANSPORTADOR
O procedimento que o usuário utilizará para atualizar um registro da tabela Transportador segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra as tabela com os dados dos transportadores. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são carregados na aba EDITAR.
O usuário deve ter muita atenção para atualizar um registro nesta tabela. Como ela trabalha com restrição de veículo, motorista e semi-reboque, ele deve seguir as mesmas regras para atualizar um registro no banco.
A habilitação do botão ATUALIZAR segue as mesmas regras utilizadas para o botão GRAVAR, assim como a navegação pelas caixas de edição. O usuário pode modificar livremente o conjunto transportador, como exemplo, transformar um conjunto BITREM para um TRITREM, e vice-versa. Ao clicar no botão ATUALIZAR, os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "TRANSPORTADOR ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba REGISTROS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 100. Esta tabela realiza filtros pelo nome do Motorista, pela placa do Veículo, pela placa do Semi-Reboque e por Capacidade. Os filtros podem ser acionados pelo usuário pelos botões localizados na barra de ferramentas (FIGURA 96) ou pelo menu Filtrar, localizado na barra de menus (FIGURA 95).
Ao ser executado qualquer um dos filtros, a caixa filtro é preenchida com os valores correspondentes do filtro. Como exemplo, se o usuário realizar um filtro pelo nome do Motorista, todos os nomes de pessoas físicas cadastradas na tabela Pessoa Física/Jurídica são listadas na caixa filtro. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR, e os dados do registro filtrado são carregados na tabela DADOS TRANSPORTADOR. Para recuperar o registro para a aba Editar, basta somente dar um duplo clique sobre a linha que se encontra o registro.


















FIGURA 100

Composição da aba FILTROS (FIGURA 100)
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa Filtro;
? 5 ? Caixa CAPACIDADE 1;
? 6 ? Caixa CAPACIDADE 2;
? 7 ? Tabela DADOS TRANSPORTADOR.

Se o usuário precisar gerar um relatório do registro filtrado, ele deve clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 101) é ativada. Este relatório é o que o usuário enviará para a empresa de seguro. O botão SAIR (3) desabilita a aba FILTROS e habilita a aba REGISTROS.


















FIGURA 101

4.3 ? EXCLUINDO UM TRANSPORTADOR
Para excluir um registro da tabela Transportador, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Semi-Reboque na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Transportador. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "TRANSPORTADOR EXCLUIDO" e ao clicar ok, a aba EDITAR é desabilitada e a aba REGISTROS habilitada.

4.4 ? GERANDO O RELATÓRIO GERAL DE TRANSPORTADORES
O usuário pode gerar um relatório geral da tabela Transportador através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 102.












FIGURA 102

5 ? CONTROLE DA LIBERAÇÃO DO SEGURO
O cadastro do Seguro tem a finalidade de controlar o tempo de permissão de trabalho de um motorista, após a sua liberação pelo seguro. Este tempo corresponde exatamente em um mês após a data de liberação e após este prazo, o motorista, tem que ter seu cadastro novamente passado para a seguradora. Nesta tabela, é cadastrado o número da liberação fornecido pelo seguro. O motorista que estiver com a data de permissão vencida, o sistema não permitirá que uma ordem de coleta possa ser emitida para ele. Neste cadastro o usuário poderá inserir, atualizar, excluir e selecionar os dados do Seguro. Ele fornece um relatório geral desta tabela. A FIGURA 103 apresenta a tela inicial do cadastro do Seguro:









FIGURA 103

A tela é composta pela barra de menus (FIGURA 104), barra de ferramentas, (FIGURA 105), o componente fichário (FIGURA 106), onde a aba ativa no momento é a SEGURADOS, e o grupo LISTA DOS MOTORISTAS SEGURADOS (FIGURA 107), onde se encontra a tabela com os dados do cadastro:




FIGURA 104

Componentes da barra de menus (FIGURA 104):
? 1 ? Menu/Seguradora;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.





FIGURA 105

Componentes da barra de ferramentas (FIGURA 105):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR POR NÚMERO;
? 13 ? Botão FILTRAR POR SEGURADO;
? 14 ? Botão FILTRAR POR DATA LANÇAMENTO;
? 15 ? Botão FILTRAR POR DATA VALIDADE.




FIGURA 106

Abas do fichário (FIGURA 106):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.







FIGURA 107

Componentes da tabela LISTA DOS MOTORISTAS SEGURADOS (FIGURA 107):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

5.1 ? INSERINDO UM NOVO SEGURO
Para inserir um novo Seguro no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Seguro/Novo. A aba EDITAR é habilitado, conforme a FIGURA 108.











FIGURA 108

Ao ser iniciada a tela, o campo NÚMERO CONTROLE guarda o próximo valor da chave primária da tabela Seguro, evitando o problema duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa NOME DO SEGURADO. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.
A caixa NOME DO SEGURADO lista todos os nomes de pessoas físicas cadastradas na tabela Pessoa Física/Jurídica. O usuário deverá selecionar um nome desta lista. Este campo é único na tabela e não pode ter seu valor duplicado. Após a saída deste campo é habilitada a caixa NÚMERO DO SEGURO. Este campo é único na tabela e o seu valor é fornecido pela seguradora. As caixas DATA DO LANÇAMENTO e DATA DE VALIDADE são campos preenchidos automaticamente pelo sistema, onde o primeiro guarda a data em que registro esta sendo cadastrado e o segundo, a data de validade deste registro, que é exatamente um mês após o cadastro. Na saída da caixa NÚMERO DO SEGURO é habilitado o botão GRAVAR.
Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver violação de restrição, o registro é gravado na tabela Seguro, retornando ao usuário a mensagem "SEGURO CADASTRADO?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar um novo registro (excluir ou atualizar), basta clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitada e a aba SEGURADOS habilitada. Os registros cadastrados estão atualizados na tabela LISTA DOS MOTORISTAS SEGURADOS.

5.2? ATUALIZANDO E FILTRANDO UM SEGURO
O procedimento que o usuário utilizará para atualizar um registro da tabela Seguro segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba SEGURADOS, onde se encontra a tabela com os dados dos mesmos. O usuário deve dar um duplo clique no registro que ele deseja atualizar e os dados são recuperados para a aba EDITAR.
O botão ATUALIZAR somente é habilitado após a saída da caixa NÚMERO DO SEGURO. Ao clicar no botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "SEGURO ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba SEGURADOS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 109. Esta tela realiza filtros por Número, por Segurado, por Data de Lançamento e por Data de Validade. Os filtros podem ser acionados pelo usuário pelos botões localizados na barra de ferramentas (FIGURA 105) ou pelo menu Filtrar, localizado na barra de menus (FIGURA 104).













FIGURA 109
Componentes da aba FILTROS (FIGURA 109)
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa Filtro;
? 5 ? Tabela DADOS DO SEGURO;
? 6 ? Caixa FILTRO POR DATA.

Ao ser executado qualquer um dos filtros, a caixa filtro é preenchida com os valores correspondentes do filtro. Como exemplo, se o usuário realizar um filtro por Número, todos os números de seguro cadastrados na tabela Seguro são listadas na caixa filtro. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR e os dados do registro filtrado são carregados na tabela DADOS DO SEGURO. Para recuperar o registro para a aba Editar, basta somente dar um duplo clique sobre a linha em que o mesmo se encontra.
Se o usuário necessitar gerar um relatório do registro filtrado, é só clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 110) é ativada. O botão SAIR (3) desabilita a aba FILTROS e habilita a aba SEGURADOS.













FIGURA 110


5.3 ? EXCLUINDO UM SEGURO
Para excluir um registro da tabela Seguro, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser excluído na aba SEGURADOS ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar neste botão, a função que executa a exclusão da tabela Seguro na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados nesta tabela. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "SEGURO EXCLUIDO" e ao clicar ok, a aba EDITAR é desabilitada e a aba SEGURADOS habilitada.

5.4 ? GERANDO O RELATÓRIO GERAL DO SEGURO
O usuário pode gerar um relatório geral da tabela Seguro através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 111.











FIGURA 111





V ? MÓDULO DE GERENCIAMENTO DA CARGA TRIBUTÁRIA
O Módulo de Gerenciamento da Carga Tributária permite ao usuário inserir, atualizar, excluir e selecionar dados dos cadastros do IRRF (Imposto de Renda Retido na Fonte), Código Fiscal e ICMS (Imposto sobre Circulação de Mercadorias e Serviços).

1 ? IRRF
O cadastro de IRRF tem a finalidade de cadastrar as diferentes faixas de cobrança do Imposto de Renda. Estas faixas são utilizadas pelo módulo do conhecimento de transporte para calcular o valor do IRRF dos motoristas autônomos. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados das faixas do IRRF. Ele fornece um relatório geral desta tabela. A FIGURA 112 apresenta a tela inicial do cadastro.











FIGURA 112

A tela é composta pela barra de menus (FIGURA 113), barra de ferramentas, (FIGURA 114), o componente fichário (FIGURA 115), onde a aba ativa no momento é a IRRF, e o grupo LISTA DAS FAIXAS DE IRRF (FIGURA 116), onde se encontra a tabela com os dados do cadastro:



FIGURA 113


Componentes da barra de menus (FIGURA 113):
? 1 ? Menu/IRRF;
? 2 ? Menu/Arquivo.




FIGURA 114

Componentes da barra de ferramentas (FIGURA 114):
? 1 - Botão NOVO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão EXCLUIR;
? 5? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO.



FIGURA 115

Abas do fichário (FIGURA 115):
? 1 ? Aba IRRF;
? 2 ? Aba EDITAR;
? 3 ? Aba RELATÓRIO.








FIGURA 116

Componentes da tabela LISTA DAS FAIXAS DE IRRF (FIGURA 116):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

1.1 ? INSERINDO UMA NOVA FAIXA DE IRRF
Para inserir uma nova faixa de Imposto de Renda, o usuário deve clicar no botão NOVO ou pelo menu IRRF/Novo. A aba EDITAR é habilitado, conforme a FIGURA 117.











FIGURA 117

Ao ser iniciada a tela, o campo ID FAIXA IRRF guarda o próximo valor da chave primária da tabela, evitando o problema de duplicação da mesma. Todas as caixas são inicializadas com valores em branco e todas são desabilitadas. Somente a caixa PERCENTUAL é habilitada e com o foco do cursor. Todas as caixas são de preenchimento obrigatório e se o usuário tentar passá-las como vazio, o sistema o informa com a mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
Após editar a caixa PERCENTUAL, que armazena a taxa do imposto, o usuário teclará enter, mudando o foco para a caixa seguinte. A caixa FAIXA INICIAL e a caixa FAIXA FINAL limitem a faixa de atuação para o percentual do desconto. Por fim o usuário entrará com os valores nas caixas PARCELA DEDUÇÃO e DEDUÇÃO POR DEPENDENTE. É importante ressaltar que os valores lançados neste registro não são determinados pelo usuário, mas pela lei fiscal do país. O usuário tem que acompanhar as mudanças de faixas e de percentual que o governo venha a implantar na tributação do Imposto de Renda.
Somente após a saída da caixa DEDUÇÃO POR DEPENDENTE que o botão GRAVAR é habilitado. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela IRRF, retornando ao usuário a mensagem "IRRF CADASTRADO?. Ao clicar OK, o sistema habilita novamente a aba EDITAR para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta ele clicar no botão CANCELAR da barra de ferramentas e a aba EDITAR é desabilitada e a aba IRRF habilitada. Os registros cadastrados estão atualizados na tabela LISTA DAS FAIXAS DE IRRF.

1.2? ATUALIZANDO UMA FAIXA DE IRRF
O procedimento que o usuário utilizará para atualizar um registro da tabela IRRF segue os mesmos procedimentos das tabelas anteriores, mas esta tabela por ser populada com poucos registros, não possui o modo filtragem. O usuário selecionará um registro na aba IRRF onde se encontra a tabela com os dados das faixas de IRRF, e dar um duplo clique sobre o registro para os dados serem recuperados para a aba EDITAR.
O botão ATUALIZAR é habilitado após a saída da caixa DEDUÇÃO POR DEPENDENTE. Ao clicar no botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "IRRF ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba IRRF habilitada.

1.3 ? EXCLUINDO UMA FAIXA DE IRRF
Se houver mudanças na tributação do IRRF e for preciso excluir um registro da tabela, ele seguirá os mesmos procedimentos realizados para a atualização. Quando o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela IRRF na camada do servidor é chamada e o registro é excluído, e como esta tabela não possui vínculo direto com nenhuma outra, o registro é excluído diretamente do banco.

1.4 ? GERANDO O RELATÓRIO GERAL DE IRRF
O usuário pode gerar o relatório geral da tabela através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 118.











FIGURA 118

2- CADASTRO DO CÓDIGO FISCAL
O cadastro de CÓDIGO FISCAL tem a finalidade de cadastrar as diferentes descrições da natureza da operação. Ela informa qual o tipo de transporte que esta sendo realizado. Para uma transportadora com sede no estado de São Paulo, ela precisa informar se o transporte é realizado deste estado para outro ou para dentro do próprio estado ou de outro estado para este. A natureza da operação tem interferência direta na determinação da cobrança do ICMS. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados do CÓDIGO FISCAL. Ele fornece um relatório geral desta tabela. A FIGURA 119 apresenta a tela inicial do cadastro.










FIGURA 119

A tela é composta pela barra de menus (FIGURA 120), barra de ferramentas, (FIGURA 121), o componente fichário (FIGURA 122), onde a aba ativa no momento é a CÓDIGO FISCAL, e tabela REGISTROS DO CADASTRO DE CÓDIGOS FISCAIS (FIGURA 123):



FIGURA 120

Componentes da barra de menus (FIGURA 120):
? 1 ? Menu/CÓDIGO FISCAL;
? 2 ? Menu/Arquivo.




FIGURA 121
Componentes da barra de ferramentas (FIGURA 121):
? 1 - Botão NO VO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão EXCLUIR;
? 5? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO.



FIGURA 122

Abas do fichário (FIGURA 122):
? 1 ? Aba CÓDIGO FISCAL;
? 2 ? Aba EDITAR;
? 3 ? Aba RELATÓRIO.





FIGURA 123

Componentes da tabela REGISTROS DO CADASTRO DE CÓDIGOS FISCAIS (FIGURA 123):
? 1 ? Colunas da tabela;
? 2? Linhas da tabela.

2.1 ? INSERINDO UM NOVO CÓDIGO FISCAL
Para inserir um novo Código Fiscal, o usuário deve clicar no botão NOVO ou pelo menu CÓDIGO FISCAL/Novo. A aba EDITAR é habilitada, conforme a FIGURA 124.











FIGURA 124

Ao ser iniciada a tela, o campo ID DO CÓDIGO FISCAL guarda o próximo valor da chave primária desta tabela, evitando o problema de duplicação da mesma. Todas as caixas são inicializadas com valores em branco e todas são desabilitadas. Somente a caixa DESCRIÇÃO DO CÓDIGO FISCAL é habilitada e com o foco do cursor. Todas as caixas são de preenchimento obrigatório e se o usuário tentar passá-las como vazio, o sistema o informará com a mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
Após editar a caixa DESCRIÇÃO DO CÓDIGO FISCAL, que armazena o código, o usuário teclará enter, mudando o foco para a caixa seguinte. A caixa NATUREZA DA OPERAÇÃO descrimina para onde será o transporte. Os dois campos são únicos e não podem ter seus valores duplicados no banco. Somente após a saída da caixa NATUREZA DA OPERAÇÃO é que o botão GRAVAR é habilitado. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Código Fiscal, retornando ao usuário a mensagem "CÓDIGO FISCAL CADASTRADO?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta ele clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitada e a aba CÓDIGO FISCAL habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS DO CADASTRO DE CÓDIGOS FISCAIS.


2.2? ATUALIZANDO UM CÓDIGO FISCAL
O procedimento que o usuário utilizará para atualizar um registro da tabela segue os mesmos procedimentos das tabelas anteriores, mas esta tabela por ser populada com poucos registros, não possui o modo filtragem. O usuário selecionará um registro na aba CÓDIGO FISCAL, onde se encontra as tabela com os dados dos códigos fiscais, e dar um duplo clique sobre o registro para os dados serem recuperados para a aba EDITAR.
O botão ATUALIZAR é habilitado após a saída da caixa NATUREZA DA OPERAÇÃO. Ao clicar neste botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "CÓDIGO FISCAL ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba CÓDIGO FISCAL habilitada.

2.3 ? EXCLUINDO UM CÓDIGO FISCAL
Para o usuário excluir um registro desta tabela, ele seguirá os mesmos procedimentos realizados para a atualização. Quando o registro é recuperado para a aba EDITAR o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão do registro na camada do servidor é chamada e o mesmo é excluído. O registro só não será excluído se ele estiver sendo utilizado por outra tabela, retornando ao usuário a mensagem de restrição de exclusão do banco.

2.4 ? GERANDO O RELATÓRIO GERAL DE CÓDIGO FISCAL
O usuário pode gerar um relatório geral da tabela através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÒRIO, conforme a FIGURA 125.


















FIGURA 125

3 ? CADASTRO DO ICMS (IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS E SERVIÇOS)
O cadastro de ICMS tem a finalidade de cadastrar as diferentes taxas do imposto cobrado pelos estados brasileiros. É importante o usuário sempre acompanhar as mudanças que cada estado realiza na taxa deste imposto. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados do ICMS. Ele fornece um relatório geral desta tabela. A FIGURA 126 apresenta a tela inicial do cadastro de ICMS.











FIGURA 126

A tela é composta pela barra de menus (FIGURA 127), barra de ferramentas, (FIGURA 128), o componente fichário (FIGURA 129), onde a aba ativa no momento é a ICMS e a tabela REGISTROS DO CADASTRO DE TAXAS DO ICMS (FIGURA 130):




FIGURA 127

Componentes da barra de menus da FIGURA 127:
? 1 ? Menu/ICMS;
? 2 ? Menu/Arquivo.




FIGURA 128

Componentes da barra de ferramentas (FIGURA 128):
? 1 - Botão NO VO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão EXCLUIR;
? 5? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO.



FIGURA 129

Abas do fichário (FIGURA 129):
? 1 ? Aba ICMS;
? 2 ? Aba EDITAR;
? 3 ? Aba RELATÓRIO.




FIGURA 130

Componentes da tabela REGISTROS DO CADASTRO DE TAXAS DE ICMS (FIGURA 130):
? 1 ? Colunas da tabela;
? 2 ? Linhas de Registros da tabela.

3.1 ? INSERINDO UMA TAXA DE ICMS
Para inserir uma nova taxa de ICMS, o usuário deve clicar no botão NOVO, ou pelo menu ICMS/Novo. A aba EDITAR é habilitado, conforme a FIGURA 131.











FIGURA 131

Ao ser iniciada a tela, o campo ID DO CADASTRO DO ICMS guarda o próximo valor da chave primária da tabela ICMS, evitando o problema de duplicação da mesma. Todas as caixas são inicializadas com valores em branco e todas são desabilitadas. Somente a caixa do campo ESTADO é habilitada e com o foco do cursor. Todas as caixas são de preenchimento obrigatório e se o usuário tentar passá-las como vazio, o sistema o informará com a mensagem de "CAMPO NÃO PODE SER EM BRANCO", retornando o foco para o próprio campo.
A caixa do campo ESTADO lista todos os estados cadastrados no banco. Este campo é único, onde só é permitido um estado ser cadastrado uma única vez. Após editar a caixa, o usuário teclará enter, mudando o foco para a caixa seguinte. Na caixa TAXA DO ICMS, o usuário informará a taxa do ICMS para o estado escolhido na caixa anterior.
Após a saída da caixa TAXA DO ICMS, o botão GRAVAR é habilitado. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela ICMS, retornando ao usuário a mensagem "ICMS CADASTRADO". Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta ele clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitada e a aba ICMS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS DO CADASTRO DE TAXAS DO ICMS.

3.2? ATUALIZANDO UMA TAXA DE ICMS
Quando ocorrer qualquer mudança realizada por um estado na taxa de ICMS, o usuário deverá atualizar o cadastro do ICMS. O procedimento que o usuário utilizará para atualizar um registro nesta tabela segue os mesmos procedimentos das tabelas anteriores, mas esta tabela por ser populada com poucos registros, não possui o modo filtragem. O usuário selecionará um registro na aba ICMS onde se encontra a tabela com os dados das taxas de ICMS, e dar um duplo clique sobre o registro para os dados serem recuperados para a aba EDITAR.
O botão ATUALIZAR é habilitado após a saída da caixa TAXA DO ICMS. Ao clicar neste botão os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "ICMS ATUALIZADO" é retornada ao usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba ICMS habilitada.

3.3 ? EXCLUINDO UMA FAIXA DE IRRF
Para excluir um registro da tabela, o usuário seguirá os mesmos procedimentos realizados para a atualização. Quando o registro é recuperado para a aba EDITAR o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela ICMS na camada do servidor é chamada e o registro é excluído. A exclusão não ocorrerá se o registro estiver sendo utilizado por outra tabela e uma mensagem de violação de restrição de chave estrangeira será comunicada ao usuário.

3.4 ? GERANDO O RELATÓRIO GERAL DE TIPOS DE VEÍCULO
O usuário pode gerar um relatório geral da tabela ICMS através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário, a aba RELATÓRIO é habilitada, conforme a FIGURA 132.











FIGURA 132









VI ? MÓDULO DE GERENCIAMENTO DE RETIRADA
Neste módulo o usuário gerenciará as tabelas Produto, Pedido, Programação e Ordem de coleta. Através destas tabelas, o usuário pode inserir, atualizar, excluir, selecionar e filtrar dados. Este módulo é de grande importância para o sistema. Através dele, o usuário pode lançar os pedidos de retirada, programar e emitir as ordens de coleta para veículos realizarem as retiradas.

1 ? CADASTRO DE PRODUTO
A tabela Produto permite ao usuário cadastrar os diferentes produtos que a empresa pretende transportar. Neste cadastro, o usuário pode inserir, atualizar, excluir, selecionar e filtrar um produto. A FIGURA 133 apresenta a tela inicial do cadastro de produto:


FIGURA 133

A tela é composta pela barra de menus (FIGURA 134), barra de ferramentas, (FIGURA 135), o componente fichário (FIGURA 136), onde a aba ativa no momento é a PRODUTOS e a tabela LISTA DOS PRODUTOS CADASTRADOS (FIGURA 137):





FIGURA 134


Componentes da barra de menus (FIGURA 134):
? 1 ? Menu/Produto;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 135

Componentes da barra de ferramentas (FIGURA 135):
? 1 - Botão Novo;
? 2 - Botão Gravar;
? 3 ? Botão Atualizar;
? 4 ? Botão Excluir;
? 5 ? Botão Cancelar;
? 6 ? Botão Fechar;
? 7 ? Botão Último Registro;
? 8 ? Botão Próximo Registro;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão Registro Anterior;
? 11 ? Botão Primeiro Registro;
? 12 ? Botão FILTRAR POR PRODUTO.



FIGURA 136

Abas do fichário (FIGURA 136):
? 1 ? Aba PRODUTOS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.





FIGURA 137

Componentes da tabela LISTA DOS PRODUTOS CADASTRADOS (FIGURA 137):
? 1 ? Colunas da tabela;
? 2? Linhas de Registros da tabela.

1.1 ? INSERINDO UM NOVO PRODURO
Para inserir uma novo produto no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Produto/Novo. A aba EDITAR é habilitado, conforme a FIGURA 138.











FIGURA 138

Ao ser iniciada a tela, o campo NÚMERO DO PRODUTO guarda o próximo valor da chave primária da tabela Produto, evitando o problema de duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa DESCRIÇÃO DO PRODUTO. Os campos de edição é obrigatório, ou seja, não podem ser vazios, informa a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.
Na caixa DESCRIÇÃO DO PRODUTO o usuário informa o nome do mesmo. Na caixa VOLUME é descrito como o produto será cobrado pelo seu transporte. O volume pode ser indicado por tonelada, por quilograma, por caixa, por unidade, entre outras formas. A caixa SIGLA VOLUME descreve a abreviação para o volume determinado para o produto, como exemplo, para a tonelada é utilizada a sigla TN, para caixa a sigla CX, etc.. A caixa da sigla só permite a inserção pelo usuário de dois caracteres.
A caixa DESCRIÇÃO DO PRODUTO é um campo único no banco de dados, e não pode ter seu valor duplicado. O botão GRAVAR é habilitado após a saída da caixa SIGLA VOLUME. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Produto, retornando ao usuário a mensagem "PRODUTO CADASTRADO?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise lançar novos registros (excluir ou atualizar), basta clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitada e a aba PRODUTOS habilitada. Os registros cadastrados estão atualizados na tabela LISTA DOS PRODUTOS CADASTRADOS.

1.2? ATUALIZANDO E FILTRANDO UM PRODUTO
O procedimento que o usuário utilizará para atualizar um registro da tabela Produto segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba PRODUTOS, onde se encontra a tabela com os dados dos mesmos. O usuário deve dar um duplo clique sobre o registro que deseja atualizar e os dados serão recuperados para a aba EDITAR.
O botão ATUALIZAR é habilitado após a saída da caixa SIGLA VOLUME. Ao clicar no botão, os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "PRODUTO ATUALIZADO" é retornada ao usuário. Após clicar OK, a aba EDITAR é desabilitado e a aba PRODUTOS habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 139. Esta tabela realiza o filtro pelo nome do produto através do menu Filtrar/Por Produto ou pelo botão FILTRAR POR PRODUTO, localizado na barra de ferramenta (FIGURA 135).













FIGURA 139

Componentes da aba FILTROS (FIGURA 139)
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa Filtro;
? 5 ? Tabela DADOS DO PRODUTO.

Ao ser executado o filtro, a caixa filtro lista todos os nomes dos produtos cadastrados no banco. O usuário após selecionar uma opção na lista, deve clicar no botão FILTRAR e os dados do registro filtrado são carregados na tabela DADOS DO PRODUTO. Para recuperar o registro para a aba Editar, basta dar um duplo clique sobre a linha em que se encontra o registro.
Se o usuário necessitar gerar um relatório do registro filtrado, deve clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 140) é ativada. O botão SAIR (3) desabilita a aba FILTROS e habilita a aba PRODUTOS.













FIGURA 140

1.3 ? EXCLUINDO UM PRODUTO
Para excluir um registro da tabela Produto, o usuário procederá da mesma forma na atualização. Ele pode escolher o registro a ser excluído na aba PRODUTOS ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Produto na camada do servidor é chamada e o registro é excluído.
É importante notificar que a mesma regra para a exclusão de um registro para as outras tabelas, é aplicada para a exclusão de dados na tabela Produto. Se o registro não estiver sendo utilizado por outra tabela, é retornada ao usuário a mensagem "PRODUTO EXCLUIDO" e ao clicar ok, a aba EDITAR é desabilitada e a aba PRODUTOS habilitada.

1.4 ? GERANDO O RELATÓRIO GERAL DE PRODUTOS
O usuário pode gerar um relatório geral da tabela Produto através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário, a aba RELATÒRIO é habilitada, conforme a FIGURA 141.











FIGURA 141

2 ? CADASTRO DE PEDIDO
O cadastro do Pedido permite ao usuário cadastrar os pedidos de transporte que ele recebe de seus clientes. Esta tabela possui algumas particularidades que o usuário tem que seguir para melhor gerenciar o cadastro. O usuário pode emitir novos pedidos, mas a atualização é restrita a alguns campos. Um pedido não pode ser excluído, mas somente cancelado ou fechado. O ideal é o usuário fechar o pedido. O usuário pode realizar filtros nesta tabela. A FIGURA 142 apresenta a tela inicial do cadastro:












FIGURA 142
A tela é composta pela barra de menus (FIGURA 143), barra de ferramentas, (FIGURA 144), o componente fichário (FIGURA 145), onde a aba ativa no momento é a REGISTROS, e tabela REGISTROS DOS PEDIDOS (FIGURA 146):











FIGURA 143

Componentes da barra de menus (FIGURA 143):
? 1 ? Menu/Lançamento Pedido;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 144

Composição da barra de ferramentas (FIGURA 144):
? 1 - Botão NOVO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão CANCELAR PEDIDO;
? 5 ? Botão FECHAR PEDIDO;
? 6 ? Botão CANCELAR;
? 7 ? Botão FECHAR;
? 8 ? Botão ULTIMO REGISTRO;
? 9 ? Botão PRÓXIMO REGISTRO;
? 10 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 11 ? Botão REGISTRO ANTERIOR;
? 12 ? Botão PRIMEIRO REGISTRO;
? 13 ? Botão FILTRAR POR PEDIDO;
? 14 ? Botão FILTRAR POR PRODUTO;
? 15 ? Botão FILTRAR POR CLIENTE;
? 16 ? Botão FILTRAR POR PERÍODO.



FIGURA 145

Abas do fichário (FIGURA 145):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.


1

FIGURA 146

Componentes da tabela REGISTROS DOS PEDIDOS (FIGURA 146):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

2.1 ? EMITINDO UM NOVO PEDIDO
Para o usuário poder emitir um novo pedido para um determinado cliente, com um mesmo produto e as mesmas condições de um pedido já existente, é preciso que o usuário feche o pedido primeiro, pois o sistema bloqueará a criação do novo. Geralmente o pedido atende a retirada de mercadorias de um cliente para um único mês, sendo aconselhável para um outro mês, ser aberto um novo pedido.
Para ser emitido um novo pedido no banco de dados, o usuário deve clicar no botão NOVO, ou pelo menu Lançamento Pedido/Novo. A aba EDITAR é habilitado, conforme a FIGURA 147.













FIGURA 147

Ao ser iniciada a tela, o campo NÚMERO PEDIDO guarda o valor do novo pedido, que é a chave primária da tabela. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa PRODUTO. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.
A caixa PRODUTO lista o nome de todos os produtos cadastrados no banco. As caixas de edição do REMETENTE, DESTINATÁRIO, LOCAL RETIRADA, LOCAL ENTREGA, CONSIGNATÁRIO e RESPONSÁVEL PELO FRETE têm a mesma finalidade, ou seja, listar os nomes de todas as pessoas, tanto físicas como jurídicas, para o usuário poder selecionar uma opção, onde:
? Remetente: é aquele que esta remetendo (enviando) a mercadoria;
? Destinatário: é aquele a quem a mercadoria se destina;
? Local da retirada: local onde a mercadoria vai ser retirada, podendo ser o mesmo do remetente ou não;
? Local da entrega: local onde a mercadoria vai ser entregue, podendo ser a mesma do destinatário ou não;
? Consignatário: é aquele que pode ser o responsável de pagar o frete, mesmo não sendo ele o cliente, para quem a mercadoria se destina;
? Responsável pelo frete: é o campo que determina o cliente e que geralmente é o responsável pelo pagamento do frete.
A caixa DATA LANÇAMENTO é editada automaticamente pelo sistema pela data em que o pedido estiver sendo emitido. A caixa DATA INÍCIO determina a data de início da retirada. A caixa DATA FIM determina o fim do prazo para a retirada. A caixa QUANTIDADE PEDIDO informa a quantidade do volume do pedido. O volume é determinado na escolha do produto na caixa PRODUTO. A caixa QUANTIDADE RETIRADA e a caixa SALDO são preenchidas automaticamente quando o usuário sai da caixa anterior, onde a primeira recebe o valor zero e a segunda, recebe como valor o mesmo da caixa QUANTIDADE PEDIDO. Na caixa VALOR FRETE TOTAL o usuário informa qual o valor do frete que será cobrado do cliente. Este valor é determinado pelas opções POR VOLUME e POR VIAGEM, ocorrendo o mesmo para a caixa VALOR FRETE MOTORISTA, onde o usuário informa o valor do frete que será pago aos veículos terceirizados. Na caixa INCIDÊNCIA DE ICMS, o usuário determinará se o pedido sofrerá a tributação do ICMS. Se a opção for não, a caixa ICMS terá o valor zero e se a opção for sim, a caixa receberá o valor da taxa do ICMS do estado a qual a cidade do cliente pertence. A caixa CÓDIGO FISCAL lista todas as descrições da tabela Código Fiscal cadastradas no banco. A caixa Status será editada com o valor.
O botão GRAVAR é habilitado após a saída da caixa CÓDIGO FISCAL. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição (a existência de um pedido com as mesmas condições que ainda esteja aberto), o registro é gravado na tabela Pedido, retornando ao usuário a mensagem "PEDIDO CADASTRADO?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro liberado.
Caso o usuário não precise lançar um novo registro (excluir ou atualizar), basta clicar no botão CANCELAR da caixa de ferramentas, e a aba EDITAR é desabilitada e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS DOS PEDIDOS.

2.2? ATUALIZANDO E FILTRANDO UM PEDIDO
O procedimento que o usuário utilizará para atualizar um registro da tabela Pedido segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra a tabela com os dados dos pedidos. O usuário deve dar um duplo clique sobre o registro que deseja atualizar e os dados são recuperados para a aba EDITAR.
Os únicos campos permitidos para atualização são: caixa DATA INICIO, caixa DATA FIM, caixa QUANTIDADE PEDIDO, caixa VALOR FRETE TOTAL e a caixa VALOR FRETE MOTORISTA. Na saída desta última caixa o botão ATUALIZAR é habilitado. Ao clicar no botão, os dados são remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "PEDIDO ATUALIZADO" é emitida para o usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba REGISTROS é habilitada.
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 148. Esta tabela realiza filtros por número do pedido, por nome do produto, por nome do cliente e por um período, através do menu Filtrar ou pelos botões localizados na barra de ferramentas (FIGURA 144).















FIGURA 148

Componentes da aba FILTROS (FIGURA 148):
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa Filtro;
? 5 ? Tabela DADOS PEDIDO;
? 6 ? Caixa DATA 1;
? 7 ? Caixa DATA 2.

Ao ser executado um filtro por cliente, a caixa filtro lista todos os nomes das pessoas físicas e jurídicas cadastradas no banco. Se for executado um filtro por um período, o usuário terá que informar duas datas, inicial e final, nas caixas DATA 1 e DATA 2. O usuário após selecionar uma opção na lista ou preencher as datas, deve clicar no botão Filtro e os dados do registro filtrado são carregados na tabela DADOS PEDIDO. Para recuperar o registro para a aba Editar, basta dar um duplo clique sobre a da linha em que se encontra o registro.
Se o usuário precisar gerar um relatório do registro filtrado, é só clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 149) é ativada. O botão SAIR (3) desabilita a aba FILTROS e habilita a aba REGISTROS.













FIGURA 149

2.3 ? FECHANDO OU CANCELANDO UM PEDIDO
O cadastro Pedido não permite que um registro seja excluído, mas somente fechado ou cancelado. Para fechar ou cancelar um registro da tabela, o usuário procederá da mesma forma em que ele atualizou um registro. Ele pode escolher o registro a ser fechado ou cancelado na aba REGISTROS, ou filtrá-lo através da aba FILTROS. Em qualquer um dos métodos, assim que o registro é recuperado para a aba EDITAR, o botão CANCELAR PEDIDO e o botão FECHAR PEDIDO são habilitados.
Um pedido somente pode ser cancelado, se o campo QUANTIDADE RETIRADA do mesmo for igual a zero. Ao clicar no botão cancelar, a função na camada do servidor que cancela um pedido, verifica esta condição, e se ela for verdadeira a função modifica o campo STATUS da tabela para CANCELADO. O usuário recebe uma mensagem de "PEDIDO CANCELADO" e ao clicar OK, a aba EDITAR é desabilitada e a aba REGISTROS é habilitada. A partir deste momento o pedido não poder mais ser utilizado pelo sistema, a não ser apenas para uma eventual consulta.
Ao clicar no botão FECHAR PEDIDO, a função na camada do servidor que fecha um pedido é chamada. Esta função modifica os campos QUANTIDADE PEDIDO, SALDO e STATUS. O primeiro passa a ter o mesmo valor do campo QUANTIDADE RETIRADA, o segundo passa a ter valor zero e o terceiro tem o seu valor modificado para FECHADO. O usuário recebe uma mensagem de "PEDIDO FECHADO" e ao clicar OK, a aba EDITAR é desabilitada e a aba REGISTROS é habilitada. A partir deste momento o pedido não poder mais ser utilizado pelo sistema, a não ser apenas para consultas.

2.4 ? GERANDO O RELATÓRIO GERAL DE PEDIDOS
O usuário pode gerar um relatório da tabela Pedido através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 150.










FIGURA 150
3 ? CADASTRO DE PROGRAMAÇÃO
A tabela Programação permite ao usuário programar a retirada dos pedidos de transporte dos seus clientes. O usuário pode programar novas datas de retirada, atualizar quantidades programadas para uma data, excluir datas programadas, filtrar programação e emitir relatórios. É por esta tabela que o sistema permite ao usuário emitir a ordem de coleta para os veículos. Esta tabela é atualizada pelo menos uma vez por dia pelo sistema, onde atualiza os campos quantidade programada e saldo das programações com datas inferiores a sua data atual e excluir programações que até esta data ainda tenham o seu campo quantidade retirada igual a zero. A FIGURA 151 apresenta a tela inicial do cadastro de pedido:









FIGURA 151
A tela é composta pela barra de menus (FIGURA 152), barra de ferramentas, (FIGURA 153), o componente fichário (FIGURA 154), onde a aba ativa no momento é a REGISTROS, e a tabale REGISTROS PROGRAMAÇÃO (FIGURA 155), onde se encontra os dados do cadastro:



FIGURA 152

Componentes da barra de menus (FIGURA 152):
? 1 ? Menu/Programação;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.





FIGURA 153

Componentes da barra de ferramentas (FIGURA 153):
? 1 - Botão NOVO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão CANCELAR PEDIDO;
? 5 ? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO;
? 12 ? Botão FILTRAR POR PEDIDO;
? 13 ? Botão FILTRAR POR DATA DE PROGRAMAÇÃO;
? 14 ? Botão FILTRAR POR CLIENTE;
? 15 ? FILTRAR POR DATA E NÚMERO DE PEDIDO;
? 16 ? FILTRAR POR PERÍODO;
? 17 ? POR CLIENTE E PERÍODO.



FIGURA 154

Abas do fichário (FIGURA 154):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIO.


1

FIGURA 155

Componentes da tabela REGISTROS PROGRAMAÇÃO (FIGURA 155):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

3.1 ? EMITINDO UMA NOVA DATA PROGRAMAÇÃO
Para emitir uma nova data de programação de retirada, o usuário deve clicar no botão NOVO ou pelo menu Programação/Nova Data. A aba EDITAR é habilitada, conforme a FIGURA 156. Ao ser iniciada a tela, o campo NÚMERO CONTROLE guarda o valor da chave primária da tabela Programação, evitando a duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa NÚMERO PEDIDO. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.












FIGURA 156
A caixa do NÚMERO PEDIDO lista para o usuário todos os números dos pedidos liberados, não sendo exibidos os pedidos que o campo Status esteja com o valor FECHADO ou CANCELADO. Quando o usuário escolhe um pedido e teclar enter, a caixa DADOS PEDIDO exibe os dados referentes a este pedido para poder conferir o registro. Depois de escolher o número do pedido, é determinada a data da programação na caixa DATA DA RETIRADA. Esta data não pode ser menor que a data de início do pedido e não pode ser maior que a data de fim do pedido. A data é um campo único para um número de pedido, ou seja, um mesmo pedido não pode ter duas datas de programação iguais. Quando o usuário teclar enter na caixa DATA DA RETIRADA, todas as datas que já estejam programadas para o pedido são listadas na caixa DADOS DA PROGRAMAÇÃO.
Depois de determinar a data, o usuário informará a quantidade de volume do produto para ser retirada na caixa QTDE PROGRAMADA. A quantidade programada não pode ser maior que a quantidade especificada no pedido. Para orientar o usuário, após a saída da caixa NÚMERO PEDIDO são preenchidos os campos QUANTIDADE PEDIDO, QUANTIDADE PROGRAMADA ACUMULADA e DIFERENÇA. O primeiro informa o usuário à quantidade do pedido, o segundo a quantidade que já foi programada para este pedido e o terceiro, a quantidade do pedido que ainda possa ser programada. Em uma tentativa do usuário lançar na caixa QTDE PROGRAMADA um valor maior do especificado no campo DIFERENÇA, o sistema informará uma mensagem de erro. Após a saída da caixa QTDE PROGRAMADA são preenchidas automaticamente as caixas QTDE RETIRADA e SALDO, somente na saída desta caixa, que o botão GRAVAR é habilitado.
Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Programação, retornando para o usuário a mensagem "PROGRAMAÇÃO CADASTRADA?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar uma nova programação.
Caso o usuário não precise lançar um novo registro (excluir ou atualizar), basta clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitado e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS PROGRAMAÇÃO.

3.2? ATUALIZANDO E FILTRANDO UMA PROGRAMAÇÃO
O procedimento que o usuário utilizará para atualizar um registro da tabela segue os mesmos procedimentos das tabelas anteriores. O usuário pode selecionar um registro na aba REGISTROS, onde se encontra as tabelas com os dados das programações. O usuário deve dar um duplo clique no registro que deseja atualizar e os dados são recuperados para a aba EDITAR.
Quando um registro da tabela Programação é recuperado, todas as caixas da aba EDITAR são preenchidas com os valores do registro. A caixa DADOS PEDIDO carrega os dados do pedido da programação e a caixa DADOS DA PROGRAMAÇÃO, carrega todas as programações cadastradas para o pedido. O usuário pode utilizar esta caixa para recuperar outras datas de programação que precise atualizar através de um duplo clique sobre a linha em que o registro se encontra.
O único campo permitido para atualização do usuário nesta tabela é a caixa QTDE PROGRAMADA. Ele pode informar um novo valor de volume a ser retirado, desde que não ultrapasse o valor especificado no campo DIFERENÇA. Após a saída desta caixa é habilitado o botão ATUALIZAR. Ao clicar neste botão, os dados são remetidos para o banco de dados, para a função que atualiza a tabela Programação localizada na camada do servidor. Se a atualização ocorrer corretamente é retornada ao usuário a mensagem "PROGRAMAÇÃO ATUALIZADA".
O usuário pode selecionar um registro para ser alterado através da aba FILTROS, conforme a FIGURA 157. Esta tabela filtra dados por número do pedido, por data de programação, por cliente, por data e número do pedido, por período e o cliente e por período através do menu Filtrar ou pelos botões localizados na barra de ferramentas (FIGURA 153).













FIGURA 157
Componentes da aba FILTROS (FIGURA 157)
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa FILTRO;
? 5 ? Tabela DADOS PROGRAMAÇÃO;
? 6 ? Caixa DATA 1;
? 7 ? Caixa DATA 2.
Ao ser executado um filtro por cliente, a caixa FILTRO lista todos os nomes das pessoas físicas e jurídicas cadastradas no banco. Se for executado um filtro por um período, o usuário terá que informar duas datas, inicial e final, nas caixas DATA 1 e DATA 2. Se for realizado um filtro por cliente e período, o usuário tem que escolher um nome da lista na caixa FILTRO e depois informar as datas, inicial e final, nas caixas DATA 1 e DATA 2. O usuário após selecionar uma das opções e preenchido as caixas, deve clicar no botão FILTRAR e os dados do registro filtrado são carregados na tabela DADOS PROGRAMAÇÃO. Para recuperar o registro para a aba Editar, basta dar um duplo clique sobre a linha em que se encontra o registro.
Se o usuário necessitar gerar um relatório do registro filtrado, deve clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 158) é ativada. O botão SAIR (3) desabilita a aba FILTROS e habilita novamente a aba REGISTROS.












FIGURA 158

3.3 ? EXCLUINDO UMA PROGRAMAÇÃO
Para excluir um registro da tabela Programação, o usuário segue os mesmos procedimentos realizados para a atualização. Quando um registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. O usuário, pode excluir um registro desta da tabela, quando o campo quantidade retirada for igual a zero. Ao clicar no botão EXCLUIR, a função na camada do servidor que exclui um registro da tabela Programação é chamada e se não ocorrer nenhum erro é retornada ao usuário a mensagem "PROGRAMAÇÃO EXCLUIDA".

3.4 ? GERANDO O RELATÓRIO GERAL DE PROGRAMAÇÃO
O usuário pode gerar um relatório geral da tabela Programação através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 159.













FIGURA 159

4 ? CADASTRO DE ORDEM DE COLETA
A tabela Ordem de Coleta emite uma autorização para um veículo transportador poder retirar um produto em uma empresa. Através do cadastro, o usuário pode emitir uma nova ordem de coleta como também excluir, mas não tem permissão para atualização. O usuário pode selecionar e filtrar registros da tabela, além de poder gerar relatórios. É somente com a emissão da ordem de coleta e a confirmação de carregamento do veículo através da nota fiscal da empresa, que o usuário emitirá o conhecimento de transporte. A FIGURA 160 apresenta a tela inicial do cadastro de Ordem de Coleta:












FIGURA 160

A tela é composta pela barra de menus (FIGURA 161), barra de ferramentas, (FIGURA 162), o componente fichário (FIGURA 163), onde a aba ativa no momento é a REGISTROS, e o grupo REGISTROS ORDEM DE COLETA (FIGURA 164), onde se encontra todos os registros do cadastro:



FIGURA 161

Componentes da barra de menus (FIGURA 161):
? 1 ? Menu/Ordem de Coleta;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.








FIGURA 162

Componentes da barra de ferramentas (FIGURA 162):
? 1 - Botão NOVO;
? 2 - Botão GRAVAR;
? 3 ? Botão EXCLUIR;
? 4 ? Botão SALVAR E IMPRIMIR ORDEM DE COLETA;
? 5 ? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO;
? 12 ? Botão FILTRAR POR MOTORISTA;
? 13 ? Botão FILTRAR POR PEDIDO;
? 14 ? Botão FILTRAR POR PERÍODO;
? 15 ? Botão FILTRAR POR CLIENTE E DATA;
? 16 ? Botão FILTRAR POR PEDIDO E DATA;
? 17 ? Botão FILTRAR POR PEDIDO E MOTORISTA.



FIGURA 163

Abas do fichário (FIGURA 163):
? 1 ? Aba REGISTROS;
? 2 ? Aba EDITAR;
? 3 ? Aba FILTROS;
? 4 ? Aba Relatório.



FIGURA 164

Componentes da tabela REGISTROS ORDEM COLETA (FIGURA 164):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

4.1 ? EMITINDO UMA NOVA ORDEM DE COLETA
Para emitir uma nova ordem de coleta, o usuário deve clicar no botão NOVO ou pelo menu Ordem Coleta/Nova Ordem Coleta. A aba EDITAR é habilitada, conforme a FIGURA 165. Ao ser iniciada a tela, o campo NÚMERO ORDEM COLETA guarda o próximo valor da chave primária da tabela evitando o problema de duplicação da mesma. Todas as caixas são inicializadas e desabilitadas, sendo somente habilitada a caixa DATA RETIRADA. A caixa DATA CADASTRO guarda automaticamente a data atual. Os campos de edição obrigatória, ou seja, que não podem ser vazios informará a mensagem "CAMPO NÃO PODE SER EM BRANCO" se o usuário tentar passá-los em branco, retornando o foco para o próprio campo.












FIGURA 165

Na caixa DATA RETIRADA, o usuário informa a data da programação. Se esta data for inferior a data atual do sistema, o sistema retorna para o usuário uma mensagem informando que a data é invalida. É permitida somente datas com valores acima ou igual à data atual. Após a saída dela, toda programação cadastrada no banco que possua o campo DATA DA RETIRADA igual à data informada pelo usuário, é carregada na caixa LISTA DE PROGRAMAÇÃO CONFORME DATA RETIRADA, na qual o usuário selecionará um dos registros através de um duplo clique sobre a linha em que ele se encontra.
Após esta ação do usuário, dados sobre a programação escolhida são recuperadas nas caixas NÚMERO CONTROLE, NÚMERO PEDIDO, DATA RETIRADA, QTDE PROGRAMADA, QTDE RETIRADA E SALDO A RETIRAR. São preenchidos os campos QUANTIDADE PROGRAMADA, QUANTIDADE PROGRAMADA ACUMULADA e DIFERENÇA, onde o primeiro informa a quantidade programada para o registro da tabela Programação escolhido pelo usuário, o segundo informa qual o volume já reservado por emissões de outras ordens de coleta deste registro e o terceiro informa o volume deste registro que ainda pode ser retirado.
A caixa MOTORISTA DO VEÍCULO lista todas as pessoas físicas cadastradas no banco. Após o usuário selecionar um nome da lista e teclar enter, o sistema verificará a situação do motorista na tabela Seguro, através do campo Data de Validade. Se este campo estiver com a data vencida, o sistema não permite a emissão da ordem de coleta e cancelará o evento, sendo preciso o usuário solicitar nova liberação da Seguradora. Com a data de validade ainda no prazo, é liberada a caixa QUANTIDADE A RETIRAR. Esta caixa recupera o valor padrão de capacidade de carga para o veículo conduzido pelo motorista. O usuário pode alterar o valor do campo, mas não acima do valor padrão informado na caixa. Após a saída desta caixa, é habilitado o botão GRAVAR e o botão SALVAR E IMPRIMIR ORDEM DE COLETA.
Ao clicar no botão GRAVAR, o sistema chama a função localizada na camada do servidor e se não houver nenhuma violação de restrição, o registro é gravado na tabela Ordem de Coleta, retornando para o usuário a mensagem "ORDEM DE COLETA CADASTRADA?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar uma nova ordem de coleta. O botão SALVAR E IMPRIMIR ORDEM DE COLETA realiza a mesma função do botão GRAVAR, com a diferença de imprimir a ordem de coleta em um formulário, o qual tem que ser apresentado pelo motorista na empresa em que ele for retirar o produto. Em qualquer uma das opções, o registro quando é gravado no banco, o campo Status da tabela é preenchido com o valor LIBERADO.
Caso o usuário não precise lançar um novo registro (excluir ou atualizar), basta ele clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitado e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela REGISTROS ORDEM DE COLETA.

4.2? FILTRANDO UMA PROGRAMAÇÃO
Esta tabela não permite atualização, mas o usuário pode realizar filtros, conforme a FIGURA 166. Esta tabela filtra dados por nome do motorista, por número do pedido, por período, por cliente e data, por pedido e por nome do motorista junto com o número do pedido através do menu Filtrar ou pelos botões localizados na barra de ferramentas (FIGURA 162).













FIGURA 166

Componentes da aba FILTROS (FIGURA 166)
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa FILTRO;
? 5 ? Tabela DADOS PROGRAMAÇÃO;
? 6 ? Caixa DATA 1;
? 7 ? Caixa DATA 2.
Ao ser executado um filtro pelo nome do motorista, a caixa FILTRO lista todos os nomes das pessoas físicas cadastradas no banco. Se for executado um filtro por um período, o usuário terá que informar duas datas, inicial e final, nas caixas DATA 1 e DATA 2. Se for realizado um filtro por cliente e data, o usuário tem que escolher um nome da lista na caixa FILTRO e depois informar as datas, inicial e final, nas caixas DATA 1 e DATA 2. O usuário após selecionar uma das opções e preenchido as caixas, deve clicar no botão FILTRAR, e os dados do registro filtrado são carregados na tabela DADOS ORDEM COLETA. Para recuperar o registro para a aba Editar (somente para visualização e exclusão), basta dar um duplo clique sobre a linha em que se encontra o registro.
Se o usuário necessitar gerar um relatório do registro filtrado, deve clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 167) é ativada. O botão SAIR (3) desabilita a aba FILTROS e habilita novamente a aba REGISTROS.












FIGURA 167

4.3 ? EXCLUINDO UMA ORDEM DE COLETA
Para excluir um registro da tabela Ordem de coleta, o usuário pode selecionar o registro na tabela da aba REGISTROS, ou filtrá-lo pela aba FILTROS. Quando um registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. O usuário, pode excluir um registro da tabela se o mesmo ainda não foi utilizado pela tabela CTRC. Ao clicar no botão EXCLUIR, a função na camada do servidor que exclui um registro da tabela Ordem de Coleta é chamada e se não ocorrer nenhum erro é retornada ao usuário a mensagem "ORDEM DE COLETA EXCLUIDA".

4.4 ? GERANDO O RELATÓRIO GERAL DE ORDEM DE COLETA
O usuário pode gerar um relatório geral da tabela Programação através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 168.












FIGURA 168




















VII ? MÓDULO DE EMISSÃO DO CTRC (CONHECIMENTO DE TRANSPORTE RODOVIÁRIO E CARGAS)
O módulo de emissão do conhecimento de transporte gerencia o mais importante cadastro do sistema, o CTRC.

1 ? CADASTRO CTRC (CONHECIMENTO DE TRANSPORTE RODOVIÁRIO E CARGAS)
O cadastro permite ao usuário emitir o Conhecimento de Transporte Rodoviário e Cargas, documento de porte obrigatório para veículos transportadores de carga no Brasil, conforme a lei nº 11442, de 05 de janeiro de 2007. Através do cadastro, o usuário pode emitir um novo CTRC, excluir, cancelar, imprimir, filtrar e gerar relatórios. A FIGURA 169 apresenta a tela inicial do cadastro do CTRC:












FIGURA 169

A tela é composta pela barra de menus (FIGURA 170), barra de ferramentas, (FIGURA 171), o componente fichário (FIGURA 172), onde a aba ativa no momento é a de CTRCs EMITIDOS e o grupo dos DADOS DOS CONHECIMENTOS DE TRANSPORTE (FIGURA 173), onde se encontra a tabela com todos os registros cadastros no banco:






FIGURA 170

Componentes da barra de menus (FIGURA 170):
? 1 ? Menu/CTRC;
? 2 ? Menu/Filtrar;
? 3 ? Menu/Arquivo.




FIGURA 171

Componentes da barra de ferramentas (FIGURA 171):
? 1 - Botão NOVO;
? 2 - Botão GRAVAR;
? 3 ? Botão CANCELAR CTRC;
? 4 ? Botão EXCLUIR CTRC;
? 5 ? Botão SALVAR E IMPRIMIR CTRC;
? 6 ? Botão CANCELAR EDIÇÃO;
? 7 ? Botão FECHAR;
? 8 ? Botão ÚLTIMO REGISTRO;
? 9 ? Botão PRÓXIMO REGISTRO;
? 10 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 11 ? Botão REGISTRO ANTERIOR;
? 12 ? Botão PRIMEIRO REGISTRO;
? 13 ? Botão FILTRAR POR NÚMERO DO CTRC;
? 14 ? Botão FILTRAR POR DATA DE EMISSÃO;
? 15 ? Botão FILTRAR POR CLIENTE E PERÍODO;
? 16 ? Botão FILTRAR POR NÚMERO DO PEDIDO.



FIGURA 172

Componentes da aba fichário (FIGURA 172):
? 1 ? Aba CTRCs EMITIDOS;
? 2 ? Aba EMISSÃO CTRC;
? 3 ? Aba FILTROS;
? 4 ? Aba RELATÓRIOS.


1

FIGURA 173

Componentes da tabela DADOS DOS CONHECIMENTOS DE TRANSPORTE (FIGURA 173):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

1.1 ? EMITINDO UM NOVO CTRC
Para emitir um novo conhecimento de transporte, o usuário deve clicar no botão NOVO ou pelo menu CTRC/Emitir Novo CTRC. A aba EMISSÃO CTRC é habilitada. Nesta aba se encontra o fichário que separa a edição do registro em cinco telas, conforme a FIGURA 174, onde a tela ativa é a aba TELA 1, conforme FIGURA 175.



FIGURA 174

Aba do fichário das telas de edição de um registro (FIGURA 174):
? 1 ? Aba TELA 1;
? 2 ? Aba TELA 2;
? 3 ? Aba TELA 3;
? 4 ? Aba TELA 4;
? 5 ? Aba TELA 5.












FIGURA 175

A caixa do NÚMERO DO CTRC guarda o próximo número da chave primária da tabela, que também tem que ser o número do formulário de impressão do CTRC. A caixa DATA EMISSÃO é preenchida automaticamente pelo sistema pela data atual. Na caixa DATA PROGRAMADA RETIRADA é informada a data que o usuário programou a retirada da mercadoria. Não pode ser informada uma data inferior a data atual. Na saída desta caixa, todos os registros da tabela Programação que estiverem com o valor do seu campo Data Retirada igual à data informada pelo usuário, são carregados na caixa LISTA DAS RETIRADAS PROGRAMADAS.
O usuário deve dar um duplo clique sobre o registro de programação para carregar na caixa LISTA DAS ORDENS DE COLETAS EMITIDAS PARA A PROGRAMAÇÃO ESCOLHIDA, todas as ordens de coletas emitidas para esta programação. É carregada nesta caixa todos os registros que estiverem com o valor do campo Status como LIBERADO. O usuário executará um duplo clique sobre a linha da ordem de coleta na qual pode emitir o CTRC, ou seja, sobre o motorista que já esteja com seu veículo carregado e dotado da nota fiscal empresa. Após este evento, a aba TELA 2 é habilitada, conforme a FIGURA 176:












FIGURA 176

A partir da aba TELA 2 até a aba TELA 4, o sistema faz uma varredura em todas as tabelas através dos relacionamentos entre elas. Na aba TELA 2 (FIGURA 176) é informado para o usuário os dados sobre o pedido. Na caixa NÚMERO é carregado o número do pedido e a sua data de emissão carregada na caixa DATA EMISSÂO. O nome do produto é carregado na caixa PRODUTO. Os dados sobre o remetente, destinatário, local de entrega e local de retirada são carregado nos grupos REMETENTE, DESTINATÁRIO, LOCAL RETIRADA e LOCAL ENTREGA. O usuário após visualizar os dados, verificando a integridade deles, habilita a aba TELA 3 (FIGURA 177) clicando no botão AVANÇAR.























FIGURA 177

A aba TELA 3 (FIGURA 177) continua informando os dados do pedido. Os dados do consignatário e do responsável pelo frete são carregados nos grupos CONSIGNATÁRIO e CLIENTE/RESPONSÁVEL PELO FRETE. Os outros valores correspondentes ao pedido são informados no grupo VALORES DO PEDIDO. Se os dados do pedido estiverem corretos, o usuário deve clicar no botão CONFIRMA DADOS DO PEDIDO para habilitar a aba TELA 4 (FIGURA 178). Se nesta etapa o usuário perceber que carregou dados do pedido errado, o usuário pode retornar a primeira tela (TELA 1, FIGURA 175) clicando no botão DEFINIR NOVAMENTE ORDEM COLETA, para escolher uma outra ordem de coleta. O botão CANCELAR EMISSÃO cancela a emissão do CTRC, desabilitando a aba EMISSÃO CTRC e habilitando a aba CTRCs EMITIDOS.





















FIGURA 178

A aba TELA 4 (FIGURA 178) recupera para o usuário os dados referentes ao transportador. No grupo VEÌCULO é carregado os dados sobre o veículo, e se este formar um conjunto por cavalo mecânico e semi-reboque ou bitrem ou tritrem, as placas do mesmo são carregadas no grupo PLACAS PARA CONJUNTO FORMADO POR CAVALO MECÂNICO E SEMI-REBOQUE. No grupo DADOS DO CONDUTOR DO VEÍCULO são carregados os dados sobre o motorista e no grupo DADOS DO PROPRIETÁRIO DO VEÍCULO são carregados os dados do proprietário do mesmo. O usuário, após a visualização destes dados, e os mesmos estiverem corretos, deve clicar no botão CONFIRMA DADOS DO VEÍCULO para habilitar a aba TELA 5, conforme a FIGURA 179. Qualquer erro detectado pelo usuário, ele pode escolher outra ordem de coleta através do botão DEFINIR NOVAMENTE ORDEM COLETA. O Botão CANCELAR EMISSÃO cancela a emissão do CTRC, desabilitando a aba EMISSÃO CTRC e habilitando a aba CTRCs EMITIDOS.
















FIGURA 179

A aba TELA 5 (FIGURA 179) é composta pelos grupos NOTA FISCAL, VALORES DO FRETE, VALORES DO FRETE DO MOTORISTA e OBSERVAÇÕES. Para começar a editar os valores, o usuário deve clicar no botão INICIAR VALORES, habilitando a caixa NÚMERO NF. As caixas que não podem ter seus valores vazios informam ao usuário, caso ele, as passe sem editá-las, a mensagem "ESTE CAMPO NÃO PODE SER EM BRANCO", retornando o foco da edição para o mesmo campo. No grupo NOTA FISCAL, o usuário informará os valores correspondentes a nota fiscal emitida pela empresa nas seguintes caixas:
? NÚMERO NF: informar o número da nota fiscal;
? PESO BRUTO: informar o peso bruto da nota fiscal. Se o frete for cobrado pelo volume, é pelo peso bruto que é executado o cálculo do frete;
? PESO LÍQUIDO: informar o peso líquido da nota fiscal. O peso líquido é o peso do produto retirado qualquer fator, como umidade, embalagem, etc., que não compõem o mesmo. É pelo peso líquido que as tabelas Programação e Pedido atualizarão o campo saldo, pois ele informa realmente a quantidade retirada;
? VALOR DA NOTA FISCAL: informar o valor total da nota fiscal;
? QUANTIDADE: se o produto é embalado por caixas, pallets ou fardos, entre outros, a quantidade destes deve ser informada;
? DESCRIÇÃO: informar o tipo de embalagem, como por exemplo, pallet, caixa, fardos, etc.;
? TAXA SEGURO: informar a taxa cobrada pelo seguro;
? CÁLCULO SEGURO: é calculado automaticamente o valor da taxa do seguro. Este cálculo é realizado multiplicando a TAXA SEGURO pelo VALOR DA NOTA FISCAL.
No grupo VALORES DO FRETE, estão as seguintes caixas:
? FRETE: o sistema calcula o valor do frete multiplicando o valor da caixa PESO BRUTO pelo valor do frete da caixa VALOR FRETE TOTAL (TELA 3, FIGURA 177);
? ADICIONAL CARGA/DESCARGA: informar um valor que é cobrado pela transportadora, se houver necessidade do motorista contratar pessoal para a descarga do produto;
? PEDÁGIO: informar cobrança adicional do pedágio, se este for combinado junto ao cliente;
? VALOR TOTAL FRETE: soma das caixas FRETE, ADICIONAL CARGA/DESCARGA e PEDÁGIO;
? TAXA ICMS: a cobrança do ICMS é identificada no pedido, quando o usuário informar se haverá ou não incidência de ICMS. Se houver, a caixa VALOR ICMS é preenchida com o valor deste, se não, o valor da caixa é zero;
? VALOR ICMS: é o cálculo da incidência do ICMS. É a multiplicação da caixa TAXA ICMS pela caixa VALOR TOTAL FRETE;
? MENSAGENS: o valor desta caixa depende do resultado do cálculo do ICMS. Para um valor acima de zero, esta caixa passa a ter o valor do imposto a ser destacado. Para um valor igual a zero, a caixa é preenchida pela mensagem correspondente a isenção do imposto.
No grupo VALORES DO FRETE DO MOTORISTA estão as seguintes caixas:
? FRETE MOTORISTA: cálculo do frete do motorista. É realizado através da multiplicação da caixa PESO BRUTO pelo valor do frete do motorista na caixa VALOR FRETE MOT (TELA 3, FIGURA 177);
? ADICIONAL CARGA/DESCARGA: é o mesmo valor da caixa do grupo VALORES DO FRETE;
? PEDÁGIO: é o mesmo valor da caixa do grupo VALORES DO FRETE;
? SUBTOTAL: é a soma das caixas FRETE MOTORISTA, ADICIONAL CARGA/DESCARGA e PEDÁGIO;
? IRRF: cálculo do imposto de renda do motorista realizado durante o mês;
? SEST/SENAT: cálculo da taxa do SEST;
? DESCONTO ADIANTAMENTO: informar o valor do adiantamento de uma parte do frete do motorista, caso o mesmo requisitar;
? VALOR FINAL FRETE: cálculo final do frete do motorista, subtraindo do valor da caixa SUBTOTAL os valores das caixas IRRF, SEST/SENAT e DESCONTO ADIANTAMENTO.
Na caixa OBSERVAÇÕES, o usuário informará dados adicionais que devem estar no corpo do documento. Após a saída desta última caixa, é habilitado o botão CONFIRMA VALORES, o qual o usuário deve clicar para confirmar a edição dos dados e habilitar os botões GRAVAR e SALVAR E IMPRIMIR CTRC.
Quando o usuário clicar no botão GRAVAR, os dados são enviados para a função localizada na camada do servidor, que é responsável por gravar os dados na tabela CTRC. Neste botão o CTRC não é enviado para a impressora, e o seu campo STATUS passa a ter o valor AGUARDANDO. O usuário deve utilizar este botão somente se houver alguma dúvida na integridade dos dados. No caso do botão SALVAR E IMPRIMIR CTRC, os dados são enviados para a gravação, mas são enviados para a impressora, e o campo STATUS passa a ter o valor EMITIDO.
Para os dois botões, assim que os dados são gravados no banco de dados, as tabelas Ordem de Coleta, Programação e Pedido sofrem alterações. A primeira tem o seu campo STATUS alterado para CARREGADO, não aparecendo mais na caixa LISTA DAS ORDENS DE COLETAS EMITIDAS PARA A PROGRAMAÇÃO ESCOLHIDA da aba TELA 1 (FIGURA 175). O segundo tem os valores dos campos quantidade retirada e saldo atualizados, onde o primeiro é acrescido pelo valor informado na caixa PESO LÍQUIDO, e o segundo é decrescido pelo valor da mesma caixa. O mesmo tipo de atualização sofre a terceira tabela.
Após a gravação do registro, é retornada para o usuário a mensagem "CTRC CADASTRADO. Caso o usuário não precise lançar um novo registro (ou excluir e atualizar), basta clicar no botão CANCELAR da caixa de ferramentas e a aba EDITAR é desabilitado e a aba REGISTROS habilitada. Os registros cadastrados estão atualizados na tabela dos DADOS DOS CONHECIMENTOS DE TRANSPORTE.





1.2? FILTRANDO UM CTRC
A tabela CTRC não permite atualização dos seus dados, mas o usuário pode realizar filtros, conforme a FIGURA 180. Esta tabela filtra dados pelo número do CTRC, pela data de emissão, pelo nome do cliente junto com um período e pelo número do pedido através do menu Filtrar ou pelos botões localizados na barra de ferramentas (FIGURA 171).















FIGURA 180

Componentes da aba FILTROS (FIGURA 180):
? 1 ? Botão FILTRAR;
? 2 ? Botão IMPRIMIR;
? 3 ? Botão SAIR;
? 4 ? Caixa FILTRO;
? 5 ? Tabela DADOS CTRC;
? 6 ? Caixa DATA 1;
? 7 ? Caixa DATA 2.

Ao ser executado um filtro pelo número do conhecimento de transporte, a caixa FILTRO lista todos os documentos gravados na tabela CTRC. Se for executado um filtro pela data de emissão do documento, o usuário informará duas datas, inicial e final, nas caixas DATA 1 e DATA 2. Se ele for realizado um filtro por cliente e data, o usuário tem que escolher um nome da lista na caixa FILTRO e depois informar as datas, inicial e final, nas caixas DATA 1 e DATA 2. O usuário após selecionar uma das opções e preenchido as caixas, deve clicar no botão FILTRAR, e os dados do registro filtrado são carregados na tabela DADOS CTRC. Para recuperar o registro para a aba EMISSÃO CTRC (somente para visualização, exclusão e cancelamento), basta dar um duplo clique sobre a linha em que se encontra o registro.
Se o usuário necessitar gerar um relatório do registro filtrado, ele deve clicar no botão IMPRIMIR (2), e a tela de visualização de impressão (FIGURA 181) é habilitada. O botão SAIR (3) desabilita a aba FILTROS e habilita a aba CTRCs EMITIDOS.













FIGURA 181

1.3 ? EXCLUINDO UM CTRC
O usuário pode excluir um conhecimento de transporte, somente se o mesmo ainda não foi impresso no formulário. Isto é controlado através do campo STATUS, que ainda possui o seu valor como AGUARDANDO. Este controle ocorre pelo motivo do número do CTRC ser igual ao número do formulário, e uma vez em que o documento foi impresso, o número do formulário não pode ser mais utilizado, restando como única opção em caso de erro, o cancelamento do documento.
Para excluir um registro da tabela CTRC, o usuário pode selecionar o registro na tabela dos CTRCs EMITIDOS, ou filtrá-lo pela aba FILTROS. Quando um registro é recuperado para a aba EDITAR, o botão EXCLUIR é habilitado. Ao clicar no botão, a função na camada do servidor que exclui um registro da tabela CTRC é chamada e se não ocorrer nenhum erro é retornado para o usuário à mensagem "CTRC EXCLUÍDO".
A exclusão executa atualizações nas tabelas Ordem de Coleta, Programação e Pedido. A primeira volta a ter seu campo STATUS com o valor AGUARDANDO, liberando o veículo para poder ser novamente incluído na listagem das ordens de coleta. As outras duas tem os valores dos seus campos de quantidade retirada e saldo novamente corrigidos.

1.4 ?CANCELANDO UM CTRC
O cancelamento de um conhecimento de transporte só pode ser executado quando o campo STATUS possuir o valor EMITIDO. O cancelamento é feito quando o usuário descobre algum erro no documento, e o mesmo já foi impresso. Para fazer o cancelamento, ele procederá igualmente ao método realizado para excluir um CTRC. Assim que o registro é recuperado para a aba EMISSÃO CTRC, o botão CANCELAR CTRC é habilitado, e ao ser clicado, o registro tem seu campo STATUS atualizado para o valor CANCELADO. Assim como a exclusão, o cancelamento do CTRC atualiza as tabelas Ordem de Coleta, Programação e CTRC. A primeira volta a ter seu campo STATUS com o valor AGUARDANDO, liberando o veículo para poder ser novamente incluído na listagem das ordens de coleta. As outras duas tem os valores dos seus campos de quantidade retirada e saldo novamente corrigidos.

1.5 ? IMPRIMINDO NOVAMENTE UM CTRC SALVO
O usuário pode, imprimir um registro do CTRC que foi salvo através botão GRAVAR e que não foi impresso no formulário ou somente imprimir uma cópia em uma folha em branco. Ele pode realizar esta tarefa recuperando o registro na aba CTRCs EMITIDOS ou pela aba FILTROS (mesmos procedimentos utilizados para a exclusão e o cancelamento).
Quando o registro é carregado para a aba EMISSÃO CTRC, o botão SALVAR E IMPRIMIR CTRC é habilitado. Após clicar neste botão, a tela de impressão do formulário (FIGURA 182) é aberta, permitindo ao usuário fazer a impressão. O usuário deve ter cuidado ao imprimir o documento. Se o mesmo já foi impresso, deve certificar se a impressora está sendo alimentada por uma folha em branco. Se ele estiver imprimindo o documento pela primeira vez (o CTRC foi salvo através do botão GRAVAR), deve certificar que o número do formulário seja o mesmo do número do CTRC.












FIGURA 182

1.6 ? GERANDO O RELATÓRIO GERAL DO CTRC
O usuário pode gerar um relatório da tabela CTRC através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 183.












FIGURA 183

VIII ? MÓDULO DE GERENCIAMENTO DE MENSAGENS
O módulo gerenciador de mensagens trabalha com o cadastro da tabela Mensagem, onde o usuário pode inserir, atualizar, excluir e selecionar dados.

1 ? CADASTRO DE MENSAGEM
O cadastro de Mensagem tem a finalidade de cadastrar as mensagens que envolvem a não incidência do ICMS no conhecimento de transporte. Neste cadastro o usuário pode inserir, atualizar, excluir e selecionar os dados das mensagens. Ele fornece um relatório geral desta tabela. A FIGURA 184 apresenta a tela inicial do cadastro de Mensagem.


FIGURA 184

A tela é composta pela barra de menus (FIGURA 185), uma barra de ferramentas, (FIGURA 186), o componente fichário (FIGURA 187), onde a aba ativa no momento é a MENSAGEM, e a tabela REGISTRO DO CADASTRO DE MENSAGEM (FIGURA 188):



FIGURA 185

Componentes da barra de menus (FIGURA 185):
? 1 ? Menu/Mensagem;
? 2 ? Menu/Arquivo.







FIGURA 186

Componentes da barra de ferramentas (FIGURA 186):
? 1 - Botão NO VO;
? 2 - Botão GRAVAR;
? 3 ? Botão ATUALIZAR;
? 4 ? Botão EXCLUIR;
? 5? Botão CANCELAR;
? 6 ? Botão FECHAR;
? 7 ? Botão ÚLTIMO REGISTRO;
? 8 ? Botão PRÓXIMO REGISTRO;
? 9 ? Caixa com o número da chave primária do registro selecionado na tabela;
? 10 ? Botão REGISTRO ANTERIOR;
? 11 ? Botão PRIMEIRO REGISTRO.



FIGURA 187

Abas do fichário (FIGURA 187):
? 1 ? Aba MENSAGEM;
? 2 ? Aba EDITAR;
? 3 ? Aba RELATÓRIO.




FIGURA 188

Componentes da tabela REGISTRO DO CADASTRO DE MENSAGEM (FIGURA 188):
? 1 ? Colunas da tabela;
? 2 ? Linhas da tabela.

1.1 ? INSERINDO UMA NOVA MENSAGEM
Para inserir uma nova mensagem, o usuário deve clicar no botão NOVO, ou pelo menu Mensagem/Nova Mensagem. A aba EDITAR é habilitada, conforme a FIGURA 189. A tabela mensagem possui um único campo, capaz de armazenar uma mensagem com até 1000 caracteres, e este campo é a chave primária da tabela, não sendo permitida a sua duplicação.








FIGURA 189

Somente após a saída da caixa TEXTO MENSAGEM é que o botão GRAVAR é habilitado. Ao clicar no botão, o sistema chama a função localizada na camada do servidor, e se não houver nenhuma violação de restrição, o registro é gravado na tabela Mensagem, retornando para o usuário a mensagem "MENSAGEM CADASTRADA?. Ao clicar Ok, o sistema ativa novamente a aba EDITAR, para o usuário lançar um novo registro.
Caso o usuário não precise mais lançar novos registros (excluir ou atualizar), basta clicar no botão CANCELAR da barra de ferramentas e a aba EDITAR é desabilitada e a aba MENSAGEM habilitada. Os registros cadastrados estão atualizados na tabela REGISTRO DO CADASTRO DE MENSAGEM.

1.2? ATUALIZANDO UMA MENSAGEM
O procedimento que o usuário utilizará para atualizar um registro da tabela Mensagem segue os mesmos procedimentos das tabelas anteriores, mas esta tabela por ser populada com poucos registros, não possui o modo filtragem. O usuário selecionará um registro na aba MENSAGEM onde se encontra a tabela com os dados do cadastro, e dar um duplo clique sobre ele para os dados serem recuperados para a aba EDITAR.
O botão ATUALIZAR é habilitado após a saída da caixa TEXTO MENSAGEM. Ao clicar neste botão os dados serão remetidos ao banco de dados para serem atualizados. Se os mesmos estiverem corretos e nenhuma restrição for quebrada, uma mensagem de "MENSAGEM ATUALIZADA" é retornada para o usuário. Ao clicar OK, a aba EDITAR é desabilitado e a aba MENSAGEM habilitada.

1.3 ? EXCLUINDO UMA MENSAGEM
Para excluir uma mensagem da tabela, o usuário seguirá os mesmos procedimentos realizados para a atualização. Quando o registro é recuperado para a aba EDITAR o botão EXCLUIR é habilitado. Ao clicar no botão, a função que executa a exclusão da tabela Mensagem na camada do servidor é chamada e o registro é excluído. O registro não será excluído se ele estiver sendo utilizado por outra tabela. Se a exclusão ocorrer corretamente, é retornada ao usuário a mensagem "MENSAGEM EXCLUÍDA". Ao clicar OK, a aba EDITAR é desabilitado e a aba MENSAGEM habilitada.

1.4 ? GERANDO O RELATÓRIO GERAL DE MENSAGENS
O usuário pode gerar um relatório geral da tabela mensagem através do menu Arquivo/Gerar Relatório. Ao ser acionado pelo usuário é habilitada a aba RELATÓRIO, conforme a FIGURA 190.


FIGURA 190

IX ? MÓDULO DO USUÁRIO
O módulo de gerenciamento do usuário tem a finalidade de permitir ao administrador do sistema cadastrar e excluir usuários do sistema e controlar o nível de acesso que este pode ter sobre os dados. Somente usuários com o status de administrador têm acesso a este módulo.

1 - CRIANDO UM NOVO USUÁRIO
Para criar um novo usuário para o sistema, o usuário tem que estar com a tela principal (FIGURA 36) ativa, e quando ele clicar no caminho Usuário/Criar Usuário localizado na barra de menus, o formulário de controle de usuários é ativado (FIGURA 191).











FIGURA 191

O formulário é composto por uma barra de menus (FIGURA 192), uma barra de ferramenta (FIGURA 193) e pelo grupo DADOS (FIGURA 194).




FIGURA 192

Componentes da barra de menus (FIGURA 192):
? 1 ? Menu Usuário;
? 2 ? Menu ? Arquivo.




FIGURA 193

Componentes da barra de ferramentas (FIGURA 193):
? 1 ? Botão NOVO;
? 2 ? Botão GRAVAR;
? 3 ? Botão EXCLUIR;
? 4 ? Botão CANCELAR;
? 5 ? Botão FECHAR.







FIGURA 194

Componentes do grupo DADOS (FIGURA 194):
? 1 ? Caixa ID DO USUÁRIO;
? 2 ? Caixa NOME DO USUÁRIO;
? 3 ? Caixa LOGIN DO USUÁRIO;
? 4 ? Caixa SENHA DO USUÁRIO;
? 5 ? Caixa NÍVEL DO STATUS DO USUÁRIO;
? 6 ? Caixa DATA DO CADASTRO.

Quando o usuário clica no botão NOVO as caixas são inicializadas e desabilitadas. A caixa ID DO USUÁRIO guarda o valor da chave primária da tabela, evitando o problema da duplicação do valor da mesma. A caixa NOME DO USUÁRIO é habilitada. O nome do usuário é um campo único no banco de dados, não podendo ter seu valor duplicado no banco de dados. Todos os campos são de preenchimento obrigatório e se, o usuário tentar passar uma caixa vazia é informada a mensagem "ESTE CAMPO NÃO PODE SE VAZIO" e o foco da edição retorna para a mesma caixa.
As caixas LOGIN DO USUÁRIO e SENHA DO USUÁRIO têm que ser preenchidas com letra minúsculas, e a segunda é protegida pelo caractere ?*? por ser um campo para edição da senha. A caixa NÍVEL DO STATUS DO USUÁRIO lista duas opções de níveis, um como administrador e outro como usuário. A caixa DATA DO CADASTRO é preenchida automaticamente pela data atual do sistema. Após a saída da caixa NÍVEL DO STATUS DO USUÁRIO o botão GRAVAR é habilitado.
Ao clicar no botão GRAVAR, é chamada a função localizada na camada do servidor que executa a inserção do registro na tabela Usuário e o comando que cria o usuário no banco de dados. O botão CANCELAR faz o cancelamento da edição atual dos dados bloqueando todos os recursos do formulário, com exceção do botão NOVO. O botão FECHAR fecha o formulário.

2 ? EXCLUINDO UM USUÁRIO
Para excluir um usuário do sistema, o usuário tem que estar com a tela principal (FIGURA 36) ativa, e quando clicar no caminho Usuário/Excluir Usuário localizado na barra de menus, o mesmo formulário (FIGURA 195) utilizado para criar um novo usuário é ativado, com a diferença de habilitar o grupo FILTRO com a caixa NOME DO USUÁRIO (FIGURA 196).











FIGURA 195



FIGURA 196

A caixa NOME DO USUÁRIO lista todos os logins de usuários cadastrados no banco. Depois de escolher um nome de login da lista e teclar enter, os dados do usuário são preenchidos nas caixas do grupo DADOS e o botão EXCLUIR é habilitado. Quando o usuário clicar no botão, a função localizada na camada do servidor, responsável de excluir o registro da tabela Usuário e também do banco de dados é chamada e o usuário excluído. Se o dado for excluído corretamente, uma mensagem de "USUÁRIO EXCLUÍDO" é retornada para o usuário.
O administrador do banco deve tomar muito cuidado ao excluir usuários do mesmo. Se em um erro de exclusão, excluir o principal usuário do banco, toda a base de dados será perdida e será necessário fazer uma restauração da mesma. Se no momento em que um problema deste ocorrer, os dados da base só serão recuperados até o último backup realizado.



















X ? MÓDULO SISTEMA
Este módulo permite ao usuário gerenciar o processo de manutenção do banco de dados. O usuário pode fazer cópias (backup) da base de dados para prevenir danos que o sistema venha a sofrer. Com essa cópia, ele pode fazer a restauração do banco. Neste módulo, o usuário pode atualizar as estatísticas do sistema. Este módulo é exclusivo para os usuários com nível de administrador.

1 ? COPIANDO A BASE DE DADOS
Fazer backup da base de dados é de extrema importância para qualquer empresa. O software pode ser novamente instalado através do CD de instalação, assim como o SGBD PostgreSQL, mas os dados guardados no banco, se não forem copiados constantemente, não serão mais recuperados depois de algum dano.
O sistema realiza um backup da base de dados toda vez em que ele é inicializado. Depois desta inicialização, o software pode permanecer em funcionamento por um tempo indeterminado. Como o sistema executa em uma única máquina, sem regras de espelhamento do disco, e não roda em um servidor que executa cópia em tempo integral, é boa prática de segurança da informação o usuário do sistema, durante o uso do mesmo executar o comando de cópia por determinados períodos de tempo. Os desenvolvedores do sistema recomendam a realização de backup de pelo menos uma hora de intervalo de um para o outro.
Para realizar o backup é preciso estar com a tela principal (FIGURA 36) ativada e seguir o caminho pelo menu Sistema/Copiar Base de Dados, localizado na barra de menus. Durante o processo de backup, o sistema executa um arquivo chamado copias.bat e é ativada uma tela (FIGURA 197), que demonstra o andamento do processo. No fim, é criado o arquivo banco.backup, que guarda todos os dados das tabelas e as informações necessárias para reconstruir o banco de dados. Estes arquivos estão localizados na pasta c:\copiabd. Para uma maior segurança é recomendado que o administrador faça cópias de segurança desta pasta para mídias externas (CD-ROM, DVD-ROM, Pen Drives, etc.).














FIGURA 197

2 ? RESTAURANDO A BASE DE DADOS
Para executar uma recuperação do banco de dados é preciso primeiramente certificar que o PostgreSQL está instalado. Segundo, é preciso verificar se o usuário principal do sistema (verificar instalação do sistema no CAPÍTULO I) foi criado. Terceiro, é preciso se certificar de que o banco (verificar nome do banco para o sistema) foi criado.
Com tudo corretamente instalado e criado, o usuário deve estar com a tela principal (FIGURA 36) ativa e seguir o caminho Sistema\Restaurar Base de Dados, localizado na barra de menus. O sistema executa o arquivo rest.bat, localizado na pasta c:\copiabd e é ativada a tela (FIGURA 198) que mostra o andamento do processo de restauração da base dados. Todo o script que o PostgreSQL precisa para restaurar a base, se encontra no arquivo banco.backup.


FIGURA 198




3 ? VARREDURA E LIMPEZA DO BANCO DE DADOS
Conforme o sistema vai atualizando a base de dados através das inserções, atualizações e exclusões nas tabelas é preciso fazer uma varredura para que o PostgreSQL atualize as suas tabelas de estatísticas. Esta varredura é de extrema importância, pois conforme o banco de dados vai se tornando maior, há um grande perigo de dados serem corrompidos ou perdidos, e para que isso não ocorra o PostgreSQL disponibiliza ferramentas que permitem manter a integridade dos dados.
Assim que o sistema é iniciado, além da cópia de segurança, ele executa o arquivo analise.bat, localizado na pasta c:\copia.bd. Este arquivo executa uma varredura, limpeza e atualização de estatísticas de todo o banco de dados. O usuário pode realizar uma varredura enquanto estiver trabalhando com o sistema. Para fazer uma varredura manual, é preciso que a tela principal esteja ativa. Para executar o arquivo analise.bat, o usuário deve seguir o caminho Sistema\Varredura e Limpeza do Banco, localizado na barra de menus. Durante a execução é ativada a tela (FIGURA 199) que mostra a execução do processo.


FIGURA 199














AUTORES

João Marcos Faxina Lucio Flávio Boaventura


Marcos Vassoler


Rodrigo Marcolino Vérlei Ricardo da Silva


Autor: João Marcos Faxina


Artigos Relacionados


Banco De Dados

Linguagem De Acesso A Banco De Dados Relacional:

Gerenciador De Transporte RodoviÁrio

Automatizando Rotinas No Escritório E Economizando Tempo Com O Vba No Excel

Criação De Bando De Dados Msql No Cpanel

Configurar Email No Outlook Express

Configurar Conta De E-mail No Outlook Express