Upload
vunhu
View
213
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DE SANTA CATARINA
SISTEMA DE CÁLCULO TARIFÁRIO DE TRANSPORTE DE PASSAGEIROS
APOIADO POR UM SISTEMA DE INFORMAÇÕES GEOGRÁFICAS
JORGE BERTI
Florianópolis, 2011
UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE CIÊNCIAS DA COMPUTAÇÃO
SISTEMA DE CÁLCULO TARIFÁRIO DE TRANSPORTE DE PASSAGEIROS
APOIADO POR UM SISTEMA DE INFORMAÇÕES GEOGRÁFICAS
JORGE BERTI
Trabalho de conclusão de curso apresentado
como parte dos requisitos para obtenção do grau
de Bacharel em Ciências da Computação.
Orientador: Luiz Claudio Duarte Dalmolin, MsC.
Florianópolis, 2011
SISTEMA DE CÁLCULO TARIFÁRIO DE TRANSPORTE DE PASSAGEIROS
APOIADO POR UM SISTEMA DE INFORMAÇÕES GEOGRÁFICAS
Este trabalho foi julgado adequado para obtenção do Título de “Bacharel em Ciências da
Computação”, e aprovado em sua forma final pelo curso de Graduação do Departamento de
Informática e Estatística da Universidade Federal de Santa Catarina.
Florianópolis, 09 de novembro de 2011.
_______________________________________
Vitório Bruno Mazzola
Coordenador do Curso
Banca Examinadora:
_______________________________
MSc., Luiz Claudio Duarte Dalmolin,
Orientador
______________________________
Dr., Vitório Bruno Mazzola
______________________________
Drª., Patrícia Vilain
______________________________
Dr., Roberto Willrich
Dedico este trabalho a toda minha família, minha mãe, minha namorada Julie e
especialmente ao meu falecido pai, que infelizmente não teve a oportunidade de ver seu filho
formado como Bacharel em Ciências da Computação.
AGRADECIMENTOS
Agradeço primeiramente à Universidade Federal de Santa Catarina, instituição que me
acolheu, ao Departamento de Transportes e Terminais, ao meu professor e co-orientador
Vitório Bruno Mazzola, ao meu orientador Luiz Claudio Duarte Dalmolin, a quem eu devo
muito por ter me orientado neste projeto, e por último, mas não menos importante, aos
demais membros da banca.
“O sucesso é construído de 99 por cento de fracasso.”
Soichiro Honda
RESUMO
De acordo com o Instituto Econômico de Pesquisa Aplicada (IPEA, 2011), através do Sistema
de Indicadores de Percepção Social (SIPS, 2011), o transporte público de passageiros
representa 46,3% dos meios de transporte no Sul do país, 50,7% no Nordeste, 39,6 no Centro-
Oeste, 37,5% no Nordeste e 40,3% no Norte, totalizando em 44,3% no território nacional. De
acordo com o Departamento de Transportes e Terminais (DETER) de Santa Catarina, existem
mais de setenta empresas responsáveis pela execução do serviço de transporte público. Para
fiscalizar essas empresas, o DETER necessita de um sistema eficiente para que, entre outras
coisas, possa definir um preço justo de tarifa tanto para as empresas quanto para a população
no que concerne ao uso do transporte público. Com o avanço da informatização, há uma
tendência de desenvolvimento de um sistema computacional que possa ajudar as autoridades
responsáveis pelo regimento do transporte público a definir esse preço justo. Nesse sentido, o
objetivo deste trabalho é desenvolver um sistema computacional que possa ajudar a coletar e
organizar os dados, realizar os cálculos tarifários, e por fim informar os resultados dos
cálculos tarifários em questão. Esses cálculos estão definidos no Manual de Cálculo Tarifário,
que foi elaborado através de estudos contratados pelo DETER.
Palavras-chave: Cálculo Tarifário. Transporte. Informatização.
ABSTRACT
According to Instituto Econômico de Pesquisa Aplicada (IPEA, 2011), based on its study
entitled Sistema de Indicadores de Percepção Social (SIPS, 2011), public transport of
passengers represents 46, 3% of Brazil’s South Region mode of transport; 50,7% on
Southeast; 39,6% on Center-West; 37,5% on Northeast; and 40,3% on North, totalizing 44,3%
considering the entire national territory. The Departamento de Transportes e Terminais
(DETER) of the State of Santa Catarina advocates that there are more than seventy bus
companies responsible for executing the public transport system. To control these companies,
DETER needs an efficient system to, among other aspects, define a fair fee to the passengers
and companies. Regarding the informatization advance, there is a tendency to develop a
system to provide support for the authorities responsible of public transport to define a fair
fee. In this sense, this study aims to help the authorities by developing a computing system
able to assist the collection and organization of the necessary data; the calculation of the tariff;
and, finally, capable to inform the results of this calculation. The calculation method is
previously defined on Manual de Cálculo Tarifário, which was elaborated in a study
contracted by DETER.
Key-words: Tariff Calculation. Transport. Informatization.
SUMÁRIO
1 INTRODUÇÃO .................................................................................................... 20
1.1 Problematização ..................................................................................................... 21
1.1.1 Formulação do Problema .................................................................................... 21
1.1.2 Solução Proposta ................................................................................................ 22
1.2 Objetivos ................................................................................................................ 22
1.2.1 Objetivo Geral .................................................................................................... 22
1.2.2 Objetivos Específicos ......................................................................................... 22
1.3 Metodologia ........................................................................................................... 23
1.4 Estrutura do Trabalho ............................................................................................. 23
2 FUNDAMENTAÇÃO TEÓRICA ....................................................................... 25
2.1 Transporte Rodoviário de Passageiros no Brasil .................................................... 25
2.2 Departamento de Transportes e Terminais ............................................................. 26
2.3 Laboratório de Transportes e Logística .................................................................. 27
2.4 Conceitos Sobre Elementos do Transporte Público e Cálculo Tarifário ................ 28
2.4.1 Grupo de Linhas ................................................................................................. 28
2.4.2 Cálculo Tarifário ................................................................................................. 30
2.4.3 Processos de Cálculo Tarifário do DETER ........................................................ 38
2.5 Sistemas de Informações Gerenciais Geográficas ................................................. 40
2.5.1 GIS Aplicado a Transportes ................................................................................ 41
2.6 Justificativa............................................................................................................. 45
3 CONCEPÇÃO DO SISTEMA ............................................................................ 45
3.1 Ciclo de Vida do Projeto ........................................................................................ 46
3.2 Iniciação ................................................................................................................. 48
3.2.1 Requisitos ........................................................................................................... 48
3.2.2 Levantamento de Entidades ................................................................................ 49
3.2.3 Casos de Uso ...................................................................................................... 49
3.3 Projeto .................................................................................................................... 67
3.3.1 Modelagem ......................................................................................................... 67
3.4 Construção .............................................................................................................. 74
3.4.1 Codificação ......................................................................................................... 74
3.4.2 Homologação ...................................................................................................... 99
3.5 Avaliação .............................................................................................................. 101
4 CONCLUSÕES .................................................................................................. 102
4.1 Recomendações para Trabalhos Futuros .............................................................. 104
REFERÊNCIAS .......................................................................................................... 106
ANEXOS ...................................................................................................................... 107
A.1) SQL’s Utilizadas ................................................................................................... 107
A.2) Importação dos Dados .......................................................................................... 107
A.3) Cálculo Tarifário ................................................................................................... 108
A.4) Séries Históricas ................................................................................................... 126
A.5) Dados Operacionais .............................................................................................. 127
LISTA DE FIGURAS
Figura 1 - Distribuição dos meios de transporte no Brasil.............................................. 20
Figura 2 - Fluxo do Cálculo Tarifário ............................................................................. 35
Figura 3 - Cálculo da Tarifa da Linha ............................................................................. 36
Figura 4 - Camadas em um sistema GIS ......................................................................... 41
Figura 5 - Topologia GIS Transformada em Modelo de Grafo ...................................... 43
Figura 6 - Ciclo de vida do projeto ................................................................................. 46
Figura 7 - Diagrama de casos de uso .............................................................................. 51
Figura 8 - Protótipo da Tela de Login ............................................................................. 53
Figura 9 – Protótipo da Tela de Nível de Acesso de Usuários ....................................... 54
Figura 10 – Protótipo da tela de vizualização de linhas .................................................. 55
Figura 12 - Protótipo da Tela de Importação de Dados .................................................. 56
Figura 13 - Protótipo da tela de execução de cálculo ..................................................... 58
Figura 14 - Protótipo da tela de consultas a séries históricas de resultados de cálculo .. 61
Figura 15 - Protótipo da Tela de Geração de Gráficos ................................................... 63
Figura 16 – Informações Cadastrais – Transportadoras e Linhas ................................... 64
Figura 17 – Informações - aba Linhas e Seções ............................................................. 65
Figura 18 - Informações - aba Grupos ............................................................................ 66
Figura 19 - Informações - aba Dados de Desempenho de Grupos ................................. 67
Figura 20 - Modelo de Dados do Módulo de Importação de Dados ............................... 68
Figura 21 - Modelo de dados do módulo de series históricas dos resultados de cálculo 69
Figura 22 - Modelo de dados para o desenho de linha ................................................... 70
Figura 23 - Modelo de dados de acesso aos usuários ..................................................... 71
Figura 24 – Modelo Do Sistema ..................................................................................... 72
Figura 25 - Tela de Login ............................................................................................... 80
Figura 26 - Representação da tabela com definição dos níveis de acesso ...................... 81
Figura 27 - Tela com nível de acesso de administrador.................................................. 82
Figura 28 - Tela com nível de acesso de analista ............................................................ 83
Figura 29 - Cálculo do Coeficiente Tarifário .................................................................. 86
Figura 30 - Cálculo do Custo Variável ........................................................................... 86
Figura 31 - Cálculo do Custo Fixo .................................................................................. 87
Figura 32 Cálculo das Despesas Fixas ............................................................................ 87
Figura 33 - Cálculo das Despesas Fixas Exceto de Pessoal............................................ 88
Figura 34 - Tela de Execução do Cálculo e Exibição de Resultados .............................. 88
Figura 35 - Resultados de Cálculo Através da Planilha ................................................ 100
Figura 36 - Relatório com resultados de cálculo obtidos com o sistema ...................... 101
Figura 37 - Tela de exibição de consultas a séries históricas de resultados de cálculo .. 89
Figura 38 - Tela de relatórios gerados ............................................................................ 90
Figura 39 - Tela de geração de gráficos .......................................................................... 91
Figura 40 - Seções da Linha 16-0, que liga Balneário Camboriú até Joinville .............. 94
Figura 41 - Camada de rodovias ..................................................................................... 95
Figura 42 - Camada de cidades ....................................................................................... 96
Figura 43 - Camada com as linhas de ônibus montadas ................................................. 96
Figura 44 - Tela de desenho de linhas ............................................................................ 98
20
1 INTRODUÇÃO
O sistema público de transporte de ônibus é um meio de locomoção importante porque
atende a uma demanda de pessoas que não possuem veículos particulares ou pessoas que
possuem veículos particulares, mas que, por motivos particulares, utilizam o sistema público
de transporte, como ilustra a Figura 1.
Figura 1 - Distribuição dos meios de transporte no Brasil
Fonte: IPEA, SIPS (2010)
Para atender a demanda gerada por esse grupo de pessoas, existem empresas de ônibus
que fornecem o serviço de transporte público de passageiros. Segundo o Departamento de
Transportes e Terminais do Estado de Santa Catarina (DETER/SC), o Estado possui mais de
setenta empresas de ônibus, que possuem concessão de linhas regulares, que atuam nos
serviços urbano e intermunicipal. Esse número de empresas exige que o Estado tenha formas
eficientes de fiscalizar essas empresas para que, entre outras coisas, possa definir um preço
justo das tarifas do transporte público.
21
Os serviços de transporte rodoviário de passageiros são executados, em geral, por
empresas privadas mediante concessão ou permissão do Estado. Essas empresas precisam
atender às condições estabelecidas pelos órgãos gestores e usuários do sistema, cumprindo os
padrões mínimos de oferta do serviço no que diz respeito a linhas, horários, frequência,
manutenção dos veículos, confiabilidade, conforto, segurança, etc. (BERTOZZI e LIMA JR.,
1998).
O objetivo deste trabalho é desenvolver um sistema computacional que possa ajudar a
coletar e organizar os dados, realizar os cálculos tarifários e por fim informar os resultados
dos cálculos tarifários em questão. Esses cálculos estão definidos no Manual de Cálculo
Tarifário, que foi elaborado através de estudos pelo Laboratório de Transporte e Logísitca
(LabTrans) da Universidade Federal de Santa Catarina(UFSC), contratados pelo DETER.
1.1 Problematização
1.1.1 Formulação do Problema
O transporte rodoviário de passageiros por ônibus pode ser dividido em:
Transporte urbano: feito nas áreas urbanas de uma mesma cidade;
Transporte intermunicipal: liga municípios de um mesmo Estado;
Transporte interestadual: interliga estados de um mesmo país;
Transporte internacional: transpõe limites de um país.
Neste trabalho a solução proposta trata o sistema de transporte intermunicipal, mais
precisamente o do estado de Santa Catarina.
Atualmente, o DETER, no que diz respeito ao cálculo tarifário de linhas intermunicipais
do Estado de Santa Catarina, realiza o cálculo tarifário, gera relatório e armazena informações
através de planilhas. Essa metodologia dificulta, entre outras coisas, armazenar temporal e
tematicamente dados resultantes de cálculo tarifário e, em consequência, consultas a esses
dados para geração de relatórios.
A atual metodologia de cálculo do DETER, abordada no decorrer do trabalho, não
realiza os cálculos tarifários necessários definidos pelo Manual de Cálculo.
22
Essa metodologia gera dificuldades para o DETER conseguir controlar de maneira
eficiente as operações das empresas transportadoras de passageiros e para conseguir gerar um
coeficiente tarifário que seja justo para as empresas, para a população e para o próprio
DETER.
1.1.2 Solução Proposta
A solução proposta por este trabalho foi a de desenvolver um sistema que aplica a
metodologia do cálculo tarifário apontada pelo Manual de Cálculo Tarifário e apoiar a
consulta dos dados de suas linhas de ônibus através de um Sistema de Informações
Geográficas ou também chamado de Geographic Information Systems (GIS).
1.2 Objetivos
1.2.1 Objetivo Geral
O objetivo desse trabalho foi desenvolver e documentar um sistema desktop do tipo
cliente servidor com níveis de acesso para tornar possível a realização do cálculo tarifário de
transporte de passageiros em um sistema intermunicipal e desenvolver um sistema GIS para
mostrar, em um mapa georreferenciado, as linhas de ônibus intermunicipais do Estado de
Santa Catarina.
1.2.2 Objetivos Específicos
Os objetivos específicos deste trabalho são os seguintes:
organizar os dados pertinentes ao cálculo tarifário para facilitar a alimentação dos
mesmos a uma base de dados;
implementar o modelo de cálculo tarifário proposto pelo Manual de Cálculo Tarifário
homologado pelo DETER;
modelar e criar uma base de dados relacional para armazenar os dados utilizados para
o cálculo tarifário, bem como os resultados dos cálculos;
criar uma interface para a importação desses dados para uma base de dados, através do
sistema;
criar uma interface para a realização do cálculo;
criar uma interface para a consulta de todos os cálculos já realizados, geração de
relatórios e gráficos;
23
preparar um conjunto de dados geográficos com as linhas de ônibus;
permitir a visualização e consulta de informações das linhas através de um sistema de
informações geográficas.
1.3 Metodologia
A metodologia adotada neste trabalho divide-se da seguinte forma:
Pesquisa Bibliográfica e Estudo: realização de estudos sobre o transporte público de
passageiros no Brasil e sobre o cálculo tarifário do transporte intermunicipal.
Levantamento de Requisitos do Sistema: identificação de requisitos funcionais e
não funcionais do sistema.
Modelagem: elaboração da modelagem, a partir do levantamento de requisitos, das
camadas de modelo (base de dados) e controle (sistema).
Desenvolvimento: com base na modelagem, foi feito o desenvolvimento propriamente
dito do sistema.
Validação: realização de testes para garantir que todas as funcionalidades do sistema
estejam em funcionamento de acordo com os pré-requisitos definidos.
Documentação: elaboração, revisão e correção de toda a documentação do trabalho
em questão.
1.4 Estrutura do Trabalho
No capítulo 1 é apresentado o problema, a proposta, os objetivos e a metodologia
utilizada para solução do problema.
No capítulo 2 são abordados assuntos referentes ao transporte rodoviário público de
passageiros e sistema de informações geográficas.
No capítulo 3 é apresentado o sistema, seus requisitos, modelagem, casos de uso,
funcionalidades, protótipos, metodologias de como foi construída estrutura para desenho de
linhas e do cálculo, validações e os objetivos cumpridos.
No capítulo posterior são feitas conclusões sobre o trabalho e sugestões para futuros
trabalhos.
Por fim, são citadas as referências bibliográficas usadas na construção do trabalho.
24
25
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo apresenta-se a revisão da literatura utilizada para a execução deste
estudo. São apresentados conceitos de transporte rodoviário público de passageiros, do
cálculo tarifário para tal serviço e por fim é ressaltada a utilidade de sistemas de informações
geográficas aplicados à área de transportes.
2.1 Transporte Rodoviário de Passageiros no Brasil
Gildemir (apud MANHEIM, 1980), em sua visão sistêmica, afirma que o sistema de
transportes afeta o modo como o sistema socioeconômico cresce e muda, e a reação das
pessoas afeta, ao mesmo tempo, o sistema de transportes.
Os meios de transporte não existem apenas para transportar bens e pessoas, mas para
atender às suas necessidades e garantir a interação das atividades sociais. Nas décadas
passadas as pessoas buscavam morar nas proximidades de seus empregos ou fábricas, mas a
crescente especulação imobiliária característica dos centros urbanos fez com que grande parte
da população acabasse por morar nas zonas periféricas das cidades, tendo maior necessidade
de locomoção, resultando uma maior demanda dos meios de locomoção devido à expansão
dos centros urbanos (MARQUES, 2003).
Segundo Brasileiro (1999), o Brasil é caracterizado por apresentar uma sólida indústria
de transporte público, baseado quase que exclusivamente no transporte rodoviário por ônibus.
A história da indústria do ônibus brasileiro remonta em grande parte à década de 50, quando
da consolidação da indústria automobilística no Brasil (PEREIRA, 2008).
Ainde de acordo com Brasileiro (1999), a partir das décadas de 60 e 70 ocorreu a
formação das atuais empresas de transporte por ônibus nas cidades brasileiras de forma quase
generalizada. Essa forma de organização está relacionada às políticas regulatórias utilizadas
pelos governos municipais. A utilização de práticas de concentração de oferta, forçando as
empresas a se concentrarem e padronizarem tipos de veículos induziu ao fim das lotações e ao
início das modernas empresas de ônibus. O setor regulamentado se tornou um negócio
lucrativo e as empresas estabelecidas se transformaram em grandes empresas a partir de
meados da década de 90 (PEREIRA, 2009).
26
Atualmente o transporte de passageiros é tratado nas três esferas de governo da seguinte
maneira:
as prefeituras municipais cuidam do transporte urbano (dentro da cidade);
os governos estaduais respondem pelas linhas intermunicipais dentro de cada
Estado (ligando municípios de um mesmo Estado);
o Governo Federal zela pelo transporte interestadual e internacional de
passageiros.
O sistema proposto tem por finalidade atuar na esfera Estadual de transporte de
passageiros.
No transporte intermunicipal de passageiros as empresas permissionárias
intermunicipais são administradas pelos governos estaduais, e cada Estado é responsável por
fiscalizar suas empresas (ANTT, 2008).
De acordo com a ANTT, os governos estaduais são os que administram o transporte
intermunicipal de passageiros. O órgão responsável no Estado de Santa Catarina é o
Departamento de Transportes e Terminais (DETER).
2.2 Departamento de Transportes e Terminais
O (DETER) surgiu em 1986, sendo autarquia resultante da Empresa Catarinense de
Transportes, criada em 1980 pela lei nº5683, juntamente com a regulamentação dos
transportes intermunicipais, através da lei nº5684. A função desse órgão é regulamentar e
gerenciar o transporte público de passageiros no Estado de Santa Catarina.
O DETER, autarquia vinculada à Secretaria de Estado da Infraestrutura (SIE),
cumprindo seus objetivos institucionais, gerencia um sistema que transporta, anualmente,
mais de 85 milhões de passageiros através de 67 transportadoras que operam suas atividades
mediante a concessão de 961 linhas regulares de Transporte Intermunicipal de Passageiros.
Atualmente são 1.023 transportadoras devidamente registradas, sendo que destas, 67 operam
mediante a concessão de linhas e serviços regulares, enquanto que as demais exercem
serviços de fretamentos e viagens especiais, cuja frota atinge um total de 4.997 ônibus
cadastrados na operação dos serviços intermunicipais. É também de responsabilidade do
DETER os 9 serviços de navegação interior de travessias.
27
Suas principais funções são:
I - Planejar, executar, fiscalizar e controlar o Serviço Público de Transporte Rodoviário
Intermunicipal de Passageiros, bem como qualquer tipo de transporte de massa a nível
estadual;
II - Zelar pela segurança e bem estar dos usuários de transporte rodoviário
intermunicipal de passageiros;
III - Planejar, fiscalizar e controlar a execução do Serviço Público de Transporte
Rodoviário Intermunicipal de Passageiros, delegado a empresas particulares sob a forma de
concessão ou autorização;
IV - Projetar, construir, adquirir, direta ou indiretamente Terminais Rodoviários de
Passageiros e Terminais Marítimos e Fluviais;
V - Compartilhar as políticas metropolitanas e locais de transporte urbano com o
planejamento integrado de desenvolvimento das respectivas áreas. No que se refere à
construção de Terminais e Abrigos de Passageiros, a implantação poderá ser feita diretamente
pelo DETER ou através de convênios firmados com as respectivas Prefeituras Municipais.
Dentre as essas funções pertencentes ao DETER, o trabalho proposto abordará uma
solução para auxiliar tal órgão a cumprir a função I, citada anteriormente, especialmente em
relação à política tarifária, que implica o cálculo tarifário.
2.3 Laboratório de Transportes e Logística
Conforme seu próprio site, o Laboratório de Transportes e Logística (LabTrans/UFSC)
foi criado em 1998 e desenvolve várias atividades nos segmentos de ensino, pesquisa e
extensão. Com foco voltado à realização de estudos e projetos nas áreas de Logística e
Transportes, têm atuado em:
Sistemas de informações geográficas (GIS) para logística e transporte;
Sistemas logísticos;
Macro logística;
Planejamento, organização e operação de sistemas de transporte;
Avaliação de projetos;
28
Planos diretores de transporte e logística;
Otimização na operação e distribuição de cargas;
Gestão de frotas;
Portos e terminais;
Transporte hidroviário;
Transporte ferroviário;
Transporte rodoviário;
Multimodalidade;
Transporte de passageiros;
Planejamento e otimização operacional no transporte coletivo;
Transporte de massa;
Sistemas integrados de transporte urbano;
Cursos customizados em nível de pós-graduação e capacitação, nas modalidades
presencial, semipresencial e a distância, para instituições de ensino, empresas e órgãos
governamentais, nas áreas de transportes e logística.
2.4 Conceitos Sobre Elementos do Transporte Público e Cálculo Tarifário
Serão abordados conceitos que envolvem elementos do transporte público, como:
linhas, seções, grupos de linhas, cálculo tarifário, etc.
2.4.1 Grupo de Linhas
Nesta seção serão abordados os conceitos de serviços, grupos de linhas, linha, seção e
ponto de seção.
Essa abordagem é importante para o entendimento do método de cálculo tarifário
revisado pelo Manual de Cálculo Tarifário, implementado pelo sistema em questão.
2.4.1.1 Seção e Ponto de seção
Um ponto de seção nada mais é que uma cidade, que pode ser de origem ou destino, e
que é ligada a outra cidade por uma rodovia. A tripla (ponto de seção de origem, rodovia que
sai desse ponto e liga até um ponto de destino, ponto de seção de destino), define uma seção
de uma linha. Uma linha pode ser composta de uma ou mais seções.
29
2.4.1.2 Linha
A Resolução N.16 define o conceito de linha como sendo o serviço de transporte
coletivo de passageiros executado em uma ligação de dois pontos terminais, nela incluídos os
seccionamentos e as alterações operacionais efetivadas, aberto ao público em geral, de
natureza regular e permanente, com itinerário definido no ato de sua outorga (ANTT, 2002).
Conforme a ANTT (1998), no decreto nº 2.521, de 20/03/1998, os pontos extremos do
itinerário de uma linha onde se dará o início ou o término das viagens são os pontos terminais.
O itinerário da linha é o percurso a ser utilizado na execução do serviço, podendo ser definido
por códigos de rodovias, nomes de localidades ou pontos geográficos conhecidos. O serviço
de natureza regular e permanente indica que a empresa permissionária deve obedecer a
horários preestabelecidos e de forma contínua (PEREIRA, 2009).
2.4.1.3 Grupos de Linhas
Linhas de ônibus podem apresentar características diferentes de uma região à outra e
tais características podem afetar diretamente o cálculo tarifário.
Anteriormente ao Manual de Cálculo Tarifário, existiam apenas quatro grupos de
linhas: o tipo de serviço rodoviário pisos 1 e 2; e o urbano, pisos 1 e 2. Piso 1 é um piso do
tipo pavimentado e piso 2 é do tipo não-pavimentado.
Agora com o Manual de Cálculo Tarifário, tem-se o Estado dividido em um número
maior de grupos. Isso possibilita gerar uma tarifa mais adequada de acordo com as
características de cada região do Estado de Santa Catarina.
A ideia dos grupos de linhas é agrupar linhas que possuem características semelhantes
entre si (de localização especialmente) e assim utilizar esses agrupamentos para poder
executar os cálculos de acordo com o estabelecido com o Manual de Calculo Tarifário. A
vantagem dessa nova organização é que, diferentemente do que é feito pelo DETER, ela leva
em consideração que as diversas regiões do Estado de Santa Catarina possuem características
próprias, como relevo, distância média do percurso das linhas, demanda de passageiros, tipo
de frota, e isso permite obter um coeficiente tarifário mais apropriado para essas regiões.
30
2.4.1.4 Serviços
Os grupos de linhas dividem-se em dois tipos de serviço: rodoviário e urbano.
2.4.1.4.1 Grupo de Linhas do Serviço Rodoviário
Grupo de linhas do serviço rodoviário são aquelas que seu percurso liga diferentes
municípios que não façam parte de uma mesma mesorregião, por exemplo: Florianópolis–
Balneário Camboriú.
Linhas Rodoviárias possuem uma classificação de acordo com seu destino e sua origem.
Origem e destinos são caracterizados por serem uma sede de SDR(Secretarias de Estado de
Desenvolvimento Regional) ou por não serem sede de SDR.
Com isso, os grupos de linhas do serviço rodoviário dividem-se em três:
linhas que ligam dois municípios sede de SDR;
linhas que ligam um município sede de SDR a outro não sede de SDR;
linhas que ligam dois municípios que não são sede de SDR.
2.4.1.4.2 Grupo de Linhas do Serviço Urbano
Grupo de linhas urbanas são linhas que interligam diferentes municípios que fazem
parte de uma mesma mesorregião, por exemplo: Florianópolis – São José.
Mesorregião é uma subdivisão dentro dos Estados do Brasil que é composta por um
grupo de municípios que compartilham entre si características similares, como geográfica
e/ou econômica, por exemplo.
2.4.2 Cálculo Tarifário
Aqui são abordados conceitos de política tarifária e modelos tarifários, como é o
modelo de determinação tarifária de como o fluxo de cálculo tarifário, definido pelo Manual
de Cálculo Tarifário, se aplica à nova divisão de grupos de linhas.
2.4.2.1 Política Tarifária
O custo unitário do serviço de transporte público é obtido rateando-se o custo total
(mão-de-obra, veículos e combustível, etc.) entre os passageiros que utilizam o sistema. Inclui
também os custos das gratuidades concedidas, passes escolares, idosos, etc. A tarifa é o preço
31
cobrado aos usuários pelo transporte. No sistema de transporte por ônibus, a tarifa é na
maioria dos casos, a única forma de remuneração dos serviços prestados, ao contrário dos
sistemas de trens urbanos, que são subsidiados pelo poder público (BERTOTTO e GRAVE,
2004).
Política Tarifária consiste nos critérios a serem seguidos pelo Poder Concedente no
estabelecimento de tarifas para o sistema, objetivando assegurar um serviço adequado.
Pelos critérios econômicos, deve-se assegurar a justa remuneração do capital investido
e manter o equilíbrio econômico e financeiro do sistema, o que é norma constitucional; pelos
critérios sociais, deve-se incentivar o melhoramento dos serviços existentes e sua expansão,
diminuir as disparidades na distribuição da renda e diminuir a parcela do custo total a ser
repassado para o usuário.
Quando considerado conveniente reduzir a parcela do custo por passageiro repassado
para a tarifa, o Poder Público pode absorver a diferença, e com isso manter o equilíbrio
econômico e financeiro do sistema através de subsídios. Nesse caso, o encargo é assumido
pelo contribuinte ao invés do usuário.
A Política Tarifária visa conceber importante instrumento de apoio ao
desenvolvimento e melhoria da gestão do transporte de passageiros do Estado de Santa
Catarina, servindo de referência obrigatória para os agentes públicos e privados que atuam no
setor de transportes do Estado. Tal Política deve estar baseada no conceito de distância de
linhas e integração entre modos de transporte buscando melhor equilíbrio e mais equidade,
tanto do ponto de vista dos usuários quanto dos operadores dos diversos sistemas de
transporte (LABORATÓRIO DE TRANSPORTES E LOGÍSTICA, 2009).
2.4.2.2 Manual de Cálculo Tarifário
Em dezembro de 1990 foi publicado o Estudo de Reestruturação do Modelo de
Cálculo Tarifário do Sistema de Transporte Intermunicipal de Passageiros do Estado de Santa
Catarina, elaborado pelas empresas SOTEPA e Resposta Consultoria, por encomenda do
Departamento de Transportes e Terminais (DETER). Naquele trabalho foram analisadas as
características operacionais do sistema então existente, o modelo tarifário, a metodologia
utilizada para a determinação dos parâmetros de custo, o perfil da frota e o modelo de
determinação das tarifas. Com base nessas análises, foi proposta uma nova planilha de cálculo
32
tarifário, com amplitude estadual e recomendações tanto para o serviço urbano como para o
rodoviário. Tais proposições foram aprovadas pelo DETER e aplicadas em todos os processos
de reajuste tarifário seguintes.
Em 1996, o Ministério dos Transportes publicou o documento Cálculo de Tarifas de
Ônibus Urbanos; Instruções Práticas Atualizadas, com recomendações do Grupo de Trabalho
coordenado pela Empresa Brasileira de Planejamento de Transportes (GEIPOT) e integrado
pelo Fórum Nacional de Secretários Municipais de Transportes, pela Associação Nacional das
Empresas de Transportes Urbanos (NTU) e pela Associação Nacional de Transportes Públicos
(ANTP). No trabalho, houve a reformulação de diversos itens de cálculo dos custos de
transporte público urbano, especialmente pela inclusão de novas tecnologias de veículos.
Em junho de 1997, a Prefeitura Municipal de Florianópolis, por imposição do
Ministério Público do Estado de Santa Catarina e em convênio com a Universidade Federal de
Santa Catarina (UFSC) através da Fundação de Ensino e Engenharia de Santa Catarina
(FEESC) elaborou o estudo Análise do Modelo de Planilha de Cálculo Tarifário de
Florianópolis, com vistas a adaptar o modelo então vigente às recomendações do Ministério
dos Transportes, além de apresentar alguns parâmetros redefinidos a partir de pesquisas
específicas dentro do próprio sistema. Em decorrência desse trabalho, foi elaborado, em 2004,
o Manual de Cálculo Tarifário, que contém todas as especificações técnicas necessárias para a
elaboração do estudo tarifário.
Em setembro de 2002 o DETER encomendou à empresa de consultoria OferBus,
Assessoria e Informática, o estudo Reavaliação do Modelo de Cálculo Tarifário do Sistema de
Transporte Público Intermunicipal de Passageiros da Região Metropolitana de Florianópolis,
também contemplando o serviço urbano, especificamente para a RMF.
Em setembro de 2009, foi elaborado pela UFSC (por meio do Laboratório de
Transportes e Logística) o documento Reavaliação do Modelo de Cálculo Tarifário do
Serviço Público Rodoviário Intermunicipal de Passageiros do Estado de Santa Catarina
(SPRIP/SC). Nesse documento, além da caracterização dos serviços prestados pelo DETER,
especialmente a classificação das linhas existentes, foi elaborada uma análise profunda do
modelo de cálculo tarifário adotado, incluindo a forma de cobrança da tarifa de administração
do órgão.
33
2.4.2.3 Modelo de Determinação Tarifária
O valor da tarifa era dado, antes do Manual de Cálculo Tarifário e ilustrado na Figura
2, genericamente, por:
Onde:
Tt,i,s: Tarifa da seção ou patamar t da linha i do serviço s (R$/pass.);
CTautp,s: Coeficiente tarifário autorizado do piso p do serviço s
(R$/pass.kmp1);
Pt,p,i,s: Percurso da seção ou patamar2 t de piso p da linha i do serviço s
(kmp).
O coeficiente tarifário autorizado (CTaut) é estabelecido pelo poder concedente com
base no valor do coeficiente tarifário final, que inclui taxas e impostos (tarifa de
administração e ICMS). Este coeficiente é determinado a partir dos estudos dos custos do
SPRIP/SC, elaborado pelo DETER (Manual).
Até 2009 era adotado um único coeficiente tarifário para cada serviço. De acordo com
o Manual de Cálculo Tarifário, a partir de 2010, para o serviço rodoviário, passaram a ser
calculados três coeficientes tarifários, de acordo a classificação das linhas adotada, via
decreto/resolução. Pelo mesmo decreto/resolução, passaram a serem dezesseis os valores
calculados para o serviço urbano.
2.4.2.4 Levantamento das Informações
As informações necessárias para a realização do cálculo tarifário são levantadas a
partir de dados coletados das empresas transportadoras, que devem oferecê-losao DETER
mensalmente. São informados os preços dos insumos, os gastos com pessoal, despesas
administrativas, de manutenção de frota e também informações relativas á demanda por
transporte.
1 A unidade kmp corresponde a quilômetros de percurso.
2 No caso do modelo por patamares, o valor adotado para o percurso é o maior entre aqueles de todas as linhas
que constituem o patamar.
p
i,sp,t,p,si,st, P CTaut T
34
As informações dividem-se em cinco partes:
Informações Financeiras, onde são informados os preços dos insumos, os
salários do pessoal de operação e as despesas administrativas mensais; aqui é
também calculado o preço médio ponderado do veículo, ou seja, o preço do
veículo-padrão de cada categoria;
Informações Operacionais, onde são inseridos os dados relativos às
necessidades de transporte (demanda média mensal de passageiros por
categoria – comum, escolar, vale-transporte e isentos) e ao serviço oferecido
(quantidade média mensal de quilômetros percorridos e distribuição etária da
frota, ambos por categoria de veículo); é também calculado o número de
passageiros equivalentes (pass/mês);
Custos Variáveis, em que são determinados aqueles custos que se alteram à
medida que são consumidos os recursos do sistema, ou seja, a quilometragem
percorrida; estão incluídos os custos (por quilômetro) relativos ao consumo de
combustível, lubrificantes, rodagem (pneu, recapagem, câmara e protetor) e
peças e acessórios;
Custos Fixos, em que são determinados os custos que apresentam base
temporal, como os custos do capital investido (depreciação e remuneração –
de veículos, máquinas, instalações e equipamentos), as despesas com o
pessoal de operação, manutenção, administração e direção, os benefícios e as
despesas administrativas;
Cálculo Final da Tarifa, onde são calculados o custo por quilômetro,
incluindo taxas e impostos, e o custo por passageiro, referência básica para o
estabelecimento dos valores das tarifas.
A forma como esses dados foram organizados será abordado na parte três do trabalho.
2.4.2.5 Fluxo da Estrutura do Cálculo Tarifário
Primeiro é feito o levantamento das informações dos dados financeiros, operacionais e
administrativos, que no sistema é feito através da importação dos dados de entrada para a base
de dados. Depois, é feito o levantamento dos coeficientes básicos inerentes ao cálculo.
35
Com essas duas etapas concluídas, torna-se possível realizar o cálculo dos custos
variáveis e fixos. Consequentemente é feito o cálculo do custo por quilômetro e do coeficiente
tarifário sem tributação. Basicamente é feita a soma dos custos (variável e fixo), resultando
em um custo por quilômetro. Esse custo é dissolvido entre todos os usuários de ônibus (o
número de usuários é estimado pela ocupação equivalente), definindo um coeficiente
chamado Coeficiente dos Custos.
Para melhor entendimento, podemos fazer uma analogia a um churrasco entre amigos.
O organizador compra comida e bebida necessárias a certa quantidade de pessoas; é calculado
o total gasto e divide-se o custo entre todos aqueles que usufruíram dos comes e bebes.
Assim, temos o custo do churrasco/pessoa, enquanto no caso da tarifa de ônibus tempos o
custo/passageiro.km. Finalmente, o coeficiente tarifário calculado sofre a tributação e assim
obtém-se o coeficiente tarifário aprovado. A Figura 2 apresenta o fluxo do cálculo tarifário.
Figura 2 - Fluxo do Cálculo Tarifário
Na Figura 2, as elipses representam uma etapa do cálculo e as setas preenchidas de cor
preta representam uma transição entre as elipses, que segue um fluxo da esquerda para a
direita, que é feita a partir da obtenção das informações contidas nos retângulos da elipse em
questão.
Coeficiente Tarifário
Custos Coeficiente Tarifário
Dados Financeiros, operacionais e administrativos
-Cálculo do custo/km -Cálculo do Coeficiente Tarifário sem
Tributos
Levantamento de informações
Coeficientes Básicos
-Cálculo dos Custos Variáveis-Cálculo dos Custos Fixos
CCC, CCOL, CCPA, CQI, CoDF, CoDMIE, CoRF, CoRMIE, FU, ES, CDPM, CDPAd, CoDGA
36
Finalmente, para determinação da tarifa de uma linha, é realizado o cálculo
representado pela Figura 3.
Figura 3 - Cálculo da Tarifa da Linha
De forma generalizada, o cálculo é feito somando-se o custo variável total(CVT) e o
custo fixo total(CFiT), para obter o custo por quilômetro (Ckm)
Onde:
Ckmj,s:Custo por quilômetro do grupo j do serviço s (R$/km);
CVTj,s:Custo variável total do grupo j do serviço s (R$/km);
CFiTj,s:Custo fixo total do grupo j do serviço s (R$/km).
Em seguida calcula-se o coeficiente dos custos (CoC), que é feito dividindo-se o Ckm
pela ocupação equivalente(OcEq). Isso , fazendo analogia ao rateiro de um churrasco) é onde
define-se quanto cada pessoa vai pagar pelo churrasco.
Onde:
Extensão da Linha
• 60 km
Coeficiente Tariáfio
•0,11 R$/passageiro.km
Tarifa da Linha
•6,60 R$
sjsjsj CFiTCVTCkm ,,,
sj
sj
sjOcEq
CkmCoC
,
,
,
37
CoCj,s: Coeficiente dos custos do grupo j do serviço s (R$/pass.kmp);
Ckmj,s: Custo por quilômetro do grupo j do serviço s (R$/km);
OcEqj,s: Ocupação equivalente do grupo j do serviço s (pass.eq./viagem).
Depois é aplicada a tributação ao CoC.
Onde:
CTj,s:Coeficiente tarifário final (calculado) do grupo j do serviço s
(R$/pass.kmp);
CoCj,s:Coeficiente dos custos do grupo j do serviço s (R$/pass.kmp);
Tris:Somatório dos tributos do serviço s (%).
Finalmente, obtem-se o valor da tarifa por passageiro, ilustrado pela Figura 2.
Onde:
Cpassq,j,s:Custo por passageiro da linha, seção ou patamar q do grupo j do
serviço s (R$/pass);
CTautj,s:Coeficiente tarifário autorizado do grupo j do serviço s
(R$/pass.kmp);
Pq,j,s:Percurso da linha, seção ou patamar q do grupo j do serviço s (kmp).
Nota-se que com esta proposta de cálculo, os insumos necessários ao cálculo são
selecionados grupo a grupo de linhas, através de consultas à base de dados do sistema,
resultando no coeficiente tarifário do grupo de linha em questão.
Grupo de linhas é um conjunto de linhas de ônibus colocadas em um mesmo conjunto
de acordo com a mesorregião ao qual elas pertencem.
1001
1
ssj ,sj , Tri
CoC CT
sjqsjsjq PCTautCpass ,,,,,
38
Isso implica que o coeficiente tarifário de um grupo será mais justo à um grupo de
linhas porque os dados operacionais utilizados para realizar o cálculo não sofrem influencia
de dados operacionais de outras mesorregiões. Por exemplo, as características operacionais,
como quantidade de piso pavimentado, quantidade de linhas, tempo de viagem,
quilometragem percorrida, etc., de um grupo de linhas na mesorregião de Florianópolis são
diferentes das da mesorregião de Joinville. Então se consideramos essas duas mesorregiões
como um único grupo de linhas, usando seus dados operacionais em conjunto, para calcular
um coeficiente tarifário para ser usado em ambas, pode acontecer de esse coeficiente não
refletir as características desses grupos, podendo gerar um valor de tarifa injusto para ambos.
Com isso, conceitualmente, normalizando ao máximo o agrupamento de linhas de
acordo com a mesorregião a qual elas pertencem, pode resultar em coeficientes tarifários mais
convenientes em relação às características operacionais delas.
Para efeito de comparação, com o método antigo de agrupamento de linhas, tinham-se
apenas quatro coeficientes tarifários para todo o estado, enquanto que com o novo modelo de
agrupamento de linhas temos dezenove coeficientes tarifários distribuídos pelas regiões do
Estado de Santa Catarina. Isso significa que, com essa nova metodologia, as chances de gerar-
se um coeficiente tarifário mais apropriado às regiões do estado são maiores.
2.4.3 Processos de Cálculo Tarifário do DETER
No processo para cálculo tarifário realizado pelo DETER os dados são coletados e
armazenados em planilhas através de requisições feitas diretamente a cada empresa
transportadora. O Estado de Santa Catarina conta com cerca de mais de 70 empresas situadas
em todo o terrítório estadual.
Após a coleta de dados, estes são inseridos em planilhas de Excel que contém as
fórmulas para a realização do cálculo tarifário. Essas inserções devem ser cuidadosamente
feitas porque em planilhas com fórmulas, os parâmetros usados para essas fórmulas possuem
referência estática, então se as inserções não são feitas corretamente os cálculos podem não
funcionar, revelando uma das fragilidades desse método. Repete-se essa operação para cada
grupo de linhas.
39
Os valores calculados de preços de combustíveis, óleos, pneus e demais acessórios são
os mesmos para todos os grupos, rodoviário e urbano (o conceito de grupo é abordado na
seção).
Os valores pagos pelas empresas pelos veículos, bem como a participação de cada
modelo de veículo são separados pelo grupo ao qual atuam, rodoviário e urbano. Em seguida
são feitos os cálculos dos custos, que podem ser variáveis e fixos, para esses grupos.
Após a obtenção do coeficiente tarifário e dos coeficientes de custos de cada grupo, a
geração de relatório é feita através de um relatório pré-definido, em planilha também. Os
resultados do cálculo de cada grupo são inseridos em campos específicos da planilha, e assim
o relatório é povoado com os dados.
2.4.3.1 Problemas
Conforme mencionado anteriormente, o cálculo no DETER era feito em planilhas,
usando o programa Microsoft Excel e isso apresenta problemas como:
Confiabilidade: qualquer usuário, de posse, dessas planilhas, pode alterar as
metodologias de cálculo e até resultados de cálculo, colocando em dúvida a
confiabilidade do sistema.
Organização: não havia um padrão para organizar, e separar por algum critério,
os dados necessários para o cálculo.
Segurança: não havia nenhum sistema de controle de acesso aos usuários do
sistema, implicando que qualquer pessoa, com aceso às planilhas, poderia alterá-
las da maneira que quisesse, implicando na confiabilidade, como já discutido no
primeiro item.
Persistência: os dados necessários para o cálculo bem como os resultados dos
cálculos não eram armazenados nem referenciados temporal e localmente.
Desempenho: planilhas são ferramentas de uso geral e por elas não fornecem o
mesmo desempenho de um sistema dedicado somente à resolução do problema.
40
2.5 Sistemas de Informações Gerenciais Geográficas
Um Sistema de Informação Geográfica (GIS) é um sistema que integra hardware,
software e dados para capturar, gerenciar, analisar e exibir todas as formas de informações
geograficamente referenciadas(GIS, 2011).
Um SIG permite-nos visualizar, entender, questionar, interpretar dados de maneira que
revelem relações, padrões e tendências em forma de mapas, globos, relatórios e gráficos (GIS,
2011).
Também nos ajuda a responder a questões e resolver problemas simplesmente
observando dados de uma maneira de fácil entendimento e compartilhamento.
De acordo com Korte (2001), um sistema GIS pode armazenar dados de atributos. Esses
dados são associados a dados espaciais provendo maiores informações descritivas sobre eles,
como por exemplo, um sistema GIS pode ser usado para mapear impostos municipais sobre
propriedades. O valor do imposto determina o tamanho das áreas do mapa e dados descritivos
informam dados como número do lugar, nome do dono, etc. Os dados desses atributos são
armazenados em uma base de dados separada dos dados gráficos.
Em outro exemplo, um sistema GIS pode mostrar ao usuário os estados do Brasil e
associar a cada um deles informações como: nome da capital, população, área, etc.
As informações em um sistema GIS são, geralmente, armazenadas e representadas por
camadas, que é um conjunto de características geográficas ligadas com seus atributos de
acordo com a Figura 4, que ilustra como são as camadas em um sistema GIS.
41
Figura 4 - Camadas em um sistema GIS
A principal vantagem de se usar um sistema GIS no sistema em questão é que ele
permite ao usuário elevar o nível de interação com os dados que ele observa ao longo do uso
do sistema. Permite que o usuário, além de ver os dados alfanuméricos das linhas, como:
número, extensão, grupo, etc. , possa ver também o caminho que ela percorre no mapa. Uma
outra possibilidade é a de observar somente as linhas pertencente a um determinado grupo de
linhas, ou somente linhas operadas por uma determinada empresa, ou linhas que passam por
uma cidade e muitas outras possibilidades.
2.5.1 GIS Aplicado a Transportes
De acordo com Rodrigue et al (2006 apud MILLER e SHAW, 2001) um sistema de
informação geográfico é um sistema especializado em entrada, armazenamento, manipulação,
análise e em geração de relatórios (no sentido espacial) de informações geográficas. Entre as
diversas áreas de aplicação em potencial, a aplicação de GIS na área de transportes está
recebendo muita atenção.
Sistemas de informações geográficas para a área dos transportes (GIS-T) relacionam-se
aos princípios e aplicações para aplicar tecnologias de informações geográficas para os
problemas de transporte (RODRIGUE et al, 2006 apud MILLER e SHAW, 2001).
42
Segundo Rodrigue et al (2006 apud MILLER e SHAW, 2001) GIS-T podem ser úteis
para planejamento de infraestrutura, monitoramento e controle de tráfego, análise de
segurança de transporte, análise de demanda de viagens, dimensionamento de impactos
ambientais, atenuação de riscos, etc.
Existem quatro importantes componentes em GIS: codificação, gerenciamento, análise,
geração de relatório, descritos a seguir.
Codificação: trata os problemas de representar um sistema de transporte e seus
componentes espaciais. Para ser útil em um sistema GIS, a rede de transporte deve ser
corretamente codificada, implicando uma topologia funcional composta por nós e
links. Outros elementos, relevantes ao sistema de transportes quantitativos e
qualitativos devem ser codificados e associados corretamente aos seus respectivos
elementos espaciais. Por exemplo, uma estrada pode ter dados relativos à sua largura,
número de linhas, horário de pico de tráfego, etc.
Gerenciamento: a informação codificada é geralmente armazenada em uma estrutura
de arquivos (banco de dados, por exemplo) e pode ser organizada juntamente com
dados espaciais (uma região, um pais, etc), temáticos (para estradas, trânsito,
terminais, etc.). Esse processo é geralmente automático e tem convenções já
estabelecidas. Por exemplo, muitas agências governamentais usam formatos
específicos e fornecem suas informações junto com informações espaciais (com sua
jurisdição), temáticas (pelo seu campo de interesse) e temporais (sua frequência de
coleta de informações) pré-determinados.
Análise: engloba um conjunto de ferramentas e metodologias disponíveis para a
questão dos transportes. Elas vão desde uma simples consulta a um elemento de um
sistema de transporte (qual o horário de pico de um trecho de uma rodovia?) até a
investigação sobre a relação entre seus elementos (se um novo trecho for adicionado à
rodovia quais seriam os impactos no tráfego e futuro desenvolvimento do uso das
terras).
Geração de Relatórios: um sistema GIS não se torna completo sem sua parte de
visualização de dados e capacidades cartográficas. Esse componente é importante
porque ele pode expressar informações complexas em um formato simbólico. Um
sistema GIS-T assim torna-se uma ferramenta que informa e convence usuários, que
43
podem não ter o tempo ou a capacidade de interpretar, na interpretação de dados não
simbólicos.
No trabalho em questão, GIS-T pode ser usado para determinar o valor da tarifa de
uma linha porque, de acordo com a 3, o valor da tarifa é determinado pelo produto entre o
coeficiente tarifário e a extensão da linha e com o sistema em questão é possível definir a
extensão de uma linha, podendo então auxiliar no cálculo da tarifa das linhas.
2.5.1.1 Modelo de Dados
Um dos modelos de dados utilizados às aplicações de GIS-T é o modelo nó-arco. De
acordo com Miller e Shaw (2001) o modelo nó-arco é um tipo de grafo. Esse modelo tem
como objetivo estabelecer relações entre entidades, representadas por pontos. Os nós são
pontos por onde um fluxo se origina, passa ou termina enquanto os arcos são os condutores de
fluxos entre os nós.
Na Figura 5 pode-se perceber a representação em grafos de um modelo GIS.
Figura 5 - Topologia GIS Transformada em Modelo de Grafo
A partir do conceito de modelo de dados do tipo nó-arco pode-se afirmar que na
proposta deste trabalho, que é a de possibilitar a visualização das linhas de ônibus do Estado
de Santa Catarina, o modelo de dados utilizados para representar as linhas, juntamente com
seus pontos de origem e destino, é o modelo do tipo nó-arco, em que os nós podem ser uma
44
cidade de origem ou destino e a linha utilizada para percorrer esse caminho é definida por
arcos que ligarão esses nós.
Os pontos de origem e destino são os pontos de seção, que são ligados um ao outro
através de um arco, formando assim uma seção de linha.
45
2.6 Justificativa
Após analisar os processos atuais do DETER, e seus consequentes problemas, podemos
afirmar que, utilizando um sistema computacional, o processo de cálculo tarifário pode ser
executado de maneira mais eficiente e eficaz.
Um sistema computacional torna o cálculo tarifário mais confiável, pois os algoritmos
para o cálculo não podem ser alterados por nenhum usuário do sistema, ao contrário do
processo de cálculo atualmente utilizado pelo DETER, usando planilhas.
Através de um modelo de dados pode-se resolver o problema da organização de dados e
da persistência dos mesmos, bem como o problema de guardar resultados de cálculo, que
pode ser resolvido com o uso de séries históricas.
Através do estabelecimento de políticas de acesso, cria-se um mecanismo claro de
segurança para o sistema, implicando ao mesmo uma maior confiabilidade, em consequência,
porque permite que apenas pessoas julgadas capacitadas a operar o sistema, cabendo o
julgamento ao responsável pelo sistema.
Por esses motivos afirma-se que o problema em questão é um problema para a
computação.
3 CONCEPÇÃO DO SISTEMA
Nesta seção do trabalho serão apresentados: a solução proposta, os requisitos do
sistema, casos de uso, modelos. É descrita também a proposta da organização dos dados com
os insumos necessários ao cálculo, protótipos das telas e como ficou as telas resultantes desses
protótipos, validação do cálculo e como foi gerada a camada contendo as linhas de ônibus no
estado bem como se desenha uma linha nela.
O sistema foi desenvolvido em linguagem Delphi e utiliza o SGBD PostgreSQL. É um
sistema desktop do tipo cliente-servidor, com múltiplos usuários e níveis de acesso.
Foi utilizada a linguagem delphi pois as bibliotecas GIS utilizadas foram
desenvolvidas através dela.
46
A utilização da base de dados PostgreSQL foi escolhida porque ela foi recentemente
adotada pelo DETER, então para manter um padrão e evitar qualquer dificuldade de
implantação da base, optou-se por utilizar o mesmo Sistema de Gerência de Banco de Dados(
SGBD) que o DETER.
Possui dois módulos distintos: um para a realização do cálculo tarifário e outro que
engloba funcionalidades GIS.
O módulo de cálculo engloba todas as funcionalidades pertinentes aos processos de
realização do cálculo tarifário. As funcionalidades que o compõem são a importação dos
arquivos com insumos necessários ao cálculo, os procedimentos para o cálculo propriamente
dito, consulta de dados pertinentes ao cálculo, como dados importados e resultados de cálculo,
geração de gráficos e de relatórios.
O módulo GIS engloba todas as funcionalidades pertinentes a visualização de dados
geográficos das linhas de ônibus, bem como consultas as suas respectivas informações, como
nome, número, empresa que opera, etc.
3.1 Ciclo de Vida do Projeto
Para o desenvolvimento deste trabalho foi adotado um ciclo de vida utilizando o
modelo de cascata. As atividades do modelo do ciclo de vida podem ser visualizadas na
Figura 6.
Figura 6 - Ciclo de vida do projeto
47
O levantamento de requisitos tem como objetivo levantar e especificar os requisitos
funcionais e não funcionais da ferramenta.
O levantamento de entidades visa levantar e especificar as entidades envolvidas na
ferramenta.
Esta etapa foi executada junto ao DETER, onde levantaram-se suas necessidades, e
também junto à engenheiros do Laboratório de Transportes, especialistas na área de cálculo
tarifário.
A prototipação das telas tem como objetivo elaborar a interface com o usuário para
atender os requisitos especificados.
O detalhamento dos casos usos inicia com a identificação dos atores e casos de uso.
Depois, cada caso de uso é detalhado, considerando os fluxos (base, alternativos e de exceção)
e a prototipagem das telas.
A fase de Projeto é constituída de duas atividades: elaboração do diagrama de
módulos; elaboração do diagrama de banco de dados. A fase de construção é formada por
iterações entre codificação e testes.
Na fase de codificação dos métodos que realizam o cálculo tarifário, após a
implementação de cada cálculo, os engenheiros especialistas em cálculo tarifário o validaram.
O processo de validação constituiu em comparar os resultados de cálculo fornecidos
pelo sistema com os resultados de cálculo feitos pela metodologia de cálculo dos engenheiros,
que era a de realizar os cálculos com o apoio de planilhas. Vale ressaltar que foram usados os
mesmos dados de insumos no sistema e nas planilhas e que este trabalho levou cerca de 2
meses.
A última fase do ciclo de vida é a avaliação, é constituída pelas atividades de
validação, onde será realizada para avaliar se a ferramenta está atendendo as expectativas do
cliente, inclusive avaliando se ela funciona no ambiente esperado dos usuários. E a atividade
de entrega, que será a disponibilização da base de dados mais o arquivo executável do
sistema.
48
3.2 Iniciação
Na iniciação são levantados e especificados os requisitos e as entidades, são descritos os
casos de uso do sistema, bem como os protótipos de telas que os envolvem.
3.2.1 Requisitos
Nesta seção serão descritos os requisitos funcionais e não funcionais do sistema.
3.2.1.1 Requisitos Funcionais
O levantamento de requisitos especifica as ações que o sistema deve executar,
caracterizando seu comportamento de entrada e saída.
Os requisitos funcionais do sistema são:
1. Permitir o cadastramento de novos usuários.
2. Permitir definir/alterar o nível de acesso dos usuários.
3. Permitir o desenho, no mapa, das linhas de ônibus cadastradas.
4. Permitir a alimentação do sistema através da importação de dados de entrada.
5. Permitir a visualização dos dados alfanuméricos referentes ás informações de
transportadoras, linhas, seções e dados de entrada previamente importados.
6. Permitir a execução do cálculo tarifário.
7. Permitir comparar, entre cálculos tarifários de datas diferentes, as diferenças,
em percentual, entre valores individuais de cada cálculo em questão.
8. Permitir exportar os resultados do cálculo tarifário para um arquivo do tipo xls.
9. Permitir consultas a cálculos tarifários previamente feitos.
10. Permitir geração de relatórios com os valores resultantes de um cálculo
tarifário.
11. Permitir a geração de gráficos que comparam a evolução de um determinado
valor de um cálculo tarifário ao longo do tempo.
3.2.1.2 Requisitos Não Funcionais
Os requisitos não funcionais descrevem as necessidades e restrições do sistema.
Os requisitos não funcionais do sistema são:
49
1. Deve funcionar em ambiente Windows, a partir da versão XP.
2. Deve funcionar juntamente com o banco de dados PostgreSQL 8.4.
3. Deve ter conexão de rede constante para com o banco de dados em questão.
4. Deve ter interface simples e intuitiva.
5. Deve permitir que sua utilização seja fácil, ou seja, que sua curva de
aprendizado seja suave.
3.2.2 Levantamento de Entidades
Empresa Transportadora: empresa privada que recebe a concessão do DETER para
atuar em um ou mais grupos de linhas, utilizando sua frota para executar os itinerários
definidos, que são aprovados/sugeridos pelo DETER.
Veículo: veículo automotor que pertence a uma empresa transportadora que opera uma
ou mais linhas de um determinado grupo de linhas, seguindo um itinerário pré-estabelecido
aprovado/sugerido pelo DETER.
Ponto de Seção: cidade de origem ou destino de uma seção de linha.
Seção: segmento de uma Linha formado por dois Pontos de Seção.
Linha: serviço de transporte coletivo público que liga dois pontos terminais. Pertence á
um grupo de linhas e seu itinerário é aprovado/sugerido pelo DETER.
Arquivo de Entrada: arquivo contendo informações necessárias à realização do
cálculo tarifário.
Usuário: funcionário do DETER que opera o sistema.
3.2.3 Casos de Uso
O diagrama de casos de uso corresponde ao diagrama que modela a dinâmica do
sistema(...) no mais alto nível de abstração propiciado por UML. Relaciona as funcionalidades
do sistema modelado, através do elemento caso de uso, e os elementos externos que interagem
com o sistema modelado, através do elemento sintático ator. O diagrama é composto por esses
elementos e relações envolvendo pares desses elementos (SILVA, 2009).
50
Um ator é representado por um boneco, o sistema é representado por um retângulo e os
casos de uso são representados por elipses dentro do retângulo.
Arestas representam um relacionamento entre o ator e um caso de uso.
A Figura 7 ilustra o diagrama de casos de uso.
51
Figura 7 - Diagrama de casos de uso
A seguir serão apresentados e descritos os casos de uso do sistema de acordo com o
diagrama da Figura 7.
52
3.2.3.1 Cadastrar Usuário
Figura 8 – Protótipo da Tela de Cadastro de Usuário
Na tela apresentada na Figura 8, o usuário, para adicionar um novo usuário, aperta no
botão com o símbolo “+” e aí são informados o nome, login e senha do novo usuário.
1. Cadastrar Usuário {Basico}
Pode ser feito somente pelo administrador do sistema.
1.1. O usuário requisita cadastrar novo usuário.
1.2. O sistema criar uma nova entrada na grade de dados.
1.3. O usuário preenche os campos com os dados do novo usuário e confirma.
1.4. O sistema registra o novo usuário e o caso de uso termina.
53
3.2.3.2 Autenticar
Figura 9 - Protótipo da Tela de Login
Nesta tela apresentada na Figura 9, o usuário insere seu nome de usuário no campo
“Login” e senha no campo chamado “Senha” e clica no botão “OK” para autenticação no
sistema ou “Cancelar” para sair do sistema.
1. Efetuar Login no Sistema {Básico}
1.1. O usuário requisita a abertura do sistema;
1.2. O sistema exibe a tela de login;
1.3. O usuário informa seu nome e senha;
1.4. O sistema abre a tela principal e o caso de uso termina.
2. Fluxo de Erro
Se o usuário informa o nome e/ou senha errados
2.1. O sistema retorna à página de login e informa a mensagem (Dados de
Usuário Incorretos.)
54
3.2.3.3 Definir Acesso
Figura 10 – Protótipo da Tela de Nível de Acesso de Usuários
Tal ação pode ser executada somente pelo usuário administrador do sistema.
1. Definir Acesso {Básico}
1.1. O usuário solicita alterar o nível de acesso dos usuários;
1.2. O sistema mostra os usuários cadastrados;
1.3. O usuário seleciona o usuário que deseja alterar o nível de acesso;
1.4. O sistema mostra as opções de nível de acesso;
1.5. O usuário seleciona o tipo de acesso desejado e confirma a alteração;
1.6. O sistema executa as alterações e o caso de uso termina.
55
3.2.3.4 Visualizar Caminho de Uma Linha
Figura 11 – Protótipo da tela de vizualização de linhas
No grid de dados, à direita, são exibidas as linhas disponíveis para seu destacamento.
Na barra de menu vertical, a esquerda, clica-se no botão ilustrado pelo desenho de um lápis
para que seja feito o destacamento da linha selecionada. Através dessa tela, o usuário do
sistema pode visualizar o caminho que uma linha percorre, no mapa, destacando-a com uma
cor diferente. Qualquer nível de usuário pode utilizar tal funcionalidade.
1. Destacar uma Linha {Básico}
1.1. O sistema lista as linhas disponíveis para destacamento;
1.2. O usuário seleciona uma das linhas e solicita o destacamento da mesma;
1.3. O sistema mostra a linha selecionada com uma cor diferenciada, no mapa
e o caso de uso termina.
1.1. Fluxo de Erro
Quando não existem dados para que a linha seja desenhada.
1. O sistema informa (Não Existem Dados para Destacar a Linha
desejada).
56
3.2.3.5 Importar Dados
Na Figura 12 são exibidos os dados carregados dos arquivos de importação.Na parte
superior da tela, nos campos: Transportadora, Forta e Linhas é onde o usuário aponta o
caminho do arquivo contendo os dados para importar, como por exemplo, C:\Linhas.csv, a
definição do caminho é apoiado por um componente do tipo “Abrir Arquivo”. Mais abaixo
cada aba mostra os dados de um arquivo em específico.
Figura 12 - Protótipo da Tela de Importação de Dados
Permite ao usuário a importação dos dados necessários ao cálculo tarifário para a base
de dados do sistema.
Somente o usuário do tipo administrador pode realizar esta operação e os arquivos de
entrada devem seguir o padrão definido, que será descrito no decorrer do trabalho.
No campo “Data de Cálculo” o usuário informa o mês de referência dos dados a serem
importados.
57
Os campos “Empresa”, “Frota” e “Linhas” informam os caminhos para os respectivos
arquivos contendo os dados para importação. Os botões “Limpar” apagam os valores do grid
onde os dados são exibidos.
O botão gravar realiza as operações de inserção dos dados no banco de dados.
1. Importar os Dados {Básico}
1.1. O usuário solicita ao sistema realizar a importação de dados;
1.2. O sistema exibe a tela necessária para a realização da operação;
1.3. O usuário seleciona um mês de referência para os dados;
1.4. O usuário informa ao sistema os caminhos onde estão os arquivos com os
dados para serem importados (C:\Arquivo.csv);
1.5. O usuário requisita ao sistema a operação de gravação dos dados em base;
1.6. O sistema realizar a operação e retorna a mensagem de sucesso (Dados
Importados com Sucesso) e o caso de uso termina.
2. Já Existem Dados {Alternativo} – Já existem dados para o mês
selecionado
2.1. O sistema avisa que já existem dados para tal mês e pergunta ao usuário
se ele deseja substituir os dados;
2.2. O usuário clica sim para sobrescrever os dados ou não para não fazê-lo;
2.3. O sistema realiza a operação com a mensagem (Dados Importados com
Sucesso) e o caso de uso termina.
3. Fluxo de Erro (Exceção}
Quando por motivo de falha de rede ou má formatação dos arquivos que impediu de a
operação ser realizada com sucesso.
{Erro de Comunicação}
1.O sistema informa a mensagem ( Dados não Foram Importados com
Sucesso) e retorna ao fluxo básico.
{Erro de má Formatação dos Arquivos}
1.O sistema informa a mensagem (Existem Problemas com a Formatação
dos Arquivos) e retorna ao fluxo básico.
58
3.2.3.6 Realizar um Cálculo
Figura 13 - Protótipo da tela de execução de cálculo
No combo identificado por “Mês de referência” o usuário escolhe um mês de referência
para realizar o cálculo (Figura 13).
O botão “Calcular” dispara a execução do cálculo tarifário; o botão “Gravar” grava os
resultados de cálculo em base -- somente os usuários do tipo administrador e analista podem
executar esta ação--; o botão “Valores de sensibilidade” altera certos valores pertinentes ao
cálculo, porém esta funcionalidade não foi considerada parte do sistema; o botão
“Coeficientes Teóricos” exibe alguns coeficientes fixos utilizados para o cálculo; e o botão
“Exportar Resultados” exporta os resultados de cálculo, exibidos no grid de dados, para um
arquivo de planilha.
Entre as abas superiores, a aba chamada “Resultado do Cálculo” é a aba em que se
executa as operações para realizar o cálculo tarifário. Na aba “Valores para comparação” é
permitido selecionar outros resultados de cálculo para que seja possível comparar com o
resultado atual e a aba “Diferenciais” mostra o diferencial porcentual de cada valor calculado
59
entre os resultados do cálculo atual e os resultados escolhidos na aba “Valores para
comparação”.
Nas abas inferiores, a aba “Resultados de custos” mostra os resultados de custos
variáveis, fixos e coeficiente tarifário do cálculo que foi executado e aaba “Dados
operacionais” mostra valores operacionais calculados, como preço de combustível,
quilometragem percorrida, etc.
Qualquer usuário pode realizar o cálculo tarifário, mas somente os usuários
administrador e analista podem gravar os resultados.
1. Realizar Cálculo {Básico}
1.1. O usuário solicita ao sistema a operação para realizar o cálculo tarifário;
1.2. O sistema retorna para o usuário os meses disponíveis para a realização
do cálculo tarifário;
1.3. O usuário seleciona um mês;
1.4. O usuário solicita a execução do cálculo;
1.5. O sistema realiza o cálculo;
1.6. O sistema mostra os resultados ao usuário e manda a mensagem (Cálculos
Realizados com Sucesso);
1.7. O usuário analisa o cálculo e pode solicitar a gravação dos dados em base
e o caso de uso termina.
2. Gerar Planilha {Alternativo}
2.1. Após o sistema exibir os resultados do cálculo o usuário solicita a
exportação dos dados para uma planilha;
2.2. O sistema exibe uma tela para que o usuário escolha onde salvar o
arquivo;
2.3. O usuário seleciona o nome do arquivo e o local para salvar;
2.4. O arquivo é salvo e o sistema retorna a mensagem (Arquivo exportado
com sucesso) e o caso de uso termina.
3. Fluxo de Erro {Exceção} – Não existem dados de importação
3.1. O sistema informa que não existem dados de importação para que o
cálculo seja executado e volta ao fluxo básico.
60
3.2.3.7 Comparar com Cálculo Anterior
É uma operação que qualquer nível de usuário pode realizar.
1. Comparar com Cálculo Anterior {Básico}
1.1. Após realizar um cálculo tarifário, o usuário solicita ao sistema a exibição
dos resultados de cálculos que foram realizados anteriormente e estão
assim gravados na base de dados;
1.2. O sistema mostra as datas dos cálculos disponíveis para fazer a consulta;
1.3. O usuário seleciona uma data;
1.4. O sistema exibe os resultados do cálculo selecionado, bem como uma tela
mostrando as diferenças, em percentual, entre os valores que foram
calculados e os valores selecionados para comparação e o caso de uso
termina;
2. Fluxo de Erro {Exceção} - Não existem resultados de cálculo para
comparação
2.1. O sistema informa que não existem dados para realizar a comparação,
volta ao cenário básico e o caso de uso termina.
61
3.2.3.8 Consultar Resultados de Cálculo
Figura 14 - Protótipo da tela de consultas a séries históricas de resultados de cálculo
Essa tela permite ao usuário realizar consultas às series históricas de cálculos; consiste
em uma operação que qualquer nível de usuário pode realizar (Figura 14).
Na aba “Séries” é onde são feitas consultas à cálculos gerados e gravados
anteriormente.
No combo com as datas, o usuário seleciona um mês de referência para que os
respectivos resultados sejam exibidos no grid de dados abaixo.
O botão “Exportar Resultados” exporta o resultado para um arquivo de planilha; o
botão “Editar CT Aprovado” permite ao usuário editar o valor do coeficiente tarifário
aprovado; e o botão “Gerar relatório” realiza a geração de relatório com os resultados de
custos e do coeficiente tarifário.
Na aba gráficos é feita a geração de gráficos.
1. Consultar cálculos anteriores. {Básico}
1.1. O usuário solicita ao sistema realizar consulta às series históricas de
cálculos;
62
1.2. O sistema mostra ao usuário as datas disponíveis relativas aos cálculos
gravados;
1.3. O usuário seleciona uma data;
1.4. O sistema mostra na tela os valores resultantes do cálculo e o caso de uso
termina.
2. Exportar dados para planilha {Alternativo}
2.1. Após o sistema exibir os resultados de uma consulta na tela, o usuário
solicita exportá-los para uma planilha;
2.2. O sistema mostra uma tela solicitando ao usuário que ele escolha o nome
do arquivo e um local para salvá-lo;
2.3. O usuário escolhe o nome do arquivo e local e solicita a exportação;
2.4. O sistema exporta para um arquivo .xlsx e manda a mensagem(Arquivo
Exportado com Sucesso) e o caso de uso termina.
3. Gerar relatório {Alternativo}
3.1. Após o sistema exibir os resultados de uma consulta na tela, o usuário
solicita a geração de um relatório com os mesmos;
3.2. O sistema retorna para o usuário um relatório demonstrando os principais
resultados do cálculo tarifário e o caso de uso termina.
4. Fluxo de Erro {Exceção} – Não existem resultados de cálculo
4.1. O sistema informa ao usuário que não existem dados para serem
consultados e o caso de uso termina.
63
3.2.3.9 Gerar Gráficos
Figura 15 - Protótipo da Tela de Geração de Gráficos
A tela ilustrada na Figura 15 permite a geração de gráficos, separados por grupos de
linhas em que o usuário seleciona um grupo de linha, um valor específico a ser mostrado e a
periodicidade, para acompanhar a evolução do valor. É uma operação que qualquer nível de
usuário pode realizar.
No combo de seleção de custo é selecionado o valor que o usuário deseja plotar no
gráfico. Os valores podem ser: Custo fixo, Custo Variável, Custo por Quilômetro, Coeficiente
Tarifário, entre outros.
No grid de dados a esquerda é selecionado o grupo de linhas que quer-se exibir um
valor de custo selecionado.
O botão “imprimir” solicita a impressão do gráfico em impressora, enquanto o botão
“Salvar imagem como” exporta o gráfico para um arquivo de imagem.
Os radio box permitem selecionar o período da amostragem e o botão “Editar Máximo e
Mínimo” permite editar o tamanho dos eixos no gráfico.
64
1. Gerar Gráficos {Básico}
1.1. O usuário solicita ao sistema a geração de gráficos;
1.2. O sistema mostra ao usuário uma listagem com os grupos de linhas, uma
listagem com os valores disponíveis para plotar no gráfico e a
periodicidade;
1.3. O usuário escolhe os dados desejados e executa a plotagem do gráfico;
1.4. O sistema mostra ao usuário o gráfico com a evolução do valor e o caso
de uso termina;
2. Fluxo de Erro – Não existem dados para plotar no gráfico
2.1. O sistema informa que não existem resultados de cálculo para plotar no
gráfico, volta ao fluxo básico e o caso de uso termina.
3.2.3.10 Consultar Dados operacionais
1. Visualizar Dados de Transportadoras e Suas Linhas {Básico}
Na aba de Transportadoras e Linhas, o usuário, ao selecionar uma transportadora do grid
de dados superior, suas respectivas linhas são exibidas na Figura 16.
Figura 16 – Informações Cadastrais – Transportadoras e Linhas
65
1.1. O usuário solicita ao sistema visualizar os dados de transportadoras e suas
linhas;
1.2. O sistema mostra na tela os dados com as empresas transportadoras;
1.3. O usuário clica em uma empresa;
1.4. O sistema mostra ao usuário as linhas em que a empresa selecionada
opera e o caso de uso termina.
2. Visualizar Dados de Linhas e Suas Seções {Básico}
Na aba de Linhas e Seções, o usuário, ao selecionar uma linha do grid de
dados superior, suas respectivas seções são exibidas na Figura 17.
Figura 17 – Informações - aba Linhas e Seções
66
2.1. O usuário solicita ao sistema visualizar os dados de linhas e suas seções;
2.2. O sistema mostra na tela as linhas disponíveis;
2.3. O usuário seleciona uma linha;
2.4. O sistema mostra ao usuário as seções que compõem a linha selecionada e
o caso de uso termina;
Na aba de grupos são listados todos os grupos de linhas (Figura 18).
Figura 18 - Informações - aba Grupos
3. Visualizar Dados de Importação {Básico}
Na aba de dados de desempenho, o usuário, ao selecionar uma data de importação no
combo de datas e um grupo de linhas no grid de grupos à esquerda, consegue visualizar os
dados importados referente à data e ao grupo (Figura 19).
67
Figura 19 - Informações - Aba Dados de Desempenho de Grupos
3.1. O usuário solicita ao sistema visualizar os dados de importação;
3.2. O sistema mostra na tela os grupos de linhas;
3.3. O usuário seleciona um grupo de linha e um mês de referência;
3.4. O sistema mostra ao usuário os dados de importação referente ao grupo e
mês escolhidos e o caso de uso termina;
3.3 Projeto
Nesta seção do trabalho são especificados os modelos do bando de dados e do sistema.
3.3.1 Modelagem
Nesta seção serão mostrados e comentados os modelos da base de dados do sistema e o
modelo do sistema, retratando seus módulos.
3.3.1.1 Modelagem da Base de Dados
Aqui são mostrados os modelos de dados para a persistência dos dados de entrada, dos
resultados de cálculos, para o desenho de linhas e para controle de acessos.
68
3.3.1.1.1 Modelo do Armazenamento dos Dados Importados
O modelo de importação de dados representa como os dados, após a organização
proposta, foram organizados na base de dados do sistema (Figura 20).
Figura 20 - Modelo de Dados do Módulo de Importação de Dados
As tabelas importfrota, importlinhas e importtransportadoras armazenam os dados
que são importados pelo sistema. É a partir desses dados que os cálculos são realizados.
Além disso, as tabelas possuem uma chave estrangeira para a tabela chamada
dadosdeimportacao, essa tabela é quem define a referência temporal dos dados importados
para que seja possível selecionar apenas o conjunto de dados referentes a um mês específico.
A chave estrangeira chamada idgrupo, nas três tabelas de dados, faz referência para a
tabela chamada grupos. Isso é útil para que mantenha-se uma referência espacial, já que
precisa-se dos dados selecionados para um determinado grupo de linhas também.
A organização proposta é útil para resolver o problema dos cálculos porque ela facilita
a seleção dos dados necessários, já que o cálculo tarifário é feito mensalmente e o coeficiente
tarifário é definido para cada grupo de linhas, individualmente.
69
3.3.1.1.2 Modelo do Armazenamento dos Resultados de Cálculo
O modelo de armazenamento dos resultados de cálculo representa como os dados
gerados pelo cálculo tarifário são armazenados na base de dados do sistema, como mostra a
Figura 21. Os campos com os valores não estão sendo mostrados na tabela serieHistoricas
porque são numerosos e não caberiam ali de forma que não estragasse o layout da figura.
Figura 21 - Modelo de dados do módulo de series históricas dos resultados de cálculo
A tabela seriehistorica é a tabela que armazena os valores gerados pelo cálculo tarifário.
Assim como as tabelas que armazenam os dados importados, ela possui referência espacial e
temporal, através das chaves estrangeiras idgrupo e idimportacao , referenciando também as
tabelas grupos e dadosdeimportacao respectivamente.
A organização proposta permite que os dados em questão sejam facilmente consultados
para um determinado mês e para um determinado grupo de linhas, facilitando a geração de
70
relatório e de gráficos, possibilitando que estudos sejam feitos a partir da observação do
comportamento desses valores ao longo do tempo.
3.3.1.1.3 Modelo dos Dados para Desenho de Linha
Simplificadamente, o modelo de linhas é apresentado na Figura 22.
O modelo mostra que para uma determinada linha tem-se um conjunto de links, que
serão usados para realizar o desenho de uma linha selecionada.
Na tabela odlink (Figura 22), responsável pelos dados geográficos, há uma chave
estrangeira que aponta para a tabela layerlinhas, responsável pelos dados informativos da
linha. Essa é uma das maneiras através da qual se pode unir dados geográficos com seus
dados de atributos.
Figura 22 - Modelo de dados para o desenho de linha
3.3.1.1.4 Modelo dos Dados para Controle de Usuário
As tabelas da Figura 23 são utilizadas para implementar o controle de acesso aos
usuários. A tabela usuario possui as informações de todos os usuários do sistema, incluindo o
nível de usuário , definido pela chave chamada nivel.
A tabela relgrupomenu é quem define os ids das actions do sistema que um tipo de
usuário está habilitado a utilizar. Cada registro dessa tabela é composto pelo id da action
(idmenu na tabela) e pelo id do nível do usuário. A presença desse registro na tabela significa
que a action em questão está habilitada para o nível de usuário em questão. Com o id das
actions na tabela relgrupomenu buscam-se na tabela menus todos os nomes das actions
71
disponíveis para um usuário, essa coleção de nomes é passada para o sistema, que executa a
habilitação/desabilitação de funcionalidades.
A princípio estes dados são estáticos, com as todas actions definidas para todos os
níveis de usuários. Se for necessária a alteração de alguma regra, basta simplesmente ir à
tabela relgrupomenu e editar as entradas necessárias.
Figura 23 - Modelo de dados de acesso aos usuários
3.3.1.2 Modelagem do Sistema
Para a modelagem do sistema foi utilizado diagrama de pacotes devido ao fato de
haverem muitas classes envolvidas no sistema, tornando inviável a especificação e
relacionamentos entre todas as classes envolvidas. Portanto podemos dividir o sistema em 5
módulos., conforme Figura 24.
72
Figura 24 – Modelo Do Sistema
O módulo Biblioteca GIS, como o nome diz, possui as bibliotecas necessárias para a
implementação do módulo GIS do sistema. Durante o trabalho não foram desenvolvidas
nenhuma funcionalidade do tipo, pois as existentes foram necessárias para os propósitos do
trabalho.
O módulo DataModule é responsável pela conexão com o banco de dados. A classe
utilizada chama-se T_GIS e ela que, depois de configurada, foi utilizada para realizar os
acessos ao banco.
73
No módulo queries, estão as queries utilizadas pelo sistema em suas operações.
Em dialogs, estão as telas do sistema. Entre elas destacam-se TfrmCalculoTarifario,
que é a tela onde é realizado o cálculo, TfrmImportacaoEmMassa, que é a tela utilizada para
importar os dados necessários ao cálculo, TfrmSerieHistorica, que é utilizada para consultas
aos reultados de cálculo, geração de relatórios e gráficos e TfrmDesempenho que mostra os
dados de transportadoras, suas linhas, seções e os dados importados relativos aos grupos.
No módulo controls encontram-se as classes que implementam as funcionalidades do
sistema. A classe TooCalculadorDeCoeficientes, a cada instancia criada, pela classe
TgerenciadorDeGrupos, representa o cálculo de um grupo de linhas. Nela encontram-se todas
as variáveis necessárias ao cálculo, que são obtidas através de operações junto a base de
dados, consultando os respectivos dados de importação. A classe TDesenhadorDeLinhas é a
responsável pela funcionalidade de destacar uma linha selecionada pelo usuário. As classes do
tipo TDataMatrix são responsáveis por armazenar em uma estrutura de dados em memória os
dados vindos dos arquivos de importação, exibição dos dados no grid de dados e é ela quem
também realiza a gravação desses dados em banco.
3.3.1.2.1 Arquitetura do Sistema
A Figura 25 ilustra como é a arquitetura do sistema com suas interfaces, controles e as
interações entre si.
74
Figura 25 – Arquitetura do Sistema
3.4 Construção
Nesta seção serão mostrados a metodologia para a codificação do sistema e resultados
dessa codificação, como a interface resultante, como foi abordado o problema da criação do
modelo dos dados de importação e como foi feita a homologação dos resultados do cálculo.
3.4.1 Codificação
Nesta seção é mostrado como foi definida a metodologia para a codificação da
importação dos dados, autenticação dos usuários, cálculos, consultas e do módulo GIS.
3.4.1.1 Importação dos Dados de Entrada
Esta funcionalidade é responsável por importar os dados de insumos necessários ao
cálculo tarifário, através de arquivos, em formato CSV, utilizando um padrão definido.
75
A partir dos arquivos, são feitas verificações se os mesmos estão de acordo com o
padrão, verificando os cabeçalhos, se existem valores negativos e se há integridade
correlacional entre os arquivos, por exemplo, se no arquivo contendo os dados de linhas, faz
uma referência a uma linha que é executada por uma empresa e essa empresa não está
presente no arquivo que contem os dados de empresas, então o sistema cancela a importação
e avisa sobre o erro.
Depois de verificados, os dados são inseridos em um banco de dados relacional.
Abaixo segue um exemplo de uma consulta à base que busca os dados de uma
transportadora para em um dado mês de referência.
SQLGetdadostransportadorasporgrupo = 'SELECT t.nome, '+
'impt.precocombustivel, '+
'impt.precopneu, '+
'impt.precocamara, '+
'impt.precoprotetor, '+
'impt.precorecapagem, '+
'impt.beneficios, '+
'impt.remuneracaodiretoria, '+
'impt.receitaextratarifaria, '+
'impt.salariototalurbanomotorista, '+
'impt.salariototalurbanocobrador, '+
'impt.salariototalurbanofiscal, '+
'impt.salariototalrodoviariomotorista, '+
'impt.salariototalrodoviariocobrador, '+
'impt.salariototalrodoviariofiscal, '+
'impt.qtdefuncurbmotorista, '+
'impt.qtdefuncurbcobrador,'+
'impt.qtdefuncurbfiscal, '+
'impt.qtdefuncrodmotorista, '+
'impt.qtdefuncrodcobrador, '+
'impt.qtdefuncrodfiscal '+
'FROM (SELECT DISTINCT i.idtransportadora FROM importlinhas i WHERE '+
' i.idimportacao = :idimportacao AND i.idgrupo = :idgrupo) q '+
' JOIN transportadoras t ON t.idtransportadora = q.idtransportadora '+
' JOIN importtransportadoras impt ON impt.idtransportadora = '+
' q.idtransportadora; ';
3.4.1.1.1 Organização dos dados de entrada
Um dos grandes desafios deste trabalho foi o de organizar uma gama de dados de
entrada, necessários para realizar o cálculo tarifário, de uma maneira simples, coesa e que
facilitasse o desenrolar das outras etapas no desenvolvimento do sistema.
O princípio básico foi criar arquivos em formato ‘.csv’, que foram usados para
alimentar a base de dados através do sistema, que devem ser levantados mensalmente.
76
Os arquivos gerados devem reunir dados que façam parte de um mesmo grupo de
dados, ou seja, num mesmo arquivo deve conter somente dados referentes à frota de ônibus,
outro arquivo com dados referentes às linhas e outro referente às empresas transportadoras.
Os dados devem ter, em base, referência temporal, já que o cálculo do coeficiente
tarifário é feito mensalmente, deve-se usar somente dados de entradas referentes ao mês do
cálculo em questão.
Deveriam ter também referência espacial, ou seja, dados de frota e de linhas deveriam
ter uma referência apontando para qual grupo de linhas eles pertenciam. Dados de
transportadoras não precisam ter esse tipo de referência, já que empresas não estão atreladas a
nenhum grupo de linhas, podendo inclusive atuar em mais de um grupo.
A partir dessas premissas a proposta foi de separar os dados em ter arquivos diferentes:
frota, linhas e empresas.
Os arquivos foram montados com base do modelo de dados proposto e mostrado na
Figura 20.
3.4.1.1.1.1 Arquivo de Importação de Frota
O arquivo de frota contém os registros, veículo a veículo, necessários para a realização
do cálculo, que são:
ID da Transportadora: número da transportadora a qual o veículo pertence.
ID do Grupo: número do grupo ao qual o veículo pertence.
Placa: código alfa numérico da placa do ônibus.
Idade: idade do veículo, em anos.
Preço: valor pago pelo veículo novo, em reais.
IPVA: valor do IPVA pago anualmente pelo veículo, em reais.
DPVAT: valor do DPVAT pago anualmente pelo veículo, em reais.
Chassi: número do chassi do veículo.
Quilometragem Total Mensal Rodada: quilometragem que o veículo
percorreu em um mês.
Litros de Combustível Consumido: combustível consumido pelo veículo
em um mês.
77
ID da Categoria do Veículo: a categoria do veículo é dividida de acordo
com seu peso e pode ser micro, leve, pesado ou articulado.
Quantidade de Pneus: quantidade de pneus utilizada em um veículo.
3.4.1.1.1.2 Arquivo de Importação de Linhas
Este arquivo agrupa dados referentes aos dados de desempenho das linhas, que são:
ID da Transportadora: número da transportadora a qual a linha pertence.
ID do Grupo: número do grupo ao qual a linha pertence.
ID da Linha: código identificador da linha de acordo com o DETER.
Quantidade de Viagens realizada na linha: número viagens que foram
realizadas na linha em um mês.
Quilometragem Percorrida na Linha: quantidade, em quilômetros, da
distância percorrida por todos os veículos que percorreram a linha.
Demanda Equivalente: representa a quantidade de passageiros do tipo
comum que se locomoveram em veículos por essa linha.
Tarifa da Linha: valor pago, em reais, para o passageiro percorrer a
linha.
3.4.1.1.1.3 Arquivo de Importação de Transportadoras
Este arquivo trata apenas dos dados referentes às transportadoras, são eles:
ID da Transportadora: código que identifica a transportadora, de
acordo com o DETER;
Preço do Combustível: valor do combustível, em reais, pago pela
transportadora;
Preço do Pneu: valor do pneu, em reais, pago pela transportadora;
Preço da Câmara: valor da câmara, em reais, pago pela transportadora;
Preço de Protetor da Roda: valor do protetor, em reais, pago pela
transportadora;
Preço da Recapagem: valor da recapagem, em reais, pago pela
transportadora;
Benefícios: valor total pago pela transporta, em reais, com benefícios
para seus funcionários;
78
Remuneração da Diretoria: valor total pago pela transportadora, em
reais, com a remuneração de funcionários da diretoria;
Receita Extra tarifária: valor arrecadado, em reais, pela
transportadora além do arrecadado com pagamento de tarifa;
Total Gasto com Salário de Motoristas no Serviço Urbano: total
gasto, em reais, com pagamento de salário dos motoristas do serviço
urbano;
Total Gasto com Salário de Cobradores no Serviço Urbano: total
gasto, em reais, com pagamento de salário dos cobradores do serviço
urbano;
Total Gasto com Salário de Fiscais no Serviço Urbano: total gasto,
em reais, com pagamento de salário dos fiscais do serviço urbano;
Total Gasto com Salário de Motoristas no Serviço Rodoviário: total
gasto, em reais, com pagamento de salário dos motoristas do serviço
rodoviário;
Total Gasto com Salário de Cobradores no Serviço Rodoviário: total
gasto, em reais, com pagamento de salário dos cobradores do serviço
rodoviário;
Total Gasto com Salário de Fiscais no Serviço Rodoviário: total
gasto, em reais, com pagamento de salário dos fiscais do serviço
rodoviário;
Quantidade de Motoristas no Serviço Urbano: número total de
funcionários motoristas que atuam no serviço urbano;
Quantidade de Cobradores no Serviço Urbano: número total de
funcionários cobradores que atuam no serviço urbano;
Quantidade de Fiscais no Serviço Urbano: número total de
funcionários fiscais que atuam no serviço urbano;
Quantidade de Motoristas no Serviço Rodoviário: número total de
funcionários motoristas que atuam no serviço rodoviário;
Quantidade de Cobradores no Serviço Rodoviário: número total de
funcionários cobradores que atuam no serviço rodoviário;
Quantidade de Fiscais no Serviço Rodoviário: número total de
funcionários fiscais que atuam no serviço rodoviário;
79
3.4.1.2 Login e Controle de Acesso de Usuários
O cadastro de usuários pode ser feito somente pelo administrador do sistema. Sua
operação consiste em definir o nome, login, senha e o nível de acesso do usuário, este último
mostrado na Figura 26.
Figura 26 – Tela de Cadastro de Usuários
O login é feito de maneira trivial, em que o usuário entra com seu nome de usuário e
senha, estes dados são buscados em base e se achados o usuário acesso o sistema
normalmente,caso não contrário ele não consegue o acesso.
80
Figura 27 - Tela de Login
Ter diferentes níveis de acesso é um requisito funcional que foi solicitado pelo DETER.
Após um estudo junto às pessoas competentes, definiram-se quatro tipos de acessos:
administrador, sig, analista e comum.
Administrador: É o usuário com acesso total ao sistema. Ele pode cadastrar
usuários, importar dados, realizar cálculos tarifários, gravar resultados de
cálculo e todas as demais operações que envolvem, especialmente, escritas na
base de dados do sistema.
SIG: É um usuário especial porque sua existência permite realizar operações
relativas ao sistema de informações geográficas do sistema, como, exemplo,
editar dados alfanuméricos e geográficos contidos no sistema.
Analista: Este usuário possui direitos de acesso muito parecidos com os do
usuário administrador, com exceção para a operação de importação dos dados e
cadastro e edição de usuários.
Comum: É o usuário que tem menos direitos de acesso do sistema, em que ele
não pode realizar nenhuma operação de escrita no sistema. Ele pode realizar
cálculos, gerar gráficos, consultar cálculos já feitos, mas não pode salvá-los na
81
base de dados. Pode-se dizer que é um usuário que é útil em nível de simulação
ou demonstração do sistema para outras pessoas.
A Figura 288 ilustra uma tabela demonstrando os direitos de acesso às funcionalidades
do sistema para cada tipo de usuário.
Figura 28 - Representação da tabela com definição dos níveis de acesso
No sistema, os botões possuem, atreladas a eles, as actions. Uma action é o registro de
uma chamada de um método, função, procedimento, etc.
Por exemplo, hipoteticamente há uma função chamada “adicionarUsuario” e atrela-se a
essa função a action chamada ac_adicionarUsuario e atrela-se essa action a um botão, o clic
neste botão faz a chamada da action ac_AdicionarUsuario, que chama a função
adicionarUsuario.
Funcionalidade Administrador Analista Comum SIG
Cadastro de Usuários X — — —
Importação de Dados X — — —
Cálculo Tarifário X X X —
Salvar Cálculo Tarifário X X — —
Consultar Dados de Cálculo e Importação X X X —
Geração de Relatórios e Gráficos X X X —
Gerenciamento dos Dados Geográficos — — — X
82
Na base do sistema há uma tabela com a listagem de todas as actions e outra com os
tipos de usuários do sistema. Com isso, temos uma terceira tabela que relaciona as actions e
os tipos de usuário.
Quando um usuário abre o sistema, o mesmo busca da base todas as actions disponíveis
ao respectivo nível de acesso do usuário. Com a listagem das actions o sistema consegue
definir, na abertura das telas, quais botões estão disponíveis para aquele usuário, e assim é
implementada a política de acesso.
De acrodo com a Figura 29, a funcionalidade de importação de dados está disponível
para o usuário administrador, enquanto na Figura 3030 a opção de importação de dados não
existe.
A consulta à base que seleciona as funcionalidades disponíveis para um usuário é:
SQLMENUS = 'SELECT M.* FROM PERMISSAOGRUPOMENU P '+
'INNER JOIN RELGRUPOMENU R ON P.IDGRUPOMENU = R.IDGRUPOMENU '+
'INNER JOIN MENUS M ON R.IDMENU = M.IDMENU '+
'WHERE R.IDGRUPOMENU = %D AND P.IDGRUPOUSUARIO =%D';
Figura 29 - Tela com nível de acesso de administrador
83
Figura 30 - Tela com nível de acesso de analista
3.4.1.2.1 Administrador
É o usuário com acesso total ao sistema. Ele pode cadastrar usuários, importar dados,
realizar cálculos tarifários, gravar resultados de cálculo e todas as demais operações que
envolvem, especialmente, escritas na base de dados do sistema.
3.4.1.2.2 SIG
É um usuário especial porque sua existência permite realizar operações relativas ao
sistema de informações geográficas do sistema, como, exemplo, editar dados alfanuméricos e
geográficos contidos no sistema.
3.4.1.2.3 Analista
Este usuário possui direitos de acesso muito parecidos com os do usuário
administrador, com exceção para a operação de importação dos dados e cadastro e edição de
usuários.
3.4.1.2.4 Comum
É o usuário que tem menos direitos de acesso do sistema, em que ele não pode realizar
nenhuma operação de escrita no sistema. Ele pode realizar cálculos, gerar gráficos, consultar
cálculos já feitos, mas não pode salvá-los na base de dados. Pode-se dizer que é um usuário
que é útil em nível de simulação ou demonstração do sistema para outras pessoas.
84
3.4.1.3 Cálculos
O objetivo desta seção é mostrar como funciona a metodologia do cálculo, tomando
como objeto de análise o cálculo do preço do combustível em um determinado grupo de
linhas.
O modelo da organização de dados possibilitou o cálculo desse preço através de uma
simples consulta a base de dados.
O cálculo do preço de combustível é dado pelo manual da seguinte forma:
Onde:
PrCj,s: Preço médio do combustível do grupo j do serviço s (R$/litro);
PrCor: Preço médio do combustível da operadora r (R$/litro);
QPr,j,s: Quilometragem percorrida pela operadora r no grupo j do serviço s
(km/mês).
A consulta que reflete a fórmula é:
'Select sum(q1.numerador) / sum(q1.denominador) as
result from (select l.idtransportadora, sum(t.precocombustivel *
l.kmpercorrida) as numerador, sum(l.kmpercorrida) as
denominador
from importlinhas l, importtransportadoras t
where l.idtransportadora = t.idtransportadora and
l.idgrupo in (%:0s) and t.idimportacao = idimportacao
group by l.idtransportadora) q1
Conforme a consulta, percebe-se que o valor “idimportacao” representa o mês que o
usuário escolheu para selecionar os dados para o cálculo. Este campo está descrito na
modelagem dos dados, bem como toda a estrutura envolvida na consulta.
r
sjr
r
sjrr
sj ,QP
QPPrCo
rCP,,
,,
85
Então dado um mês de referência, consegue-se obter os dados de transportadoras e
linhas, em que as linhas devem pertencer a um determinado grupo de linhas, identificado pelo
valor “l.idgrupo”
De acordo com a consulta, “q1” retorna o somatório do preço do combustível pago por
uma operadora multiplicado pela quilometragem rodada dessa operadora e ao resultado é
atribuído o nome “numerador” por ser o numerador da divisão. O numerador é definido pelo
somatório de todas as quilometragens percorridas por todas as empresas do grupo no mês, e à
esse valor é atribuído o nome “denominador”. Finalizando, o resultado dessa divisão resulta
no valor do preço do combustível do grupo no mês.
A essência dessa metodologia é utilizada para o cálculo das informações financeiras e
operacionais que, conforme o modelo de cálculo já mencionado, são utilizadas para obter os
custos variáveis e fixos. Depois que essas informações são calculadas, os outros valores são
obtidos facilmente por operações fundamentais de somas, subtrações, multiplicações e
divisões e o coeficiente tarifário é obtido.
Concluindo, a fórmula apresentada justifica o porque de organizarmos os dados da
maneira que foi feita e como essa estratégia facilita o cálculo.
Da Figura 3131 até a Figura 3635, mostra-se como o sistema vai realizando os
cálculos desde a obtenção dos custos até a obtenção do coeficiente tarifário. Os diagramas a
seguir são diagramas de hierarquia, fornecidos pela ferramenta Microsoft Word 2010.
86
Figura 31 - Cálculo do Coeficiente Tarifário
Figura 32 - Cálculo do Custo Variável
Coeficiente Tarifário
Coeficiente dos Custos
Custo/km
Custo Variável Total
Custo Fixo Total
Ocupação Equivalente
Tributos
Custo Variável Total
Custo de Combustível
Custo de Lubrificantes
Custo de Rodagem
Custo de Peças e Acessórios
87
Figura 33 - Cálculo do Custo Fixo
Figura 34 Cálculo das Despesas Fixas
Custo FixoTotal
Frota Operante Frota Total Despesa Fixa
de Pessoal Quilometragem Percorrida
Despesa Fixa Exceto de
Pessoal
Despesa Fixa de Pessoal
Custo de Pessoal de Operação
Custo de Pessoal de
Manutenção
Custo de Pessoal de
Administração
Custo com Benefícios
Custo de Diretoria
88
Figura 35 - Cálculo das Despesas Fixas Exceto de Pessoal
Figura 36 - Tela de Execução do Cálculo e Exibição de Resultados
Despesa Fixa Exceto de Pessoal
Depreciação e Remuneração de
Veículos
Depreciação e Remuneração de
Máquinas e Equipamenteos
Despesas Gerais de Administração
Impostos Seguro
Obrigatório Custo da Tarifa de
Utilização Receita Extra
Tarifária
89
3.4.1.4 Consultas, Geração de Relatórios e Gráficos
A consulta aos dados de resultados de cálculos tarifário gravados, geração de relatórios
e gráficos foi concebida através de uma interface simples, permitindo ao usuário a consulta a
esses dados selecionando no combo, localizado na parte superior da tela da Figura 3737, um
mês de referência e automaticamente os dados requeridos são exibidos na grade de dados.
A Figura 3737 mostra como o sistema concebe a consulta a resultados de cálculo que
foram aprovados e gravados na base de dados do sistema.
Figura 37 - Tela de exibição de consultas a séries históricas de resultados de cálculo
A Figura 3838 ilustra a tela de geração de relatórios individuais, para cada grupo de
linhas, contendo o resumo dos custos e o resultado do coeficiente tarifário.
90
Figura 38 - Tela de relatórios gerados
A Figura 39 traz um gráfico mostrando a variação do cálculo do coeficiente tarifário, ao
longo de cinco meses, para o grupo de linhas de Florianópolis.
91
Figura 39 - Tela de geração de gráficos
Um exemplo de uma consulta que busca os resultados de cálculos de um grupo para um
determinado mês de referência seria:
92
SQLGetDadosSerioHistorica = 'select '+
'nomegrupo as NomeGrupo, '+
'ctcalculado as CoeficienteTarifario, '+
'ctaprovado as CoeficienteTarifarioAprovado , '+
'custovariavel as CustosVariaveis, '+
'custofixo as CustosFixos, '+
'impostos as DespesasComImpostos, '+
'custoporkm as CustoPorKm, '+
'depreciacaofrota as DepreciacaodeFrota, '+
'depreciacaomaquinasequipamentos as DepMaquinasEquipamentos, '+
'remuneracaofrota as RemuneracaoDeFrota, '+
'remuneracaomaquinasequipamentos as RemMaquinasEquipamentos, '+
'remuneracaoalmoxarifado as RemuneracaoDeAlmoxarifado, '+
'despesapessoaloperacao as DespesasPessoalOperacao, '+
'despesapessoalmanutencao as DespesasPessoalManutencao, '+
'despesapessoaladministracao as DespesasPessoalAdministracao, '+
'despesabeneficios as DespesasComBeneficios, '+
'despesadiretoria as DespesasComDiretoria, '+
'tarifautilizacao as TarifaDeUtilizacao, '+
'custocombustivel as CustoCombustivel, '+
'custolubrificantes as CustoLubrificantes, '+
'custorodagem as CustoRodagem, '+
'custoacessorios as CustoAcessorios, '+
'despesadeadministracao as DespesasDeAdministracao '+
' from seriehistorica s, dadosdeimportacao i '+
' where s.idimportacao = :idimportacao '+
' and i.id = s.idimportacao '+
'order by idgrupo';
3.4.1.5 Módulo GIS
Este módulo é o responsável por exibir as linhas de ônibus intermunicipais do estado,
bem como suas informações como, número da linha e empresa que opera nela. É responsável
também por executar a funcionalidade de “desenhar” uma linha, ou seja, dada uma linha
selecionada pelo usuário, o sistema destaca no mapa essa linha com uma cor diferente,
mostrando seu início, fim e por quais municípios ela passa. Esta funcionalidade tem o fim de
facilitar o entendimento do itinerário da linha, bem como ilustrar a que grupo de linhas ela
pertence.
3.4.1.5.1 Codificação das Linhas
Para que fosse possível realizar a construção dos sistema GIS com as linhas de ônibus,
precisou-se primeiro codificar geograficamente as linhas de ônibus do estado.
93
Como o DETER não possuía os dados geográficos, a equipe do Laboratório de
Transportes realizou um estudo, anterior ao desenvolvimento deste trabalho, para codificar as
linhas, esse estudo teve 3 etapas.
Na primeira etapa, o objetivo era o de montar as linhas com a penas os pontos de
origem e destino, que no primeiro momento eram as apenas cidades, e assim realizar um
algoritmo de alocação nessas linhas. Porém com isso não era possível garantir que os
caminhos gerados era os corretos, pois dependendo do parâmetro usado para a realização do
algoritmo (tempo, distancia, custo, etc) outros caminhos poderiam ser formados.
A segunda etapa foi executada para resolver o problema gerado pela primeira. Para
isso foram levantados , junto ao DETER, dados de todas as cidades que formavam pontos de
seção intermediários de uma linha, ou seja, os pontos de seção que formavam as seções das
linhas. Isso possibilitou a segmentação das linhas e assim definir o caminho correto pelo qual
elas passavam. E assim foi feita uma nova alocação das linhas, agora com uma precisão mais
apurada.
A terceira etapa visou um refinamento maior das informações. Para isso foram
levantados, também junto ao DETER, dados também de localidades pelas quais as linhas
passaram. Uma localidade pode ser um bar, mercado, cruzamento, etc. Esses dados de
localidades foram cruzados com dados de localidades fornecidos pelo IBGE. Essas
localidades serviram também como pontos de seção, formadores de seções de linhas. Uma
nova alocação foi feita, agora com uma precisão maior, já que foram utilizados também como
pontos de seção , localidades e assim foi o estudo realizado para a codificação das
informações das linhas.
3.4.1.5.2 Montagem do Ambiente GIS para as Linhas
O primeiro passo para codificarmos as linhas do estado foi coletar os dados de todas as
linhas dele bem como os munícipios aos quais elas passam. Esses dados nos foram fornecidos
pelo próprio DETER.
Os dados vieram em um arquivo de planilha e nele contem todos os pontos de seção de
cada linha.
94
Este arquivo de planilha é um arquivo que contém os dados de todas as seções que
compõem as linhas de ônibus do estado. No arquivo, cada linha possui o número que
identifica a linha de ônibus, seu ponto de seção de origem e de destino. O objetivo de utilizar
tal arquivo é o de codificar todas as linhas de ônibus através da codificação de suas
respectivas seções e estas são compostas pelos pontos de seção contidos no arquivo.
A Figura 4040 mostra como se apresentam os dados dos pontos de seção que formam a
linha 16-0. Por exemplo, na primeira linha do arquivo temos as seções “BALN CAMBORIU”
como origem, que se liga à “ITAJAI” como destino, formando a seção de número 1. Assim
todos os pontos de seção ligam-se, conforme o arquivo mostra, formando seções e essas
seções unidas formam uma linha.
Figura 40 - Seções da Linha 16-0, que liga Balneário Camboriú até Joinville
O próximo passo é executar um algoritmo de custo mínimo para ligartodos os pontos de
seção. O algoritmo foi executado pelas bibliotecas de outro sistema GIS, utilizado como
apoio.
95
Para executar o algoritmo precisamos informar o domínio ao qual ele executará, ou seja,
precisamos informar todos os possíveis nós e arcos de um grafo, formando uma rede. Esse
conjunto de dados é formado pelos dados das camadas de cidades (Figura 42), e rodovias
(Figura 41), do estado. Com os dados do domínio e os dados de entrada definidos, o algoritmo
de custo é executado e o resultado dele é a geração dos links utilizados para ligar os pontos,
que ficam em uma tabela chamada “linkslogisticos” , as informações alfanuméricas dos links
ficam em uma tabela chamada “itenslogisticos”.
O resultado do algoritmo resulta em uma nova camada, composta pelas cidades do
estado e as rodovias que as ligam. Essa nova camada gera um arquivo chamada de “shape”.
Nele contem as informações das coordenadas, o id ao qual essa coordenada se relaciona com
seu respectivo dado alfanumérico, o tipo de geometria dessa coordenada (ponto, linha ou área)
e o atributo dessa coordenada (cor, espessura, etc.).
Depois os dados resultantes da execução do algoritmo, que estão nas tabelas citadas, são
importados às suas respectivas tabelas na base de dados do sistema em questão, assim como o
arquivo shape.
Figura 41 - Camada de rodovias
96
Figura 42 - Camada de cidades
Figura 43 - Camada com as linhas de ônibus montadas
97
3.4.1.5.3 Destaque de Linhas
Dentro do GIS, as linhas são formadas por componentes chamadas links. Um link é uma
entidade que representa objetos do tipo linha. Ele é composto por uma sequencia de vetores.
Um dos motivos de utilizar links é que podemos reaproveita-los para desenhar diferentes
linhas. Por exemplo, tem-se uma linha que vai de Florianópolis até Joinville e outra linha que
vai de Florianópolis até Balneário Camboriú. É notável que até Balneário as linhas podem
percorrer a mesma estrada até certo ponto. Então esse trecho em que elas se confundem acaba
referenciando aos mesmos links, evitando assim sobreposição de linhas e diminuindo a carga
de dados na base.
Então, quando se registra uma linha na base de dados, são feitas referências aos links
que são necessários para construir essa linha. Para desenhar uma linha, basta fazer um
consulta a base buscando todos os links que compõe a linha em questão. Um atributo de
coloração é passada para os links e a linha aparece destacada no mapa, juntamente com uma
aproximação (zoom) da linha. Os links e os atributos deles são passados como parâmetros ao
método da biblioteca GIS responsável por aplicar atributos à objetos geográficos do tipo
linha, nesse caso um atributo do tipo cor, aos links. A relação entre um objeto geográfico
(nesse caso um link) e atributos (a cor) é falada na seção 2.5.
Com isso pode-se dizer que ao selecionarmos uma linha no sistema, o id desta é
utilizado para buscar todos os links referenciados por ela e assim realizar o desenho e
coloração do mesmo.
O objetivo principal da funcionalidade de desenho de linhas era o de poder desenhar
somente as linhas consideradas rodoviárias, que são aquelas que ligam municípios
pertencentes a diferentes mesorregiões.
Porém conseguiu-se realizar o georreferenciamento de linhas consideradas urbanas, na
mesorregião de Florianópolis. Isso foi possível graças ao uso de um sistema GIS,
desenvolvido também pelo Laboratório de Transportes, de uso interno, que tem em sua base
de dados os dados dos pontos de seção que localizam-se na mesorregião de Florianópolis. As
coordenadas para essas linhas foram geradas e importamos seus dados gerados para dentro da
base de dados do sistema em questão.
98
Figura 44 - Tela de desenho de linhas
A imagem na Figura 44 mostra a linha número 110, que vai de Blumenau a Joinville, do
tipo Sede-Sede, com viajem realizada pela empresa Auto Viação Catarinense, sendo
desenhada no mapa do estado de Santa Catarina.
99
3.4.2 Homologação
Para realizar a homologação dos cálculos foi realizado um trabalho junto a um
engenheiro, do Laboratório de Transportes, especializado na área de cálculo tarifário. O
trabalho consistiu em realizar interações com o engenheiro em questão, verificando
individualmente cada processo de cálculo e o resultado obtido.
O critério utilizado para definir se um cálculo implementado estava correto é que se o
resultado obtido através da planilha do engenheiro fosse igual ao resultado obtido pelo
sistema em, no mínimo, quatro casas decimais após a vírgula o cálculo era considerado
correto. Vale salientar que os dois sistemas utilizaram a mesma fonte fictícia de dados.
A planilha utilizada pelo engenheiro é uma planilha que possui a mesma metodologia
de cálculo aprovada e utilizada pelo DETER.
Na Figura 4545 tem-se os resultados de cálculo em planilha, do grupo de
Florianópolis, e na Figura 4646 temos os resultados de cálculo, em formato de relatório,
utilizando os mesmos dados fictícios de entrada para o mesmo grupo de Florianópolis.
100
Figura 45 - Resultados de Cálculo Através da Planilha
101
Figura 46 - Relatório com resultados de cálculo obtidos com o sistema
Note que o Custo Pro Quilômetro apresentado no relatório (Figura 46) está diferente do
apresentado na planilha (Figura 45). Isso acontece porque no relatório o valor dos impostos
não foi somado ao custo.
3.5 Avaliação
A fase de avaliação não pode ser cumprida ainda, pois o cliente (DETER) ainda está em
fase de montar um equipe e estrutura para começar a operar o sistema. Por isso o mesmo
102
ainda não passou pela validação dos usuários e não foram ainda instalados o executável nem a
base do sistema.
4 CONCLUSÕES
O cálculo tarifário é uma operação complexa e com muitos detalhes. Acreditamos que o
sistema proposto é o ideal para contemplar tudo que propõe o Manual de Calculo Tarifário,
aprovado pelo DETER.
Uma tarifa mais justa pode provocar maior demanda de uso do transporte público,
diminuindo o uso de veículos automotores particulares, descongestionando nossas vias e
poluindo menos o nosso ambiente.
O principal objetivo deste trabalho foi o de oferecer ao DETER um sistema
computacional que realizasse o cálculo tarifário conforme estudo publicado pelo Manual de
Cálculo Tarifário, seguindo sua nova metodologia. Esse sistema teve como propósito
melhorar os processos envolvidos em tal procedimento, que antes era feito por meio de
planilhas.
Ao contrário de uma simples planilha, o sistema não permite alterações na metodologia
do cálculo; ele é algo rígido e imparcial, que não sofre ações externas.
O sistema permite que os dados necessários ao cálculo sejam organizados de maneira
coerente e concreta, coisa que não seria tão simples com o uso de planilhas. Com ele, todos os
dados são devidamente armazenados em um banco de dados, possibilitando consultas ao
mesmo a todo o momento. A consulta aos dados, a geração de relatórios e de gráficos permite
ao usuário realizar estudos para observar o que acontece no cenário em questão,
principalmente em um âmbito econômico. Isso pode resultar em um cálculo tarifário mais
justo para a população, para as empresas e para o Estado, culminando em um melhor uso da
verba pública e otimizando a máquina tributária de nosso país.
A implementação de um módulo GIS foi considerada uma feature no projeto, pois não
foi considerado pelo DETER como essencial, mas acabou tornando-se uma ferramenta de
apoio muito interessante. O módulo GIS tornou-se importante porque, como é o propósito
desse tipo de sistema, aumenta nível de interação entre o dado mostrado e o usuário,
103
tornando-o mais facilmente compreendido porque o for analisar. Além disso torna o sistema
em questão diferente de outros sistemas de informações gerenciais.
O trabalho de pesquisa para levantamento dos dados geográficos das linhas e cidades
foi gratificante para o Laboratório de Transportes e Logística porque permitiu conceber o
módulo GIS, contribuindo para que o sistema tenha um diferencial em relação a outros
sistemas de informação convencionais.
A pesquisa bibliográfica necessária para a fundamentação teórica permitiu o
aprendizado e fixação de muitos conceitos, desde cálculo tarifário até conceitos de GIS e GIS-
T. A quantidade de material, especialmente na área em GIS, foi satisfatória e a qualidade dos
dados proporcionou um fácil aprendizado.
Durante a execução do projeto, o levantamento dos requisitos necessários ao cálculo e o
uso do Manual de Cálculo Tarifário permitiu-nos criar um modelo de dados que facilitasse
todos os demais processos na construção do sistema.
Na fase de validação dos cálculos, foi de vital importância a oportunidade de trabalhar
juntamente com um engenheiro especialista em cálculo tarifário, pois foi possível homologar,
de forma dinâmica, todos os cálculos envolvidos e assim garantir, com total certeza, que o
sistema cumpre o que é definido pelo Manual de Cálculo Tarifário.
No módulo GIS pôde-se observar que existem linhas cujo percurso apresenta um
comportamento estranho, com trechos circulares, como se o ônibus pudesse passar por dois
caminhos diferentes para chegar ao mesmo ponto. Após análise, concluiu-se que isto se deve
a um problema na codificação das coordenadas necessárias ao cadastro georreferenciado das
linhas. Acreditamos que para resolver essa problemática é necessário fazer um trabalho junto
ao DETER para o levantamento de tais informações.
Vale ressaltar que a definição dos modelos dos arquivos de importação com dados de
insumos ao cálculo facilitou, por um lado, o processo de cálculo tarifário, porém demanda que
o DETER implemente uma forma de coletar os dados das empresas e organize-os de acordo
com o modelo proposto.
Tendo sido atingido o objetivo principal do presente projeto, espera-se que o DETER
faça uso do sistema e que isso possa de alguma forma, por mais indireta que seja, melhorar o
sistema de transporte público intermunicipal do Estado de Santa Catarina.
104
Atualmente o sistema ainda não está em operação, pois o DETER está preparando a
montagem de uma equipe e de estrutura para poder começar a fazer a implantação do sistema
em suas dependências.
4.1 Recomendações para Trabalhos Futuros
Edição dos Dados de Entrada Via Sistema: permitir que os
dados de insumos importados na base possam ser editados por
algum tipo de usuário credenciado, que acreditamos ser o
administrador. Esta funcionalidade pode não ser trivial, já que a
alteração das informações implica na invalidação de algum cálculo
tarifário que já tenha sido feito utilizando tais informações.
Gráficos Mostrando Um ou Mais Coeficientes em Todos os
Grupos: acredita-se ser interessante a implementação de variações
de tipos de gráficos que possam plotar as informações de maneiras
diferentes, como, por exemplo, comparar o coeficiente tarifário de
todos os grupos do serviço rodoviário para uma determinada data
ou período.
Cadastro de Linhas, Tanto no Módulo GIS quanto no
Informativo: permitir que o usuário possa cadastrar linhas ao
sistema tanto geograficamente quanto alfanumericamente.
Elaboração de Relatórios mais Específicos e Detalhados:
elaborar relatórios com os resultados de dados operacionais
utilizados, além dos dados de custos e coeficiente tarifário.
Edição, Adição e Deleção dos Grupos de Linhas: permitir que os
grupos de linhas possam ser editáveis, com operações de adição e
remoção também, possibilitando que o módulo de cálculos possa
ser utilizado em outros Estados, por exemplo.
105
106
REFERÊNCIAS
ANTT – Agência Nacional de Transportes Terrestres. Disponível em: <www.antt.gov.br>.
Acesso em: 10 ago 2011.
BERTOTTO, L. C.; GRAVE, A. M. Evolução das Tarifas de Ônibus Urbanos 1994 a
2003. Brasília: [s.n], 2004.
BERTOZZI, P. P.; LIMA JR., O. F. A qualidade no serviço de transporte público sob as
óticas do usuário, do operador e do órgão gestor. Revista dos Transportes Públicos -
ANTP, ano 21, p. 53-61, 4º trimestre. São Paulo, 1998.
BRASILEIRO, A. Informais, Alternativos, Clandestinos, Piratas, Não Regulamentados,
Ilegais, Artesanais, Concorrentes?. In: BRASILEIRO, A.; HENRY, E. (eds). Afirmação da
Viação de Ônibus “Urbanos”. [S.l.: s.n.], 1999.
DETER – Departamento de Transportes e Terminais. Disponível em:
<http://www.deter.sc.gov.br> . Acesso em: 12 ago 2011.
GIS – Geographic Information Systems. Disponível em: <http://www.gis.com/>. Acesso em:
em 12 ago 2011.
LABTRANS – Laboratório de Transportes e Logística. Disponível em:
<http://www.labtrans.ufsc.br>. Acesso em: 12 ago 2011.
MANHEIM, M.L. Fundamental of Transport System Analysis: Basic Concepts.
Massachussets: MIT press.Boston, 1980.
MARQUES, H.A. Avaliação da Qualidade do Sistema de Transporte Coletivo
Rodoviário Municipal de Uberaba-MG. Mestrado (Dissertação), São Paulo, 2003.
MILLER, H. J.; SHAW, Shih-Lung. GIS-T data models. Geographic Information Systems
for Transportation: Principles and Applications. Oxford: Oxford University Press, 2001.
PEREIRA, M. M. Sistema de Cálculo Tarifário de Transporte Semi-Urbano
Interestadual de Passageiros. 2008. Trabalho de Conclusão de Curso (Bacharelado), São
José, 2008.
SILVA, R. P. Como modelar com UML2. Florianópolis: [s.n.], 2009.
KORTE, G. B. The GIS Book: How to Implement, Manage, And Acess The Value Of
Geographic Information Systems. Canada, 2001.
107
ANEXOS
A.1) SQL’s Utilizadas
A.2) Importação dos Dados
SQLcheckDadosImportacao =
'select id from dadosdeimportacao where dataimportacao =
''%s'' ';
SQLapagaDadoDeImportacao =
'delete from dadosdeimportacao where id = %d ';
strSQLimportLinhas =
'Insert into
importlinhas(idgrupo,idlinha,idtransportadora,qtdeviagens,kmpe
rcorrida,percurso,demandaeq,tarifa,dtu,idimportacao) values
(%d, %d, %d, %d, %f, %f, %f, %f, %f, %d)';
strSQLimportFrota =
'insert into
importfrota(idtransportadora,idgrupo,placa,classificacao,numero
,idade,kmpercorrida,precoveiculo,ipva,dpvat,chass
i,kmtotalrodada,litroscombustivelconsumido,idcategoria'+
',quantidadepneus,idimportacao)
values(%d,%d,%s,%s,%d,%f,%f,%f,%f,%f,%s,%f,%f,%d,%d,%
d)';
strSQLimportTransportadora =
'insert into
importtransportadoras(idtransportadora,precocombustivel,preco
pneu,precocamara,precoprotetor,precorecapagem,beneficios,rem
uneracaodiretoria, '+
'receitaextratarifaria,salariototalurbanomotorista,salariototalurba
nocobrador,salariototalurbanofiscal,salariototalrodoviariomotori
sta,salariototalrodoviariocobrador,salariototalrodoviariofiscal, '+
'qtdefuncurbmotorista,qtdefuncurbcobrador,qtdefuncurbfiscal,qt
defuncrodmotorista,qtdefuncrodcobrador,qtdefuncrodfiscal,idim
portacao)
values(%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%d,
%d,%d,%d,%d,%d,%d)' ;
SQLGetGruposRodEUrb =
108
'select numero from grupos g where g.servico = ''urbano'' or
g.servico = ''rodoviario'' ';
SQLInsertOceqPma =
'insert into valorcoeficientegrupo_new (idimportacao, idgrupo,
oceq, pma) values(%d,%d, %f, %f)';
A.3) Cálculo Tarifário
SQLgetDadosGrupos = 'select numero, nome from grupos
order by numero';
SQLgetPrecoPneu = 'Select sum(q1.numerador) /
sum(q1.denominador) as result '+
'from (select l.idtransportadora, sum(t.precopneu *
l.kmpercorrida) as '+
'numerador, sum(l.kmpercorrida) as denominador from
importlinhas l, '+
'importtransportadoras t where l.idtransportadora =
t.idtransportadora and '+
'l.idgrupo in (%:0s) and t.idimportacao = :idimportacao group
by l.idtransportadora) q1';
SQLgetPrecoCombustivel = 'Select sum(q1.numerador) /
sum(q1.denominador) as result '+
'from (select l.idtransportadora, sum(t.precocombustivel *
l.kmpercorrida) as '+
'numerador, sum(l.kmpercorrida) as denominador from
importlinhas l, '+
'importtransportadoras t where l.idtransportadora =
t.idtransportadora and '+
'l.idgrupo in (%:0s) and t.idimportacao = :idimportacao group
by l.idtransportadora) q1';
SQLgetPrecoCamara = 'Select sum(q1.numerador) /
sum(q1.denominador) as result '+
'from (select l.idtransportadora, sum(t.precocamara *
l.kmpercorrida) as '+
'numerador, sum(l.kmpercorrida) as denominador from
importlinhas l, '+
'importtransportadoras t where l.idtransportadora =
t.idtransportadora and '+
'l.idgrupo in (%:0s) and t.idimportacao = :idimportacao group
by l.idtransportadora) q1';
109
SQLgetPrecoProtetor = 'Select sum(q1.numerador) /
sum(q1.denominador) as result '+
'from (select l.idtransportadora, sum(t.precoprotetor *
l.kmpercorrida) as '+
'numerador, sum(l.kmpercorrida) as denominador from
importlinhas l, '+
'importtransportadoras t where l.idtransportadora =
t.idtransportadora and '+
'l.idgrupo in (%:0s) and t.idimportacao = :idimportacao group
by l.idtransportadora) q1';
SQLgetPrecoRecapagem = 'Select sum(q1.numerador) /
sum(q1.denominador) as result '+
'from (select l.idtransportadora, sum(t.precorecapagem *
l.kmpercorrida) as '+
'numerador, sum(l.kmpercorrida) as denominador from
importlinhas l, '+
'importtransportadoras t where l.idtransportadora =
t.idtransportadora and '+
'l.idgrupo in (%:0s) and t.idimportacao = :idimportacao group
by l.idtransportadora) q1';
SQLgetPrecoMedioVeiculo = 'select avg(f.precoveiculo) as
result from importfrota f where f.idgrupo in (%:0s) and
f.idimportacao = %d';
getTMax = 'select max(l.tarifa) as result from importlinhas l
where l.idgrupo in (%:0s) and t.data = :data';
getQuantidadeViagensMedia = 'select avg(l.qtdeviagens)as
result from importlinhas l where l.idgrupo = %s and t.data =
:data';
getReceitaMedia = 'select avg(l.receita)from importlinhas l
where l.idgrupo = %s and t.data = :data';
SQLgetOcupacaoEquivalente = 'select ((select
avg(l.demandaeq)) / (select avg(l.qtdeviagens))) as result from
importlinhas l where l.idgrupo in (%:0s) and l.idimportacao =
:idimportacao';
getQuilimetragemTotal = ' select
sum(t.quilometragemtotal)from importtransportadoras t where
t.idgrupo = %s and t.data = :data';
getIPVAMedio = 'select avg(ipva)from importfrota where
idgrupo = %s and data = :data';
110
getIPVATotal = 'select sum(ipva)from importfrota where
idgrupo in (%:0s)and idimportacao = :idimportacao';
getCoeficientesGrupos = 'select numero, nome, servico, cqi,
ccc, ccol, ccpn, from grupos';
SQLgetDDF = 'select
numerador.idgrupo,numerador.idimportacao,
numerador.somatoriodogrupo / denominador.FrX12 as result '+
'FROM (select q2.idgrupo,q1.idimportacao, sum((q2.PVNSR
* q1.cda)) as somatoriodogrupo from '+
'( '+
'select f.idgrupo, f.idcategoria as cat, avg(f.precoveiculo
-((f.quantidadepneus * t.precopneu) + t.precocamara +
t.precoprotetor)) as PVNSR '+
'from importfrota f, importtransportadoras t,
categoriaveiculos c '+
'where f.idgrupo in (%:0s) and '+
'f.idtransportadora = t.idtransportadora and trunc(CAST
(f.idade as "numeric") + 1, 0) <= c.vu '+
'group by f.idcategoria, f.idgrupo'+
') q2,'+
' '+
'(select q1.idgrupo, q1.cat,q1.idimportacao, sum((2
*(q1.numerador / q1.denominador) * q1.qtde)) as cda '+
'FROM (
'+
'select (sum((c.vu - trunc(CAST (f.idade as "numeric")
+ 1, 0) + 1) *(1 -( c.vr / 100)))) as numerador, '+
'sum((c.vu *(c.vu + 1))) as denominador, '+
'f.idcategoria as cat, '+
'trunc(CAST (f.idade as "numeric") + 1, 0) as
idadecalculada, '+
'count(f.chassi) as qtde, '+
'f.idgrupo, '+
'f.idimportacao '+
'from importfrota f, categoriaveiculos c '+
' '+
'where f.idgrupo in (%:0s) and f.idcategoria = c.id and
trunc(CAST (f.idade as "numeric") + 1, 0) <= c.vu '+
'group by cat, idadecalculada, f.idgrupo,f.idimportacao
'+
') q1 '+
' '+
'group by q1.cat, q1.idgrupo,q1.idimportacao '+
')q1 '+
111
' '+
'where (q1.cat = q2.cat) group by
q2.idgrupo,q1.idimportacao) numerador, '+
' '+
' ( '+
' select f.idgrupo, '+
' f.idimportacao, '+
' count(f.id) as Fr, '+
' (12 * count(f.id)) as FrX12 '+
' '+
' from importfrota f '+
' where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao '+
' group by idgrupo,idimportacao '+
' ) denominador '+
' '+
' '+
'where (numerador.idgrupo = denominador.idgrupo) and
(numerador.idimportacao = denominador.idimportacao) ';
SQLgetDRF = 'select numerador.idgrupo,
numerador.somatoriodogrupo / denominador.FrX12 as result '+
'FROM (select q2.idgrupo,q2.idimportacao, sum((q2.PVNSR
* q1.cra)) as somatoriodogrupo from '+
'( '+
'select f.idgrupo,f.idimportacao, f.idcategoria as cat,
avg(f.precoveiculo -((f.quantidadepneus * t.precopneu) +
t.precocamara + t.precoprotetor)) as PVNSR '+
'from importfrota f, importtransportadoras t,
categoriaveiculos c '+
'where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao and '+
'f.idtransportadora = t.idtransportadora and trunc(CAST
(f.idade as "numeric") + 1, 0) <= c.vu '+
' group by f.idcategoria, f.idgrupo,f.idimportacao '+
') q2, '+
'( '+
'select resultado.id as cat, resultado.idade,
resultado.tipo,resultado.excecao, resultado.padrao,
resultado.qtde, '+
'CASE '+
' when (resultado.vu < resultado.idade) then '+
' resultado.excecao * resultado.qtde '+
' else '+
' resultado.padrao * resultado.qtde '+
112
'end '+
'as cra '+
' '+
'from '+
' ('+
' select A.id , B.idade,B.tipo,B.vu,B.qtde, '+
' (0.12*(1 - ((A.az * B.bz) / C.cz))) as padrao, '+
' (0.12 * B.vr)* 0.01 as excecao '+
' '+
' from '+
' '+
' ('+
' select id,(1 - vr * 0.01) as az '+
' from categoriaveiculos '+
' '+
' )A,'+
' '+
' ( '+
' select id,(vu + pow(vu,2))/2 as cz '+
' from categoriaveiculos '+
' '+
' )C,'+
' '+
' ( '+
' select q1.id,
q1.idgrupo,q1.idade,q1.bz,q1.tipo,q1.vr,q1.vu ,count(q1.chassi)
as qtde '+
' from '+
' ('+
' select f.idgrupo,c.id,c.tipo, c.vr,c.vu, '+
' trunc(CAST (f.idade as "numeric") , 0) as
idade, '+
' ( (2*vu - trunc(CAST (f.idade as
"numeric") , 0) + 1) * (trunc(CAST (f.idade as "numeric") , 0) /
2) ) as bz, '+
' f.chassi '+
' from importfrota f , categoriaveiculos c '+
' where f.idgrupo in (%:0s) and f.idcategoria
= c.id '+
' )q1 '+
' group by q1.id,
q1.idgrupo,q1.idade,q1.bz,q1.tipo,q1.vr,q1.vu '+
' )B '+
' '+
' where (A.id = B.id) and (A.id = C.id) and (B.id =
C.id) '+
113
' group by A.id,B.idade,A.az, B.bz,
C.cz,B.tipo,B.vr,B.vu,B.qtde '+
' ) resultado '+
')q1 '+
' '+
'where q1.cat = q2.cat group by
q2.idgrupo,q2.idimportacao) numerador, '+
' '+
' ( '+
' select f.idgrupo, '+
' f.idimportacao, '+
' count(f.id) as Fr, '+
' (12 * count(f.id)) as FrX12 '+
' from importfrota f '+
' where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao '+
' group by idgrupo,idimportacao '+
' ) denominador '+
' '+
' '+
'where (numerador.idgrupo = denominador.idgrupo) and
(numerador.idimportacao = denominador.idimportacao) ';
getCoDF = 'select idadecalculada, q1.cat, ( 2 *(q1.numerador /
q1.denominador) )as CoDF' +
'FROM('+
'select ( sum( (c.vu - trunc(CAST (f.idade as "numeric")
+ 1, 0) + 1 ) * (1 - (c.vr/100))) )as numerador,'+
'sum( (c.vu*(c.vu + 1)) )as denominador,'+
' f.idcategoria as cat ,'+
'trunc(CAST (f.idade as "numeric") + 1, 0) as
idadecalculada,'+
'count(f.chassi) as countchassi '+
'from importfrota f, '+
'categoriaveiculos c '+
'where f.idgrupo in (%:0s) and f.idcategoria = c.id and
trunc(CAST (f.idade as "numeric") + 1, 0) <= c.vu '+
'group by cat,trunc(CAST (f.idade as "numeric") + 1,
0)'+
') q1 ' +
'group by q1.cat,idadecalculada,codf' ;
SQlgetDTB = 'select sum(DTBg.DTB) as result FROM'+
' ( '+
114
' select fogrupo.idtransportadora,( (fogrupo.foperante *
t.beneficios) / (fototal.fooperantetotal) ) as DTB FROM'+
' (select f.idtransportadora,'+
' sum(f.frotaoperante)as foperante'+
' from frotaoperante f '+
' where f.numerogrupo in (%:0s) '+
' '+
' group by f.idtransportadora '+
' ) fogrupo,'+
' '+
' ( '+
' select f.idtransportadora,'+
' sum(f.frotaoperante) as fooperantetotal'+
' from frotaoperante f '+
' '+
' group by f.idtransportadora'+
' )fototal, '+
' importtransportadoras t '+
' '+
' where fogrupo.idtransportadora =
fototal.idtransportadora and fogrupo.idtransportadora =
t.idtransportadora and t.idimportacao = :idimportacao '+
' )DTBg' ;
SQLgetRETT = 'select sum(RETTg.RETT) as result from '+
'( '+
'select fgrupo.idtransportadora,( (fgrupo.fogrupo *
t.receitaextratarifaria) / (ftotal.fototal) ) as RETT FROM '+
'(select f.idtransportadora,'+
' f.idgrupo,'+
' f.idimportacao,'+
' count(f.chassi)as fogrupo '+
'from importfrota f '+
'where f.idgrupo in (%:0s) '+
' ' +
'group by f.idtransportadora, f.idgrupo, f.idimportacao '+
') fgrupo, '+
' '+
'('+
'select f.idtransportadora, '+
' f.idgrupo, '+
' f.idimportacao, '+
' count(f.chassi) as fototal '+
'from importfrota f '+
' '+
'group by f.idtransportadora,f.idgrupo,f.idimportacao '+
115
')ftotal, '+
'importtransportadoras t ' +
' ' +
'where fgrupo.idtransportadora = ftotal.idtransportadora
and fgrupo.idtransportadora = t.idtransportadora and
t.idimportacao = :idimportacao '+
')RETTg ';
SQlgetCCOL = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 1 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCCPA = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 2 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCQI = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 3 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCCCA = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 4 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCCPN = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 5 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCCPR = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 6 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQlgetCCRE = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 7 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCoRMIE = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 9 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
116
SQLGetCoDMIE = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 8 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCoDGA = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 10 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCoRA = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 11 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCDPAd = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 12 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCoDPM = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 13 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetPIS = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 14 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetCofins = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 15 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetIcms = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 16 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetTA = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 17 and
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLGetES = 'select c.valor as result from
valorcoeficienteteorico c where c.idcoeficiente = 18 and
117
c.tiposervico = (select id from tiposervico where nome =
:servico)';
SQLinsereNovoDadoDeImportacao = 'insert into
dadosdeimportacao (id,dataimportacao) values (%d,:data)';
SQLapagaDadoDeImportacao = 'delete from
dadosdeimportacao where id = %d ';
SQLgetidDadoDeImportacao = 'select id from
dadosdeimportacao where dataimportacao = ''%s'' ';
SQLcheckDadosImportacao = 'select id from
dadosdeimportacao where dataimportacao = ''%s'' ';
SQLgetDSO = 'select c.dpvat/12 as result from
importcoeficientes c where c.idimportacao = %d';
SQLremoveDadoDeImportacao = 'delete from
dadosdeimportacao where id = %d';
SQLgetDatasImportacao = 'select distinct d.dataimportacao
as data, d.id as iddata from dadosdeimportacao d order by data';
strSQLimportCoeficientes = 'Insert into
importcoeficientes(dpvat,ccol,ccpa,cqi,ccca,ccpn,ccpr,ccre,idim
portacao) values (%f, %f, %f, %f, %f, %f, %f, %f, %d)';
strSQLimportLinhas = 'Insert into
importlinhas(idgrupo,idlinha,idtransportadora,qtdeviagens,kmpe
rcorrida,percurso,demandaeq,tarifa,dtu,idimportacao) values
(%d, %d, %d, %d, %f, %f, %f, %f, %f, %d)';
strSQLimportFrota = 'insert into
importfrota(idtransportadora,idgrupo,placa,classificacao,numero
,idade,kmpercorrida,precoveiculo,ipva,dpvat,chassi,kmtotalroda
da,litroscombustivelconsumido,idcategoria'+
',quantidadepneus,idimportacao)
values(%d,%d,%s,%s,%d,%f,%f,%f,%f,%f,%s,%f,%f,%d,%d,%
d)';
strSQLimportTransportadora = 'insert into
importtransportadoras(idtransportadora,precocombustivel,preco
pneu,precocamara,precoprotetor,precorecapagem,beneficios,rem
uneracaodiretoria, '+
118
'receitaextratarifaria,salariototalurbanomotorista,salariototalurba
nocobrador,salariototalurbanofiscal,salariototalrodoviariomotori
sta,salariototalrodoviariocobrador,salariototalrodoviariofiscal, '+
'qtdefuncurbmotorista,qtdefuncurbcobrador,qtdefuncurbfiscal,qt
defuncrodmotorista,qtdefuncrodcobrador,qtdefuncrodfiscal,idim
portacao)
values(%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%d,
%d,%d,%d,%d,%d,%d)' ;
SQLGetDadosSerioHistorica = 'select '+
{'idgrupo, '+
'idimportacao, '+
'i.dataimportacao, '+}
'nomegrupo as NomeGrupo, '+
'ctcalculado as CoeficienteTarifario, '+
'ctaprovado as
CoeficienteTarifarioAprovado , '+
'custovariavel as CustosVariaveis, '+
'custofixo as CustosFixos, '+
'impostos as DespesasComImpostos, '+
'custoporkm as CustoPorKm, '+
'depreciacaofrota as DepreciacaodeFrota, '+
'depreciacaomaquinasequipamentos as
DepMaquinasEquipamentos, '+
'remuneracaofrota as RemuneracaoDeFrota,
'+
'remuneracaomaquinasequipamentos as
RemMaquinasEquipamentos, '+
'remuneracaoalmoxarifado as
RemuneracaoDeAlmoxarifado, '+
'despesapessoaloperacao as
DespesasPessoalOperacao, '+
'despesapessoalmanutencao as
DespesasPessoalManutencao, '+
'despesapessoaladministracao as
DespesasPessoalAdministracao, '+
'despesabeneficios as
DespesasComBeneficios, '+
'despesadiretoria as DespesasComDiretoria,
'+
'tarifautilizacao as TarifaDeUtilizacao, '+
'custocombustivel as CustoCombustivel, '+
'custolubrificantes as CustoLubrificantes, '+
'custorodagem as CustoRodagem, '+
119
'custoacessorios as CustoAcessorios, '+
'despesadeadministracao as
DespesasDeAdministracao '+
' from seriehistorica s, dadosdeimportacao i
'+
' where s.idimportacao = :idimportacao '+
' and i.id = s.idimportacao '+
'order by idgrupo';
//CC = custo de combustivel
SQLGetCC = ' select PrC.result * CCCXQPXQP.result as
result FROM '+
'( '+
'Select sum(q1.numerador) / sum(q1.denominador) as
result '+
'from (select l.idtransportadora, sum(t.precocombustivel
* l.kmpercorrida) as '+
' numerador, sum(l.kmpercorrida) as denominador from
importlinhas l '+
' join importtransportadoras t on l.idtransportadora =
t.idtransportadora and '+
' l.idgrupo in (%:0s) and t.idimportacao = :idimportacao
group by l.idtransportadora) q1 '+
')PrC, '+
' '+
'( '+
'select CCCXQP.produto/QP.sumqp as result from '+
' '+
'( '+
'select sum(f.kmpercorrida)sumqp from importfrota f
where f.idgrupo in (%:0s) and f.idimportacao = :idimportacao '+
')QP,
'+
'
'+
'(
'+
'select sum( QP.sumqp * CCC.sumccc)as produto from
'+
' '+
'( '+
' select f.idcategoria,sum(f.kmpercorrida) as sumqp from
importfrota f where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao group by f.idcategoria '+
')QP,
'+
120
'(
'+
' select f.idcategoria,
(sum(f.litroscombustivelconsumido) / sum(f.kmpercorrida)) as
sumccc '+
' from importfrota f '+
' where f.idimportacao = :idimportacao and f.idgrupo
in (%:0s) '+
' group by f.idcategoria '+
')CCC '+
' '+
'where QP.idcategoria = CCC.idcategoria '+
' '+
')CCCXQP '+
')CCCXQPXQP ';
SQLGetCOL = 'select PrC.result * CCOL.result as result
FROM '+
' ( '+
' Select sum(q1.numerador) / sum(q1.denominador)
as result '+
' from ( select l.idtransportadora,
sum(t.precocombustivel * l.kmpercorrida) as '+
' numerador, sum(l.kmpercorrida) as
denominador from importlinhas l '+
' join importtransportadoras t on
l.idtransportadora = t.idtransportadora and '+
' l.idgrupo in (%:0s) and l.idimportacao =
:idimportacao group by l.idtransportadora '+
' ) q1 '+
' )PrC,
'+
' ( '+
' select c.ccol as result from importcoeficientes c
where c.idimportacao = :idimportacao '+
' )CCOL ';
SQlGetGrupos = 'select g.numero,g.nome,g.servico from
grupos g ';
SQLGetPVNC = 'select avg( f.precoveiculo) as result '+
'from importfrota f,importtransportadoras t '+
'where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao and '+
'f.idtransportadora = t.idtransportadora';
121
SQLGetPMA = 'select sum(l.percurso) as result from
importlinhas l where l.idgrupo in (%:0s) and l.idimportacao =
:idimportacao';
SQLGetFrotaTotal = 'select count(f.id) as result from
importfrota f where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao ';
SQLGetIPVATotal = 'select sum(ipva) as result from
importfrota where idgrupo in (%:0s) and idimportacao =
:idimportacao';
SQlGetDPVAT = 'select sum(f.dpvat) as result from
importfrota f where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao';
SQLGetQPFrota = 'select sum(f.kmpercorrida) as result from
importfrota f where f.idgrupo in (%:0s) and f.idimportacao =
:idimportacao';
SQLGetQPLinha = 'select sum(l.kmpercorrida) as result from
importlinhas l where l.idgrupo in (%:0s) and l.idimportacao =
:idimportacao';
SQLGetIM = 'select (sum(sumFrXId.result)/ Fr.result) as
result from '+
'( '+
' select f.idade, '+
' (count(f.id) * f.idade) as result '+
' from importfrota f '+
' where f.idgrupo in (%:0s) and '+
' f.idimportacao = :idimportacao '+
' group by f.idade '+
') sumFrXId, '+
'( '+
' select count(f.id) as result '+
' from importfrota f '+
' where f.idgrupo in (%:0s) and '+
' f.idimportacao = :idimportacao '+
') Fr '+
'group by Fr.result';
SQLInsertValoresSerieHistorica = 'INSERT INTO
public.seriehistorica '+
'( '+
122
' idimportacao, '+
' nomegrupo, '+
' ctcalculado, '+
' ctaprovado, '+
' custovariavel, '+
' custofixo, '+
' impostos, '+
' custoporkm, '+
' depreciacaofrota, '+
' depreciacaomaquinasequipamentos, '+
' remuneracaofrota, '+
' remuneracaomaquinasequipamentos, '+
' remuneracaoalmoxarifado, '+
' despesapessoaloperacao, '+
' despesapessoalmanutencao, '+
' despesapessoaladministracao, '+
' despesabeneficios, '+
' despesadiretoria, '+
' tarifautilizacao, '+
' custocombustivel, '+
' custolubrificantes, '+
' custorodagem, '+
' custoacessorios, '+
' idgrupo '+
' ) '+
'VALUES ( '+
' :idimportacao, '+
' :nomegrupo, '+
' :ctcalculado, '+
' :ctaprovado, '+
' :custovariavel, '+
' :custofixo, '+
' :impostos, '+
' :custoporkm, '+
' :depreciacaofrota, '+
' :depreciacaomaquinasequipamentos, '+
' :remuneracaofrota, '+
' :remuneracaomaquinasequipamentos, '+
' :remuneracaoalmoxarifado, '+
' :despesapessoaloperacao, '+
' :despesapessoalmanutencao, '+
' :despesapessoaladministracao, '+
' :despesabeneficios, '+
' :despesadiretoria, '+
' :tarifautilizacao, '+
123
' :custocombustivel, '+
' :custolubrificantes, '+
' :custorodagem, '+
' :custoacessorios, '+
' :idgrupo '+
')';
SQLCheckResultadosCalculo = 'select id from
dadosdeimportacao where id = :idimportacao and calculado =
true';
SQLApagaResultadosCalculo = 'delete from seriehistorica
where idimportacao = :idimportacao';
SQLGetUltimosValoresCalculo = 'select '+
'idgrupo, '+
'idimportacao, '+
'i.dataimportacao, '+
'nomegrupo, '+
'ctcalculado, '+
'ctaprovado, '+
'custovariavel, '+
'custofixo, '+
'impostos, '+
'custoporkm, '+
'depreciacaofrota, '+
'depreciacaomaquinasequipamentos, '+
'remuneracaofrota, '+
'remuneracaomaquinasequipamentos, '+
'remuneracaoalmoxarifado, '+
'despesapessoaloperacao, '+
'despesapessoalmanutencao, '+
'despesapessoaladministracao, '+
'despesabeneficios, '+
'despesadiretoria, '+
'tarifautilizacao, '+
'custocombustivel, '+
'custolubrificantes, '+
'custorodagem, '+
'custoacessorios, '+
'despesadeadministracao '+
' from seriehistorica s, dadosdeimportacao i
'+
' where s.idimportacao = '+
' (select d.id from dadosdeimportacao d
where d.dataimportacao = '+
124
' (
'+
' select max(d1.dataimportacao)
from dadosdeimportacao d1 where calculado = true '+
' )
'+
' ) and i.id = s.idimportacao '+
'order by idgrupo';
SQLGetPVNSR = 'select f.idgrupo, f.idcategoria as cat,
avg(f.precoveiculo -((f.quantidadepneus * t.precopneu) +
t.precocamara + t.precoprotetor)) as result '+
'from importfrota f, importtransportadoras t,
categoriaveiculos c '+
'where f.idgrupo in (%:0s) and '+
'f.idtransportadora = t.idtransportadora and trunc(CAST
(f.idade as "numeric") + 1, 0) <= c.vu '+
'group by f.idcategoria, f.idgrupo';
SQLGetResumosCalculo = 'select d.dataimportacao, '+
's.ctaprovado, '+
's.ctcalculado, '+
's.custofixo, '+
's.custovariavel, '+
's.impostos, '+
's.custoporkm '+
'from seriehistorica s, '+
'dadosdeimportacao d '+
'where s.idgrupo = :idgrupo and '+
'd.calculado = true and '+
's.idimportacao = d.id ';
SQLGetResumosCalculo12UltimasDatas = 'select
d.dataimportacao, '+
's.ctaprovado, '+
's.ctcalculado, '+
's.custofixo, '+
's.custovariavel, '+
's.impostos, '+
's.custoporkm '+
'from seriehistorica s, '+
'dadosdeimportacao d '+
'where s.idgrupo = :idgrupo and '+
'd.calculado = true and '+
's.idimportacao = d.id '+
'order by d.dataimportacao DESC LIMIT 12';
125
SQLCheckTransportadoraExiste = 'select t.idtransportadora
from transportadoras t where t.idtransportadora =
:idtransportadora';
SQLgetDTU = 'select sum(l.dtu) as result from importlinhas l
where l.idgrupo in (%:0s) and l.idimportacao = :idimportacao';
SQLGetUltimas12Datas = 'select d.dataimportacao from
dadosdeimportacao d order by d.dataimportacao DESC LIMIT
12';
SQlGetCoeficientesTeoricos = 'select
c.nome,v.valor,c.descricao from valorcoeficienteteorico v,
coeficientes c where v.idcoeficiente = c.id';
SQLAtualizaCTAprovado = 'update seriehistorica set
ctaprovado = %f where idgrupo = %d and idimportacao = %d ';
SQLGetValoresCT = 'select idgrupo ,nomegrupo ,ctcalculado
,ctaprovado from seriehistorica where idimportacao =
:idimportacao order by idgrupo';
SQLGetCoeficientes = 'select
i.idimportacao,i.idgrupo,g.nome, d.dataimportacao, c.nome as
nomevalor, i.valor,i.alterado '+
'from valorcoeficientegrupo i, '+
' dadosdeimportacao d, '+
' grupos g, '+
' coeficientes c '+
' where i.idimportacao = :idimportacao and '+
' i.idgrupo = :idgrupo and '+
' i.idimportacao = d.id and '+
' i.idgrupo = g.numero and '+
' c.id = i.idcoeficiente';
SQLUpdateValorCoeficiente = 'update valorcoeficientegrupo
'+
'set valor = :valor '+
'where idgrupo = :idgrupo and '+
' idimportacao = :idimportacao and '+
' idcoeficiente = (select id from
coeficientes where nome = :nomevalor)';
SQLInsertOceqPma = 'insert into valorcoeficientegrupo_new
(idimportacao, idgrupo, oceq, pma) values(%d,%d, %f, %f)';
126
SQLGetGruposRodEUrb = 'select numero from grupos g
where g.servico = ''urbano'' or g.servico = ''rodoviario'' ';
SQLUpdateDadosImportacaoCalculoFeito = 'update
dadosdeimportacao set calculado = true where id =
:idimportacao';
A.4) Séries Históricas
SQLGetDadosSerioHistorica = 'select '+
'nomegrupo as NomeGrupo, '+
'ctcalculado as CoeficienteTarifario, '+
'ctaprovado as
CoeficienteTarifarioAprovado , '+
'custovariavel as CustosVariaveis, '+
'custofixo as CustosFixos, '+
'impostos as DespesasComImpostos, '+
'custoporkm as CustoPorKm, '+
'depreciacaofrota as DepreciacaodeFrota, '+
'depreciacaomaquinasequipamentos as
DepMaquinasEquipamentos, '+
'remuneracaofrota as RemuneracaoDeFrota,
'+
'remuneracaomaquinasequipamentos as
RemMaquinasEquipamentos, '+
'remuneracaoalmoxarifado as
RemuneracaoDeAlmoxarifado, '+
'despesapessoaloperacao as
DespesasPessoalOperacao, '+
'despesapessoalmanutencao as
DespesasPessoalManutencao, '+
'despesapessoaladministracao as
DespesasPessoalAdministracao, '+
'despesabeneficios as
DespesasComBeneficios, '+
'despesadiretoria as DespesasComDiretoria,
'+
'tarifautilizacao as TarifaDeUtilizacao, '+
'custocombustivel as CustoCombustivel, '+
'custolubrificantes as CustoLubrificantes, '+
'custorodagem as CustoRodagem, '+
'custoacessorios as CustoAcessorios, '+
'despesadeadministracao as
DespesasDeAdministracao '+
127
' from seriehistorica s, dadosdeimportacao i
'+
' where s.idimportacao = :idimportacao '+
' and i.id = s.idimportacao '+
'order by idgrupo';
SQLgetDatasImportacao = 'select distinct d.dataimportacao
as data, d.id as iddata from dadosdeimportacao d order by data';
A.5) Dados Operacionais
SQLGetDadosLinhas = 'select distinct
l.idlinha,l.nome,l.grupo,l.transportadora,l.idtransportadora from
vwimportlinhas l';
SQLGetDadosTransportadoras = 'select distinct
t.idtransportadoras as idtransportadora,t.transportadora as Nome
from vwimporttransportadoras t order by idtransportadora';
SQLgetDadosGrupos = 'select numero, nome from grupos
order by numero';
SQLGetdadosfrotaporgrupo = 'select * from vwimportfrota
where idgrupo = :idgrupo and idimportacao = :idimportacao ';
SQLGetdadoslinhasporgrupo = 'select * from vwimportlinhas
where idgrupo = :idgrupo and idimportacao = :idimportacao ';
SQLGetdadostransportadorasporgrupo = 'SELECT t.nome,
'+
'impt.precocombustivel, '+
'impt.precopneu, '+
'impt.precocamara, '+
'impt.precoprotetor, '+
'impt.precorecapagem, '+
'impt.beneficios, '+
'impt.remuneracaodiretoria, '+
'impt.receitaextratarifaria, '+
'impt.salariototalurbanomotorista, '+
'impt.salariototalurbanocobrador, '+
'impt.salariototalurbanofiscal, '+
'impt.salariototalrodoviariomotorista, '+
'impt.salariototalrodoviariocobrador, '+
128
'impt.salariototalrodoviariofiscal, '+
'impt.qtdefuncurbmotorista, '+
'impt.qtdefuncurbcobrador,'+
'impt.qtdefuncurbfiscal, '+
'impt.qtdefuncrodmotorista, '+
'impt.qtdefuncrodcobrador, '+
'impt.qtdefuncrodfiscal '+
'FROM (SELECT DISTINCT i.idtransportadora FROM
importlinhas i WHERE '+
' i.idimportacao = :idimportacao AND i.idgrupo =
:idgrupo) q '+
' JOIN transportadoras t ON t.idtransportadora =
q.idtransportadora '+
' JOIN importtransportadoras impt ON
impt.idtransportadora = '+
' q.idtransportadora; ';